{ config, pkgs, ... }: { environment.systemPackages = [ (pkgs.writeScriptBin "upgrade-pg-cluster" '' set -eux # TODO it's perhaps advisable to stop all services that depend on postgresql systemctl stop postgresql # TODO replace `` with the psqlSchema here # The schema can be found by running: # nix-instantiate '' --eval -A postgresql_14.psqlSchema export NEWDATA="/var/lib/postgresql/" # TODO specify the postgresql package you'd like to upgrade to export NEWBIN="${pkgs.postgresql_14}/bin" export OLDDATA="${config.services.postgresql.dataDir}" export OLDBIN="${config.services.postgresql.package}/bin" install -d -m 0700 -o postgres -g postgres "$NEWDATA" cd "$NEWDATA" sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" sudo -u postgres $NEWBIN/pg_upgrade \ --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ --old-bindir $OLDBIN --new-bindir $NEWBIN \ "$@" '') ]; }