aboutsummaryrefslogtreecommitdiff
path: root/nixos
diff options
context:
space:
mode:
authorAaron Andersen <aaron@fosslib.net>2020-08-12 21:12:24 -0400
committerAaron Andersen <aaron@fosslib.net>2020-08-15 16:59:53 -0400
commit8e045b42fd90d8934ecf73977befc894b6171b78 (patch)
tree6362327d6df1caa1bf0e4be0f644dc7ae57af84b /nixos
parentec82ae3c394600f79c2971ffca7b87a4f574cfea (diff)
nixos/postgresql: move ExecStartPost into postStart
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/databases/postgresql.nix63
1 files changed, 29 insertions, 34 deletions
diff --git a/nixos/modules/services/databases/postgresql.nix b/nixos/modules/services/databases/postgresql.nix
index 2bb2ba73996c..c726a08e34f2 100644
--- a/nixos/modules/services/databases/postgresql.nix
+++ b/nixos/modules/services/databases/postgresql.nix
@@ -311,6 +311,35 @@ in
''}
'';
+ # Wait for PostgreSQL to be ready to accept connections.
+ postStart =
+ ''
+ PSQL="psql --port=${toString cfg.port}"
+
+ while ! $PSQL -d postgres -c "" 2> /dev/null; do
+ if ! kill -0 "$MAINPID"; then exit 1; fi
+ sleep 0.1
+ done
+
+ if test -e "${cfg.dataDir}/.first_startup"; then
+ ${optionalString (cfg.initialScript != null) ''
+ $PSQL -f "${cfg.initialScript}" -d postgres
+ ''}
+ rm -f "${cfg.dataDir}/.first_startup"
+ fi
+ '' + optionalString (cfg.ensureDatabases != []) ''
+ ${concatMapStrings (database: ''
+ $PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${database}"'
+ '') cfg.ensureDatabases}
+ '' + ''
+ ${concatMapStrings (user: ''
+ $PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc 'CREATE USER "${user.name}"'
+ ${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
+ $PSQL -tAc 'GRANT ${permission} ON ${database} TO "${user.name}"'
+ '') user.ensurePermissions)}
+ '') cfg.ensureUsers}
+ '';
+
serviceConfig = mkMerge [
{ ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
User = "postgres";
@@ -330,40 +359,6 @@ in
TimeoutSec = 120;
ExecStart = "${postgresql}/bin/postgres";
-
- # Wait for PostgreSQL to be ready to accept connections.
- ExecStartPost =
- let
- setupScript = pkgs.writeScript "postgresql-setup" (''
- #!${pkgs.runtimeShell} -e
-
- PSQL="psql --port=${toString cfg.port}"
-
- while ! $PSQL -d postgres -c "" 2> /dev/null; do
- if ! kill -0 "$MAINPID"; then exit 1; fi
- sleep 0.1
- done
-
- if test -e "${cfg.dataDir}/.first_startup"; then
- ${optionalString (cfg.initialScript != null) ''
- $PSQL -f "${cfg.initialScript}" -d postgres
- ''}
- rm -f "${cfg.dataDir}/.first_startup"
- fi
- '' + optionalString (cfg.ensureDatabases != []) ''
- ${concatMapStrings (database: ''
- $PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${database}'" | grep -q 1 || $PSQL -tAc 'CREATE DATABASE "${database}"'
- '') cfg.ensureDatabases}
- '' + ''
- ${concatMapStrings (user: ''
- $PSQL -tAc "SELECT 1 FROM pg_roles WHERE rolname='${user.name}'" | grep -q 1 || $PSQL -tAc 'CREATE USER "${user.name}"'
- ${concatStringsSep "\n" (mapAttrsToList (database: permission: ''
- $PSQL -tAc 'GRANT ${permission} ON ${database} TO "${user.name}"'
- '') user.ensurePermissions)}
- '') cfg.ensureUsers}
- '');
- in
- "${setupScript}";
}
(mkIf (cfg.dataDir == "/var/lib/postgresql/${cfg.package.psqlSchema}") {
StateDirectory = "postgresql postgresql/${cfg.package.psqlSchema}";