summaryrefslogtreecommitdiffstats
path: root/legacy.nix
blob: a94fe11f648e9b6cc03187deb9f523016335ce2a (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
{ inputs ? rec {
    nixpkgs.lib = import <nixpkgs/lib> // {
      nixosSystem = import <nixpkgs/nixos/lib/eval-config.nix>;
    };

    stockholm.overlays.default = import <stockholm/krebs/5pkgs>;
    stockholm.inputs.nix-writers = <stockholm/submodules/nix-writers>;
    stockholm.nixosModules =
      let
        inherit (nixpkgs) lib;
      in builtins.listToAttrs
        (map
          # to preserve the file name for debugability, don't import here
          (name: {name = lib.removeSuffix ".nix" name; value = (<stockholm/krebs/3modules> + "/${name}");})
          (lib.filter
            (name: name != "default.nix" && !lib.hasPrefix "." name)
            (lib.attrNames (builtins.readDir <stockholm/krebs/3modules>))));
  }
, mylib ? (import ./. { inherit (inputs.nixpkgs) lib; }).mylib
, overlays ? [
    (import (inputs.stockholm.inputs.nix-writers + "/pkgs"))
    (self: super: {
      stockholm.lib.types = self.lib.types // {
        inherit (self.mylib.types)
          hostname
          secret-file
          ;
      };
      inherit (inputs.stockholm.overlays.default self super)
        brain
        cgit-clear-cache
        git-hooks
        htgen
        htgen-imgur
        htgen-paste
        irc-announce
        painload
        repo-sync
        ;
    })
    (self: super: {
      inherit mylib;
    })
    (import ./pkgs)
  ]
, extraModules ? []
}: {
    nixosConfigurations =
      inputs.nixpkgs.lib.mapAttrs
        (name: _: let
          minimal.enable =
            name == "oai";

          system = (import ./systems/${name}/spec.nix).system;
        in
          inputs.nixpkgs.lib.nixosSystem {
            inherit system;
            specialArgs = {
              inherit inputs;

              lib = inputs.nixpkgs.lib // {
                # for stockholm.
                # without it krebs.hosts.*.nets.*.prefix breaks for ne
                # due to patched types.
                slib = mylib;
              };

              mylib = mylib // {
                importSecret =
                  p: _: {};
              };
            };
            modules = [
              ({ lib, ... }: {
                _file = "${toString ./legacy.nix} #1";
                imports = lib.optionals minimal.enable [
                  (./systems + "/${name}/config.nix")
                ];
              })
              ({ lib, mylib, ... }: {
                _file = "${toString ./legacy.nix} #2";
                imports = lib.optionals (!minimal.enable) [
                  (./systems + "/${name}/config.nix")
                  (let dirt = ./systems + "/${name}/dirt"; in
                    if builtins.pathExists dirt then dirt else {})
                  {
                    _file = "${toString ./legacy.nix} #2.1";
                    imports = [
                      inputs.stockholm.nixosModules.build
                      inputs.stockholm.nixosModules.dns
                      inputs.stockholm.nixosModules.exim
                      inputs.stockholm.nixosModules.exim-retiolum
                      inputs.stockholm.nixosModules.exim-smarthost
                      inputs.stockholm.nixosModules.github
                      inputs.stockholm.nixosModules.hosts
                      inputs.stockholm.nixosModules.htgen
                      inputs.stockholm.nixosModules.kartei
                      inputs.stockholm.nixosModules.krebs
                      inputs.stockholm.nixosModules.nixpkgs
                      inputs.stockholm.nixosModules.on-failure
                      inputs.stockholm.nixosModules.iana-etc
                      inputs.stockholm.nixosModules.per-user
                      inputs.stockholm.nixosModules.permown
                      inputs.stockholm.nixosModules.repo-sync
                      inputs.stockholm.nixosModules.secret
                      inputs.stockholm.nixosModules.setuid
                      inputs.stockholm.nixosModules.shadow
                      inputs.stockholm.nixosModules.sitemap
                      inputs.stockholm.nixosModules.ssh
                      inputs.stockholm.nixosModules.systemd
                      inputs.stockholm.nixosModules.tinc
                      inputs.stockholm.nixosModules.users
                      inputs.stockholm.nixosModules.zones
                    ];
                    nixpkgs.overlays = overlays;
                  }
                  ./configs
                  ./modules
                  { imports = extraModules; }
                ];
              })
            ];
          }
        )
        (builtins.readDir ./systems);
}