diff --git a/nixos/modules/tasks/network-interfaces-scripted.nix b/nixos/modules/tasks/network-interfaces-scripted.nix index d94d9db54ca..179300ef166 100644 --- a/nixos/modules/tasks/network-interfaces-scripted.nix +++ b/nixos/modules/tasks/network-interfaces-scripted.nix @@ -60,21 +60,18 @@ let let deviceDependency = dev: - if (config.boot.isContainer == false) - then - # Trust udev when not in the container - optional (dev != null) (subsystemDevice dev) - else - # When in the container, check whether the interface is built from other definitions - if (hasAttr dev cfg.bridges) || - (hasAttr dev cfg.bonds) || - (hasAttr dev cfg.macvlans) || - (hasAttr dev cfg.sits) || - (hasAttr dev cfg.vlans) || - (hasAttr dev cfg.vswitches) || - (hasAttr dev cfg.wlanInterfaces) - then [ "${dev}-netdev.service" ] - else []; + # Use systemd service if we manage device creation, else + # trust udev when not in a container + if (hasAttr dev (filterAttrs (k: v: v.virtual) cfg.interfaces)) || + (hasAttr dev cfg.bridges) || + (hasAttr dev cfg.bonds) || + (hasAttr dev cfg.macvlans) || + (hasAttr dev cfg.sits) || + (hasAttr dev cfg.vlans) || + (hasAttr dev cfg.vswitches) || + (hasAttr dev cfg.wlanInterfaces) + then [ "${dev}-netdev.service" ] + else optional (dev != null && !config.boot.isContainer) (subsystemDevice dev); networkLocalCommands = { after = [ "network-setup.service" ]; @@ -211,7 +208,7 @@ let user "${i.virtualOwner}" ''; postStop = '' - ip link del ${i.name} + ip link del ${i.name} || true ''; }; @@ -349,7 +346,7 @@ let ip link set "${n}" up ''; postStop = '' - ip link delete "${n}" + ip link delete "${n}" || true ''; }); @@ -377,7 +374,7 @@ let ip link set "${n}" up ''; postStop = '' - ip link delete "${n}" + ip link delete "${n}" || true ''; }); @@ -401,7 +398,7 @@ let ip link set "${n}" up ''; postStop = '' - ip link delete "${n}" + ip link delete "${n}" || true ''; });