mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-11 12:15:34 +03:00
Add nixosSubmodule option type
Since NixOS modules expect special arguments, use a hack to provide them
This commit is contained in:
parent
2deb26bd4a
commit
ca1c5cfa8f
2 changed files with 21 additions and 1 deletions
|
@ -195,6 +195,25 @@ rec {
|
|||
args = { name = ""; }; }).options;
|
||||
};
|
||||
|
||||
nixosSubmodule = nixos: args: mkOptionType rec {
|
||||
name = "submodule containing a NixOS config";
|
||||
check = x: isAttrs x || isFunction x;
|
||||
merge = loc: defs:
|
||||
let
|
||||
coerce = def: if isFunction def then def else { config = def; };
|
||||
in (import (nixos + "/lib/eval-config.nix") (args // {
|
||||
modules = (args.modules or []) ++
|
||||
map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs;
|
||||
|
||||
prefix = loc;
|
||||
})).config;
|
||||
getSubOptions = prefix: (import (nixos + "/lib/eval-config.nix") (args // {
|
||||
modules = (args.modules or []);
|
||||
|
||||
inherit prefix;
|
||||
})).options;
|
||||
};
|
||||
|
||||
# Obsolete alternative to configOf. It takes its option
|
||||
# declarations from the ‘options’ attribute of containing option
|
||||
# declaration.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue