diff --git a/nixos/modules/tasks/network-interfaces-systemd.nix b/nixos/modules/tasks/network-interfaces-systemd.nix index 23e1e611a71..088bffd7c50 100644 --- a/nixos/modules/tasks/network-interfaces-systemd.nix +++ b/nixos/modules/tasks/network-interfaces-systemd.nix @@ -93,7 +93,17 @@ in (if i.useDHCP != null then i.useDHCP else false)); address = forEach (interfaceIps i) (ip: "${ip.address}/${toString ip.prefixLength}"); - networkConfig.IPv6PrivacyExtensions = "kernel"; + # IPv6PrivacyExtensions=kernel seems to be broken with networkd. + # Instead of using IPv6PrivacyExtensions=kernel, configure it according to the value of + # `tempAddress`: + networkConfig.IPv6PrivacyExtensions = { + # generate temporary addresses and use them by default + "default" = true; + # generate temporary addresses but keep using the standard EUI-64 ones by default + "enabled" = "prefer-public"; + # completely disable temporary addresses + "disabled" = false; + }.${i.tempAddress}; linkConfig = optionalAttrs (i.macAddress != null) { MACAddress = i.macAddress; } // optionalAttrs (i.mtu != null) {