diff --git a/pkgs/servers/sql/postgresql/ext/citus.nix b/pkgs/servers/sql/postgresql/ext/citus.nix new file mode 100644 index 000000000000..74f546d20b4b --- /dev/null +++ b/pkgs/servers/sql/postgresql/ext/citus.nix @@ -0,0 +1,52 @@ +{ lib +, stdenv +, curl +, fetchFromGitHub +, lz4 +, postgresql +}: + +stdenv.mkDerivation rec { + pname = "citus"; + version = "12.1.0"; + + src = fetchFromGitHub { + owner = "citusdata"; + repo = "citus"; + rev = "v${version}"; + hash = "sha256-ypuinDOHvgjRdbnTTFBpALy6rIR3rrP00JDvlHtmCTk="; + }; + + buildInputs = [ + curl + lz4 + postgresql + ]; + + installPhase = '' + runHook preInstall + + install -D -t $out/lib src/backend/columnar/citus_columnar${postgresql.dlSuffix} + install -D -t $out/share/postgresql/extension src/backend/columnar/build/sql/*.sql + install -D -t $out/share/postgresql/extension src/backend/columnar/*.control + + install -D -t $out/lib src/backend/distributed/citus${postgresql.dlSuffix} + install -D -t $out/share/postgresql/extension src/backend/distributed/build/sql/*.sql + install -D -t $out/share/postgresql/extension src/backend/distributed/*.control + + runHook postInstall + ''; + + meta = with lib; { + # "Our soft policy for Postgres version compatibilty is to support Citus' + # latest release with Postgres' 3 latest releases." + # https://www.citusdata.com/updates/v12-0/#deprecated_features + broken = versionOlder postgresql.version "14"; + description = "Distributed PostgreSQL as an extension"; + homepage = "https://www.citusdata.com/"; + changelog = "https://github.com/citusdata/citus/blob/${src.rev}/CHANGELOG.md"; + license = licenses.agpl3Only; + maintainers = with maintainers; [ marsam ]; + inherit (postgresql.meta) platforms; + }; +} diff --git a/pkgs/servers/sql/postgresql/packages.nix b/pkgs/servers/sql/postgresql/packages.nix index 52e4fc700c94..55be61dacf30 100644 --- a/pkgs/servers/sql/postgresql/packages.nix +++ b/pkgs/servers/sql/postgresql/packages.nix @@ -4,6 +4,8 @@ self: super: { apache_datasketches = super.callPackage ./ext/apache_datasketches.nix { }; + citus = super.callPackage ./ext/citus.nix { }; + h3-pg = super.callPackage ./ext/h3-pg.nix { }; hypopg = super.callPackage ./ext/hypopg.nix { };