1self:
2let
3 # Before removing an EOL major version, make sure to check the versioning policy in:
4 # <nixpkgs>/nixos/modules/services/databases/postgresql.md
5 #
6 # Before removing, make sure to update it to the last minor version - and if only in
7 # an immediately preceding commit. This allows people relying on that old major version
8 # for a bit longer to still update up to this commit to at least get the latest minor
9 # version. In other words: Do not remove the second-to-last minor version from nixpkgs,
10 # yet. Update first.
11 versions = {
12 postgresql_13 = ./13.nix;
13 postgresql_14 = ./14.nix;
14 postgresql_15 = ./15.nix;
15 postgresql_16 = ./16.nix;
16 postgresql_17 = ./17.nix;
17 postgresql_18 = ./18.nix;
18 };
19
20 mkAttributes =
21 jitSupport:
22 self.lib.mapAttrs' (
23 version: path:
24 let
25 attrName = if jitSupport then "${version}_jit" else version;
26 postgresql = import path { inherit self; };
27 attrValue = if jitSupport then postgresql.withJIT else postgresql.withoutJIT;
28 in
29 self.lib.nameValuePair attrName attrValue
30 ) versions;
31
32 libpq = self.callPackage ./libpq.nix { };
33
34in
35{
36 # variations without and with JIT
37 postgresqlVersions = mkAttributes false;
38 postgresqlJitVersions = mkAttributes true;
39
40 inherit libpq;
41}