From ed7c0c6e7579db97c8889f5bd2bdd8a66f60aab9 Mon Sep 17 00:00:00 2001 From: Bjørn Forsman Date: Thu, 21 Sep 2023 22:19:21 +0200 Subject: nixos/wireguard: add metric option This new option, networking.wireguard.interfaces.NAME.metric, allows increasing the metric of the routes, effectively lowering priority. (I'm using high metric to allow having the Wireguard interface always up, even when the client machines are on their home network. Before I had to stop the interface when home to avoid packet routing issues.) --- nixos/modules/services/networking/wireguard.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/networking/wireguard.nix b/nixos/modules/services/networking/wireguard.nix index 21473388d76e..d4099be12a27 100644 --- a/nixos/modules/services/networking/wireguard.nix +++ b/nixos/modules/services/networking/wireguard.nix @@ -164,6 +164,15 @@ let of the wireguard network has to be adjusted as well. ''; }; + + metric = mkOption { + default = null; + type = with types; nullOr int; + example = 700; + description = lib.mdDoc '' + Set the metric of routes related to this Wireguard interface. + ''; + }; }; }; @@ -395,7 +404,7 @@ let optionalString interfaceCfg.allowedIPsAsRoutes (concatMapStringsSep "\n" (allowedIP: - ''${ip} route replace "${allowedIP}" dev "${interfaceName}" table "${interfaceCfg.table}"'' + ''${ip} route replace "${allowedIP}" dev "${interfaceName}" table "${interfaceCfg.table}" ${optionalString (interfaceCfg.metric != null) "metric ${toString interfaceCfg.metric}"}'' ) peer.allowedIPs); in '' ${wg_setup} -- cgit 1.4.1