style: format tree
This commit is contained in:
@@ -1,22 +1,34 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
sp = config.selfprivacy;
|
||||
pleroma_location =
|
||||
if lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "location" sp.modules.pleroma
|
||||
then sp.modules.pleroma.location
|
||||
else null;
|
||||
if
|
||||
lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "location" sp.modules.pleroma
|
||||
then
|
||||
sp.modules.pleroma.location
|
||||
else
|
||||
null;
|
||||
postgres_location =
|
||||
if lib.attrsets.hasAttr "postgresql" sp && lib.attrsets.hasAttr "location" sp.postgresql
|
||||
then sp.postgresql.location
|
||||
else null;
|
||||
if lib.attrsets.hasAttr "postgresql" sp && lib.attrsets.hasAttr "location" sp.postgresql then
|
||||
sp.postgresql.location
|
||||
else
|
||||
null;
|
||||
# Priority: postgresql > pleroma
|
||||
location = if postgres_location != null then postgres_location else pleroma_location;
|
||||
# Active if there is a location
|
||||
enable = location != null;
|
||||
pleroma_enabled =
|
||||
if lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "enable" sp.modules.pleroma
|
||||
then sp.modules.pleroma.enable
|
||||
else false;
|
||||
if
|
||||
lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "enable" sp.modules.pleroma
|
||||
then
|
||||
sp.modules.pleroma.enable
|
||||
else
|
||||
false;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
|
@@ -1,4 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.postgresqlUpgrade12to16;
|
||||
@@ -62,72 +67,70 @@ in
|
||||
|
||||
ExecStartPre =
|
||||
# Stop Pleroma only if pleromaEnabled is true
|
||||
optional cfg.pleromaEnabled "${pkgs.writeShellScript "postgresql-upgrade12to16-pre.sh" ''
|
||||
if [ -d "${cfg.dataDir12}" ] && [ ! -d "${cfg.dataDir16}" ]; then
|
||||
${pkgs.systemd}/bin/systemctl stop pleroma.service
|
||||
fi
|
||||
''
|
||||
}";
|
||||
optional cfg.pleromaEnabled
|
||||
"${pkgs.writeShellScript "postgresql-upgrade12to16-pre.sh" ''
|
||||
if [ -d "${cfg.dataDir12}" ] && [ ! -d "${cfg.dataDir16}" ]; then
|
||||
${pkgs.systemd}/bin/systemctl stop pleroma.service
|
||||
fi
|
||||
''}";
|
||||
|
||||
ExecStart = "${pkgs.writeShellScript "postgresql-upgrade12to16.sh" ''
|
||||
set -e
|
||||
set -e
|
||||
|
||||
oldDataDir="${cfg.dataDir12}"
|
||||
newDataDir="${cfg.dataDir16}"
|
||||
oldDataDir="${cfg.dataDir12}"
|
||||
newDataDir="${cfg.dataDir16}"
|
||||
|
||||
# Only upgrade if old data directory exists, and the new one doesn't yet
|
||||
if [ -d "$oldDataDir" ] && [ ! -d "$newDataDir" ]; then
|
||||
echo "Detected PostgreSQL 12 data directory at $oldDataDir"
|
||||
echo "Upgrading to PostgreSQL 16 data directory at $newDataDir"
|
||||
# Only upgrade if old data directory exists, and the new one doesn't yet
|
||||
if [ -d "$oldDataDir" ] && [ ! -d "$newDataDir" ]; then
|
||||
echo "Detected PostgreSQL 12 data directory at $oldDataDir"
|
||||
echo "Upgrading to PostgreSQL 16 data directory at $newDataDir"
|
||||
|
||||
# Stop the old PostgreSQL if it's running
|
||||
if systemctl is-active --quiet postgresql.service; then
|
||||
systemctl stop postgresql.service
|
||||
fi
|
||||
|
||||
# Create the new data directory (if not already present)
|
||||
mkdir -p "$newDataDir"
|
||||
chown -R postgres:postgres "$(dirname "$newDataDir")"
|
||||
|
||||
# Create a temporary working directory
|
||||
tempDir=$(mktemp -d)
|
||||
chown -R postgres:postgres "$tempDir"
|
||||
trap 'rm -rf "$tempDir"' EXIT
|
||||
|
||||
# Change to the temporary working directory
|
||||
cd "$tempDir"
|
||||
|
||||
# Initialize the new PostgreSQL 16 data directory
|
||||
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql_16.out}/bin/initdb -D "$newDataDir" -U postgres
|
||||
|
||||
# Run pg_upgrade as the postgres user
|
||||
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql_16.out}/bin/pg_upgrade \
|
||||
--old-datadir "$oldDataDir" \
|
||||
--new-datadir "$newDataDir" \
|
||||
--old-bindir ${pkgs.postgresql_12.out}/bin \
|
||||
--new-bindir ${pkgs.postgresql_16.out}/bin \
|
||||
--jobs "$(nproc)" \
|
||||
--link \
|
||||
--verbose
|
||||
|
||||
touch "$newDataDir/.sp_migrated"
|
||||
|
||||
echo "PostgreSQL upgrade from 12 to 16 completed."
|
||||
else
|
||||
echo "No PostgreSQL 12 data directory detected or already upgraded. Skipping."
|
||||
# Stop the old PostgreSQL if it's running
|
||||
if systemctl is-active --quiet postgresql.service; then
|
||||
systemctl stop postgresql.service
|
||||
fi
|
||||
''}";
|
||||
|
||||
# Create the new data directory (if not already present)
|
||||
mkdir -p "$newDataDir"
|
||||
chown -R postgres:postgres "$(dirname "$newDataDir")"
|
||||
|
||||
# Create a temporary working directory
|
||||
tempDir=$(mktemp -d)
|
||||
chown -R postgres:postgres "$tempDir"
|
||||
trap 'rm -rf "$tempDir"' EXIT
|
||||
|
||||
# Change to the temporary working directory
|
||||
cd "$tempDir"
|
||||
|
||||
# Initialize the new PostgreSQL 16 data directory
|
||||
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql_16.out}/bin/initdb -D "$newDataDir" -U postgres
|
||||
|
||||
# Run pg_upgrade as the postgres user
|
||||
${pkgs.sudo}/bin/sudo -u postgres ${pkgs.postgresql_16.out}/bin/pg_upgrade \
|
||||
--old-datadir "$oldDataDir" \
|
||||
--new-datadir "$newDataDir" \
|
||||
--old-bindir ${pkgs.postgresql_12.out}/bin \
|
||||
--new-bindir ${pkgs.postgresql_16.out}/bin \
|
||||
--jobs "$(nproc)" \
|
||||
--link \
|
||||
--verbose
|
||||
|
||||
touch "$newDataDir/.sp_migrated"
|
||||
|
||||
echo "PostgreSQL upgrade from 12 to 16 completed."
|
||||
else
|
||||
echo "No PostgreSQL 12 data directory detected or already upgraded. Skipping."
|
||||
fi
|
||||
''}";
|
||||
|
||||
# Start Pleroma only if pleromaEnabled is true
|
||||
ExecStartPost =
|
||||
optional cfg.pleromaEnabled "${pkgs.writeShellScript "postgresql-upgrade12to16-post.sh" ''
|
||||
if test -e "${cfg.dataDir16}/.sp_migrated"; then
|
||||
${pkgs.systemd}/bin/systemctl start --no-block pleroma.service
|
||||
ExecStartPost = optional cfg.pleromaEnabled "${pkgs.writeShellScript "postgresql-upgrade12to16-post.sh" ''
|
||||
if test -e "${cfg.dataDir16}/.sp_migrated"; then
|
||||
${pkgs.systemd}/bin/systemctl start --no-block pleroma.service
|
||||
|
||||
rm -f "${cfg.dataDir16}/.sp_migrated"
|
||||
fi
|
||||
''
|
||||
}";
|
||||
rm -f "${cfg.dataDir16}/.sp_migrated"
|
||||
fi
|
||||
''}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
Reference in New Issue
Block a user