summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/options.nix17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/options.nix b/lib/options.nix
index ecbd81cd997f..939f9948ceef 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -31,6 +31,23 @@ rec {
type = lib.types.bool;
};
+ # This option accept anything, but it does not produce any result. This
+ # is useful for sharing a module across different module sets without
+ # having to implement similar features as long as the value of the options
+ # are not expected.
+ mkSinkUndeclaredOptions = attrs: mkOption ({
+ internal = true;
+ visible = false;
+ default = false;
+ description = "Sink for option definitions.";
+ type = mkOptionType {
+ name = "sink";
+ check = x: true;
+ merge = loc: defs: false;
+ };
+ apply = x: throw "Option value is not readable because the option is not declared.";
+ } // attrs);
+
mergeDefaultOption = loc: defs:
let list = getValues defs; in
if length list == 1 then head list