nixos/wireguard: extract common env for ip route to variable

This commit is contained in:
Dmitriy Pleshevskiy 2025-01-31 20:17:23 +03:00
parent f8dcf9d781
commit 5b464b4ebd
Signed by: pleshevskiy
GPG key ID: 17041163DA10A9A2

View file

@ -4,6 +4,11 @@ let
cfg = config.local.services.vpn.wireguard; cfg = config.local.services.vpn.wireguard;
addrsViaDefaultInterface = import ./defaultInterfaceAddrs.secret.nix; addrsViaDefaultInterface = import ./defaultInterfaceAddrs.secret.nix;
ipRouteParams = ''
addr=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $3; exit}'`
interface=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $5; exit}'`
'';
in in
{ {
options.local.services.vpn.wireguard = with lib; { options.local.services.vpn.wireguard = with lib; {
@ -45,18 +50,12 @@ in
# Path to the private key file. # Path to the private key file.
privateKeyFile = cfg.privateKeyFile; privateKeyFile = cfg.privateKeyFile;
postUp = '' postUp = ipRouteParams + lib.concatLines (map
addr=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $3; exit}'`
interface=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $5; exit}'`
'' + lib.concatLines (map
(addr: "${pkgs.iproute2}/bin/ip route add ${addr} via $addr dev $interface || true") (addr: "${pkgs.iproute2}/bin/ip route add ${addr} via $addr dev $interface || true")
addrsViaDefaultInterface addrsViaDefaultInterface
); );
preDown = '' preDown = ipRouteParams + lib.concatLines (map
addr=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $3; exit}'`
interface=`${pkgs.iproute2}/bin/ip route | ${pkgs.gawk}/bin/awk '/default/ {print $5; exit}'`
'' + lib.concatLines (map
(addr: "${pkgs.iproute2}/bin/ip route del ${addr} via $addr dev $interface || true") (addr: "${pkgs.iproute2}/bin/ip route del ${addr} via $addr dev $interface || true")
addrsViaDefaultInterface addrsViaDefaultInterface
); );