···
cfg = config.services.hydron;
5
-
postgres = config.services.postgresql;
options.services.hydron = {
enable = mkEnableOption "hydron";
···
config = mkIf cfg.enable {
84
-
security.sudo.enable = cfg.enable;
85
-
services.postgresql.enable = cfg.enable;
services.hydron.passwordFile = mkDefault (pkgs.writeText "hydron-password-file" cfg.password);
services.hydron.postgresArgsFile = mkDefault (pkgs.writeText "hydron-postgres-args" cfg.postgresArgs);
services.hydron.postgresArgs = mkDefault ''
91
-
"connection": "user=hydron password=${cfg.password} dbname=hydron sslmode=disable"
88
+
"connection": "user=hydron password=${cfg.password} host=/run/postgresql dbname=hydron sslmode=disable"
92
+
services.postgresql = {
94
+
ensureDatabases = [ "hydron" ];
97
+
ensurePermissions = { "DATABASE hydron" = "ALL PRIVILEGES"; };
102
+
systemd.tmpfiles.rules = [
103
+
"d '${cfg.dataDir}' 0750 hydron hydron - -"
104
+
"d '${cfg.dataDir}/.hydron' - hydron hydron - -"
105
+
"d '${cfg.dataDir}/images' - hydron hydron - -"
106
+
"Z '${cfg.dataDir}' - hydron hydron - -"
108
+
"L+ '${cfg.dataDir}/.hydron/db_conf.json' - - - - ${cfg.postgresArgsFile}"
systemd.services.hydron = {
after = [ "network.target" "postgresql.service" ];
wantedBy = [ "multi-user.target" ];
101
-
# Ensure folder exists or create it and permissions are correct
102
-
mkdir -p ${escapeShellArg cfg.dataDir}/{.hydron,images}
103
-
ln -sf ${escapeShellArg cfg.postgresArgsFile} ${escapeShellArg cfg.dataDir}/.hydron/db_conf.json
104
-
chmod 750 ${escapeShellArg cfg.dataDir}
105
-
chown -R hydron:hydron ${escapeShellArg cfg.dataDir}
107
-
# Ensure the database is correct or create it
108
-
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createuser \
109
-
-SDR hydron || true
110
-
${pkgs.sudo}/bin/sudo -u ${postgres.superUser} ${postgres.package}/bin/createdb \
111
-
-T template0 -E UTF8 -O hydron hydron || true
112
-
${pkgs.sudo}/bin/sudo -u hydron ${postgres.package}/bin/psql \
113
-
-c "ALTER ROLE hydron WITH PASSWORD '$(cat ${escapeShellArg cfg.passwordFile})';" || true
117
-
PermissionsStartOnly = true;
ExecStart = "${pkgs.hydron}/bin/hydron serve"
···
description = "Automatically import paths into hydron and possibly fetch tags";
after = [ "network.target" "hydron.service" ];
wantedBy = [ "timers.target" ];
OnCalendar = cfg.interval;
···
groups.hydron.gid = config.ids.gids.hydron;
description = "hydron server service user";
uid = config.ids.uids.hydron;