diff --git a/nixos/machines/hera/cloud.nix b/nixos/machines/hera/cloud.nix index a33b7652..b5ed01e5 100644 --- a/nixos/machines/hera/cloud.nix +++ b/nixos/machines/hera/cloud.nix @@ -81,7 +81,7 @@ let postgresql = { enable = true; - package = pkgs.postgresql_9_6; + package = pkgs.postgresql_12; }; }; systemd = { @@ -137,7 +137,9 @@ let }; in { systemd.services."container@cloud" = { inherit serviceConfig unitConfig; }; - systemd.services."container@chor-cloud" = { inherit serviceConfig unitConfig; }; + systemd.services."container@chor-cloud" = { + inherit serviceConfig unitConfig; + }; services = { nginx = { enable = true; diff --git a/nixos/roles/matrix-synapse.nix b/nixos/roles/matrix-synapse.nix index 3bab7ce7..7514584b 100644 --- a/nixos/roles/matrix-synapse.nix +++ b/nixos/roles/matrix-synapse.nix @@ -35,7 +35,10 @@ in { }; # Postgres - postgresql.enable = true; + postgresql = { + enable = true; + package = pkgs.postgresql_12; + }; # Synapse matrix-synapse = let diff --git a/nixos/roles/update-postgres.nix b/nixos/roles/update-postgres.nix new file mode 100644 index 00000000..37b6a1a6 --- /dev/null +++ b/nixos/roles/update-postgres.nix @@ -0,0 +1,29 @@ +{ config, pkgs, ... }: +{ + containers.temp-pg.config.services.postgresql = { + enable = true; + package = pkgs.postgresql_12; + }; + environment.systemPackages = + let newpg = config.containers.temp-pg.config.services.postgresql; + in [ + (pkgs.writeScriptBin "upgrade-pg-cluster" '' + set -x + export OLDDATA="${config.services.postgresql.dataDir}" + export NEWDATA="${newpg.dataDir}" + export OLDBIN="${config.services.postgresql.package}/bin" + export NEWBIN="${newpg.package}/bin" + + install -d -m 0700 -o postgres -g postgres "$NEWDATA" + cd "$NEWDATA" + sudo -u postgres $NEWBIN/initdb -D "$NEWDATA" + + systemctl stop postgresql # old one + + sudo -u postgres $NEWBIN/pg_upgrade \ + --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \ + --old-bindir $OLDBIN --new-bindir $NEWBIN \ + "$@" + '') + ]; +}