diff options
Diffstat (limited to 'lib/types.nix')
-rw-r--r-- | lib/types.nix | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/types.nix b/lib/types.nix index ee891f8231b6..d0a8e96149d7 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -453,6 +453,17 @@ rec { functor = (defaultFunctor name) // { wrapped = elemType; }; }; + functionTo = elemType: mkOptionType { + name = "functionTo"; + description = "function that evaluates to a(n) ${elemType.name}"; + check = isFunction; + merge = loc: defs: + fnArgs: (mergeDefinitions (loc ++ [ "[function body]" ]) elemType (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs)).mergedValue; + getSubOptions = elemType.getSubOptions; + getSubModules = elemType.getSubModules; + substSubModules = m: functionTo (elemType.substSubModules m); + }; + # A submodule (like typed attribute set). See NixOS manual. submodule = modules: submoduleWith { shorthandOnlyDefinesConfig = true; |