From e212e07cf6aac9d9e1c46db34b17fd16be2399c3 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 15 Jun 2015 18:04:27 +0200 Subject: Make types.bool complain on conflicting definitions Previously, conflicting definitions would merge to "true". Now they give an error, e.g. error: The option `hardware.enableAllFirmware' has conflicting definitions, in `/etc/nixos/configurations/misc/eelco/stuff.nix' and `/etc/nixos/configurations/misc/eelco/mandark.nix'. --- lib/options.nix | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib/options.nix') diff --git a/lib/options.nix b/lib/options.nix index a30397c7216..bfc5b5fa2ae 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -65,6 +65,15 @@ rec { throw "The unique option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}." else (head defs).value; + /* "Merge" option definitions by checking that they all have the same value. */ + mergeEqualOption = loc: defs: + if defs == [] then abort "This case should never happen." + else fold (def: val: + if def.value != val then + throw "The option `${showOption loc}' has conflicting definitions, in ${showFiles (getFiles defs)}." + else + val) (head defs).value defs; + getValues = map (x: x.value); getFiles = map (x: x.file); -- cgit 1.4.1