summaryrefslogtreecommitdiff
path: root/util/host.nix
blob: d100bfb6e6bd0df248ce5057c372152deac0a7c4 (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
{
  lib,
  inputs,
  mapFilterDirs,
}: rec {
  mkHost = {
    name,
    modules,
    specialArgs ? {},
    system ? "x86_64-linux",
    stateVersion ? "22.11",
    pkgs,
  }:
    with pkgs.lib;
      nixosSystem {
        inherit system specialArgs;
        modules =
          [
            ../profiles/base
            ../profiles/nixos
            ../hosts/${name}

            {
              system.stateVersion = stateVersion;
              networking.hostName = mkDefault name;
              nixpkgs = {
                overlays = with inputs; [nur.overlay getchoo.overlays.default];
                config = {
                  allowUnfree = true;
                  allowUnsupportedSystem = true;
                };
              };
              nix.registry.getchoo.flake = inputs.getchoo;
            }
          ]
          ++ modules;
      };

  mapHosts = hosts:
    mapFilterDirs ../hosts (_: v: v == "directory") (name: _:
      mkHost {
        inherit name;
        inherit (hosts.${name}) modules system stateVersion pkgs;
      });
}