From 94d559c4f474bd5e59db234f571116e12c13cda0 Mon Sep 17 00:00:00 2001 From: James Walker Date: Mon, 11 Dec 2023 16:59:00 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20pg=20upgrade=20script?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flake.lock | 18 +++++++-------- modules/postgresql/default.nix | 41 +++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/flake.lock b/flake.lock index ae10527..18e55ea 100644 --- a/flake.lock +++ b/flake.lock @@ -30,11 +30,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1698921442, - "narHash": "sha256-7KmvhQ7FuXlT/wG4zjTssap6maVqeAMBdtel+VjClSM=", + "lastModified": 1702302389, + "narHash": "sha256-T+R3vX31dQH/qb+ojf/rGrOVbY6/fR9X6H+hb0nEnHw=", "owner": "serokell", "repo": "deploy-rs", - "rev": "660180bbbeae7d60dad5a92b30858306945fd427", + "rev": "514fa3bc3d24fa85f338fa6a8247ca7e116ab9de", "type": "github" }, "original": { @@ -267,11 +267,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1701656485, - "narHash": "sha256-xDFormrGCKKGqngHa2Bz1GTeKlFMMjLnHhTDRdMJ1hs=", + "lastModified": 1702245580, + "narHash": "sha256-tTVRB42Ljo2uWGP7ei5h5/qQjOsdXoz0GHRy9hrVrdw=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "fa194fc484fd7270ab324bb985593f71102e84d1", + "rev": "030edbb68e69f2b97231479f98a9597024650df2", "type": "github" }, "original": { @@ -356,11 +356,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1700922917, - "narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=", + "lastModified": 1702325376, + "narHash": "sha256-biLGx2LzU2+/qPwq+kWwVBgXs3MVYT1gPa0fCwpLplU=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78", + "rev": "e1d203c2fa7e2593c777e490213958ef81f71977", "type": "github" }, "original": { diff --git a/modules/postgresql/default.nix b/modules/postgresql/default.nix index 6bd02a5..6dd0629 100644 --- a/modules/postgresql/default.nix +++ b/modules/postgresql/default.nix @@ -12,28 +12,33 @@ # Postgres upgrades: https://nixos.org/manual/nixos/stable/index.html#module-services-postgres-upgrading environment.systemPackages = [ - (pkgs.writeScriptBin "upgrade-pg-cluster" '' - set -eux - # XXX it's perhaps advisable to stop all services that depend on postgresql - systemctl stop postgresql + ( + let + # XXX specify the postgresql package you'd like to upgrade to. + # Do not forget to list the extensions you need. + newPostgres = pkgs.postgresql_15; + in + pkgs.writeScriptBin "upgrade-pg-cluster" '' + set -eux + # XXX it's perhaps advisable to stop all services that depend on postgresql + systemctl stop postgresql - # XXX replace `` with the psqlSchema here - export NEWDATA="/var/lib/postgresql/14" + export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}" - # XXX specify the postgresql package you'd like to upgrade to - export NEWBIN="${pkgs.postgresql_14}/bin" + export NEWBIN="${newPostgres}/bin" - export OLDDATA="${config.services.postgresql.dataDir}" - export OLDBIN="${config.services.postgresql.package}/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" + 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 \ - "$@" - '') + sudo -u postgres $NEWBIN/pg_upgrade \ + --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ + --old-bindir $OLDBIN --new-bindir $NEWBIN \ + "$@" + '' + ) ]; }