services/postgresql: init
This commit is contained in:
parent
c61de2d262
commit
f87f518779
60
nixos/profiles/services/postgresql/default.nix
Normal file
60
nixos/profiles/services/postgresql/default.nix
Normal file
|
@ -0,0 +1,60 @@
|
|||
# Portions of this file are sourced from
|
||||
# https://github.com/linyinfeng/dotfiles/blob/b618b0fd16fb9c79ab7199ed51c4c0f98a392cea/nixos/profiles/services/postgresql/default.nix
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
newPostgres = config.specialisation.target-state-version.configuration.services.postgresql.package;
|
||||
upgradePGCluster = pkgs.writeShellApplication {
|
||||
name = "upgrade-pg-cluster";
|
||||
runtimeInputs = with pkgs; [
|
||||
config.systemd.package
|
||||
postgresql
|
||||
];
|
||||
text = ''
|
||||
systemctl stop postgresql
|
||||
|
||||
export NEWDATA="/var/lib/postgresql/${newPostgres.psqlSchema}"
|
||||
export NEWBIN="${newPostgres}/bin"
|
||||
|
||||
export OLDDATA="${config.services.postgresql.dataDir}"
|
||||
export OLDBIN="${config.services.postgresql.package}/bin"
|
||||
|
||||
if [ "$OLDDATA" = "$NEWDATA" ]; then
|
||||
echo "the old and new data directories are same, exiting..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
install -d -m 0700 -o postgres -g postgres "$NEWDATA"
|
||||
cd "$NEWDATA"
|
||||
sudo --user=postgres $NEWBIN/initdb --pgdata="$NEWDATA"
|
||||
|
||||
sudo --user=postgres $NEWBIN/pg_upgrade \
|
||||
--old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \
|
||||
--old-bindir $OLDBIN --new-bindir $NEWBIN \
|
||||
"$@"
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
services.postgresql.enable = true;
|
||||
|
||||
services.postgresqlBackup = {
|
||||
enable = true;
|
||||
location = "/var/lib/backup/postgresql";
|
||||
compression = "zstd";
|
||||
backupAll = true;
|
||||
};
|
||||
|
||||
services.restic.backups.b2.paths = [ config.services.postgresqlBackup.location ];
|
||||
|
||||
systemd.services."restic-backups-b2" = {
|
||||
requires = [ "postgresqlBackup.service" ];
|
||||
after = [ "postgresqlBackup.service" ];
|
||||
};
|
||||
|
||||
environment.systemPackages = lib.mkIf config.system.pendingStateVersionUpgrade [ upgradePGCluster ];
|
||||
}
|
Loading…
Reference in a new issue