1
0
Fork 0
dotfiles/system/nixos/wireguard-netns.nix

51 lines
1.7 KiB
Nix
Raw Normal View History

2023-04-13 20:46:32 +00:00
{ config, pkgs, ... }:
{
environment.systemPackages = with pkgs; [ wireguard-tools ];
systemd.services."netns@" = {
description = "%I network namespace";
before = [ "network.target" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.iproute}/bin/ip netns add %I";
ExecStop = "${pkgs.iproute}/bin/ip netns del %I";
};
};
systemd.services.wg = {
description = "wg network interface";
bindsTo = [ "netns@wg.service" ];
requires = [ "network-online.target" ];
2023-04-14 22:34:25 +00:00
after = [ "netns@wg.service" "run-agenix.d.mount" ];
2023-04-13 20:46:32 +00:00
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = with pkgs; writers.writeBash "wg-up" ''
set -e
2023-04-14 22:17:41 +00:00
echo "Creating interface ..."
2023-04-13 20:46:32 +00:00
${iproute}/bin/ip link add wg0 type wireguard
2023-04-14 22:17:41 +00:00
echo "Configuring wg0 ..."
2023-04-13 20:46:32 +00:00
${wireguard-tools}/bin/wg setconf wg0 ${config.age.secrets.wireguard-config.path}
${iproute}/bin/ip link set wg0 netns wg
${iproute}/bin/ip -n wg address add 10.66.10.158/32 dev wg0
${iproute}/bin/ip -n wg -6 address add fc00:bbbb:bbbb:bb01::3:a9d/128 dev wg0
2023-04-13 22:12:24 +00:00
${iproute}/bin/ip -n wg link set lo up
2023-04-13 20:46:32 +00:00
${iproute}/bin/ip -n wg link set wg0 up
${iproute}/bin/ip -n wg route add default dev wg0
${iproute}/bin/ip -n wg -6 route add default dev wg0
2023-04-14 22:17:41 +00:00
echo "Done!"
2023-04-13 20:46:32 +00:00
'';
ExecStop = with pkgs; writers.writeBash "wg-down" ''
2023-04-14 22:17:41 +00:00
echo "Tearing down wg0 ..."
2023-04-13 20:46:32 +00:00
${iproute}/bin/ip -n wg route del default dev wg0
${iproute}/bin/ip -n wg -6 route del default dev wg0
${iproute}/bin/ip -n wg link del wg0
2023-04-13 22:12:24 +00:00
${iproute}/bin/ip -n wg link set lo down
2023-04-14 22:17:41 +00:00
echo "Done!"
2023-04-13 20:46:32 +00:00
'';
};
};
}