about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/sql/postgresql/ext
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/sql/postgresql/ext')
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/cstore_fdw.nix32
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix33
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_bigm.nix32
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_cron.nix32
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_hll.nix31
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_partman.nix33
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_repack.nix35
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix27
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_similarity.nix31
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pg_topn.nix31
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pgjwt.nix29
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix35
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pgrouting.nix31
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pgtap.nix33
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pipelinedb.nix39
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/plv8.nix38
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix69
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/tds_fdw.nix29
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/temporal_tables.nix31
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/timescaledb.nix53
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix29
21 files changed, 733 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/cstore_fdw.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/cstore_fdw.nix
new file mode 100644
index 000000000000..f2e814543dbf
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/cstore_fdw.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, postgresql, protobufc }:
+
+stdenv.mkDerivation rec {
+  name = "cstore_fdw-${version}";
+  version = "1.6.2";
+
+  nativeBuildInputs = [ protobufc ];
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "citusdata";
+    repo   = "cstore_fdw";
+    rev    = "refs/tags/v${version}";
+    sha256 = "0kdmzpbhhjdg4p6i5963h7qbs88jzgpqc52gz450h7hwb9ckpv74";
+  };
+
+  installPhase = ''
+    mkdir -p $out/{lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Columnar storage for PostgreSQL";
+    homepage    = https://www.citusdata.com/;
+    maintainers = with maintainers; [ thoughtpolice ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix
new file mode 100644
index 000000000000..87a54471eca7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_auto_failover.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, postgresql, openssl }:
+
+if stdenv.lib.versionOlder postgresql.version "10"
+then throw "pg_auto_failover not supported for PostgreSQL ${postgresql.version}"
+else
+stdenv.mkDerivation rec {
+  pname = "pg_auto_failover";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "citusdata";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1296zk143y9fvmcg2hjbrjdjfhi5rrd0clh16vblkghcvxrzfyvy";
+  };
+
+  buildInputs = [ postgresql openssl ];
+
+  installPhase = ''
+    install -D -t $out/bin src/bin/pg_autoctl/pg_autoctl
+    install -D -t $out/lib src/monitor/pgautofailover.so
+    install -D -t $out/share/postgresql/extension src/monitor/*.sql
+    install -D -t $out/share/postgresql/extension src/monitor/pgautofailover.control
+  '';
+
+  meta = with stdenv.lib; {
+    description = "PostgreSQL extension and service for automated failover and high-availability";
+    homepage = "https://github.com/citusdata/pg_auto_failover";
+    maintainers = [ maintainers.marsam ];
+    platforms = postgresql.meta.platforms;
+    license = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_bigm.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_bigm.nix
new file mode 100644
index 000000000000..a8e5a54bc29a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_bigm.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "pg_bigm";
+  version = "1.2";
+
+  src = fetchurl {
+    url = "mirror://osdn/pgbigm/66565/${pname}-${version}-20161011.tar.gz";
+    sha256 = "1jp30za4bhwlas0yrhyjs9m03b1sj63km61xnvcbnh0sizyvhwis";
+  };
+
+  buildInputs = [ postgresql ];
+
+  makeFlags = [ "USE_PGXS=1" ];
+
+  installPhase = ''
+    mkdir -p $out/bin    # For buildEnv to setup proper symlinks. See #22653
+    mkdir -p $out/{lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Text similarity measurement and index searching based on bigrams";
+    homepage = "https://pgbigm.osdn.jp/";
+    maintainers = [ maintainers.marsam ];
+    platforms = postgresql.meta.platforms;
+    license = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_cron.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_cron.nix
new file mode 100644
index 000000000000..40fcaeb7ccab
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_cron.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "pg_cron";
+  version = "1.1.4";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "citusdata";
+    repo   = pname;
+    rev    = "refs/tags/v${version}";
+    sha256 = "0wkqgrm3v999hjcc82h24jv1pib6f6bw8jsv83hgk6g3iv6xsjg9";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin    # For buildEnv to setup proper symlinks. See #22653
+    mkdir -p $out/{lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Run Cron jobs through PostgreSQL";
+    homepage    = https://github.com/citusdata/pg_cron;
+    maintainers = with maintainers; [ thoughtpolice ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_hll.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_hll.nix
new file mode 100644
index 000000000000..bccec1107b9a
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_hll.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  name = "pg_hll-${version}";
+  version = "2.12";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "citusdata";
+    repo   = "postgresql-hll";
+    rev    = "refs/tags/v${version}";
+    sha256 = "1jdc9gjqc3dkjxv855q1p594j0awhrrymrcqnl5vw5vx2ny3bpgn";
+  };
+
+  installPhase = ''
+    mkdir -p $out/{lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "HyperLogLog for PostgreSQL";
+    homepage    = https://www.citusdata.com/;
+    maintainers = with maintainers; [ thoughtpolice ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_partman.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_partman.nix
new file mode 100644
index 000000000000..38e86fbfd8d6
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_partman.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "pg_partman";
+  version = "4.1.0";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "pgpartman";
+    repo   = pname;
+    rev    = "refs/tags/v${version}";
+    sha256 = "0bzv92x492jcwzhal9x4vc3vszixscdpxc6yq5rrqld26dhmsp06";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin    # For buildEnv to setup proper symlinks. See #22653
+    mkdir -p $out/{lib,share/extension}
+
+    cp src/*.so      $out/lib
+    cp updates/*     $out/share/postgresql/extension
+    cp -r sql/*      $out/share/postgresql/extension
+    cp *.control     $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Partition management extension for PostgreSQL";
+    homepage    = https://github.com/pgpartman/pg_partman;
+    maintainers = with maintainers; [ ggpeti ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_repack.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_repack.nix
new file mode 100644
index 000000000000..381a174838e5
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_repack.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, postgresql, openssl, zlib, readline }:
+
+stdenv.mkDerivation rec {
+  name = "pg_repack-${version}";
+  version = "1.4.4";
+
+  buildInputs = [ postgresql openssl zlib readline ];
+
+  src = fetchFromGitHub {
+    owner  = "reorg";
+    repo   = "pg_repack";
+    rev    = "refs/tags/ver_${version}";
+    sha256 = "0ynsmsxfkcp82ccpz2nrgg8wiil8yxqigvw6425lx8v80h5lszbw";
+  };
+
+  installPhase = ''
+    install -D bin/pg_repack -t $out/bin/
+    install -D lib/pg_repack.so -t $out/lib/
+    install -D lib/{pg_repack--${version}.sql,pg_repack.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Reorganize tables in PostgreSQL databases with minimal locks";
+    longDescription = ''
+      pg_repack is a PostgreSQL extension which lets you remove bloat from tables and indexes, and optionally restore
+      the physical order of clustered indexes. Unlike CLUSTER and VACUUM FULL it works online, without holding an
+      exclusive lock on the processed tables during processing. pg_repack is efficient to boot,
+      with performance comparable to using CLUSTER directly.
+    '';
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ danbst ];
+    inherit (postgresql.meta) platforms;
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix
new file mode 100644
index 000000000000..b835141e2ca7
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_safeupdate.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "pg-safeupdate";
+  version = "1.2";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "eradman";
+    repo   = pname;
+    rev    = version;
+    sha256 = "010m57jcv5v8pyfm1cqs3a306y750lvnvla9m5d98v5vdx3349jg";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin # for buildEnv, see https://github.com/NixOS/nixpkgs/issues/22653
+    install -D safeupdate.so -t $out/lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple extension to PostgreSQL that requires criteria for UPDATE and DELETE";
+    homepage    = "https://github.com/eradman/pg-safeupdate";
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_similarity.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_similarity.nix
new file mode 100644
index 000000000000..85ff50e2eae8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_similarity.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub, gcc, postgresql }:
+
+stdenv.mkDerivation {
+
+  name = "pg_similarity-1.0";
+  src = fetchFromGitHub {
+    owner = "eulerto";
+    repo = "pg_similarity";
+    rev = "be1a8b08c8716e59b89982557da9ea68cdf868c5";
+    sha256 = "1z4v4r2yccdr8kz3935fnk1bc5vj0qj0apscldyap4wxlyi89xim";
+  };
+
+  buildInputs = [ postgresql gcc ];
+  buildPhase = "USE_PGXS=1 make";
+  installPhase = ''
+    mkdir -p $out/bin   # for buildEnv to setup proper symlinks
+    install -D pg_similarity.so -t $out/lib/
+    install -D ./{pg_similarity--unpackaged--1.0.sql,pg_similarity--1.0.sql,pg_similarity.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = {
+    description = ''
+       pg_similarity is an extension to support similarity queries on PostgreSQL. The implementation
+       is tightly integrated in the RDBMS in the sense that it defines operators so instead of the traditional
+       operators (= and <>) you can use ~~~ and ~!~ (any of these operators represents a similarity function).
+    '';
+    platforms = postgresql.meta.platforms;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with lib.maintainers; [ danbst ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_topn.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_topn.nix
new file mode 100644
index 000000000000..1a5aa91ae6ec
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pg_topn.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  name = "pg_topn-${version}";
+  version = "2.2.2";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "citusdata";
+    repo   = "postgresql-topn";
+    rev    = "refs/tags/v${version}";
+    sha256 = "1bh28nrxj06vc2cvlsxlwrwad5ff3lfj3kr5cnnggwjk2dhwbbjm";
+  };
+
+  installPhase = ''
+    mkdir -p $out/{lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Efficient querying of 'top values' for PostgreSQL";
+    homepage    = https://github.com/citusdata/postgresql-topn;
+    maintainers = with maintainers; [ thoughtpolice ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.agpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgjwt.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgjwt.nix
new file mode 100644
index 000000000000..69c7a4513b6e
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgjwt.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name    = "pgjwt-${version}";
+  version = "unstable-2017-04-24";
+
+  src = fetchFromGitHub {
+    owner  = "michelp";
+    repo   = "pgjwt";
+    rev    = "546a2911027b716586e241be7fd4c6f1785237cd";
+    sha256 = "1riz0xvwb6y02j0fljbr9hcbqb2jqs4njlivmavy9ysbcrrv1vrf";
+  };
+
+  buildPhase = ":";
+  installPhase = ''
+    mkdir -p $out/bin  # current postgresql extension mechanism in nixos requires bin directory
+    mkdir -p $out/share/postgresql/extension
+    cp pg*sql *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "PostgreSQL implementation of JSON Web Tokens";
+    longDescription = ''
+      sign() and verify() functions to create and verify JSON Web Tokens.
+    '';
+    license = licenses.mit;
+    maintainers = with maintainers; [spinus];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix
new file mode 100644
index 000000000000..9058c443e37e
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, postgresql, msgpack, groonga }:
+
+stdenv.mkDerivation rec {
+  pname = "pgroonga";
+  version = "2.2.0";
+
+  src = fetchurl {
+    url = "https://packages.groonga.org/source/${pname}/${pname}-${version}.tar.gz";
+    sha256 = "1cankcprikx8nf72yg4h8542gqqlfgww6d63kg7l8l8sz962d28b";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ postgresql msgpack groonga ];
+
+  makeFlags = [ "HAVE_MSGPACK=1" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D pgroonga.so -t $out/lib/
+    install -D ./{pgroonga-*.sql,pgroonga.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A PostgreSQL extension to use Groonga as the index";
+    longDescription = ''
+      PGroonga is a PostgreSQL extension to use Groonga as the index.
+      PostgreSQL supports full text search against languages that use only alphabet and digit.
+      It means that PostgreSQL doesn't support full text search against Japanese, Chinese and so on.
+      You can use super fast full text search feature against all languages by installing PGroonga into your PostgreSQL.
+    '';
+    homepage = "https://pgroonga.github.io/";
+    license = licenses.postgresql;
+    maintainers = with maintainers; [ DerTim1 ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgrouting.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgrouting.nix
new file mode 100644
index 000000000000..9f4eda2bde91
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgrouting.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, postgresql, perl, cmake, boost, gmp, cgal, mpfr }:
+
+stdenv.mkDerivation rec {
+  pname = "pgrouting";
+  version = "2.6.2";
+
+  nativeBuildInputs = [ cmake perl ];
+  buildInputs = [ postgresql boost gmp cgal mpfr ];
+
+  src = fetchFromGitHub {
+    owner  = "pgRouting";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "09xy5pmiwq0lxf2m8p4q5r892mfmn32vf8m75p84jnz4707z1l0j";
+  };
+
+  installPhase = ''
+    mkdir -p $out/bin # for buildEnv, see https://github.com/NixOS/nixpkgs/issues/22653
+    install -D lib/*.so                        -t $out/lib
+    install -D sql/pgrouting--${version}.sql   -t $out/share/postgresql/extension
+    install -D sql/common/pgrouting.control    -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A PostgreSQL/PostGIS extension that provides geospatial routing functionality";
+    homepage    = https://pgrouting.org/;
+    maintainers = [ maintainers.steve-chavez ];
+    platforms   = platforms.linux;
+    license     = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgtap.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgtap.nix
new file mode 100644
index 000000000000..7dd6a5882b25
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgtap.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, postgresql, perl, perlPackages, which }:
+
+stdenv.mkDerivation rec {
+  name = "pgtap-${version}";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "theory";
+    repo = "pgtap";
+    rev = "v${version}";
+    sha256 = "0ks53lsrpa8yxav8jh0jlvs25y6p7mkcdch8il1kvib9k5zq2wnb";
+  };
+
+  nativeBuildInputs = [ postgresql perl perlPackages.TAPParserSourceHandlerpgTAP which ];
+
+  installPhase = ''
+    install -D {sql/pgtap--${version}.sql,pgtap.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "pgTAP is a unit testing framework for PostgreSQL";
+    longDescription = ''
+      pgTAP is a unit testing framework for PostgreSQL written in PL/pgSQL and PL/SQL.
+      It includes a comprehensive collection of TAP-emitting assertion functions,
+      as well as the ability to integrate with other TAP-emitting test frameworks.
+      It can also be used in the xUnit testing style.
+    '';
+    maintainers = with maintainers; [ willibutz ];
+    homepage = https://pgtap.org;
+    inherit (postgresql.meta) platforms;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pipelinedb.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pipelinedb.nix
new file mode 100644
index 000000000000..01dcd54d95e8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pipelinedb.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, postgresql, zeromq, openssl }:
+
+if stdenv.lib.versionOlder postgresql.version "10"
+then throw "PipelineDB not supported for PostgreSQL ${postgresql.version}"
+else
+stdenv.mkDerivation rec {
+  pname = "pipelinedb";
+  version = "1.0.0-13";
+
+  src = fetchFromGitHub {
+    owner = "pipelinedb";
+    repo = pname;
+    rev = version;
+    sha256 = "1mnqpvx6g1r2n4kjrrx01vbdx7kvndfsbmm7zbzizjnjlyixz75f";
+  };
+
+  buildInputs = [ postgresql openssl zeromq ];
+
+  makeFlags = [ "USE_PGXS=1" ];
+
+  preConfigure = ''
+    substituteInPlace Makefile \
+      --replace "/usr/lib/libzmq.a" "${zeromq}/lib/libzmq.a"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D -t $out/lib/ pipelinedb.so
+    install -D -t $out/share/postgresql/extension {pipelinedb-*.sql,pipelinedb.control}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "High-performance time-series aggregation for PostgreSQL";
+    homepage = https://www.pipelinedb.com/;
+    license = licenses.asl20;
+    platforms = postgresql.meta.platforms;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/plv8.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/plv8.nix
new file mode 100644
index 000000000000..4b7c1235ca95
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/plv8.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, v8, perl, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "plv8";
+  version = "2.3.11";
+
+  nativeBuildInputs = [ perl ];
+  buildInputs = [ v8 postgresql ];
+
+  src = fetchFromGitHub {
+    owner = "plv8";
+    repo = "plv8";
+    rev = "v${version}";
+    sha256 = "0bv2b8xxdqqhj6nwyc8kwhi5m5i7i1yl078sk3bnnc84b0mnza5x";
+  };
+
+  makeFlags = [ "--makefile=Makefile.shared" ];
+
+  preConfigure = ''
+    patchShebangs ./generate_upgrade.sh
+  '';
+
+  buildPhase = "make -f Makefile.shared all";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D plv8*.so                                        -t $out/lib
+    install -D {plls,plcoffee,plv8}{--${version}.sql,.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "PL/v8 - A Procedural Language in JavaScript powered by V8";
+    homepage = https://pgxn.org/dist/plv8/;
+    maintainers = with maintainers; [ volth ];
+    platforms = platforms.linux;
+    license = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix
new file mode 100644
index 000000000000..de9d7eb1305b
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/postgis.nix
@@ -0,0 +1,69 @@
+{ fetchurl
+, stdenv
+, perl
+, libxml2
+, postgresql
+, geos
+, proj
+, gdal
+, json_c
+, pkgconfig
+, file
+, protobufc
+}:
+stdenv.mkDerivation rec {
+  name = "postgis-${version}";
+  version = "2.5.2";
+
+  outputs = [ "out" "doc" ];
+
+  src = fetchurl {
+    url = "https://download.osgeo.org/postgis/source/postgis-${version}.tar.gz";
+    sha256 = "0pnva72f2w4jcgnl1y7nw5rdly4ipx3hji4c9yc9s0hna1n2ijxn";
+  };
+
+  buildInputs = [ libxml2 postgresql geos proj gdal json_c protobufc ];
+  nativeBuildInputs = [ perl pkgconfig ];
+  dontDisableStatic = true;
+
+  # postgis config directory assumes /include /lib from the same root for json-c library
+  NIX_LDFLAGS = "-L${stdenv.lib.getLib json_c}/lib";
+
+  preConfigure = ''
+    sed -i 's@/usr/bin/file@${file}/bin/file@' configure
+    configureFlags="--datadir=$out/share/postgresql --datarootdir=$out/share/postgresql --bindir=$out/bin --with-gdalconfig=${gdal}/bin/gdal-config --with-jsondir=${json_c.dev}"
+
+    makeFlags="PERL=${perl}/bin/perl datadir=$out/share/postgresql pkglibdir=$out/lib bindir=$out/bin"
+  '';
+  postConfigure = ''
+    sed -i "s|@mkdir -p \$(DESTDIR)\$(PGSQL_BINDIR)||g ;
+            s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g
+            " \
+        "raster/loader/Makefile";
+    sed -i "s|\$(DESTDIR)\$(PGSQL_BINDIR)|$prefix/bin|g
+            " \
+        "raster/scripts/python/Makefile";
+  '';
+
+  preInstall = ''
+    mkdir -p $out/bin
+  '';
+
+  # create aliases for all commands adding version information
+  postInstall = ''
+    for prog in $out/bin/*; do # */
+      ln -s $prog $prog-${version}
+    done
+
+    mkdir -p $doc/share/doc/postgis
+    mv doc/* $doc/share/doc/postgis/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Geographic Objects for PostgreSQL";
+    homepage = https://postgis.net/;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.marcweber ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/tds_fdw.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/tds_fdw.nix
new file mode 100644
index 000000000000..3a4e0cba6026
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/tds_fdw.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, postgresql, freetds }:
+
+stdenv.mkDerivation rec {
+  pname = "tds_fdw";
+  version = "1.0.8";
+
+  buildInputs = [ postgresql freetds ];
+
+  src = fetchFromGitHub {
+    owner  = "tds-fdw";
+    repo   =  pname;
+    rev    = "refs/tags/v${version}";
+    sha256 = "0dlv1imiy773yplqqpl26xka65bc566k2x81wkrbvwqagnwvcai2";
+  };
+
+  installPhase = ''
+    install -D tds_fdw.so                  -t $out/lib
+    install -D sql/tds_fdw--${version}.sql -t $out/share/postgresql/extension
+    install -D tds_fdw.control             -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A PostgreSQL foreign data wrapper to connect to TDS databases (Sybase and Microsoft SQL Server)";
+    homepage    = https://github.com/tds-fdw/tds_fdw;
+    maintainers = [ maintainers.steve-chavez ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.postgresql;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/temporal_tables.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/temporal_tables.nix
new file mode 100644
index 000000000000..ac0299208f81
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/temporal_tables.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, postgresql }:
+
+stdenv.mkDerivation rec {
+  pname = "temporal_tables";
+  version = "1.2.0";
+
+  buildInputs = [ postgresql ];
+
+  src = fetchFromGitHub {
+    owner  = "mlt";
+    repo   = pname;
+    rev    = "6cc86eb03d618d6b9fc09ae523f1a1e5228d22b5";
+    sha256 = "0ykv37rm511n5955mbh9dcp7pgg88z1nwgszav7z6pziaj3nba8x";
+  };
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib,share/extension}
+
+    cp *.so      $out/lib
+    cp *.sql     $out/share/postgresql/extension
+    cp *.control $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Temporal Tables PostgreSQL Extension ";
+    homepage    = https://github.com/mlt/temporal_tables;
+    maintainers = with maintainers; [ ggpeti ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.bsd2;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/timescaledb.nix
new file mode 100644
index 000000000000..5f2facf449e8
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/timescaledb.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, cmake, postgresql, openssl }:
+
+# # To enable on NixOS:
+# config.services.postgresql = {
+#   extraPlugins = [ pkgs.timescaledb ];
+#   extraConfig = "shared_preload_libraries = 'timescaledb'";
+# }
+
+stdenv.mkDerivation rec {
+  name = "timescaledb-${version}";
+  version = "1.3.2";
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ postgresql openssl ];
+
+  src = fetchFromGitHub {
+    owner  = "timescale";
+    repo   = "timescaledb";
+    rev    = "refs/tags/${version}";
+    sha256 = "117az52h8isi15p47r5d6k5y80ng9vj3x8ljq39iavgr364q716c";
+  };
+
+  cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" ];
+
+  # Fix the install phase which tries to install into the pgsql extension dir,
+  # and cannot be manually overridden. This is rather fragile but works OK.
+  patchPhase = ''
+    for x in CMakeLists.txt sql/CMakeLists.txt; do
+      substituteInPlace "$x" \
+        --replace 'DESTINATION "''${PG_SHAREDIR}/extension"' "DESTINATION \"$out/share/postgresql/extension\""
+    done
+
+    for x in src/CMakeLists.txt src/loader/CMakeLists.txt tsl/src/CMakeLists.txt; do
+      substituteInPlace "$x" \
+        --replace 'DESTINATION ''${PG_PKGLIBDIR}' "DESTINATION \"$out/lib\""
+    done
+  '';
+
+  postInstall = ''
+    # work around an annoying bug, by creating $out/bin, so buildEnv doesn't freak out later
+    # see https://github.com/NixOS/nixpkgs/issues/22653
+
+    mkdir -p $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Scales PostgreSQL for time-series data via automatic partitioning across time and space";
+    homepage    = https://www.timescale.com/;
+    maintainers = with maintainers; [ volth ];
+    platforms   = postgresql.meta.platforms;
+    license     = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix
new file mode 100644
index 000000000000..87c82dd82073
--- /dev/null
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/tsearch_extras.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, pkgconfig, postgresql }:
+
+stdenv.mkDerivation rec {
+  name = "tsearch-extras-${version}";
+  version = "0.4";
+
+  src = fetchFromGitHub {
+    owner  = "zulip";
+    repo   = "tsearch_extras";
+    rev    = "84e78f00931c4ef261d98197d6b5d94fc141f742"; # no release tag?
+    sha256 = "18j0saqblg3jhrz38splk173xjwdf32c67ymm18m8n5y94h8d2ba";
+  };
+
+  nativenativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ postgresql ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install -D tsearch_extras.so -t $out/lib/
+    install -D ./{tsearch_extras--1.0.sql,tsearch_extras.control} -t $out/share/postgresql/extension
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Provides a few PostgreSQL functions for a lower-level data full text search";
+    homepage = https://github.com/zulip/tsearch_extras/;
+    license = licenses.postgresql;
+    maintainers = with maintainers; [ DerTim1 ];
+  };
+}