···
gitalySocket = "${cfg.statePath}/tmp/sockets/gitaly.socket";
pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url;
21
+
gitlabVersionAtLeast = version: lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) version;
···
} // cfg.extraDatabaseConfig;
30
-
in if lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) "15.0" then {
31
-
production.main = val;
34
+
if (gitlabVersionAtLeast "15.0")
35
+
then { main = val; }
37
+
) // lib.optionalAttrs (gitlabVersionAtLeast "15.9") {
39
+
database_tasks = false;
# We only want to create a database if we're actually going to connect to it.
···
rm -f '${cfg.statePath}/config/database.yml'
1351
-
${if cfg.databasePasswordFile != null then ''
1359
+
${lib.optionalString (cfg.databasePasswordFile != null) ''
db_password="$(<'${cfg.databasePasswordFile}')"
···
>&2 echo "Database password was an empty string!"
1360
-
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
1361
-
'.${if lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) "15.0" then "production.main" else "production"}.password = $ENV.db_password' \
1362
-
>'${cfg.statePath}/config/database.yml'
1365
-
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
1366
-
>'${cfg.statePath}/config/database.yml'
1369
+
# GitLab expects the `production.main` section to be the first entry in the file.
1370
+
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} '{
1372
+
${lib.optionalString (cfg.databasePasswordFile != null) (
1373
+
builtins.concatStringsSep "\n " (
1374
+
[ ".production${lib.optionalString (gitlabVersionAtLeast "15.0") ".main"}.password = $ENV.db_password" ]
1375
+
++ lib.optional (gitlabVersionAtLeast "15.9") "| .production.ci.password = $ENV.db_password"
1384
+
}' >'${cfg.statePath}/config/database.yml'
${utils.genJqSecretsReplacementSnippet