diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-08 22:33:36 -0600 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-01-08 22:33:36 -0600 |
| commit | 7b9a5eb561948521ac4669074cc746a0f848ed23 (patch) | |
| tree | e0ef6c7e172bedc3398197c7a1ffabed31b3134a /modules/services/nixos/selfhost/headscale.nix | |
| parent | 806f697f17214212197f09a8c6aaf6da307e496f (diff) | |
headscale
Diffstat (limited to 'modules/services/nixos/selfhost/headscale.nix')
| -rw-r--r-- | modules/services/nixos/selfhost/headscale.nix | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/modules/services/nixos/selfhost/headscale.nix b/modules/services/nixos/selfhost/headscale.nix new file mode 100644 index 0000000..9319691 --- /dev/null +++ b/modules/services/nixos/selfhost/headscale.nix @@ -0,0 +1,55 @@ +{ + config, + pkgs, + lib, + ... +}: let + cfg = config.collinux.services.selfhost.headscale; + + acl_file = (pkgs.formats.json {}).generate "acl.json" { + ssh = { + src = ["*"]; + dst = ["*"]; + users = ["autogroup:nonroot" "root"]; + action = "accept"; + }; + }; +in + lib.mkIf cfg.enable { + services.headscale = { + enable = true; + address = cfg.bind_host; + port = cfg.port; + settings = { + server_url = cfg.root_url; + + database.type = "sqlite"; + + dns = { + magic_dns = true; + base_domain = "collinux.tailnet"; + override_local_dns = true; + nameservers.global = ["9.9.9.9" "149.112.112.112" "2620:fe::fe" "2620:fe::9"]; + }; + + policy.path = "${acl_file}"; + + prefixes = { + "v4" = "100.100.0.0/16"; + allocation = "random"; + }; + + # leave tls for caddy to worry about + tls_cert_path = null; + tls_key_path = null; + + logtail.enabled = false; + }; + }; + + services.caddy.virtualHosts.${cfg.root_url}.extraConfig = lib.mkIf config.collinux.services.selfhost.caddy.enable '' + reverse_proxy localhost:8080 + ''; + + environment.systemPackages = [pkgs.headscale]; + } |
