main
 1{lib, ...}: {
 2  den.aspects.services.goatcounter = {
 3    settings = {
 4      domains = lib.mkOption {
 5        type = lib.listOf lib.types.str;
 6        default = [];
 7      };
 8      port = lib.mkOption {
 9        type = lib.types.port;
10        default = 4627;
11      };
12    };
13
14    persist = {
15      directories = [
16        {
17          directory = "/var/lib/private/goatcounter";
18          user = "nobody";
19          group = "nogroup";
20          mode = "0755";
21        }
22      ];
23    };
24
25    reverseProxy = {host, ...}: let
26      cfg = host.settings.services.goatcounter;
27    in
28      lib.genAttrs cfg.domains {inherit (cfg) port;};
29
30    nixos = {host, ...}: let
31      cfg = host.settings.services.goatcounter;
32    in {
33      services.goatcounter = {
34        enable = true;
35        address = "127.0.0.1";
36        port = cfg.port;
37        proxy = true;
38        extraArgs = [
39          "-automigrate"
40        ];
41      };
42    };
43  };
44}