summaryrefslogtreecommitdiffstats
path: root/lib/types.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/types.nix')
-rw-r--r--lib/types.nix11
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;