diff options
author | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-12-07 22:08:00 +0100 |
---|---|---|
committer | Silvan Mosberger <silvan.mosberger@tweag.io> | 2023-12-08 21:50:29 +0100 |
commit | 8d3978c149352de6b7e8b72946b58a16427eda2c (patch) | |
tree | 42ab5a871dcfc8a995afb3d9bcf8fd9323c1b3ff /lib/types.nix | |
parent | 6cb8f045bf95959cde8845ac3bd24a9ef21b3333 (diff) |
lib.types.boolByOr: init
This type is necessary to have correct merging behavior for `allowUnfreePredicate` and `allowInsecurePredicate` Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Diffstat (limited to 'lib/types.nix')
-rw-r--r-- | lib/types.nix | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/types.nix b/lib/types.nix index 5ffbecda5db39..51e58eaa8ab51 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -275,6 +275,22 @@ rec { merge = mergeEqualOption; }; + boolByOr = mkOptionType { + name = "boolByOr"; + description = "boolean (merged using or)"; + descriptionClass = "noun"; + check = isBool; + merge = loc: defs: + foldl' + (result: def: + # Under the assumption that .check always runs before merge, we can assume that all defs.*.value + # have been forced, and therefore we assume we don't introduce order-dependent strictness here + result || def.value + ) + false + defs; + }; + int = mkOptionType { name = "int"; description = "signed integer"; |