lib/types: add `ints.positive`.

For values that are positive, but cannot be 0.

Changed files
+25
lib
nixos
doc
manual
development
+2
lib/tests/modules.sh
···
# unsigned
checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
checkConfigError 'The option value .* in .* is not of type.*unsigned integer.*' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
# between
checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
checkConfigError 'The option value .* in .* is not of type.*between.*-21 and 43.*inclusive.*' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
···
# unsigned
checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
checkConfigError 'The option value .* in .* is not of type.*unsigned integer.*' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
+
# positive
+
checkConfigError 'The option value .* in .* is not of type.*positive integer.*' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
# between
checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
checkConfigError 'The option value .* in .* is not of type.*between.*-21 and 43.*inclusive.*' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
+9
lib/tests/modules/declare-int-positive-value.nix
···
···
+
{ lib, ... }:
+
+
{
+
options = {
+
value = lib.mkOption {
+
type = lib.types.ints.positive;
+
};
+
};
+
}
+3
lib/tests/modules/define-value-int-zero.nix
···
···
+
{
+
value = 0;
+
}
+4
lib/types.nix
···
name = "unsignedInt";
description = "unsigned integer, meaning >=0";
};
u8 = unsign 8 256;
u16 = unsign 16 65536;
u32 = unsign 32 4294967296;
···
name = "unsignedInt";
description = "unsigned integer, meaning >=0";
};
+
positive = addCheck types.int (x: x > 0) // {
+
name = "positiveInt";
+
description = "positive integer, meaning >0";
+
};
u8 = unsign 8 256;
u16 = unsign 16 65536;
u32 = unsign 32 4294967296;
+7
nixos/doc/manual/development/option-types.xml
···
for 8 bits).
</para></listitem>
</varlistentry>
</variablelist>
<para>String-related types:</para>
···
for 8 bits).
</para></listitem>
</varlistentry>
+
<varlistentry>
+
<term>
+
<varname>types.ints.positive</varname>
+
</term>
+
<listitem><para>A positive integer (that is > 0).
+
</para></listitem>
+
</varlistentry>
</variablelist>
<para>String-related types:</para>