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.)
This commit is contained in:
Bjørn Forsman 2023-09-21 22:19:21 +02:00
parent 8b5ab8341e
commit ed7c0c6e75

View file

@ -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}