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'.
This commit is contained in:
parent
a4925bcfa8
commit
e212e07cf6
|
@ -65,6 +65,15 @@ rec {
|
||||||
throw "The unique option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}."
|
throw "The unique option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}."
|
||||||
else (head defs).value;
|
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);
|
getValues = map (x: x.value);
|
||||||
getFiles = map (x: x.file);
|
getFiles = map (x: x.file);
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ rec {
|
||||||
bool = mkOptionType {
|
bool = mkOptionType {
|
||||||
name = "boolean";
|
name = "boolean";
|
||||||
check = isBool;
|
check = isBool;
|
||||||
merge = loc: fold (x: y: x.value || y) false;
|
merge = mergeEqualOption;
|
||||||
};
|
};
|
||||||
|
|
||||||
int = mkOptionType {
|
int = mkOptionType {
|
||||||
|
|
Loading…
Reference in New Issue