nixos-config/system/vpn.nix

61 lines
1.7 KiB
Nix
Raw Normal View History

2024-05-26 16:45:38 +02:00
{
config,
pkgs,
lib,
...
}:
2020-05-22 18:16:21 +02:00
let
cfg = config.services.tailscale;
tailscaleInterface = cfg.interfaceName;
2024-01-21 21:40:27 +01:00
inherit (config.networking) hostName;
tailnetHost = "${hostName}.tail05275.ts.net";
2024-05-26 16:45:38 +02:00
in
{
networking.wireguard.enable = true;
2023-12-27 18:03:57 +01:00
networking.firewall.trustedInterfaces = [ tailscaleInterface ];
2023-12-27 18:03:57 +01:00
services.tailscale = {
enable = true;
package = pkgs.unstable.tailscale;
2023-12-27 18:03:57 +01:00
openFirewall = true;
useRoutingFeatures = "both";
extraUpFlags = [
"--reset"
"--accept-routes"
2024-01-12 20:46:03 +01:00
"--exit-node-allow-lan-access"
2024-04-30 23:13:50 +02:00
"--exit-node=de-dus-wg-001.mullvad.ts.net"
];
2023-12-27 18:03:57 +01:00
};
2024-05-26 16:45:38 +02:00
systemd.services.tailscaled.serviceConfig.Environment = [ "TS_DEBUG_FIREWALL_MODE=auto" ];
2024-01-12 20:46:03 +01:00
# call taiscale up without --auth-key
2024-01-25 02:18:09 +01:00
systemd.services.tailscaled-autoconnect = lib.mkIf (cfg.authKeyFile == null) {
after = [ "tailscaled.service" ];
wants = [ "tailscaled.service" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "oneshot";
2024-05-26 16:45:38 +02:00
script =
''
status=$(${config.systemd.package}/bin/systemctl show -P StatusText tailscaled.service)
if [[ $status != Connected* ]]; then
${cfg.package}/bin/tailscale up
fi
2024-01-21 21:40:27 +01:00
2024-05-26 16:45:38 +02:00
# some options cannot be set immediately
${cfg.package}/bin/tailscale up ${lib.escapeShellArgs cfg.extraUpFlags}
2024-05-26 16:45:38 +02:00
${cfg.package}/bin/tailscale cert ${tailnetHost}
''
+ lib.optionalString config.services.nginx.enable ''
chown nginx:nginx /var/lib/tailscale/certs/${tailnetHost}.{key,crt}
'';
2024-01-25 02:18:09 +01:00
};
services.nginx.virtualHosts.${tailnetHost} = {
sslCertificate = "/var/lib/tailscale/certs/${tailnetHost}.crt";
sslCertificateKey = "/var/lib/tailscale/certs/${tailnetHost}.key";
};
2020-05-22 18:16:21 +02:00
}