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
{
inputs,
lib,
utils,
pkgs,
config,
hostConfig,
dnsNix,
...
}:
let
modules = inputs.haumea.lib.load {
src = ./nixos;
transformer = [
inputs.haumea.lib.transformers.liftDefault
(
_:
lib.mapAttrs (
name: value:
(
if value ? option then
(
(lib.removeAttrs value [ "option" ])
// {
nixosOptions = lib.mkOption value.option;
}
)
else if value ? options then
(
(lib.removeAttrs value [ "options" ])
// {
nixosOptions = (
lib.mapAttrsRecursiveCond (element: !(element ? type)) (
path: value: lib.mkOption value
) value.options
);
}
)
else
(value)
)
)
)
(inputs.haumea.lib.transformers.hoistAttrs "nixosOptions" "options")
];
inputs = {
inherit (inputs.self) homeManagerModules;
inherit
inputs
lib
utils
pkgs
config
hostConfig
dnsNix
;
};
};
in
{
options = modules.options;
config = lib.mkMerge (
modules
|> lib.filterAttrs (name: value: name != "options")
|> lib.collect (element: element ? config)
|> lib.map (element: element.config)
);
}