From aaf3532cdeada0864ffb5b255eb3c79622724a05 Mon Sep 17 00:00:00 2001 From: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Tue, 22 Apr 2025 10:05:58 +0200 Subject: [PATCH] init headscale-ui --- server-modules/headscale.nix | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/server-modules/headscale.nix b/server-modules/headscale.nix index 833c9f7..b6fa0fa 100644 --- a/server-modules/headscale.nix +++ b/server-modules/headscale.nix @@ -1,7 +1,31 @@ -{ config, ... }: +{ config, pkgs, ... }: let derpPort = 3478; domain = "hadi.diy"; + headscale-ui-src = pkgs.fetchFromGitHub { + owner = "gurucomputing"; + repo = "headscale-ui"; + rev = "63041fd673d81da56e60d2b528a4991981eab746"; + sha256 = "pz7oDRfBf/dN+PMEqbMe+es6deQ4QP3pC191ASlyV7U="; + }; + headscale-ui = pkgs.buildNpmPackage { + pname = "headscale-ui"; + version = "0.0.1"; + src = headscale-ui-src; + npmDepsHash = "MePNbOPSe5wB8/6T3DLs+4+Qlr8f+7cCPs301il7iX8="; + buildPhase = '' + runHook preBuild + mkdir -p $out + npm run build + runHook postBuild + ''; + installPhase = '' + mv ./build $out/dist + ''; + makeCacheWritable = true; + dontFixup = true; + dontNpmBuild = true; + }; in { services = { headscale = { @@ -47,6 +71,11 @@ in { proxyPass = "http://${config.services.headscale.settings.metrics_listen_addr}/metrics"; }; + "/web" = { + root = "${headscale-ui}/dist"; + index = "index.html"; + tryFiles = [ "$uri" "/index.html" ]; + }; }; }; };