lib/types: add number

For numbers that can be ints or floats.
This commit is contained in:
Naïm Favier 2022-07-17 12:32:28 +02:00
parent e703a434b7
commit eb72be8541
No known key found for this signature in database
GPG Key ID: 95AFCE8211908325

View File

@ -297,6 +297,30 @@ rec {
merge = mergeEqualOption;
};
number = either int float;
numbers = let
betweenDesc = lowest: highest:
"${builtins.toJSON lowest} and ${builtins.toJSON highest} (both inclusive)";
in {
between = lowest: highest:
assert lib.assertMsg (lowest <= highest)
"numbers.between: lowest must be smaller than highest";
addCheck number (x: x >= lowest && x <= highest) // {
name = "numberBetween";
description = "integer or floating point number between ${betweenDesc lowest highest}";
};
nonnegative = addCheck number (x: x >= 0) // {
name = "numberNonnegative";
description = "nonnegative integer or floating point number, meaning >=0";
};
positive = addCheck number (x: x > 0) // {
name = "numberPositive";
description = "positive integer or floating point number, meaning >0";
};
};
str = mkOptionType {
name = "str";
description = "string";