diff options
author | Azat Bahawi <azat@bahawi.net> | 2023-11-16 01:47:45 +0300 |
---|---|---|
committer | Azat Bahawi <azat@bahawi.net> | 2023-11-16 01:47:45 +0300 |
commit | 1b39cfb14b608f374208a9483db661ccd1a43230 (patch) | |
tree | be2fefbe6c50f4598a1eb22f8b0a9260726b2c0a /modules/nixos/plausible.nix | |
parent | 2023-11-13 (diff) |
2023-11-16
Diffstat (limited to '')
-rw-r--r-- | modules/nixos/plausible.nix | 194 |
1 files changed, 94 insertions, 100 deletions
diff --git a/modules/nixos/plausible.nix b/modules/nixos/plausible.nix index 172da3f..d346bde 100644 --- a/modules/nixos/plausible.nix +++ b/modules/nixos/plausible.nix @@ -6,125 +6,119 @@ }: with lib; let cfg = config.nixfiles.modules.plausible; -in - { - options.nixfiles.modules.plausible = { - enable = mkEnableOption "Plausible Analytics"; +in { + options.nixfiles.modules.plausible = { + enable = mkEnableOption "Plausible Analytics"; - port = mkOption { - description = "Port."; - type = with types; port; - default = 8000; - }; + 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}"; - }; + 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>''; - }; + 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"; - }; + 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' - '' - ]; + nixfiles.modules = { + nginx = { + enable = true; + upstreams.plausible.servers."127.0.0.1:${toString cfg.port}" = {}; + virtualHosts.${cfg.domain}.locations."/" = { + proxyPass = "http://plausible"; + proxyWebsockets = true; }; - clickhouse.enable = true; }; - - services.postgresql = { - ensureDatabases = [db]; - ensureUsers = [ - { - name = db; - ensurePermissions."DATABASE \"${db}\"" = "ALL"; - } + 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.plausible = { - enable = true; + services.postgresql = { + ensureDatabases = [db]; + ensureUsers = [ + { + name = db; + ensurePermissions."DATABASE \"${db}\"" = "ALL"; + } + ]; + }; - adminUser = { - name = "admin"; - email = "admin@${my.domain.shire}"; - passwordFile = config.secrets.plausible-admin-password.path; - activate = false; - }; + services.plausible = { + enable = true; - 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; - }; - }; + adminUser = { + name = "admin"; + email = "admin@${my.domain.shire}"; + passwordFile = config.secrets.plausible-admin-password.path; + activate = false; + }; - database = { - clickhouse = { - setup = false; - url = "http://127.0.0.1:8123/default"; - }; + 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; + }; + }; - postgres = { - setup = true; - dbname = db; - }; + database = { + clickhouse = { + setup = false; + url = "http://127.0.0.1:8123/default"; }; - server = { - baseUrl = "https://${cfg.domain}"; - disableRegistration = true; - listenAddress = "127.0.0.1"; - inherit (cfg) port; - secretKeybaseFile = config.secrets.plausible-key.path; + postgres = { + setup = true; + dbname = db; }; }; - systemd.services.plausible = rec { - after = [ - "postgresql.service" - "clickhouse.service" - ]; - requires = after; + server = { + baseUrl = "https://${cfg.domain}"; + disableRegistration = true; + listenAddress = "127.0.0.1"; + inherit (cfg) port; + secretKeybaseFile = config.secrets.plausible-key.path; }; }; - } - # FIXME https://nixpk.gs/pr-tracker.html?pr=266702 - // lib.moduleFromRef - "services/web-apps/plausible.nix" - "nh2:plausible-listen-address-no-distributed-erlang" - "080c1rdz99xj8y876cw1p3zxmmaqq75jhrpf9f5z1da8v7yvs078" + + systemd.services.plausible = rec { + after = [ + "postgresql.service" + "clickhouse.service" + ]; + requires = after; + }; + }; +} |