diff --git a/hosts/hosting-02/default.nix b/hosts/hosting-02/default.nix index d8a6517..ccf6155 100644 --- a/hosts/hosting-02/default.nix +++ b/hosts/hosting-02/default.nix @@ -54,20 +54,24 @@ serviceConfig = { Type = "oneshot"; RemainAfterExit = true; - ExecStart = '' - ${pkgs.iproute2}/bin/ip link add veth-%i type veth peer name veth-ns-%i - ${pkgs.iproute2}/bin/ip link set veth-ns-%i netns %i - ${pkgs.iproute2}/bin/ip link set veth-%i up - ${pkgs.iproute2}/bin/ip netns exec %i ${pkgs.iproute2}/bin/ip link set veth-ns-%i up - ${pkgs.iproute2}/bin/ip netns exec %i ${pkgs.iproute2}/bin/ip addr add 10.0.0.2/24 dev veth-ns-%i - ${pkgs.iproute2}/bin/ip netns exec %i ${pkgs.iproute2}/bin/ip route add default via 10.0.0.1 - ''; + ExecStart = + let + script = pkgs.writers.writeBash "veth-up" '' + ns="$1" + ${pkgs.iproute2}/bin/ip link add veth-init-$ns type veth peer name veth-ns-$ns + ${pkgs.iproute2}/bin/ip link set veth-ns-$ns netns $ns + ${pkgs.iproute2}/bin/ip link set veth-init-$ns up + ${pkgs.iproute2}/bin/ip netns exec $ns ${pkgs.iproute2}/bin/ip link set veth-ns-$ns up + ${pkgs.iproute2}/bin/ip netns exec $ns ${pkgs.iproute2}/bin/ip addr add 10.0.0.2/24 dev veth-ns-$ns + ''; + in + "${script} %i"; ExecStop = "${pkgs.iproute2}/bin/ip link del veth-%i"; }; }; systemd.network.networks."50-veth" = { - matchConfig.Name = "veth-*"; + matchConfig.Name = "veth-init-vpn"; networkConfig = { Address = "10.0.0.1/24"; };