diff options
Diffstat (limited to 'modules/nixos/plausible.nix')
-rw-r--r-- | modules/nixos/plausible.nix | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/modules/nixos/plausible.nix b/modules/nixos/plausible.nix deleted file mode 100644 index d63e3ab..0000000 --- a/modules/nixos/plausible.nix +++ /dev/null @@ -1,129 +0,0 @@ -{ - config, - inputs, - lib, - ... -}: -with lib; -let - cfg = config.nixfiles.modules.plausible; -in -{ - options.nixfiles.modules.plausible = { - enable = mkEnableOption "Plausible Analytics"; - - port = mkOption { - description = "Port."; - type = with types; port; - default = 8000; - }; - - domain = mkOption { - description = "Domain name sans protocol scheme."; - type = with types; nullOr str; - default = "plausible.${config.networking.domain}"; - }; - }; - - config = - let - db = "plausible"; - in - mkIf cfg.enable { - _module.args.libPlausible = { - htmlPlausibleScript = - { - domain ? "$host", - src ? "https://${cfg.domain}/js/script.js", - }: - ''<script defer data-domain="${domain}" src="${src}"></script>''; - }; - - secrets = { - plausible-key.file = "${inputs.self}/secrets/plausible-key"; - plausible-admin-password.file = "${inputs.self}/secrets/plausible-admin-password"; - plausible-smtp-password.file = "${inputs.self}/secrets/smtp-password"; - }; - - nixfiles.modules = { - nginx = { - enable = true; - upstreams.plausible.servers."127.0.0.1:${toString cfg.port}" = { }; - virtualHosts.${cfg.domain}.locations."/" = { - proxyPass = "http://plausible"; - proxyWebsockets = true; - }; - }; - postgresql = { - enable = true; - extraPostStart = [ - '' - $PSQL "${db}" -tAc 'GRANT ALL ON SCHEMA "public" TO "${db}"' - $PSQL "${db}" -tAc 'CREATE EXTENSION IF NOT EXISTS citext' - '' - ]; - }; - clickhouse.enable = true; - }; - - services.postgresql = { - ensureDatabases = [ db ]; - ensureUsers = [ - { - name = db; - ensureDBOwnership = true; - } - ]; - }; - - services.plausible = { - enable = true; - - adminUser = { - name = "admin"; - email = "admin@${my.domain.shire}"; - passwordFile = config.secrets.plausible-admin-password.path; - activate = false; - }; - - mail = { - email = "admin+plausible@${my.domain.shire}"; - smtp = { - hostAddr = my.domain.shire; - hostPort = 465; - enableSSL = true; - user = "azahi@${my.domain.shire}"; - passwordFile = config.secrets.plausible-smtp-password.path; - }; - }; - - database = { - clickhouse = { - setup = false; - url = "http://127.0.0.1:8123/default"; - }; - - postgres = { - setup = true; - dbname = db; - }; - }; - - server = { - baseUrl = "https://${cfg.domain}"; - disableRegistration = true; - listenAddress = "127.0.0.1"; - inherit (cfg) port; - secretKeybaseFile = config.secrets.plausible-key.path; - }; - }; - - systemd.services.plausible = rec { - after = [ - "postgresql.service" - "clickhouse.service" - ]; - requires = after; - }; - }; -} |