nixos/networkd: make wait-online not time out
A further bug to our strange multi-user.target depending on network-online.target issue is that systemd recently changed the behaviour of systemd-networkd-wait-online to no longer consider the absence of interfaces with RequiredForOnline to be sufficient to be online: https://github.com/systemd/systemd/pull/27825 On the advice of the systemd developers (https://github.com/systemd/systemd/issues/29388), this commit changes the configuration of systemd-networkd-wait-online to pass --any by default, and lets the default DHCP interfaces be RequiredForOnline as they would be by default if the option is omitted. It is plausible that systemd-networkd-wait-online may still fail if there are no interfaces at all. However, that probably cannot be avoided.
This commit is contained in:
@@ -59,23 +59,14 @@ let
|
||||
# more likely to result in interfaces being configured to
|
||||
# use DHCP when they shouldn't.
|
||||
|
||||
# When wait-online.anyInterface is enabled, RequiredForOnline really
|
||||
# means "sufficient for online", so we can enable it.
|
||||
# Otherwise, don't block the network coming online because of default networks.
|
||||
matchConfig.Name = ["en*" "eth*"];
|
||||
DHCP = "yes";
|
||||
linkConfig.RequiredForOnline =
|
||||
lib.mkDefault (if initrd
|
||||
then config.boot.initrd.systemd.network.wait-online.anyInterface
|
||||
else config.systemd.network.wait-online.anyInterface);
|
||||
networkConfig.IPv6PrivacyExtensions = "kernel";
|
||||
};
|
||||
networks."99-wireless-client-dhcp" = {
|
||||
# Like above, but this is much more likely to be correct.
|
||||
matchConfig.WLANInterfaceType = "station";
|
||||
DHCP = "yes";
|
||||
linkConfig.RequiredForOnline =
|
||||
lib.mkDefault config.systemd.network.wait-online.anyInterface;
|
||||
networkConfig.IPv6PrivacyExtensions = "kernel";
|
||||
# We also set the route metric to one more than the default
|
||||
# of 1024, so that Ethernet is preferred if both are
|
||||
|
||||
Reference in New Issue
Block a user