diff options
author | Silvan Mosberger <contact@infinisil.com> | 2020-09-15 20:30:48 +0200 |
---|---|---|
committer | Silvan Mosberger <contact@infinisil.com> | 2020-09-15 21:01:07 +0200 |
commit | 6e7bc2c6c90335e7bb7d7ca8cef77c58f0e37444 (patch) | |
tree | 1279c39812fa34607299e3c567921b225112757a /lib | |
parent | b3810166c7dc5c75a5961e9c92726361a1ffc316 (diff) |
lib/options: Fix mergeEqualOption for singular functions
Previously it would error out for a single function definition
Diffstat (limited to 'lib')
-rw-r--r-- | lib/options.nix | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/options.nix b/lib/options.nix index 38f4f1329f212..0494a597ab806 100644 --- a/lib/options.nix +++ b/lib/options.nix @@ -107,6 +107,10 @@ rec { /* "Merge" option definitions by checking that they all have the same value. */ mergeEqualOption = loc: defs: if defs == [] then abort "This case should never happen." + # Return early if we only have one element + # This also makes it work for functions, because the foldl' below would try + # to compare the first element with itself, which is false for functions + else if length defs == 1 then (elemAt defs 0).value else foldl' (val: def: if def.value != val then throw "The option `${showOption loc}' has conflicting definitions, in ${showFiles (getFiles defs)}." |