···6263# Check boolean option.
64checkConfigOutput "false" config.enable ./declare-enable.nix
65-checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./define-enable.nix
6667# Check integer types.
68# unsigned
69checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
70-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
71# positive
72-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
73# between
74checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
75-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
7677# Check either types
78# types.either
···125set -- config.enable ./define-enable.nix ./declare-enable.nix
126checkConfigOutput "true" "$@"
127checkConfigOutput "false" "$@" ./disable-define-enable.nix
128-checkConfigError "The option .*enable.* does not exist. Definition values:\n- In .*: true" "$@" ./disable-declare-enable.nix
129checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-define-enable.nix ./disable-declare-enable.nix
130checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-enable-modules.nix
131···142143# Check _module.check.
144set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix
145-checkConfigError 'The option .* does not exist. Definition values:\n- In .*' "$@"
146checkConfigOutput "true" "$@" ./define-module-check.nix
147148# Check coerced value.
149checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
150checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
151-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
152153# Check coerced value with unsound coercion
154checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
155-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
156-checkConfigError 'unrecognised JSON value' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
157158# Check mkAliasOptionModule.
159checkConfigOutput "true" config.enable ./alias-with-priority.nix
···169## shorthandOnlyDefines config behaves as expected
170checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
171checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
172-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
173checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
174175## submoduleWith should merge all modules in one swoop
···193checkConfigOutput "true" config.enable ./disable-recursive/main.nix
194checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix}
195checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix}
196-checkConfigError 'The option .* does not exist. Definition values:\n- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
197198# Check that imports can depend on derivations
199checkConfigOutput "true" config.enable ./import-from-store.nix
···277## types.functionTo
278checkConfigOutput "input is input" config.result ./functionTo/trivial.nix
279checkConfigOutput "a b" config.result ./functionTo/merging-list.nix
280-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
281checkConfigOutput "b a" config.result ./functionTo/list-order.nix
282checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
283
···6263# Check boolean option.
64checkConfigOutput "false" config.enable ./declare-enable.nix
65+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./define-enable.nix
6667# Check integer types.
68# unsigned
69checkConfigOutput "42" config.value ./declare-int-unsigned-value.nix ./define-value-int-positive.nix
70+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
71# positive
72+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
73# between
74checkConfigOutput "42" config.value ./declare-int-between-value.nix ./define-value-int-positive.nix
75+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
7677# Check either types
78# types.either
···125set -- config.enable ./define-enable.nix ./declare-enable.nix
126checkConfigOutput "true" "$@"
127checkConfigOutput "false" "$@" ./disable-define-enable.nix
128+checkConfigError "The option .*enable.* does not exist. Definition values:\n\s*- In .*: true" "$@" ./disable-declare-enable.nix
129checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-define-enable.nix ./disable-declare-enable.nix
130checkConfigError "attribute .*enable.* in selection path .*config.enable.* not found" "$@" ./disable-enable-modules.nix
131···142143# Check _module.check.
144set -- config.enable ./declare-enable.nix ./define-enable.nix ./define-attrsOfSub-foo.nix
145+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*' "$@"
146checkConfigOutput "true" "$@" ./define-module-check.nix
147148# Check coerced value.
149checkConfigOutput "\"42\"" config.value ./declare-coerced-value.nix
150checkConfigOutput "\"24\"" config.value ./declare-coerced-value.nix ./define-value-string.nix
151+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
152153# Check coerced value with unsound coercion
154checkConfigOutput "12" config.value ./declare-coerced-value-unsound.nix
155+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
156+checkConfigError 'json.exception.parse_error' config.value ./declare-coerced-value-unsound.nix ./define-value-string-arbitrary.nix
157158# Check mkAliasOptionModule.
159checkConfigOutput "true" config.enable ./alias-with-priority.nix
···169## shorthandOnlyDefines config behaves as expected
170checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-shorthand.nix
171checkConfigError 'is not of type `boolean' config.submodule.config ./declare-submoduleWith-shorthand.nix ./define-submoduleWith-noshorthand.nix
172+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
173checkConfigOutput "true" config.submodule.config ./declare-submoduleWith-noshorthand.nix ./define-submoduleWith-noshorthand.nix
174175## submoduleWith should merge all modules in one swoop
···193checkConfigOutput "true" config.enable ./disable-recursive/main.nix
194checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-foo.nix}
195checkConfigOutput "true" config.enable ./disable-recursive/{main.nix,disable-bar.nix}
196+checkConfigError 'The option .* does not exist. Definition values:\n\s*- In .*: true' config.enable ./disable-recursive/{main.nix,disable-foo.nix,disable-bar.nix}
197198# Check that imports can depend on derivations
199checkConfigOutput "true" config.enable ./import-from-store.nix
···277## types.functionTo
278checkConfigOutput "input is input" config.result ./functionTo/trivial.nix
279checkConfigOutput "a b" config.result ./functionTo/merging-list.nix
280+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
281checkConfigOutput "b a" config.result ./functionTo/list-order.nix
282checkConfigOutput "a c" config.result ./functionTo/merging-attrs.nix
283
···17 <itemizedlist>
18 <listitem>
19 <para>
20+ Nix has been updated to version 2.4, reference its
21+ <link xlink:href="https://discourse.nixos.org/t/nix-2-4-released/15822">release
22+ notes</link> for more information on what has changed. The
23+ previous version of Nix, 2.3.16, remains available for the
24+ time being in the <literal>nix_2_3</literal> package.
25+ </para>
26+ </listitem>
27+ <listitem>
28+ <para>
29 <literal>iptables</literal> now uses
30 <literal>nf_tables</literal> backend.
31 </para>
+2
nixos/doc/manual/release-notes/rl-2111.section.md
···67## Highlights {#sec-release-21.11-highlights}
8009- `iptables` now uses `nf_tables` backend.
1011- PHP now defaults to PHP 8.0, updated from 7.4.
···67## Highlights {#sec-release-21.11-highlights}
89+- 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.
10+11- `iptables` now uses `nf_tables` backend.
1213- PHP now defaults to PHP 8.0, updated from 7.4.
···935936 rel8 = addTestToolDepend super.rel8 pkgs.postgresql;
937938- cachix = generateOptparseApplicativeCompletion "cachix" super.cachix;
0000939940 # Enable extra optimisations which increase build time, but also
941 # later compiler performance, so we should do this for user's benefit.
···935936 rel8 = addTestToolDepend super.rel8 pkgs.postgresql;
937938+ cachix = generateOptparseApplicativeCompletion "cachix" (super.cachix.override { nix = pkgs.nix_2_3; });
939+940+ hercules-ci-agent = super.hercules-ci-agent.override { nix = pkgs.nix_2_3; };
941+ hercules-ci-cnix-expr = super.hercules-ci-cnix-expr.override { nix = pkgs.nix_2_3; };
942+ hercules-ci-cnix-store = super.hercules-ci-cnix-store.override { nix = pkgs.nix_2_3; };
943944 # Enable extra optimisations which increase build time, but also
945 # later compiler performance, so we should do this for user's benefit.