Commit 4cbdcd4

HPCesia <me@hpcesia.com>
2026-07-10 15:03:35
Add GoatCounter service
1 parent 2bcb276
Changed files (2)
modules
hosts
hyacine
services
services
modules/hosts/hyacine/services/services.nix
@@ -6,6 +6,10 @@
       domain = "artalk.hpcesia.com";
     };
 
+    services.goatcounter = {
+      domains = ["goatcounter.hpcesia.com"];
+    };
+
     services.headscale = {
       domain = "gate.trin.one";
       port = 3465;
@@ -32,6 +36,7 @@
       den.aspects.services.webserver
 
       den.aspects.services.artalk
+      den.aspects.services.goatcounter
       den.aspects.services.headscale
       den.aspects.services.vaultwarden
       den.aspects.services.wakapi
modules/services/goatcounter.nix
@@ -0,0 +1,44 @@
+{lib, ...}: {
+  den.aspects.services.goatcounter = {
+    settings = {
+      domains = lib.mkOption {
+        type = lib.listOf lib.types.str;
+        default = [];
+      };
+      port = lib.mkOption {
+        type = lib.types.port;
+        default = 4627;
+      };
+    };
+
+    persist = {
+      directories = [
+        {
+          directory = "/var/lib/private/goatcounter";
+          user = "nobody";
+          group = "nogroup";
+          mode = "0755";
+        }
+      ];
+    };
+
+    reverseProxy = {host, ...}: let
+      cfg = host.settings.services.goatcounter;
+    in
+      lib.genAttrs cfg.domains {inherit (cfg) port;};
+
+    nixos = {host, ...}: let
+      cfg = host.settings.services.goatcounter;
+    in {
+      services.goatcounter = {
+        enable = true;
+        address = "127.0.0.1";
+        port = cfg.port;
+        proxy = true;
+        extraArgs = [
+          "-automigrate"
+        ];
+      };
+    };
+  };
+}