{ config, ... }: let domain = config.networking.domain; in { imports = [ ./mailer.nix ../settings/programs/sqlite.nix ]; environment.systemPackages = [ config.services.goatcounter.package ]; services.goatcounter = { enable = true; address = "localhost"; port = 8082; proxy = true; extraArgs = [ "-db" "sqlite3+db/goatcounter.sqlite3" "-websocket" "-automigrate" "-email-from" "goatcounter@${domain}" "-smtp" "smtp://localhost:25" "-ratelimit" "api-count:100/1" ]; }; services.caddy.virtualHosts = { "stats.${domain}" = let srv = config.services.goatcounter; in { serverAliases = [ "stats.searchix.ovh" "stats.stable.searchix.ovh" ] ++ map (d: "${d}.stats.${domain}") [ ]; # TODO: switch to on-demand TLS extraConfig = '' reverse_proxy ${srv.address}:${toString srv.port} ''; }; }; ## actalis doesn't allow wildcard on free tier # security.acme.certs."stats.${domain}" = { # extraDomainNames = [ "*.stats.${domain}" ]; # }; }