File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11{
2- lib ,
32 config ,
3+ lib ,
44 pkgs ,
55 ...
66} :
99 cfg = config . services . postgresql ;
1010 escape = lib . replaceStrings [ ":" ] [ "-" ] ;
1111 passwordFileName = name : "user-password-${ escape name } " ;
12+
13+ newPostgres = pkgs . postgresql_18 ;
14+ upgrading = newPostgres . psqlSchema != cfg . package . psqlSchema ;
15+
16+ postgres-upgrade = pkgs . writeScriptBin "postgres-upgrade" ''
17+ set -eux
18+
19+ systemctl stop postgresql
20+
21+ export NEWDATA="/var/lib/postgresql/${ newPostgres . psqlSchema } "
22+ export NEWBIN="${ newPostgres } /bin"
23+
24+ export OLDDATA="${ cfg . dataDir } "
25+ export OLDBIN="${ cfg . finalPackage } /bin"
26+
27+ install -d -m 0700 -o postgres -g postgres "$NEWDATA"
28+ cd "$NEWDATA"
29+ sudo -u postgres "$NEWBIN/initdb" -D "$NEWDATA" ${ lib . escapeShellArgs cfg . initdbArgs }
30+
31+ sudo -u postgres "$NEWBIN/pg_upgrade" \
32+ --old-datadir "$OLDDATA" --new-datadir "$NEWDATA" \
33+ --old-bindir "$OLDBIN" --new-bindir "$NEWBIN" \
34+ --clone \
35+ "$@"
36+ '' ;
1237in
1338
1439{
1843
1944 config = lib . mkIf cfg . enable {
2045 services . postgresql = {
21- package = pkgs . postgresql_17 ;
46+ package = pkgs . postgresql_18 ;
2247 enableTCPIP = true ;
2348 ensureUsers = map ( db : {
2449 name = db ;
5176 ''
5277 ) ;
5378
79+ environment . systemPackages = lib . mkIf upgrading [ postgres-upgrade ] ;
80+
5481 environment . persistence = lib . mkIf config . filesystems . defaultLayout {
5582 "/persistent/data" . directories = [ "/var/lib/postgresql" ] ;
5683 } ;
You can’t perform that action at this time.
0 commit comments