diff --git a/pkgs/servers/sql/postgresql/generic.nix b/pkgs/servers/sql/postgresql/generic.nix index fef9f9b11f7b..c4e17fa1ec11 100644 --- a/pkgs/servers/sql/postgresql/generic.nix +++ b/pkgs/servers/sql/postgresql/generic.nix @@ -39,7 +39,6 @@ let removeReferencesTo, # passthru - buildEnv, buildPackages, newScope, nixosTests, @@ -542,10 +541,7 @@ let in import ./ext.nix newSelf newSuper; - withPackages = postgresqlWithPackages { - inherit buildEnv lib makeBinaryWrapper; - postgresql = finalAttrs.finalPackage; - }; + withPackages = self.callPackage ./wrapper.nix { postgresql = finalAttrs.finalPackage; }; pg_config = buildPackages.callPackage ./pg_config.nix { inherit (finalAttrs) finalPackage; @@ -604,77 +600,6 @@ let }; }); - postgresqlWithPackages = - { - postgresql, - buildEnv, - lib, - makeBinaryWrapper, - }: - f: - let - installedExtensions = f postgresql.pkgs; - recurse = postgresqlWithPackages { - inherit - buildEnv - lib - makeBinaryWrapper - postgresql - ; - }; - finalPackage = buildEnv { - pname = "${postgresql.pname}-and-plugins"; - inherit (postgresql) version; - paths = installedExtensions ++ [ - # consider keeping in-sync with `postBuild` below - postgresql - postgresql.man # in case user installs this into environment - ]; - - pathsToLink = [ - "/" - "/bin" - "/share/postgresql/extension" - # Unbreaks Omnigres' build system - "/share/postgresql/timezonesets" - "/share/postgresql/tsearch_data" - ]; - - derivationArgs = { - strictDeps = true; - nativeBuildInputs = [ makeBinaryWrapper ]; - postBuild = - let - args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions; - in - '' - wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args} - ''; - }; - - passthru = { - inherit installedExtensions; - inherit (postgresql) - pkgs - psqlSchema - ; - - pg_config = postgresql.pg_config.override { - outputs = { - out = finalPackage; - man = finalPackage; - }; - }; - - withJIT = recurse (_: installedExtensions ++ [ postgresql.jit ]); - withoutJIT = recurse (_: lib.remove postgresql.jit installedExtensions); - - withPackages = f': recurse (ps: installedExtensions ++ f' ps); - }; - }; - in - finalPackage; - in # passed by .nix versionArgs: diff --git a/pkgs/servers/sql/postgresql/wrapper.nix b/pkgs/servers/sql/postgresql/wrapper.nix new file mode 100644 index 000000000000..2f81cc546588 --- /dev/null +++ b/pkgs/servers/sql/postgresql/wrapper.nix @@ -0,0 +1,71 @@ +{ + buildEnv, + callPackage, + lib, + makeBinaryWrapper, + postgresql, +}: +f: +let + installedExtensions = f postgresql.pkgs; + recurse = import ./wrapper.nix { + # explicitly listed in case they were overridden + inherit + buildEnv + callPackage + lib + makeBinaryWrapper + postgresql + ; + }; +in +buildEnv (finalAttrs: { + pname = "${postgresql.pname}-and-plugins"; + inherit (postgresql) version; + paths = installedExtensions ++ [ + # consider keeping in-sync with `postBuild` below + postgresql + postgresql.man # in case user installs this into environment + ]; + + pathsToLink = [ + "/" + "/bin" + "/share/postgresql/extension" + # Unbreaks Omnigres' build system + "/share/postgresql/timezonesets" + "/share/postgresql/tsearch_data" + ]; + + derivationArgs = { + strictDeps = true; + nativeBuildInputs = [ makeBinaryWrapper ]; + postBuild = + let + args = lib.concatMap (ext: ext.wrapperArgs or [ ]) installedExtensions; + in + '' + wrapProgram "$out/bin/postgres" ${lib.concatStringsSep " " args} + ''; + }; + + passthru = { + inherit installedExtensions; + inherit (postgresql) + pkgs + psqlSchema + ; + + pg_config = postgresql.pg_config.override { + outputs = { + out = finalAttrs.finalPackage; + man = finalAttrs.finalPackage; + }; + }; + + withJIT = recurse (_: installedExtensions ++ [ postgresql.jit ]); + withoutJIT = recurse (_: lib.remove postgresql.jit installedExtensions); + + withPackages = f': recurse (ps: installedExtensions ++ f' ps); + }; +})