nixos/networking-interfaces: add networking-scripted.target

This adds a target that groups together all the services of the
scripted backend. It has no role during the boot, but provides
a quick way to reset the network configuration.

For example, if addresses/routes are added/removed or an interface has
been stopped manually, running

  systemctl restart networking-scripted.target

will undo all the changes.
This commit is contained in:
rnhmjoj
2026-01-21 00:49:00 +01:00
parent 355908755a
commit 65c1c008f2
@@ -241,6 +241,7 @@ let
++ optional config.boot.isContainer "network.target"
++ optional (isDefaultGateway4 || isDefaultGateway6) "network-online.target";
bindsTo = deviceDependency i.name;
partOf = [ "networking-scripted.target" ];
after = [
"network-pre.target"
]
@@ -329,6 +330,7 @@ let
nameValuePair "${i.name}-netdev" {
description = "Virtual Network Interface ${i.name}";
bindsTo = optional (!config.boot.isContainer) "dev-net-tun.device";
partOf = [ "networking-scripted.target" ];
after = optional (!config.boot.isContainer) "dev-net-tun.device" ++ [ "network-pre.target" ];
wantedBy = [
"network.target"
@@ -363,7 +365,10 @@ let
(subsystemDevice n)
];
bindsTo = deps ++ optional v.rstp "mstpd.service";
partOf = [ "network.target" ]
partOf = [
"network.target"
"networking-scripted.target"
]
++ optional v.rstp "mstpd.service";
after = [
"network-pre.target"
@@ -469,7 +474,10 @@ let
]
++ internalConfigs;
before = [ "network.target" ] ++ internalConfigs;
partOf = [ "network.target" ]; # shutdown the bridge when network is shutdown
partOf = [
"network.target"
"networking-scripted.target"
]; # shutdown the bridge when network is shutdown
bindsTo = [ "ovs-vswitchd.service" ]; # requires ovs-vswitchd to be alive at all times
after = [
"network-pre.target"
@@ -537,6 +545,7 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps ++ map (i: "network-addresses-${i}.service") v.interfaces;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -585,6 +594,7 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -661,6 +671,7 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -732,6 +743,7 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -779,6 +791,7 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "networking-scripted.target" ];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -813,7 +826,10 @@ let
(subsystemDevice n)
];
bindsTo = deps;
partOf = [ "network.target" ];
partOf = [
"network.target"
"networking-scripted.target"
];
after = [ "network-pre.target" ] ++ deps;
before = [ "network.target" ];
serviceConfig.Type = "oneshot";
@@ -865,6 +881,13 @@ let
# to multi-user.target, this has the same result.
systemd.targets.network.wantedBy = [ "multi-user.target" ];
# This target serves no purpose during the boot, but can be
# used to quickly reset the network configuration by running
# systemctl restart networking-scripted.target
systemd.targets.networking-scripted = {
description = "NixOS scripted networking setup";
};
services.udev.extraRules = ''
KERNEL=="tun", TAG+="systemd"
'';