module: don't set services.postgresql.package for new installations

This commit is contained in:
WilliButz 2024-04-28 13:22:22 +02:00
parent 8bc790171f
commit 876db63217
No known key found for this signature in database
GPG key ID: AB05DF703EB9DC70

View file

@ -27,7 +27,8 @@ let
mkOption; mkOption;
inherit (lib.strings) inherit (lib.strings)
concatStringsSep; concatStringsSep
versionOlder;
inherit (lib.trivial) inherit (lib.trivial)
boolToString boolToString
@ -184,7 +185,6 @@ in
}; };
postgresql = mkIf cfg.createDatabase { postgresql = mkIf cfg.createDatabase {
enable = true; enable = true;
package = lib.mkDefault pkgs.postgresql_14;
ensureDatabases = [ "authentik" ]; ensureDatabases = [ "authentik" ];
ensureUsers = [ ensureUsers = [
{ name = "authentik"; ensureDBOwnership = true; } { name = "authentik"; ensureDBOwnership = true; }
@ -338,5 +338,29 @@ in
}; };
}; };
})) }))
# This is an attempt to solve a rather ugly problem that was
# caused by previously setting a default for the option
# `services.postgresql.package` in this module.
#
# The problem is that some installations with a state version other than
# 22.05, 22.11 or 23.05 may have used this module, meaning their postgresql
# version was overridden by this module. Merely removing the setting here,
# would cause their config to fall back to their respective default release,
# resulting in a (temporarily) broken installation.
#
# While recovering from this is relatively easy, i.e. they would need to
# override the posgresql package in their own config, it is not desirable
# to break those installations.
#
# The idea is to no longer set a default value for the package for new
# installations. Instead new installations use the sensible default provided
# by nixpkgs. At the same time this should keep the previous default
# for old installations.
#
# After postgresql_14 has been removed from nixpkgs, this workaround can be dropped.
(mkIf (versionOlder config.system.stateVersion "24.05") {
services.postgresql.package = lib.mkDefault pkgs.postgresql_14;
})
]; ];
} }