···62626363# Check boolean option.
6464checkConfigOutput "false" config.enable ./declare-enable.nix
6565-checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./define-enable.nix
6565+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./define-enable.nix
66666767# Check integer types.
6868# unsigned
6969checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
7070-checkConfigError 'A definition for option .* is not of type.*unsigned integer.*. Definition values:\n- In .*: -23' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
7070+checkConfigError 'A definition for option .* is not of type.*unsigned integer.*. Definition values:\n\s*- In .*: -23' config.value ./declare-int-unsigned-value.nix ./define-value-int-negative.nix
7171# positive
7272-checkConfigError 'A definition for option .* is not of type.*positive integer.*. Definition values:\n- In .*: 0' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
7272+checkConfigError 'A definition for option .* is not of type.*positive integer.*. Definition values:\n\s*- In .*: 0' config.value ./declare-int-positive-value.nix ./define-value-int-zero.nix
7373# between
7474checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
7575-checkConfigError 'A definition for option .* is not of type.*between.*-21 and 43.*inclusive.*. Definition values:\n- In .*: -23' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
7575+checkConfigError 'A definition for option .* is not of type.*between.*-21 and 43.*inclusive.*. Definition values:\n\s*- In .*: -23' config.value ./declare-int-between-value.nix ./define-value-int-negative.nix
76767777# Check either types
7878# types.either
···125125set -- config.enable ./define-enable.nix ./declare-enable.nix
126126checkConfigOutput "true" "$@"
127127checkConfigOutput "false" "$@" ./disable-define-enable.nix
128128-checkConfigError "The option .*enable.* does not exist. Definition values:\n- In .*: true" "$@" ./disable-declare-enable.nix
128128+checkConfigError "The option .*enable.* does not exist. Definition values:\n\s*- In .*: true" "$@" ./disable-declare-enable.nix
129129checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-define-enable.nix ./disable-declare-enable.nix
130130checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-enable-modules.nix
131131···142142143143# Check _module.check.
144144set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix
145145-checkConfigError 'The option .* does not exist. Definition values:\n- In .*' "$@"
145145+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*' "$@"
146146checkConfigOutput "true" "$@" ./define-module-check.nix
147147148148# Check coerced value.
149149checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
150150checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
151151-checkConfigError 'A definition for option .* is not.*string or signed integer convertible to it.*. Definition values:\n- In .*: \[ \]' config.value ./declare-coerced-value.nix ./define-value-list.nix
151151+checkConfigError 'A definition for option .* is not.*string or signed integer convertible to it.*. Definition values:\n\s*- In .*: \[ \]' config.value ./declare-coerced-value.nix ./define-value-list.nix
152152153153# Check coerced value with unsound coercion
154154checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
155155-checkConfigError 'A definition for option .* is not of type .*. Definition values:\n- In .*: "1000"' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
156156-checkConfigError 'unrecognised JSON value' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
155155+checkConfigError 'A definition for option .* is not of type .*. Definition values:\n\s*- In .*: "1000"' config.value ./declare-coerced-value-unsound.nix ./define-value-string-bigint.nix
156156+checkConfigError 'json.exception.parse_error' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
157157158158# Check mkAliasOptionModule.
159159checkConfigOutput "true" config.enable ./alias-with-priority.nix
···169169## shorthandOnlyDefines config behaves as expected
170170checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
171171checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
172172-checkConfigError "You're trying to declare a value of type \`bool'\nrather than an attribute-set for the option" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix
172172+checkConfigError "You're trying to declare a value of type \`bool'\n\s*rather than an attribute-set for the option" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-shorthand.nix
173173checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
174174175175## submoduleWith should merge all modules in one swoop
···193193checkConfigOutput "true" config.enable ./disable-recursive/main.nix
194194checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix}
195195checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix}
196196-checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
196196+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
197197198198# Check that imports can depend on derivations
199199checkConfigOutput "true" config.enable ./import-from-store.nix
···277277## types.functionTo
278278checkConfigOutput "input is input" config.result ./functionTo/trivial.nix
279279checkConfigOutput "a b" config.result ./functionTo/merging-list.nix
280280-checkConfigError 'A definition for option .fun.\[function body\]. is not of type .string.. Definition values:\n- In .*wrong-type.nix' config.result ./functionTo/wrong-type.nix
280280+checkConfigError 'A definition for option .fun.\[function body\]. is not of type .string.. Definition values:\n\s*- In .*wrong-type.nix' config.result ./functionTo/wrong-type.nix
281281checkConfigOutput "b a" config.result ./functionTo/list-order.nix
282282checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
283283
···1717 <itemizedlist>
1818 <listitem>
1919 <para>
2020+ Nix has been updated to version 2.4, reference its
2121+ <link xlink:href="https://discourse.nixos.org/t/nix-2-4-released/15822">release
2222+ notes</link> for more information on what has changed. The
2323+ previous version of Nix, 2.3.16, remains available for the
2424+ time being in the <literal>nix_2_3</literal> package.
2525+ </para>
2626+ </listitem>
2727+ <listitem>
2828+ <para>
2029 <literal>iptables</literal> now uses
2130 <literal>nf_tables</literal> backend.
2231 </para>
+2
nixos/doc/manual/release-notes/rl-2111.section.md
···6677## Highlights {#sec-release-21.11-highlights}
8899+- Nix has been updated to version 2.4, reference its [release notes](https://discourse.nixos.org/t/nix-2-4-released/15822) for more information on what has changed. The previous version of Nix, 2.3.16, remains available for the time being in the `nix_2_3` package.
1010+911- `iptables` now uses `nf_tables` backend.
10121113- PHP now defaults to PHP 8.0, updated from 7.4.