aboutsummaryrefslogtreecommitdiffstats
path: root/modules/nixos/sils/tailscale.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/sils/tailscale.nix')
-rw-r--r--modules/nixos/sils/tailscale.nix40
1 files changed, 39 insertions, 1 deletions
diff --git a/modules/nixos/sils/tailscale.nix b/modules/nixos/sils/tailscale.nix
index 16db2da..e1f49a4 100644
--- a/modules/nixos/sils/tailscale.nix
+++ b/modules/nixos/sils/tailscale.nix
@@ -5,10 +5,48 @@
}: let
cfg = config.sils.tailscale;
in {
- options.sils.tailscale.enable = lib.mkEnableOption "Tailscale";
+ options.sils.tailscale = {
+ enable = lib.mkEnableOption "Tailscale";
+ openFirewall = true;
+ role = lib.mkOption {
+ type = lib.types.enum [
+ "client"
+ "server"
+ ];
+ };
+ };
config = lib.mkIf cfg.enable {
services.tailscale = {
enable = true;
+ authKeyFile = config.age.secrets.tailscale.path;
+ useRoutingFeatures = cfg.role;
+ extraDaemonFlags = [
+ "--no-logs-no-support"
+ ];
+ extraSetFlags = [
+ "--accept-routes"
+ ];
+ };
+ networking.firewall = {
+ trustedInterfaces = ["tailscale0"];
+ allowedUDPPorts = [config.services.tailscale.port];
+ checkReversePath = "loose";
+ };
+ systemd = {
+ services.tailscaled.serviceConfig.Environment = [
+ "TS_DEBUG_FIREWALL_MODE=nftables"
+ ];
+ network.wait-online.enable = false;
};
+ boot.initrd.systemd.network.wait-online.enable = false;
+
+ environment.persistence."/srv".directories = [
+ {
+ directory = "/var/lib/tailscale";
+ user = "root";
+ group = "root";
+ mode = "0700";
+ }
+ ];
};
}