From 2f365923d674cab9a935c62652c7dc4ee003d243 Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Sun, 21 Dec 2014 14:50:46 +0100 Subject: modules: Add mkSinkUndeclaredOptions. --- lib/options.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/options.nix') diff --git a/lib/options.nix b/lib/options.nix index ecbd81cd997..939f9948cee 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 -- cgit 1.4.1