/ flake.nix
flake.nix
 1  {
 2    inputs = {
 3      nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 4    };
 5  
 6    outputs =
 7      { self, nixpkgs, ... }:
 8      let
 9        inherit (nixpkgs) lib;
10  
11        eachSystem = f: lib.genAttrs systems (s: f nixpkgs.legacyPackages.${s});
12        systems = [
13          "x86_64-linux"
14          "aarch64-linux"
15          "x86_64-darwin"
16          "aarch64-darwin"
17        ];
18      in
19      {
20        packages = eachSystem (pkgs: {
21          docs = pkgs.callPackage ./docs.nix { inherit nixpkgs self; };
22          docsWithUpstream = pkgs.callPackage ./docs.nix {
23            inherit nixpkgs self;
24            withUpstreamModule = true;
25          };
26  
27          generate = pkgs.writeShellScriptBin "generate" ''
28            cat ${self.packages.${pkgs.system}.docs} > nixos-options.md
29            cat ${self.packages.${pkgs.system}.docsWithUpstream} > nixos-options-combined.md
30          '';
31        });
32  
33        lib = import ./lib.nix { inherit lib; };
34  
35        nixosModules.default = ./module.nix;
36  
37        formatter = eachSystem (
38          pkgs:
39          pkgs.treefmt.withConfig {
40            settings = lib.mkMerge [
41              ./treefmt.nix
42              { _module.args = { inherit pkgs; }; }
43            ];
44          }
45        );
46  
47        checks = eachSystem (pkgs: {
48          packages = pkgs.linkFarm "packages" self.packages.${pkgs.system};
49          fmt = pkgs.runCommandNoCCLocal "fmt-check" { } ''
50            cp -r --no-preserve=mode ${self} repo
51            ${lib.getExe self.formatter.${pkgs.system}} -C repo --ci
52            touch $out
53          '';
54          docs = pkgs.runCommandNoCCLocal "docs-check" { } ''
55            diff -U3 --color=auto ${./nixos-options.md} ${self.packages.${pkgs.system}.docs}
56            diff -U3 --color=auto ${./nixos-options-combined.md} ${
57              self.packages.${pkgs.system}.docsWithUpstream
58            }
59            touch $out
60          '';
61        });
62      };
63  }