blob: 270edfff2efdecb8f3bd768b40ac4218ef1e5171 (
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
127
128
129
130
131
132
|
{ 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>))));
}
, 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 = rec {
inherit inputs;
lib = inputs.nixpkgs.lib // {
# for stockholm.
# without it krebs.hosts.*.nets.*.prefix breaks for ne
# due to patched types.
slib = mylib;
};
mylib = (import ./. { inherit lib; }).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 = [
(import (inputs.stockholm.inputs.nix-writers + "/pkgs"))
(self: super: {
stockholm.lib.types = lib.types // {
inherit (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
;
})
];
}
./configs
./modules
{ imports = extraModules; }
# This must come before <stockholm/krebs>. And before means after, `imports`-wise.
({ inputs, mylib, ... }: {
nixpkgs.overlays = [
(self: super: {
inherit mylib;
})
(import (inputs.stockholm.inputs.nix-writers + "/pkgs"))
(import ./pkgs)
];
})
];
})
];
}
)
(builtins.readDir ./systems);
}
|