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}