summaryrefslogtreecommitdiff
path: root/modules/nixosModules/server/tailscale.nix
blob: 41d4b5d4273a787b5c4d04a9555afd0da3c7554c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{ self, ... }: { 

  flake.nixosModules.tailscaleServer = { config, ... }: let
    cfg = config.hostOptions.server;
  in {
    imports = [
      self.nixosModules.hostOptions
    ];

    services.tailscale = {
      enable = true;
      useRoutingFeatures = "server";
      extraUpFlags = [
        "--login-server=https://headscale.${cfg.domain}"
        "--advertise-exit-node"
      ];
    };
  };

  flake.nixosModules.headscale = { config, ... }: let
    cfg = config.hostOptions.server;
  in {
    imports = [
      self.nixosModules.hostOptions
    ];

    services.headscale = {
      enable = true;
      port = 8085;
      settings = {
        server_url = "https://headscale.${cfg.domain}";
        dns = {
          magic_dns = false;
          nameservers.global = [ "1.1.1.1" "9.9.9.9" ];
        };
        prefixes = {
          v4 = "100.64.0.0/10";
          v6 = "fd7a:115c:a1e0::/48";
        };
      };
    };

    services.nginx.virtualHosts."headscale.${cfg.domain}" = {
      enableACME = true;
      forceSSL = true;
      locations."/" = {
        proxyPass = "http://127.0.0.1:8085";
        proxyWebsockets = true;
        extraConfig = ''
          proxy_buffering off;
        '';
      };
    };
  };
}