diff --git a/nix/postgres/default.nix b/nix/postgres/default.nix index dd5831b..0d48078 100644 --- a/nix/postgres/default.nix +++ b/nix/postgres/default.nix @@ -50,6 +50,12 @@ in description = "The DB data directory"; }; + socketDir = lib.mkOption { + type = lib.types.str; + default = config.dataDir; + description = "The DB socket directory"; + }; + hbaConf = let hbaConfSubmodule = lib.types.submodule { @@ -161,7 +167,7 @@ in default = { listen_addresses = config.listen_addresses; port = config.port; - unix_socket_directories = config.dataDir; + unix_socket_directories = config.socketDir; hba_file = "${config.hbaConfFile}"; }; }; @@ -181,7 +187,7 @@ in default = { listen_addresses = config.listen_addresses; port = config.port; - unix_socket_directories = lib.mkDefault config.dataDir; + unix_socket_directories = lib.mkDefault config.socketDir; hba_file = "${config.hbaConfFile}"; }; example = lib.literalExpression '' @@ -292,12 +298,13 @@ in text = '' set -euo pipefail PGDATA=$(readlink -f "${config.dataDir}") + PGSOCKETDIR=$(readlink -f "${config.socketDir}") export PGDATA - postgres -k "$PGDATA" + postgres -k "$PGSOCKETDIR" ''; }; pg_isreadyArgs = [ - "-h $(readlink -f ${config.dataDir})" + "-h $(readlink -f \"${config.socketDir}\")" "-p ${toString config.port}" "-d template1" ] ++ (lib.optional (config.superuser != null) "-U ${config.superuser}"); diff --git a/nix/postgres/setup-script.nix b/nix/postgres/setup-script.nix index 2e1c7dd..393308e 100644 --- a/nix/postgres/setup-script.nix +++ b/nix/postgres/setup-script.nix @@ -1,7 +1,6 @@ { config, pkgs, lib }: let setupInitialSchema = dbName: schema: '' - ${lib.optionalString (schema != null) '' echo "Applying database schema on ${dbName}" if [ -f "${schema}" ] then @@ -20,7 +19,6 @@ let echo "ERROR: Could not determine how to apply schema with ${schema}" exit 1 fi - ''} ''; setupInitialDatabases = if config.initialDatabases != [ ] then @@ -37,7 +35,8 @@ let if [ 1 -ne "$dbAlreadyExists" ]; then echo "Creating database: ${database.name}" echo 'create database "${database.name}";' | psql -d postgres - ${lib.concatMapStrings (schema: setupInitialSchema (database.name) schema) database.schemas} + ${lib.optionalString (database.schemas != null) + (lib.concatMapStrings (schema: setupInitialSchema (database.name) schema) database.schemas)} fi '') config.initialDatabases) @@ -101,7 +100,7 @@ in echo echo "PostgreSQL is setting up the initial database." echo - PGHOST=$(mktemp -d "$(readlink -f ${config.dataDir})/pg-init-XXXXXX") + PGHOST=$(mktemp -d "$(readlink -f "${config.socketDir}")/pg-init-XXXXXX") export PGHOST function remove_tmp_pg_init_sock_dir() {