From 825d350ab40e20d83f44acb8038f30a401565b25 Mon Sep 17 00:00:00 2001 From: fruchti Date: Fri, 5 Dec 2025 11:23:03 +0100 Subject: [PATCH] Add migrations directory for temporary helpers --- hosts/Rupert.nix | 2 -- .../open_pgsql.nix | 0 migrations/pgsql_upgrade.nix | 33 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) rename hosts/open-pgsql.nix => migrations/open_pgsql.nix (100%) create mode 100644 migrations/pgsql_upgrade.nix diff --git a/hosts/Rupert.nix b/hosts/Rupert.nix index 58130a0..8e9b780 100644 --- a/hosts/Rupert.nix +++ b/hosts/Rupert.nix @@ -13,8 +13,6 @@ in ./transcode.nix ./development.nix ./bspwm.nix - - # ./open-pgsql.nix ]; nixpkgs.overlays = let diff --git a/hosts/open-pgsql.nix b/migrations/open_pgsql.nix similarity index 100% rename from hosts/open-pgsql.nix rename to migrations/open_pgsql.nix diff --git a/migrations/pgsql_upgrade.nix b/migrations/pgsql_upgrade.nix new file mode 100644 index 0000000..6aeb991 --- /dev/null +++ b/migrations/pgsql_upgrade.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: +{ + environment.systemPackages = [( + let + # XXX specify the postgresql package you'd like to upgrade to. + # Do not forget to list the extensions you need. + newPostgres = pkgs.postgresql_16.withPackages (pp: [ + # pp.plv8 + ]); + cfg = config.services.postgresql; + in + pkgs.writeScriptBin "upgrade-pg-cluster" '' + set -eux + # XXX it's perhaps advisable to stop all services that depend on postgresql + systemctl stop postgresql + + export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}" + export NEWBIN="${newPostgres}/bin" + + export OLDDATA="${cfg.dataDir}" + export OLDBIN="${cfg.finalPackage}/bin" + + install -d -m 0700 -o postgres -g postgres "$NEWDATA" + cd "$NEWDATA" + sudo -u postgres "$NEWBIN/initdb" -D "$NEWDATA" ${lib.escapeShellArgs cfg.initdbArgs} + + sudo -u postgres "$NEWBIN/pg_upgrade" \ + --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ + --old-bindir "$OLDBIN" --new-bindir "$NEWBIN" \ + "$@" + '' + )]; +}