about summary refs log tree commit diff
path: root/nixos/modules/services/networking
diff options
context:
space:
mode:
authorAndreas Stührk <andy@hammerhartes.de>2024-01-28 22:27:02 +0100
committerAndreas Stührk <andy@hammerhartes.de>2024-01-31 23:26:05 +0100
commitfc6c92faf36907f8d43034a3d5335aa41c571c84 (patch)
tree683f41c056b97126e001ecb47f217c0e1908019f /nixos/modules/services/networking
parent2148ac4b305df4253e7aea37832e28b559290537 (diff)
downloadnixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar.gz
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar.bz2
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar.lz
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar.xz
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.tar.zst
nixlib-fc6c92faf36907f8d43034a3d5335aa41c571c84.zip
nixos/nftables: remove default systemd dependencies
With DefaultDependencies enabled, systemd adds "After=basic.target" to
service units. `basic.target` has a dependency on `sockets.target`, so
the `nftables` has (amongst others) the following order constraints:

* Before=network-pre.target
* After=sockets.target

Those constraints are often unsatisfiable. For example, `systemd-networkd`
has a dependency `After=network-pre.target`. When a socket unit now uses
`BindToDevice=` on a device managed by `networkd`, a timeout occurs
because `networkd` waits for `network-pre.target`, but
`network-pre.target` depends (through nftables) on `sockets.target`, but
the device to bind the socket to is never brought up, as this would
happen through `networkd`.

This is fixed by removing the implicit dependency on `basic.target`.
Diffstat (limited to 'nixos/modules/services/networking')
-rw-r--r--nixos/modules/services/networking/nftables.nix7
1 files changed, 5 insertions, 2 deletions
diff --git a/nixos/modules/services/networking/nftables.nix b/nixos/modules/services/networking/nftables.nix
index 424d005dc0b5..46fa9d2de046 100644
--- a/nixos/modules/services/networking/nftables.nix
+++ b/nixos/modules/services/networking/nftables.nix
@@ -252,8 +252,10 @@ in
     networking.nftables.flushRuleset = mkDefault (versionOlder config.system.stateVersion "23.11" || (cfg.rulesetFile != null || cfg.ruleset != ""));
     systemd.services.nftables = {
       description = "nftables firewall";
-      before = [ "network-pre.target" ];
-      wants = [ "network-pre.target" ];
+      after = [ "sysinit.target" ];
+      before = [ "network-pre.target" "shutdown.target" ];
+      conflicts = [ "shutdown.target" ];
+      wants = [ "network-pre.target" "sysinit.target" ];
       wantedBy = [ "multi-user.target" ];
       reloadIfChanged = true;
       serviceConfig = let
@@ -315,6 +317,7 @@ in
         ExecStop = [ deletionsScriptVar cleanupDeletionsScript ];
         StateDirectory = "nftables";
       };
+      unitConfig.DefaultDependencies = false;
     };
   };
 }