aboutsummaryrefslogtreecommitdiff
path: root/modules/services/nixos/selfhost
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-08 22:33:36 -0600
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-01-08 22:33:36 -0600
commit7b9a5eb561948521ac4669074cc746a0f848ed23 (patch)
treee0ef6c7e172bedc3398197c7a1ffabed31b3134a /modules/services/nixos/selfhost
parent806f697f17214212197f09a8c6aaf6da307e496f (diff)
headscale
Diffstat (limited to 'modules/services/nixos/selfhost')
-rw-r--r--modules/services/nixos/selfhost/default.nix1
-rw-r--r--modules/services/nixos/selfhost/headscale.nix55
2 files changed, 56 insertions, 0 deletions
diff --git a/modules/services/nixos/selfhost/default.nix b/modules/services/nixos/selfhost/default.nix
index 876586d..de1078b 100644
--- a/modules/services/nixos/selfhost/default.nix
+++ b/modules/services/nixos/selfhost/default.nix
@@ -2,6 +2,7 @@
imports = [
./adguard.nix
./forgejo.nix
+ ./headscale.nix
./caddy.nix
];
}
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];
+ }