summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/types.nix10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/types.nix b/lib/types.nix
index ee891f8231b6..0810a43ed0eb 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -453,6 +453,16 @@ rec {
functor = (defaultFunctor name) // { wrapped = elemType; };
};
+ functionTo = elemType: mkOptionType {
+ name = "function that evaluates to a(n) ${elemType.name}";
+ check = isFunction;
+ merge = loc: defs:
+ fnArgs: elemType.merge loc (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs);
+ 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;