parent
9ef09e0680
commit
4746f6d03e
@ -0,0 +1,54 @@ |
||||
{ lib, ... }: |
||||
let |
||||
inherit (lib) types mkOption setDefaultModuleLocation; |
||||
inherit (types) deferredModule lazyAttrsOf submodule str raw; |
||||
in |
||||
{ |
||||
imports = [ |
||||
# generic module, declaring submodules: |
||||
# - nodes.<name> |
||||
# - default |
||||
# where all nodes include the default |
||||
({ config, ... }: { |
||||
_file = "generic.nix"; |
||||
options.nodes = mkOption { |
||||
type = lazyAttrsOf (submodule { imports = config.default; }); |
||||
default = {}; |
||||
}; |
||||
options.default = mkOption { |
||||
type = deferredModule; |
||||
default = { }; |
||||
description = '' |
||||
Module that is included in all nodes. |
||||
''; |
||||
}; |
||||
}) |
||||
|
||||
{ |
||||
_file = "default-1.nix"; |
||||
default = { config, ... }: { |
||||
options.settingsDict = lib.mkOption { type = lazyAttrsOf str; default = {}; }; |
||||
}; |
||||
} |
||||
|
||||
{ |
||||
_file = "default-a-is-b.nix"; |
||||
default = { config, ... }: { |
||||
settingsDict.a = config.settingsDict.b; |
||||
}; |
||||
} |
||||
|
||||
{ |
||||
_file = "nodes-foo.nix"; |
||||
nodes.foo.settingsDict.b = "beta"; |
||||
} |
||||
|
||||
{ |
||||
_file = "nodes-foo-c-is-a.nix"; |
||||
nodes.foo = { config, ... }: { |
||||
settingsDict.c = config.settingsDict.a; |
||||
}; |
||||
} |
||||
|
||||
]; |
||||
} |
Loading…
Reference in new issue