diff options
Diffstat (limited to 'ops/nixos/panettone.nix')
-rw-r--r-- | ops/nixos/panettone.nix | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ops/nixos/panettone.nix b/ops/nixos/panettone.nix index 009677a9d35a..3d31d79caf50 100644 --- a/ops/nixos/panettone.nix +++ b/ops/nixos/panettone.nix @@ -12,9 +12,49 @@ in { type = types.int; default = 7268; }; + + dbHost = mkOption { + description = "Postgresql host to connect to for Panettone"; + type = types.string; + default = "localhost"; + }; + + dbName = mkOption { + description = "Name of the database for Panettone"; + type = types.string; + default = "panettone"; + }; + + dbUser = mkOption { + description = "Name of the database user for Panettone"; + type = types.string; + default = "panettone"; + }; }; config = lib.mkIf cfg.enable { + assertions = [{ + assertion = + cfg.dbHost != "localhost" || config.services.postgresql.enable; + message = "Panettone requires a postgresql database"; + } { + assertion = + cfg.dbHost != "localhost" || config.services.postgresql.enableTCPIP; + message = "Panettone can only connect to the postgresql database over TCP"; + } { + assertion = + cfg.dbHost != "localhost" || (lib.any + (user: user.name == cfg.dbUser) + config.services.postgresql.ensureUsers); + message = "Panettone requires a database user"; + } { + assertion = + cfg.dbHost != "localhost" || (lib.any + (db: db == cfg.dbName) + config.services.postgresql.ensureDatabases); + message = "Panettone requires a database"; + }]; + systemd.services.panettone = { wantedBy = [ "multi-user.target" ]; script = "${depot.web.panettone}/bin/panettone"; @@ -28,6 +68,9 @@ in { environment = { PANETTONE_PORT = toString cfg.port; PANETTONE_DATA_DIR = "/var/lib/panettone"; + PGHOST = "localhost"; + PGUSER = cfg.dbUser; + PGDATABASE = cfg.dbName; }; }; }; |