mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
lib/types: add number
For numbers that can be ints or floats.
This commit is contained in:
parent
e703a434b7
commit
eb72be8541
@ -226,11 +226,11 @@ rec {
|
||||
};
|
||||
|
||||
int = mkOptionType {
|
||||
name = "int";
|
||||
description = "signed integer";
|
||||
check = isInt;
|
||||
merge = mergeEqualOption;
|
||||
};
|
||||
name = "int";
|
||||
description = "signed integer";
|
||||
check = isInt;
|
||||
merge = mergeEqualOption;
|
||||
};
|
||||
|
||||
# Specialized subdomains of int
|
||||
ints =
|
||||
@ -291,10 +291,34 @@ rec {
|
||||
port = ints.u16;
|
||||
|
||||
float = mkOptionType {
|
||||
name = "float";
|
||||
description = "floating point number";
|
||||
check = isFloat;
|
||||
merge = mergeEqualOption;
|
||||
name = "float";
|
||||
description = "floating point number";
|
||||
check = isFloat;
|
||||
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 {
|
||||
|
Loading…
Reference in New Issue
Block a user