From 0c795a8127dbed56a0accd5466f6c7ffb80638d7 Mon Sep 17 00:00:00 2001 From: linj Date: Wed, 23 Mar 2022 17:52:35 +0800 Subject: [PATCH] nixos/wireguard: fix dependencies on network-related targets wireguard-${name}.service only sets up interfaces and doesn't need to connect to the Internet. See sections of these three network-related targets in systemd manuals[1][2] for more information. Also, remove the redundant multi-user.target in peer units. Fixes #142152 [1]: https://www.freedesktop.org/software/systemd/man/systemd.special.html [2]: https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/ --- nixos/modules/services/networking/wireguard.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/nixos/modules/services/networking/wireguard.nix b/nixos/modules/services/networking/wireguard.nix index 7cd44b2f8a0a..a3c3c245f1d7 100644 --- a/nixos/modules/services/networking/wireguard.nix +++ b/nixos/modules/services/networking/wireguard.nix @@ -301,8 +301,9 @@ let { description = "WireGuard Peer - ${interfaceName} - ${peer.publicKey}"; requires = [ "wireguard-${interfaceName}.service" ]; - after = [ "wireguard-${interfaceName}.service" ]; - wantedBy = [ "multi-user.target" "wireguard-${interfaceName}.service" ]; + wants = [ "network-online.target" ]; + after = [ "wireguard-${interfaceName}.service" "network-online.target" ]; + wantedBy = [ "wireguard-${interfaceName}.service" ]; environment.DEVICE = interfaceName; environment.WG_ENDPOINT_RESOLUTION_RETRIES = "infinity"; path = with pkgs; [ iproute2 wireguard-tools ]; @@ -379,8 +380,9 @@ let nameValuePair "wireguard-${name}" { description = "WireGuard Tunnel - ${name}"; - requires = [ "network-online.target" ]; - after = [ "network.target" "network-online.target" ]; + after = [ "network-pre.target" ]; + wants = [ "network.target" ]; + before = [ "network.target" ]; wantedBy = [ "multi-user.target" ]; environment.DEVICE = name; path = with pkgs; [ kmod iproute2 wireguard-tools ];