diff --git a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
index e1cd4c56f13c..3f53d67f72ce 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2211.section.xml
@@ -604,6 +604,47 @@
instead.
+
+
+ systemd-networkd v250 deprecated, renamed,
+ and moved some sections and settings which leads to the
+ following breaking module changes:
+
+
+
+
+ systemd.network.networks.<name>.dhcpV6PrefixDelegationConfig
+ is renamed to
+ systemd.network.networks.<name>.dhcpPrefixDelegationConfig.
+
+
+
+
+ systemd.network.networks.<name>.dhcpV6Config
+ no longer accepts the
+ ForceDHCPv6PDOtherInformation= setting.
+ Please use the WithoutRA= and
+ UseDelegatedPrefix= settings in your
+ systemd.network.networks.<name>.dhcpV6Config
+ and the DHCPv6Client= setting in your
+ systemd.network.networks.<name>.ipv6AcceptRAConfig
+ to control when the DHCPv6 client is started and how the
+ delegated prefixes are handled by the DHCPv6 client.
+
+
+
+
+ systemd.network.networks.<name>.networkConfig
+ no longer accepts the IPv6Token=
+ setting. Use the Token= setting in your
+ systemd.network.networks.<name>.ipv6AcceptRAConfig
+ instead. The
+ systemd.network.networks.<name>.ipv6Prefixes.*.ipv6PrefixConfig
+ now also accepts the Token= setting.
+
+
+
+
The meta.mainProgram attribute of packages
diff --git a/nixos/doc/manual/release-notes/rl-2211.section.md b/nixos/doc/manual/release-notes/rl-2211.section.md
index abb1ded9c0e4..505c10376b5a 100644
--- a/nixos/doc/manual/release-notes/rl-2211.section.md
+++ b/nixos/doc/manual/release-notes/rl-2211.section.md
@@ -201,6 +201,12 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
- The `aws` package has been removed due to being abandoned by the upstream. It is recommended to use `awscli` or `awscli2` instead.
+- `systemd-networkd` v250 deprecated, renamed, and moved some sections and settings which leads to the following breaking module changes:
+
+ * `systemd.network.networks..dhcpV6PrefixDelegationConfig` is renamed to `systemd.network.networks..dhcpPrefixDelegationConfig`.
+ * `systemd.network.networks..dhcpV6Config` no longer accepts the `ForceDHCPv6PDOtherInformation=` setting. Please use the `WithoutRA=` and `UseDelegatedPrefix=` settings in your `systemd.network.networks..dhcpV6Config` and the `DHCPv6Client=` setting in your `systemd.network.networks..ipv6AcceptRAConfig` to control when the DHCPv6 client is started and how the delegated prefixes are handled by the DHCPv6 client.
+ * `systemd.network.networks..networkConfig` no longer accepts the `IPv6Token=` setting. Use the `Token=` setting in your `systemd.network.networks..ipv6AcceptRAConfig` instead. The `systemd.network.networks..ipv6Prefixes.*.ipv6PrefixConfig` now also accepts the `Token=` setting.
+
- The `meta.mainProgram` attribute of packages in `wineWowPackages` now defaults to `"wine64"`.
- The `paperless` module now defaults `PAPERLESS_TIME_ZONE` to your configured system timezone.
diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix
index cb60117f0eb8..a9b81dd116bb 100644
--- a/nixos/modules/system/boot/networkd.nix
+++ b/nixos/modules/system/boot/networkd.nix
@@ -501,7 +501,6 @@ let
"LinkLocalAddressing"
"IPv4LLRoute"
"DefaultRouteOnDevice"
- "IPv6Token"
"LLMNR"
"MulticastDNS"
"DNSOverTLS"
@@ -526,7 +525,7 @@ let
"IPv6ProxyNDP"
"IPv6ProxyNDPAddress"
"IPv6SendRA"
- "DHCPv6PrefixDelegation"
+ "DHCPPrefixDelegation"
"IPv6MTUBytes"
"Bridge"
"Bond"
@@ -569,12 +568,11 @@ let
(assertValueOneOf "IPv4ProxyARP" boolValues)
(assertValueOneOf "IPv6ProxyNDP" boolValues)
(assertValueOneOf "IPv6SendRA" boolValues)
- (assertValueOneOf "DHCPv6PrefixDelegation" boolValues)
+ (assertValueOneOf "DHCPPrefixDelegation" boolValues)
(assertByteFormat "IPv6MTUBytes")
(assertValueOneOf "ActiveSlave" boolValues)
(assertValueOneOf "PrimarySlave" boolValues)
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
- (assertValueOneOf "IgnoreCarrierLoss" boolValues)
(assertValueOneOf "KeepConfiguration" (boolValues ++ ["static" "dhcp-on-stop" "dhcp"]))
];
@@ -619,6 +617,7 @@ let
"User"
"SuppressPrefixLength"
"Type"
+ "SuppressInterfaceGroup"
])
(assertInt "TypeOfService")
(assertRange "TypeOfService" 0 255)
@@ -632,6 +631,7 @@ let
(assertInt "SuppressPrefixLength")
(assertRange "SuppressPrefixLength" 0 128)
(assertValueOneOf "Type" ["blackhole" "unreachable" "prohibit"])
+ (assertRange "SuppressInterfaceGroup" 0 2147483647)
];
sectionRoute = checkUnitConfig "Route" [
@@ -711,6 +711,9 @@ let
"BlackList"
"RequestOptions"
"SendOption"
+ "FallbackLeaseLifetimeSec"
+ "Label"
+ "Use6RD"
])
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "RoutesToDNS" boolValues)
@@ -733,6 +736,8 @@ let
(assertPort "ListenPort")
(assertValueOneOf "SendRelease" boolValues)
(assertValueOneOf "SendDecline" boolValues)
+ (assertValueOneOf "FallbackLeaseLifetimeSec" ["forever" "infinity"])
+ (assertValueOneOf "Use6RD" boolValues)
];
sectionDHCPv6 = checkUnitConfig "DHCPv6" [
@@ -745,7 +750,6 @@ let
"MUDURL"
"RequestOptions"
"SendVendorOption"
- "ForceDHCPv6PDOtherInformation"
"PrefixDelegationHint"
"WithoutRA"
"SendOption"
@@ -754,27 +758,33 @@ let
"DUIDType"
"DUIDRawData"
"IAID"
+ "UseDelegatedPrefix"
])
(assertValueOneOf "UseAddress" boolValues)
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "UseNTP" boolValues)
(assertInt "RouteMetric")
(assertValueOneOf "RapidCommit" boolValues)
- (assertValueOneOf "ForceDHCPv6PDOtherInformation" boolValues)
- (assertValueOneOf "WithoutRA" ["solicit" "information-request"])
+ (assertValueOneOf "WithoutRA" ["no" "solicit" "information-request"])
(assertRange "SendOption" 1 65536)
(assertInt "IAID")
+ (assertValueOneOf "UseDelegatedPrefix" boolValues)
];
- sectionDHCPv6PrefixDelegation = checkUnitConfig "DHCPv6PrefixDelegation" [
+ sectionDHCPPrefixDelegation = checkUnitConfig "DHCPPrefixDelegation" [
(assertOnlyFields [
+ "UplinkInterface"
"SubnetId"
"Announce"
"Assign"
"Token"
+ "ManageTemporaryAddress"
+ "RouteMetric"
])
(assertValueOneOf "Announce" boolValues)
(assertValueOneOf "Assign" boolValues)
+ (assertValueOneOf "ManageTemporaryAddress" boolValues)
+ (assertRange "RouteMetric" 0 4294967295)
];
sectionIPv6AcceptRA = checkUnitConfig "IPv6AcceptRA" [
@@ -792,6 +802,10 @@ let
"RouteAllowList"
"DHCPv6Client"
"RouteMetric"
+ "UseMTU"
+ "UseGateway"
+ "UseRoutePrefix"
+ "Token"
])
(assertValueOneOf "UseDNS" boolValues)
(assertValueOneOf "UseDomains" (boolValues ++ ["route"]))
@@ -799,6 +813,9 @@ let
(assertValueOneOf "UseAutonomousPrefix" boolValues)
(assertValueOneOf "UseOnLinkPrefix" boolValues)
(assertValueOneOf "DHCPv6Client" (boolValues ++ ["always"]))
+ (assertValueOneOf "UseMTU" boolValues)
+ (assertValueOneOf "UseGateway" boolValues)
+ (assertValueOneOf "UseRoutePrefix" boolValues)
];
sectionDHCPServer = checkUnitConfig "DHCPServer" [
@@ -874,6 +891,7 @@ let
"Prefix"
"PreferredLifetimeSec"
"ValidLifetimeSec"
+ "Token"
])
(assertValueOneOf "AddressAutoconfiguration" boolValues)
(assertValueOneOf "OnLink" boolValues)
@@ -1338,12 +1356,17 @@ let
};
dhcpV6PrefixDelegationConfig = mkOption {
+ visible = false;
+ apply = _: throw "The option `systemd.network.networks..dhcpV6PrefixDelegationConfig` has been renamed to `systemd.network.networks..dhcpPrefixDelegationConfig`.";
+ };
+
+ dhcpPrefixDelegationConfig = mkOption {
default = {};
example = { SubnetId = "auto"; Announce = true; };
- type = types.addCheck (types.attrsOf unitOption) check.network.sectionDHCPv6PrefixDelegation;
+ type = types.addCheck (types.attrsOf unitOption) check.network.sectionDHCPPrefixDelegation;
description = lib.mdDoc ''
Each attribute in this set specifies an option in the
- `[DHCPv6PrefixDelegation]` section of the unit. See
+ `[DHCPPrefixDelegation]` section of the unit. See
{manpage}`systemd.network(5)` for details.
'';
};
@@ -1789,9 +1812,9 @@ let
[DHCPv6]
${attrsToSection def.dhcpV6Config}
''
- + optionalString (def.dhcpV6PrefixDelegationConfig != { }) ''
- [DHCPv6PrefixDelegation]
- ${attrsToSection def.dhcpV6PrefixDelegationConfig}
+ + optionalString (def.dhcpPrefixDelegationConfig != { }) ''
+ [DHCPPrefixDelegation]
+ ${attrsToSection def.dhcpPrefixDelegationConfig}
''
+ optionalString (def.ipv6AcceptRAConfig != { }) ''
[IPv6AcceptRA]
diff --git a/nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix b/nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix
index bf5049251c72..279b9aac8edb 100644
--- a/nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix
+++ b/nixos/tests/systemd-networkd-ipv6-prefix-delegation.nix
@@ -227,7 +227,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
IPv6AcceptRA = false;
# Delegate prefixes from the DHCPv6 PD pool.
- DHCPv6PrefixDelegation = true;
+ DHCPPrefixDelegation = true;
IPv6SendRA = true;
};