aboutsummaryrefslogtreecommitdiff
path: root/lib/nix-furnace/mkSystem.nix
blob: 85f952c0815e30c08f64d9ed7c1f4dff600d4eba (plain)
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
let
  my-lib = import ../lib.nix;
  inherit (my-lib.globimport) getSubdirs lazyImport;

  listModules = getSubdirs ../../modules;

  mkNixosSystem = {
    inputs,
    hostname,
    username,
  }:
    inputs.nixpkgs.lib.nixosSystem {
      specialArgs = {inherit inputs my-lib;};
      modules = [
        {networking.hostName = hostname;}

        ../../hosts/${hostname}/config.nix

        # Nixos-sided modules
        {
          imports =
            [
              ../../modules/options.nix
              ../../hosts/${hostname}/config.nix
              (lazyImport ../../hosts/${hostname}/nixos.nix)
            ]
            ++ (listModules
              |> (builtins.map (modName: [
                (lazyImport ../../modules/${modName}/options.nix)
                (lazyImport ../../modules/${modName}/nixos/default.nix)
              ]))
              |> my-lib.flatten);
        }

        # Hjem-sided modules
        {
          imports = [
            inputs.hjem.nixosModules.hjem
          ];
          hjem = {
            extraModules =
              [
                ../../modules/options.nix
                ../../hosts/${hostname}/config.nix
                (lazyImport ../../hosts/${hostname}/hjem.nix)
              ]
              ++ (listModules
                |> (builtins.map (modName: [
                  (lazyImport ../../modules/${modName}/options.nix)
                  (lazyImport ../../modules/${modName}/hjem/default.nix)
                ]))
                |> my-lib.flatten);
            specialArgs = {inherit inputs my-lib;};
            users.${username} = {
              enable = true;
              user = username;
              directory = "/home/${username}";
            };
          };
        }
      ];
    };
in {
  inherit mkNixosSystem;
}