update vpn options
This commit is contained in:
parent
99fff40577
commit
e0f402134e
@ -32,7 +32,7 @@
|
|||||||
deviceSpecific.isShared = false;
|
deviceSpecific.isShared = false;
|
||||||
deviceSpecific.isGaming = true;
|
deviceSpecific.isGaming = true;
|
||||||
deviceSpecific.enableVirtualisation = true;
|
deviceSpecific.enableVirtualisation = true;
|
||||||
deviceSpecific.wireguard.enable = true;
|
deviceSpecific.vpn.mullvad.enable = true;
|
||||||
|
|
||||||
boot.zfs.forceImportAll = lib.mkForce false;
|
boot.zfs.forceImportAll = lib.mkForce false;
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
deviceSpecific.isShared = false;
|
deviceSpecific.isShared = false;
|
||||||
deviceSpecific.isGaming = true;
|
deviceSpecific.isGaming = true;
|
||||||
deviceSpecific.enableVirtualisation = true;
|
deviceSpecific.enableVirtualisation = true;
|
||||||
deviceSpecific.wireguard.enable = true;
|
deviceSpecific.vpn.mullvad.enable = true;
|
||||||
|
|
||||||
boot.blacklistedKernelModules = [
|
boot.blacklistedKernelModules = [
|
||||||
"psmouse"
|
"psmouse"
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
ram = 1;
|
ram = 1;
|
||||||
};
|
};
|
||||||
deviceSpecific.enableVirtualisation = true;
|
deviceSpecific.enableVirtualisation = true;
|
||||||
deviceSpecific.wireguard.enable = false;
|
deviceSpecific.vpn.mullvad.enable = false;
|
||||||
deviceSpecific.isServer = lib.mkForce true;
|
deviceSpecific.isServer = lib.mkForce true;
|
||||||
|
|
||||||
systemd.suppressedSystemUnits = [
|
systemd.suppressedSystemUnits = [
|
||||||
|
@ -76,14 +76,14 @@ with types; {
|
|||||||
type = bool;
|
type = bool;
|
||||||
default = config.deviceSpecific.devInfo.drive.type == "ssd";
|
default = config.deviceSpecific.devInfo.drive.type == "ssd";
|
||||||
};
|
};
|
||||||
wireguard = {
|
vpn = {
|
||||||
enable = mkOption {
|
mullvad.enable = mkOption {
|
||||||
type = bool;
|
type = bool;
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
killswitch = mkOption {
|
tailscale.enable = mkOption {
|
||||||
type = bool;
|
type = bool;
|
||||||
default = true;
|
default = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
57
profiles/vpn.nix
Normal file
57
profiles/vpn.nix
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{ pkgs, lib, config, ... }:
|
||||||
|
let
|
||||||
|
isMullvad = config.deviceSpecific.vpn.mullvad.enable;
|
||||||
|
isTailscale = config.deviceSpecific.vpn.tailscale.enable;
|
||||||
|
in {
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf isMullvad {
|
||||||
|
services.mullvad-vpn = {
|
||||||
|
enable = true;
|
||||||
|
enableExcludeWrapper = true;
|
||||||
|
package = pkgs.mullvad-vpn;
|
||||||
|
};
|
||||||
|
startupApplications = [ "${pkgs.mullvad-vpn}/bin/mullvad-gui" ];
|
||||||
|
persist.state.homeDirectories = [ ".config/Mullvad VPN" ];
|
||||||
|
persist.cache.directories = [ "/var/cache/mullvad-vpn" ];
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf isTailscale {
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
#interfaceName = "userspace-networking";
|
||||||
|
interfaceName = "tailscale0";
|
||||||
|
};
|
||||||
|
systemd.services.tailscaled.serviceConfig.ExecStart = [
|
||||||
|
""
|
||||||
|
"${pkgs.mullvad}/bin/mullvad-exclude ${pkgs.tailscale}/bin/tailscaled --state=/var/lib/tailscale/tailscaled.state --socket=/run/tailscale/tailscaled.sock --port=\${PORT} $FLAGS"
|
||||||
|
];
|
||||||
|
persist.state.directories = [ "/var/lib/tailscale" ];
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf (isMullvad && isTailscale) {
|
||||||
|
# FIXME: allow mullvad custom dns
|
||||||
|
networking.nftables.ruleset = let
|
||||||
|
resolver_addrs = "100.100.100.100";
|
||||||
|
excluded_ipv4 = "100.64.0.1/10";
|
||||||
|
excluded_ipv6 = "fd7a:115c:a1e0::/48";
|
||||||
|
in ''
|
||||||
|
table inet mullvad-ts {
|
||||||
|
chain excludeOutgoing {
|
||||||
|
type route hook output priority 0; policy accept;
|
||||||
|
ip daddr ${excluded_ipv4} ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
ip6 daddr ${excluded_ipv6} ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
}
|
||||||
|
chain allow-incoming {
|
||||||
|
type filter hook input priority -100; policy accept;
|
||||||
|
iifname "${config.services.tailscale.interfaceName}" ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
}
|
||||||
|
chain excludeDns {
|
||||||
|
type filter hook output priority -10; policy accept;
|
||||||
|
ip daddr ${resolver_addrs} udp dport 53 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
ip daddr ${resolver_addrs} tcp dport 53 ct mark set 0x00000f41 meta mark set 0x6d6f6c65;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user