summaryrefslogtreecommitdiff
path: root/modules/nixos/plausible.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/plausible.nix')
-rw-r--r--modules/nixos/plausible.nix194
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;
+ };
+ };
+}