zaphyra's git: nixfiles

zaphyra's nixfiles

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
let
  npins = import ./npins;
  overlays = import ./overlays { inherit npins; };
  nixosConfigurations = import ./machines { inherit lib npins; };
  lib = (import "${npins.nixpkgs}/lib").extend (
    final: prev: {
      zpha = import ./lib {
        inherit npins;
        lib = prev;
      };
    }
  );

in
{

  inherit
    overlays
    nixosConfigurations
    ;

  nixosModules = import ./nixosModules { inherit lib; };

  formatter = lib.zpha.forAllSystems {
    inherit (npins) nixpkgs;
    body = pkgs: pkgs.nixfmt-rfc-style;
  };

  packages = lib.zpha.forAllSystems {
    overlays = overlays.default;
    body =
      pkgs:
      lib.mergeAttrsList [
        (import ./packages pkgs)
        (lib.flip lib.mapAttrs' nixosConfigurations (
          machineName: nixosConfiguration:
          lib.nameValuePair "setupDisk-${machineName}" (
            pkgs.zpha.setupDisk.override {
              systemConfig = nixosConfiguration.config;
            }
          )
        ))
      ];
  };

  deploy = {
    activationTimeout = 600;
    confirmTimeout = 240;
    nodes = lib.flip builtins.mapAttrs nixosConfigurations (
      _: nixosConfiguration:
      let
        inherit (nixosConfiguration) config pkgs;
      in
      {
        hostname = config.networking.fqdn;
        sshUser = "root";
        sshOpts = [
          "-p"
          (toString (lib.head config.services.openssh.ports))
        ];
        profiles.system = {
          user = "root";
          path = pkgs.zpha.deployrsActivator.override { systemConfig = config; };
        };
      }
    );
  };

}