summary refs log tree commit diff
path: root/pkgs/servers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers')
-rw-r--r--pkgs/servers/amqp/qpid-cpp/default.nix12
-rw-r--r--pkgs/servers/amqp/rabbitmq-server/default.nix41
-rw-r--r--pkgs/servers/apache-kafka/default.nix9
-rw-r--r--pkgs/servers/atlassian/confluence.nix8
-rw-r--r--pkgs/servers/atlassian/jira.nix4
-rw-r--r--pkgs/servers/cloud-print-connector/default.nix10
-rw-r--r--pkgs/servers/computing/slurm/default.nix4
-rw-r--r--pkgs/servers/computing/torque/default.nix4
-rw-r--r--pkgs/servers/corosync/default.nix4
-rw-r--r--pkgs/servers/dante/default.nix4
-rw-r--r--pkgs/servers/dns/bind/default.nix4
-rw-r--r--pkgs/servers/dns/coredns/default.nix14
-rw-r--r--pkgs/servers/dns/coredns/deps.nix84
-rw-r--r--pkgs/servers/dns/dnsdist/default.nix16
-rw-r--r--pkgs/servers/dns/knot-dns/default.nix4
-rw-r--r--pkgs/servers/dns/nsd/default.nix4
-rw-r--r--pkgs/servers/dns/pdns-recursor/default.nix4
-rw-r--r--pkgs/servers/dns/powerdns/default.nix4
-rw-r--r--pkgs/servers/documize-community/default.nix4
-rw-r--r--pkgs/servers/fileshare/default.nix2
-rw-r--r--pkgs/servers/ftp/bftpd/default.nix4
-rw-r--r--pkgs/servers/gotify/default.nix6
-rw-r--r--pkgs/servers/gotify/ui.nix4
-rw-r--r--pkgs/servers/gpsd/default.nix2
-rw-r--r--pkgs/servers/hitch/default.nix4
-rw-r--r--pkgs/servers/home-assistant/cli.nix6
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix61
-rw-r--r--pkgs/servers/home-assistant/default.nix71
-rw-r--r--pkgs/servers/home-assistant/esphome.nix17
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rwxr-xr-xpkgs/servers/home-assistant/parse-requirements.py10
-rw-r--r--pkgs/servers/http/4store/4store-1.1.6-glibc-2.26.patch12
-rw-r--r--pkgs/servers/http/4store/default.nix50
-rw-r--r--pkgs/servers/http/4store/src-for-default.nix9
-rw-r--r--pkgs/servers/http/4store/src-info-for-default.nix6
-rw-r--r--pkgs/servers/http/apache-httpd/2.4.nix6
-rw-r--r--pkgs/servers/http/apache-modules/mod_ca/default.nix35
-rw-r--r--pkgs/servers/http/apache-modules/mod_crl/default.nix24
-rw-r--r--pkgs/servers/http/apache-modules/mod_csr/default.nix41
-rw-r--r--pkgs/servers/http/apache-modules/mod_csr/openssl_setter_compat.h66
-rw-r--r--pkgs/servers/http/apache-modules/mod_ocsp/default.nix24
-rw-r--r--pkgs/servers/http/apache-modules/mod_pkcs12/default.nix24
-rw-r--r--pkgs/servers/http/apache-modules/mod_python/default.nix3
-rw-r--r--pkgs/servers/http/apache-modules/mod_scep/default.nix41
-rw-r--r--pkgs/servers/http/apache-modules/mod_scep/openssl_setter_compat.h66
-rw-r--r--pkgs/servers/http/apache-modules/mod_spkac/default.nix24
-rw-r--r--pkgs/servers/http/apache-modules/mod_timestamp/default.nix24
-rw-r--r--pkgs/servers/http/apache-modules/mod_wsgi/default.nix4
-rw-r--r--pkgs/servers/http/h2o/default.nix4
-rw-r--r--pkgs/servers/http/hiawatha/default.nix2
-rw-r--r--pkgs/servers/http/jetty/default.nix4
-rw-r--r--pkgs/servers/http/lwan/default.nix4
-rw-r--r--pkgs/servers/http/nginx/generic.nix10
-rw-r--r--pkgs/servers/http/nginx/modules.nix9
-rw-r--r--pkgs/servers/http/nginx/nix-etag-1.15.4.patch18
-rw-r--r--pkgs/servers/http/openresty/default.nix2
-rw-r--r--pkgs/servers/http/tengine/default.nix16
-rw-r--r--pkgs/servers/http/unit/default.nix57
-rw-r--r--pkgs/servers/http/unit/drop_cap.patch79
-rw-r--r--pkgs/servers/jellyfin/default.nix6
-rw-r--r--pkgs/servers/ldap/389/default.nix8
-rw-r--r--pkgs/servers/mail/archiveopteryx/default.nix5
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x-module_dir.patch135
-rw-r--r--pkgs/servers/mail/dovecot/2.3.x-module_dir.patch165
-rw-r--r--pkgs/servers/mail/dovecot/default.nix6
-rw-r--r--pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix4
-rw-r--r--pkgs/servers/mail/mailman/core.nix47
-rw-r--r--pkgs/servers/mail/mailman/default.nix57
-rw-r--r--pkgs/servers/mail/mailman/hyperkitty.nix23
-rw-r--r--pkgs/servers/mail/mailman/postorius.nix16
-rw-r--r--pkgs/servers/mail/mailman/web.nix3
-rw-r--r--pkgs/servers/mail/opensmtpd/extras.nix21
-rw-r--r--pkgs/servers/mail/postfix/default.nix2
-rw-r--r--pkgs/servers/mail/postfix/pfixtools.nix7
-rw-r--r--pkgs/servers/mail/public-inbox/0002-msgtime-drop-Date-Parse-for-RFC2822.patch172
-rw-r--r--pkgs/servers/mail/public-inbox/default.nix74
-rw-r--r--pkgs/servers/mail/spamassassin/default.nix15
-rw-r--r--pkgs/servers/matrix-synapse/default.nix12
-rw-r--r--pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix388
-rw-r--r--pkgs/servers/matrix-synapse/matrix-appservice-slack/package.json2
-rw-r--r--pkgs/servers/matterbridge/default.nix9
-rw-r--r--pkgs/servers/mautrix-telegram/default.nix17
-rw-r--r--pkgs/servers/mautrix-whatsapp/0001-Add-missing-go-dependencies-to-go.sum.patch46
-rw-r--r--pkgs/servers/mautrix-whatsapp/default.nix10
-rw-r--r--pkgs/servers/metabase/default.nix4
-rw-r--r--pkgs/servers/miniflux/default.nix4
-rw-r--r--pkgs/servers/monitoring/alertmanager-bot/default.nix25
-rw-r--r--pkgs/servers/monitoring/alertmanager-bot/deps.nix948
-rw-r--r--pkgs/servers/monitoring/cadvisor/default.nix25
-rw-r--r--pkgs/servers/monitoring/facette/default.nix31
-rw-r--r--pkgs/servers/monitoring/grafana/default.nix6
-rw-r--r--pkgs/servers/monitoring/loki/default.nix18
-rw-r--r--pkgs/servers/monitoring/munin/default.nix20
-rw-r--r--pkgs/servers/monitoring/nagios/default.nix14
-rw-r--r--pkgs/servers/monitoring/nagios/plugins/pynagsystemd.nix22
-rw-r--r--pkgs/servers/monitoring/net-snmp/default.nix17
-rw-r--r--pkgs/servers/monitoring/plugins/default.nix13
-rw-r--r--pkgs/servers/monitoring/prometheus/snmp-exporter.nix4
-rw-r--r--pkgs/servers/monitoring/riemann/default.nix4
-rw-r--r--pkgs/servers/monitoring/zabbix/proxy.nix4
-rw-r--r--pkgs/servers/monitoring/zabbix/server.nix4
-rw-r--r--pkgs/servers/monitoring/zabbix/versions.nix12
-rw-r--r--pkgs/servers/mpd/clientlib.nix4
-rw-r--r--pkgs/servers/mpd/default.nix8
-rw-r--r--pkgs/servers/mqtt/mosquitto/default.nix4
-rw-r--r--pkgs/servers/mxisd/default.nix6
-rw-r--r--pkgs/servers/nextcloud/default.nix4
-rw-r--r--pkgs/servers/nginx-sso/default.nix4
-rw-r--r--pkgs/servers/nosql/aerospike/default.nix7
-rw-r--r--pkgs/servers/nosql/arangodb/default.nix2
-rw-r--r--pkgs/servers/nosql/mongodb/default.nix2
-rw-r--r--pkgs/servers/nosql/neo4j/default.nix4
-rw-r--r--pkgs/servers/nosql/redis/default.nix3
-rw-r--r--pkgs/servers/osrm-backend/default.nix2
-rw-r--r--pkgs/servers/plex/raw.nix4
-rw-r--r--pkgs/servers/pounce/default.nix48
-rw-r--r--pkgs/servers/quagga/default.nix4
-rw-r--r--pkgs/servers/rippled/default.nix74
-rw-r--r--pkgs/servers/roundcube/default.nix6
-rw-r--r--pkgs/servers/samba/4.x.nix4
-rw-r--r--pkgs/servers/search/elasticsearch/7.x.nix8
-rw-r--r--pkgs/servers/search/elasticsearch/plugins.nix16
-rw-r--r--pkgs/servers/search/groonga/default.nix4
-rw-r--r--pkgs/servers/search/solr/8.x.nix4
-rw-r--r--pkgs/servers/ser2net/default.nix23
-rw-r--r--pkgs/servers/shairport-sync/default.nix4
-rw-r--r--pkgs/servers/sip/freeswitch/default.nix60
-rw-r--r--pkgs/servers/sip/freeswitch/modules.nix11
-rw-r--r--pkgs/servers/sql/cockroachdb/default.nix6
-rw-r--r--pkgs/servers/sql/dolt/default.nix25
-rw-r--r--pkgs/servers/sql/percona/5.6.x.nix1
-rw-r--r--pkgs/servers/sql/postgresql/default.nix2
-rw-r--r--pkgs/servers/sql/postgresql/ext/plv8.nix4
-rw-r--r--pkgs/servers/sql/postgresql/ext/timescaledb.nix4
-rw-r--r--pkgs/servers/tt-rss/theme-feedly/default.nix4
-rw-r--r--pkgs/servers/tvheadend/default.nix2
-rw-r--r--pkgs/servers/uhub/default.nix8
-rw-r--r--pkgs/servers/unpfs/default.nix34
-rw-r--r--pkgs/servers/uwsgi/default.nix2
-rw-r--r--pkgs/servers/varnish/default.nix2
-rw-r--r--pkgs/servers/web-apps/fileshelter/default.nix4
-rw-r--r--pkgs/servers/web-apps/matomo/default.nix4
-rw-r--r--pkgs/servers/web-apps/mediawiki/default.nix4
-rw-r--r--pkgs/servers/web-apps/moodle/default.nix4
-rw-r--r--pkgs/servers/web-apps/shaarli/material-theme.nix5
-rw-r--r--pkgs/servers/web-apps/wordpress/default.nix4
-rw-r--r--pkgs/servers/webmetro/default.nix2
-rw-r--r--pkgs/servers/x11/xorg/overrides.nix73
-rw-r--r--pkgs/servers/xandikos/default.nix31
-rw-r--r--pkgs/servers/zoneminder/default.nix4
150 files changed, 2903 insertions, 1164 deletions
diff --git a/pkgs/servers/amqp/qpid-cpp/default.nix b/pkgs/servers/amqp/qpid-cpp/default.nix
index 6d2bf10cd91..02c2e03d90f 100644
--- a/pkgs/servers/amqp/qpid-cpp/default.nix
+++ b/pkgs/servers/amqp/qpid-cpp/default.nix
@@ -2,11 +2,11 @@
 
 let
   name = "qpid-cpp-${version}";
-  version = "1.38.0";
+  version = "1.39.0";
 
   src = fetchurl {
     url = "mirror://apache/qpid/cpp/${version}/${name}.tar.gz";
-    sha256 = "1q7nsl9g8xv81ymhpkdp9mlw3gkzba62gggp3b72f0ywpc3kc3cz";
+    sha256 = "088dx1l6myrksbhpr15bs09j6qm8vdliqwjp2ja5amym47md103r";
   };
 
   meta = with stdenv.lib; {
@@ -16,7 +16,7 @@ let
     description = "An AMQP message broker and a C++ messaging API";
     license = licenses.asl20;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ cpages ma27 ];
+    maintainers = with maintainers; [ cpages ];
   };
 
   qpid-cpp = stdenv.mkDerivation {
@@ -33,14 +33,16 @@ let
       sed -i '/management/d' CMakeLists.txt
     '';
 
-    NIX_CFLAGS_COMPILE = [
+    NIX_CFLAGS_COMPILE = toString ([
       "-Wno-error=deprecated-declarations"
       "-Wno-error=int-in-bool-context"
       "-Wno-error=maybe-uninitialized"
       "-Wno-error=unused-function"
       "-Wno-error=ignored-qualifiers"
       "-Wno-error=catch-value"
-    ];
+    ] ++ stdenv.lib.optionals stdenv.cc.isGNU [
+      "-Wno-error=deprecated-copy"
+    ]);
   };
 
   python-frontend = buildPythonPackage {
diff --git a/pkgs/servers/amqp/rabbitmq-server/default.nix b/pkgs/servers/amqp/rabbitmq-server/default.nix
index bc83c5a8ea2..868fd3a6d56 100644
--- a/pkgs/servers/amqp/rabbitmq-server/default.nix
+++ b/pkgs/servers/amqp/rabbitmq-server/default.nix
@@ -1,37 +1,54 @@
 { stdenv, fetchurl, erlang, elixir, python, libxml2, libxslt, xmlto
 , docbook_xml_dtd_45, docbook_xsl, zip, unzip, rsync, getconf, socat
+, procps, coreutils, gnused, systemd, glibcLocales
 , AppKit, Carbon, Cocoa
 }:
 
 stdenv.mkDerivation rec {
   pname = "rabbitmq-server";
 
-  version = "3.8.1";
+  version = "3.8.2";
 
   # when updating, consider bumping elixir version in all-packages.nix
   src = fetchurl {
     url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/${pname}-${version}.tar.xz";
-    sha256 = "17ymzjgz3544jgf321f8f788gdxs9l252ah61nlgsglv0x8gggrh";
+    sha256 = "17gixahxass9n4d697my8sq4an51rw3cicb36fqvl8fbhnwjjrwc";
   };
 
   buildInputs =
-    [ erlang elixir python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip rsync ]
+    [ erlang elixir python libxml2 libxslt xmlto docbook_xml_dtd_45 docbook_xsl zip unzip rsync glibcLocales ]
     ++ stdenv.lib.optionals stdenv.isDarwin [ AppKit Carbon Cocoa ];
 
   outputs = [ "out" "man" "doc" ];
 
-  installFlags = "PREFIX=$(out) RMQ_ERLAPP_DIR=$(out)";
-  installTargets = "install install-man";
+  installFlags = [ "PREFIX=$(out)" "RMQ_ERLAPP_DIR=$(out)" ];
+  installTargets = [ "install" "install-man" ];
 
-  runtimePath = stdenv.lib.makeBinPath [getconf erlang socat];
+  preBuild = ''
+    export LANG=C.UTF-8 # fix elixir locale warning
+  '';
+
+  runtimePath = stdenv.lib.makeBinPath [
+    erlang
+    getconf # for getting memory limits
+    socat systemd procps # for systemd unit activation check
+    gnused coreutils # used by helper scripts
+  ];
   postInstall = ''
-    echo 'PATH=${runtimePath}:''${PATH:+:}$PATH' >> $out/sbin/rabbitmq-env
+    # rabbitmq-env calls to sed/coreutils, so provide everything early
+    sed -i $out/sbin/rabbitmq-env -e '2s|^|PATH=${runtimePath}\''${PATH:+:}\$PATH/\n|'
+
+    # rabbitmq-server script uses `dirname` to get hold of a
+    # rabbitmq-env, so let's provide this file directly. After that
+    # point everything is OK - the PATH above will kick in
+    substituteInPlace $out/sbin/rabbitmq-server \
+      --replace '`dirname $0`/rabbitmq-env' \
+                "$out/sbin/rabbitmq-env"
 
-    # we know exactly where rabbitmq is gonna be,
-    # so we patch that into the env-script
-    substituteInPlace $out/sbin/rabbitmq-env \
-      --replace 'RABBITMQ_SCRIPTS_DIR=`dirname $SCRIPT_PATH`' \
-                "RABBITMQ_SCRIPTS_DIR=$out/sbin"
+    # We know exactly where rabbitmq is gonna be, so we patch that into the env-script.
+    # By doing it early we make sure that auto-detection for this will
+    # never be executed (somewhere below in the script).
+    sed -i $out/sbin/rabbitmq-env -e "2s|^|RABBITMQ_SCRIPTS_DIR=$out/sbin\n|"
 
     # there’s a few stray files that belong into share
     mkdir -p $doc/share/doc/rabbitmq-server
diff --git a/pkgs/servers/apache-kafka/default.nix b/pkgs/servers/apache-kafka/default.nix
index 7b27909856d..769f5f79a77 100644
--- a/pkgs/servers/apache-kafka/default.nix
+++ b/pkgs/servers/apache-kafka/default.nix
@@ -44,9 +44,14 @@ let
       sha256 = "1svdnhdzq9a6jsig513i0ahaysfgar5i385bq9fz7laga6a4z3qv";
     };
     "2.3" = {
-      kafkaVersion = "2.3.0";
+      kafkaVersion = "2.3.1";
       scalaVersion = "2.12";
-      sha256 = "1rz3xqv26h0zv5pmk65znzn08gycmrfj6vvbmrvl9i7hm4hm2vyq";
+      sha256 = "0bldfrvd351agm237icnvn36va67crpnzmbh6dlq84ip910xsgas";
+    };
+    "2.4" = {
+      kafkaVersion = "2.4.0";
+      scalaVersion = "2.12";
+      sha256 = "1vng5ipkjzqy0wijc706w2m1rjl5d0nsgbxiacci739y1jmjnn5r";
     };
   };
 in
diff --git a/pkgs/servers/atlassian/confluence.nix b/pkgs/servers/atlassian/confluence.nix
index 4d403e7d938..a5aead770b8 100644
--- a/pkgs/servers/atlassian/confluence.nix
+++ b/pkgs/servers/atlassian/confluence.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "atlassian-confluence";
-  version = "7.0.3";
+  version = "7.2.0";
 
   src = fetchurl {
     url = "https://product-downloads.atlassian.com/software/confluence/downloads/${pname}-${version}.tar.gz";
-    sha256 = "1anmhfdy4q74wchzha8fd2bd5hx0a2v3bgp9p5yvb8cal31zqcpd";
+    sha256 = "1srwxk9c26hp1j3v6v1hr16l4dqaaiwrli5a9n9a44hkl7qy8yzl";
   };
 
   buildPhase = ''
@@ -37,8 +37,8 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Team collaboration software written in Java and mainly used in corporate environments";
-    homepage = https://www.atlassian.com/software/confluence;
+    homepage = "https://www.atlassian.com/software/confluence";
     license = licenses.unfree;
-    maintainers = with maintainers; [ fpletz globin ];
+    maintainers = with maintainers; [ fpletz globin willibutz ];
   };
 }
diff --git a/pkgs/servers/atlassian/jira.nix b/pkgs/servers/atlassian/jira.nix
index 1d3e3e4f027..e5bc253f83d 100644
--- a/pkgs/servers/atlassian/jira.nix
+++ b/pkgs/servers/atlassian/jira.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "atlassian-jira";
-  version = "8.5.0";
+  version = "8.6.0";
 
   src = fetchurl {
     url = "https://product-downloads.atlassian.com/software/jira/downloads/atlassian-jira-software-${version}.tar.gz";
-    sha256 = "093706cpaw1a1vwvzpa85j7n338d748w372vsk8c9lvagaskiwh2";
+    sha256 = "091vcr0hvrrm9zjqs67ai5mkx7b8ybpwqpdxy7jw5z3994rdx3xw";
   };
 
   buildPhase = ''
diff --git a/pkgs/servers/cloud-print-connector/default.nix b/pkgs/servers/cloud-print-connector/default.nix
index bf8623f0a89..2fb5b403508 100644
--- a/pkgs/servers/cloud-print-connector/default.nix
+++ b/pkgs/servers/cloud-print-connector/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub, avahi, cups }:
+{ stdenv, buildGoPackage, fetchFromGitHub, avahi, cups, fetchpatch }:
 
 # TODO: Add a service for gcp-cups-connector and perhaps some other
 # kind of configuration for the same thing that gcp-connector-util
@@ -19,6 +19,14 @@ buildGoPackage rec {
     "gcp-cups-connector"
   ];
 
+  patches = [
+    (fetchpatch {
+      # https://github.com/google/cloud-print-connector/pull/475
+      url = "https://github.com/google/cloud-print-connector/commit/6a77c7c283b83cbcc9cbfab59710023cd09da3ed.patch";
+      sha256 = "054pi9nz402va95z5k6wq3dalnv5rcya078wa99p1kdwb7cqmrcq";
+    })
+  ];
+
   src = fetchFromGitHub {
     owner = "google";
     repo = "cloud-print-connector";
diff --git a/pkgs/servers/computing/slurm/default.nix b/pkgs/servers/computing/slurm/default.nix
index 8eb8437b0d5..637ac0607db 100644
--- a/pkgs/servers/computing/slurm/default.nix
+++ b/pkgs/servers/computing/slurm/default.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "slurm";
-  version = "19.05.4.1";
+  version = "19.05.5.1";
 
   # N.B. We use github release tags instead of https://www.schedmd.com/downloads.php
   # because the latter does not keep older releases.
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     repo = "slurm";
     # The release tags use - instead of .
     rev = "${pname}-${builtins.replaceStrings ["."] ["-"] version}";
-    sha256 = "07ydjda2dl9casz8hh91jlxdyc67mj4af1l2gq3gkzi4397azzz6";
+    sha256 = "0f0gv3sirp6sxdrbwydsbcqicjbmrpm58yhgbsar8v6nx3g6y3hx";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/servers/computing/torque/default.nix b/pkgs/servers/computing/torque/default.nix
index 5e78fe742ac..8eb12a1b811 100644
--- a/pkgs/servers/computing/torque/default.nix
+++ b/pkgs/servers/computing/torque/default.nix
@@ -25,9 +25,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   # added to fix build with gcc7
-  NIX_CFLAGS_COMPILE = [
-    "-Wno-error" "-fpermissive"
-  ];
+  NIX_CFLAGS_COMPILE = "-Wno-error -fpermissive";
 
   postPatch = ''
     substituteInPlace Makefile.am \
diff --git a/pkgs/servers/corosync/default.nix b/pkgs/servers/corosync/default.nix
index faa9976bed8..2d7acda90af 100644
--- a/pkgs/servers/corosync/default.nix
+++ b/pkgs/servers/corosync/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, makeWrapper, pkgconfig, nss, nspr, libqb
-, dbus, rdma-core, libstatgrab, net_snmp
+, dbus, rdma-core, libstatgrab, net-snmp
 , enableDbus ? false
 , enableInfiniBandRdma ? false
 , enableMonitoring ? false
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
   ] ++ optional enableDbus dbus
     ++ optional enableInfiniBandRdma rdma-core
     ++ optional enableMonitoring libstatgrab
-    ++ optional enableSnmp net_snmp;
+    ++ optional enableSnmp net-snmp;
 
   configureFlags = [
     "--sysconfdir=/etc"
diff --git a/pkgs/servers/dante/default.nix b/pkgs/servers/dante/default.nix
index ae083f17ada..c36ca2f8f50 100644
--- a/pkgs/servers/dante/default.nix
+++ b/pkgs/servers/dante/default.nix
@@ -11,7 +11,9 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ pam libkrb5 cyrus_sasl miniupnpc ];
 
-  configureFlags = ["--with-libc=libc${stdenv.targetPlatform.extensions.sharedLibrary}"];
+  configureFlags = if !stdenv.isDarwin
+    then [ "--with-libc=libc.so.6" ]
+    else [ "--with-libc=libc${stdenv.targetPlatform.extensions.sharedLibrary}" ];
 
   dontAddDisableDepTrack = stdenv.isDarwin;
 
diff --git a/pkgs/servers/dns/bind/default.nix b/pkgs/servers/dns/bind/default.nix
index e13967d7af1..5e4a07bdf25 100644
--- a/pkgs/servers/dns/bind/default.nix
+++ b/pkgs/servers/dns/bind/default.nix
@@ -10,11 +10,11 @@ assert enablePython -> python3 != null;
 
 stdenv.mkDerivation rec {
   pname = "bind";
-  version = "9.14.8";
+  version = "9.14.9";
 
   src = fetchurl {
     url = "https://ftp.isc.org/isc/bind9/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0xm0xrpgxq6gk6r6aa2w0lygnq02y1p614dmyjdmlsfnrrsslig5";
+    sha256 = "0g2ph3hlw86yib8hv13qgkb4i84s9zv22r4k6yqlycm2izamwmr9";
   };
 
   outputs = [ "out" "lib" "dev" "man" "dnsutils" "host" ];
diff --git a/pkgs/servers/dns/coredns/default.nix b/pkgs/servers/dns/coredns/default.nix
index def78223f12..2c8506ac9d2 100644
--- a/pkgs/servers/dns/coredns/default.nix
+++ b/pkgs/servers/dns/coredns/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildGoPackage, fetchFromGitHub }:
+{ stdenv, buildGoModule, fetchFromGitHub }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "coredns";
-  version = "1.3.1";
+  version = "1.6.6";
 
   goPackagePath = "github.com/coredns/coredns";
 
@@ -10,15 +10,15 @@ buildGoPackage rec {
     owner = "coredns";
     repo = "coredns";
     rev = "v${version}";
-    sha256 = "0aflm0c3qcjcq4dy7yx9f5xlvdm4k0b2awsp3qvbfgyp74by0584";
+    sha256 = "1x8sgchp0kkk5xdharjrq29qxgv1mdzrw3f12s2kchgqf1m6r0sx";
   };
 
-  goDeps = ./deps.nix;
+  modSha256 = "10ljggg1g5x00gpgzc5m29n1k5akf0s0g3hkdh8adcbrcz0pgr5c";
 
   meta = with stdenv.lib; {
-    homepage = https://coredns.io;
+    homepage = "https://coredns.io";
     description = "A DNS server that runs middleware";
     license = licenses.asl20;
-    maintainers = [ maintainers.rushmorem maintainers.rtreffer maintainers.deltaevo ];
+    maintainers = with maintainers; [ rushmorem rtreffer deltaevo ];
   };
 }
diff --git a/pkgs/servers/dns/coredns/deps.nix b/pkgs/servers/dns/coredns/deps.nix
deleted file mode 100644
index 4dd8228c8a6..00000000000
--- a/pkgs/servers/dns/coredns/deps.nix
+++ /dev/null
@@ -1,84 +0,0 @@
-[
-  {
-    goPackagePath = "github.com/mholt/caddy";
-    fetch = {
-      type = "git";
-      url = "https://github.com/mholt/caddy";
-      rev = "v0.11.1";
-      sha256 = "0v35d3dy0f88wgk1vzznbx7p15vjjf7xm3qfi2c3192rsxgzvy0l";
-    };
-  }
-  {
-    goPackagePath = "github.com/miekg/dns";
-    fetch = {
-      type = "git";
-      url = "https://github.com/miekg/dns";
-      rev = "v1.1.3";
-      sha256 = "1xs1k9jm9f04y8callww9x4s0jrxmsn7882iyy4br8sbpl3wzkw4";
-    };
-  }
-  {
-    goPackagePath = "github.com/prometheus/client_golang";
-    fetch = {
-      type = "git";
-      url = "https://github.com/prometheus/client_golang";
-      rev = "v0.9.1";
-      sha256 = "01gnylazia30pcp069xcng482gwmm3xcx5zgrlwdkhic1lyb6i9l";
-    };
-  }
-  # client_golang dependencies
-  {
-    goPackagePath = "github.com/beorn7/perks";
-    fetch = {
-      type = "git";
-      url = "https://github.com/beorn7/perks";
-      rev = "3a771d992973f24aa725d07868b467d1ddfceafb";
-      sha256 = "1l2lns4f5jabp61201sh88zf3b0q793w4zdgp9nll7mmfcxxjif3";
-    };
-  }
-  {
-    goPackagePath = "github.com/golang/protobuf";
-    fetch = {
-      type = "git";
-      url = "https://github.com/golang/protobuf";
-      rev = "347cf4a86c1cb8d262994d8ef5924d4576c5b331";
-      sha256 = "0c5j5c2dnj1452653c8nnpx4jwijwafi1p8685g7ddm6kng9q1wz";
-    };
-  }
-  {
-    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
-    fetch = {
-      type = "git";
-      url = "https://github.com/matttproud/golang_protobuf_extensions";
-      rev = "c182affec369e30f25d3eb8cd8a478dee585ae7d";
-      sha256 = "1xqsf9vpcrd4hp95rl6kgmjvkv1df4aicfw4l5vfcxcwxknfx2xs";
-    };
-  }
-  {
-    goPackagePath = "github.com/prometheus/client_model";
-    fetch = {
-      type = "git";
-      url = "https://github.com/prometheus/client_model";
-      rev = "56726106282f1985ea77d5305743db7231b0c0a8";
-      sha256 = "19y4qs9mkxiiab5sh3b7cccjpl3xbp6sy8812ig9f1zg8vzkzj7j";
-    };
-  }
-  {
-    goPackagePath = "github.com/prometheus/common";
-    fetch = {
-      type = "git";
-      url = "https://github.com/prometheus/common";
-      rev = "2998b132700a7d019ff618c06a234b47c1f3f681";
-      sha256 = "131qmx0rs1nz0ci3qzkks4i6fdmr5c69i48h5cngjizlb9xxwir2";
-    };
-  }
-  {
-    goPackagePath = "github.com/prometheus/procfs";
-    fetch = {
-      type = "git";
-      url = "https://github.com/prometheus/procfs";
-      rev = "bf6a532e95b1f7a62adf0ab5050a5bb2237ad2f4";
-      sha256 = "0k65i2ikf3jp6863mpc1raf928i78r8jd7zn9djx6f4izls6l6j1";
-    };
-  }
-]
diff --git a/pkgs/servers/dns/dnsdist/default.nix b/pkgs/servers/dns/dnsdist/default.nix
index cb004a596d2..0c236fe9315 100644
--- a/pkgs/servers/dns/dnsdist/default.nix
+++ b/pkgs/servers/dns/dnsdist/default.nix
@@ -1,22 +1,26 @@
 { stdenv, fetchurl, pkgconfig, systemd
 , boost, libsodium, libedit, re2
-, net_snmp, lua, protobuf, openssl }: stdenv.mkDerivation rec {
+, net-snmp, lua, protobuf, openssl, zlib, h2o
+}:
+
+stdenv.mkDerivation rec {
   pname = "dnsdist";
-  version = "1.3.2";
+  version = "1.4.0";
 
   src = fetchurl {
     url = "https://downloads.powerdns.com/releases/dnsdist-${version}.tar.bz2";
-    sha256 = "1i3b1vpk9a8zbx9aby2s1ckkzhlvzgn11hcgj3b8x2j1b9771rqb";
+    sha256 = "1h0x5xd13j8xxrrinb7d55851m6n9w0r15wx9m3c50dk7qngldm3";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ systemd boost libsodium libedit re2 net_snmp lua protobuf openssl ];
+  nativeBuildInputs = [ pkgconfig protobuf ];
+  buildInputs = [ systemd boost libsodium libedit re2 net-snmp lua openssl zlib h2o ];
 
   configureFlags = [
     "--enable-libsodium"
     "--enable-re2"
     "--enable-dnscrypt"
     "--enable-dns-over-tls"
+    "--enable-dns-over-https"
     "--with-protobuf=yes"
     "--with-net-snmp"
     "--disable-dependency-tracking"
@@ -26,6 +30,8 @@
 
   doCheck = true;
 
+  enableParallelBuilding = true;
+
   meta = with stdenv.lib; {
     description = "DNS Loadbalancer";
     homepage = "https://dnsdist.org";
diff --git a/pkgs/servers/dns/knot-dns/default.nix b/pkgs/servers/dns/knot-dns/default.nix
index 26d0217254a..c3d63a54ac0 100644
--- a/pkgs/servers/dns/knot-dns/default.nix
+++ b/pkgs/servers/dns/knot-dns/default.nix
@@ -7,11 +7,11 @@ let inherit (stdenv.lib) optional optionals; in
 # Note: ATM only the libraries have been tested in nixpkgs.
 stdenv.mkDerivation rec {
   pname = "knot-dns";
-  version = "2.9.1";
+  version = "2.9.2";
 
   src = fetchurl {
     url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
-    sha256 = "f19121956caa360c387923654f13e4c97b3fb9093d242e110d7e0916b8d8a04d";
+    sha256 = "298cdf33aa7589b50df7e5833694b24cd2de8b6d17cee7e1673873fe576db6ee";
   };
 
   outputs = [ "bin" "out" "dev" ];
diff --git a/pkgs/servers/dns/nsd/default.nix b/pkgs/servers/dns/nsd/default.nix
index b6a405f6d2d..130a25511d7 100644
--- a/pkgs/servers/dns/nsd/default.nix
+++ b/pkgs/servers/dns/nsd/default.nix
@@ -16,11 +16,11 @@
 
 stdenv.mkDerivation rec {
   pname = "nsd";
-  version = "4.2.3";
+  version = "4.2.4";
 
   src = fetchurl {
     url = "https://www.nlnetlabs.nl/downloads/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "1664wpglrwqk627xma10f9qa652vzmf90gsjd8pribyj74xrczc1";
+    sha256 = "0z7j3vwqqj0hh8n5irb2yqwzl45k4sn2wczbq1b1lqv5cxv6vgcy";
   };
 
   prePatch = ''
diff --git a/pkgs/servers/dns/pdns-recursor/default.nix b/pkgs/servers/dns/pdns-recursor/default.nix
index 0a584ce1aca..e5fc3ac5bb9 100644
--- a/pkgs/servers/dns/pdns-recursor/default.nix
+++ b/pkgs/servers/dns/pdns-recursor/default.nix
@@ -8,11 +8,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   pname = "pdns-recursor";
-  version = "4.2.0";
+  version = "4.2.1";
 
   src = fetchurl {
     url = "https://downloads.powerdns.com/releases/pdns-recursor-${version}.tar.bz2";
-    sha256 = "1hn2nw8v6gccwxwm36xczsac4bhxf8b8r7akri2wdp3gh70p4g7h";
+    sha256 = "07w9av3v9zjnb1fhknmza168yxsq4zr2jqcla7yg10ajrhsk534d";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/servers/dns/powerdns/default.nix b/pkgs/servers/dns/powerdns/default.nix
index 5bfb06cb15b..129fec2895b 100644
--- a/pkgs/servers/dns/powerdns/default.nix
+++ b/pkgs/servers/dns/powerdns/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "powerdns";
-  version = "4.2.0";
+  version = "4.2.1";
 
   src = fetchurl {
     url = "https://downloads.powerdns.com/releases/pdns-${version}.tar.bz2";
-    sha256 = "0flhia156vir03np8va53rw31jsbg9wz3dyqqwddgai5bvr0f812";
+    sha256 = "0a5al77rn4cd7v3g8c2q7627nf9b9g8dxg7yzz3b3jwgdfc1jl7n";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/servers/documize-community/default.nix b/pkgs/servers/documize-community/default.nix
index 40dc4162161..078936b237f 100644
--- a/pkgs/servers/documize-community/default.nix
+++ b/pkgs/servers/documize-community/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "documize-community";
-  version = "3.5.2";
+  version = "3.6.0";
 
   src = fetchFromGitHub {
     owner = "documize";
     repo = "community";
     rev = "v${version}";
-    sha256 = "0wi85ag5n49zqs68gznifza8qv8zkg9l8z1q6ckkvbkl2f3zpdl5";
+    sha256 = "0wic4j7spw9ya1m6yz0mkpqi1px6jd2vk60w8ldx0m0k606wy6ir";
   };
 
   modSha256 = "1z0v7n8klaxcqv7mvzf3jzgrp78zb4yiibx899ppk6i5qnj4xiv0";
diff --git a/pkgs/servers/fileshare/default.nix b/pkgs/servers/fileshare/default.nix
index 357237e1e29..42f280eed23 100644
--- a/pkgs/servers/fileshare/default.nix
+++ b/pkgs/servers/fileshare/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig git ];
   buildInputs = [ libmicrohttpd ];
 
-  makeFlags = "BUILD=release";
+  makeFlags = [ "BUILD=release" ];
 
   installPhase = ''
     mkdir -p $out/bin
diff --git a/pkgs/servers/ftp/bftpd/default.nix b/pkgs/servers/ftp/bftpd/default.nix
index e7c22904cea..34757462a17 100644
--- a/pkgs/servers/ftp/bftpd/default.nix
+++ b/pkgs/servers/ftp/bftpd/default.nix
@@ -5,11 +5,11 @@ let
 
 in stdenv.mkDerivation rec {
   name = "${pname}-${version}";
-  version = "5.2";
+  version = "5.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/${pname}/${pname}/${name}/${name}.tar.gz";
-    sha256 = "0kmavljj3zwpgdib9nb14fnriiv0l9zm3hglimcyz26sxbw5jqky";
+    sha256 = "19fd9r233wkjk8gdxn6qsjgfijiw67a48xhgbm2kq46bx80yf3pg";
   };
 
   preConfigure = ''
diff --git a/pkgs/servers/gotify/default.nix b/pkgs/servers/gotify/default.nix
index cce37fd8e6b..9782b289055 100644
--- a/pkgs/servers/gotify/default.nix
+++ b/pkgs/servers/gotify/default.nix
@@ -12,16 +12,16 @@ buildGoModule rec {
   pname = "gotify-server";
   # Note that when this is updated, along with the hash, the `ui.nix` file
   # should include the same changes to the version and the sha256.
-  version = "2.0.11";
+  version = "2.0.13";
 
   src = fetchFromGitHub {
     owner = "gotify";
     repo = "server";
     rev = "v${version}";
-    sha256 = "0zrylyaxy1cks1wlzyf0di8in2braj4pfriyqa24vipwrlnhvgs6";
+    sha256 = "11ycs1ci1z8wm4fjgk4454kgszr4s8q9dc96pl77yvlngi4dk46d";
   };
 
-  modSha256 = "19mghbs1jasb7vxdw13mmwsbk5sfg3y2vvddr73c82lq0f8g2iha";
+  modSha256 = "1awhbc8qs2bwv6y2vwd92r4ys0l1bzymrb36iamr040x961682wv";
 
   postPatch = ''
     substituteInPlace app.go \
diff --git a/pkgs/servers/gotify/ui.nix b/pkgs/servers/gotify/ui.nix
index a47e5279585..2c1bddec68f 100644
--- a/pkgs/servers/gotify/ui.nix
+++ b/pkgs/servers/gotify/ui.nix
@@ -8,13 +8,13 @@ yarn2nix-moretea.mkYarnPackage rec {
   packageJSON = ./package.json;
   yarnNix = ./yarndeps.nix;
 
-  version = "2.0.11";
+  version = "2.0.13";
 
   src_all = fetchFromGitHub {
     owner = "gotify";
     repo = "server";
     rev = "v${version}";
-    sha256 = "0zrylyaxy1cks1wlzyf0di8in2braj4pfriyqa24vipwrlnhvgs6";
+    sha256 = "11ycs1ci1z8wm4fjgk4454kgszr4s8q9dc96pl77yvlngi4dk46d";
   };
   src = "${src_all}/ui";
 
diff --git a/pkgs/servers/gpsd/default.nix b/pkgs/servers/gpsd/default.nix
index f205b600dd9..a05b37e9d2c 100644
--- a/pkgs/servers/gpsd/default.nix
+++ b/pkgs/servers/gpsd/default.nix
@@ -67,7 +67,7 @@ stdenv.mkDerivation rec {
   preInstall = ''
     mkdir -p "$out/lib/udev/rules.d"
   '';
-  installTargets = "install udev-install";
+  installTargets = [ "install" "udev-install" ];
 
   postFixup = ''
     wrapPythonProgramsIn $out/bin "$out $pythonPath"
diff --git a/pkgs/servers/hitch/default.nix b/pkgs/servers/hitch/default.nix
index 7bc2da8b023..442796b8065 100644
--- a/pkgs/servers/hitch/default.nix
+++ b/pkgs/servers/hitch/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, docutils, libev, openssl, pkgconfig }:
 stdenv.mkDerivation rec {
-  version = "1.5.0";
+  version = "1.5.2";
   pname = "hitch";
 
   src = fetchurl {
     url = "https://hitch-tls.org/source/${pname}-${version}.tar.gz";
-    sha256 = "02sd2p3jsbnqmldsjwzk5qcjc45k9n1x4ygjkx0kxxwjj9lm9hhf";
+    sha256 = "1nnzqqigfw78nqhp81a72x1s8d6v49ayw4w5df0zzm2cb1jgv95i";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/servers/home-assistant/cli.nix b/pkgs/servers/home-assistant/cli.nix
index 7fc80ed7540..419462dcf85 100644
--- a/pkgs/servers/home-assistant/cli.nix
+++ b/pkgs/servers/home-assistant/cli.nix
@@ -2,11 +2,11 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "homeassistant-cli";
-  version = "0.7.0";
+  version = "0.8.0";
 
   src = python3.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "a38d4669201ac2afa71b6578a220bf4d6d59131263b278d51ebd1479677f6baf";
+    sha256 = "0qq42b2a0rlrzaxwf3zqks5gzgv0hf4pz4yjjl6ldnizw8fcj40n";
   };
 
   postPatch = ''
@@ -33,7 +33,7 @@ python3.pkgs.buildPythonApplication rec {
   '';
 
   meta = with lib; {
-    description = "Command-line tool for Home Asssistant";
+    description = "Command-line tool for Home Assistant";
     homepage = https://github.com/home-assistant/home-assistant-cli;
     license = licenses.asl20;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index f46868c4cb4..275241fcd17 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "0.100.3";
+  version = "0.103.6";
   components = {
     "abode" = ps: with ps; [  ];
     "acer_projector" = ps: with ps; [ pyserial ];
@@ -11,6 +11,7 @@
     "ads" = ps: with ps; [  ];
     "aftership" = ps: with ps; [  ];
     "air_quality" = ps: with ps; [  ];
+    "airly" = ps: with ps; [  ];
     "airvisual" = ps: with ps; [ pyairvisual ];
     "aladdin_connect" = ps: with ps; [  ];
     "alarm_control_panel" = ps: with ps; [  ];
@@ -18,6 +19,7 @@
     "alarmdotcom" = ps: with ps; [  ];
     "alert" = ps: with ps; [  ];
     "alexa" = ps: with ps; [ aiohttp-cors ];
+    "almond" = ps: with ps; [ aiohttp-cors ];
     "alpha_vantage" = ps: with ps; [  ];
     "amazon_polly" = ps: with ps; [ boto3 ];
     "ambiclimate" = ps: with ps; [  ];
@@ -28,11 +30,12 @@
     "androidtv" = ps: with ps; [  ];
     "anel_pwrctrl" = ps: with ps; [  ];
     "anthemav" = ps: with ps; [  ];
-    "apache_kafka" = ps: with ps; [  ];
+    "apache_kafka" = ps: with ps; [ aiokafka ];
     "apcupsd" = ps: with ps; [  ];
     "api" = ps: with ps; [ aiohttp-cors ];
     "apns" = ps: with ps; [  ];
     "apple_tv" = ps: with ps; [ pyatv ];
+    "apprise" = ps: with ps; [ apprise ];
     "aprs" = ps: with ps; [  ];
     "aqualogic" = ps: with ps; [  ];
     "aquostv" = ps: with ps; [  ];
@@ -45,6 +48,7 @@
     "asterisk_cdr" = ps: with ps; [  ];
     "asterisk_mbox" = ps: with ps; [  ];
     "asuswrt" = ps: with ps; [  ];
+    "aten_pe" = ps: with ps; [  ];
     "atome" = ps: with ps; [  ];
     "august" = ps: with ps; [  ];
     "aurora" = ps: with ps; [  ];
@@ -58,6 +62,7 @@
     "aws" = ps: with ps; [  ];
     "axis" = ps: with ps; [  ];
     "azure_event_hub" = ps: with ps; [  ];
+    "azure_service_bus" = ps: with ps; [ azure-servicebus ];
     "baidu" = ps: with ps; [  ];
     "bayesian" = ps: with ps; [  ];
     "bbb_gpio" = ps: with ps; [  ];
@@ -105,7 +110,7 @@
     "clicksend" = ps: with ps; [  ];
     "clicksend_tts" = ps: with ps; [  ];
     "climate" = ps: with ps; [  ];
-    "cloud" = ps: with ps; [ aiohttp-cors ];
+    "cloud" = ps: with ps; [ aiohttp-cors hass-nabucasa ];
     "cloudflare" = ps: with ps; [  ];
     "cmus" = ps: with ps; [  ];
     "co2signal" = ps: with ps; [  ];
@@ -134,7 +139,7 @@
     "deconz" = ps: with ps; [  ];
     "decora" = ps: with ps; [  ];
     "decora_wifi" = ps: with ps; [  ];
-    "default_config" = ps: with ps; [ pynacl aiohttp-cors distro netdisco sqlalchemy zeroconf ];
+    "default_config" = ps: with ps; [ pynacl aiohttp-cors defusedxml distro hass-nabucasa netdisco sqlalchemy zeroconf ];
     "delijn" = ps: with ps; [  ];
     "deluge" = ps: with ps; [ deluge-client ];
     "demo" = ps: with ps; [ aiohttp-cors ];
@@ -158,11 +163,12 @@
     "dlna_dmr" = ps: with ps; [  ];
     "dnsip" = ps: with ps; [ aiodns ];
     "dominos" = ps: with ps; [ aiohttp-cors ];
-    "doods" = ps: with ps; [  ];
+    "doods" = ps: with ps; [ pillow ];
     "doorbird" = ps: with ps; [  ];
     "dovado" = ps: with ps; [  ];
     "downloader" = ps: with ps; [  ];
     "dsmr" = ps: with ps; [  ];
+    "dsmr_reader" = ps: with ps; [ aiohttp-cors hbmqtt paho-mqtt ];
     "dte_energy_bridge" = ps: with ps; [  ];
     "dublin_bus_transport" = ps: with ps; [  ];
     "duckdns" = ps: with ps; [  ];
@@ -230,6 +236,7 @@
     "flexit" = ps: with ps; [  ];
     "flic" = ps: with ps; [  ];
     "flock" = ps: with ps; [  ];
+    "flume" = ps: with ps; [  ];
     "flunearyou" = ps: with ps; [  ];
     "flux" = ps: with ps; [  ];
     "flux_led" = ps: with ps; [  ];
@@ -264,6 +271,7 @@
     "geo_rss_events" = ps: with ps; [  ];
     "geofency" = ps: with ps; [ aiohttp-cors ];
     "geonetnz_quakes" = ps: with ps; [  ];
+    "geonetnz_volcano" = ps: with ps; [  ];
     "github" = ps: with ps; [ PyGithub ];
     "gitlab_ci" = ps: with ps; [ python-gitlab ];
     "gitter" = ps: with ps; [  ];
@@ -290,7 +298,6 @@
     "growatt_server" = ps: with ps; [  ];
     "gstreamer" = ps: with ps; [  ];
     "gtfs" = ps: with ps; [  ];
-    "gtt" = ps: with ps; [  ];
     "habitica" = ps: with ps; [  ];
     "hangouts" = ps: with ps; [  ];
     "harman_kardon_avr" = ps: with ps; [  ];
@@ -304,7 +311,7 @@
     "here_travel_time" = ps: with ps; [  ];
     "hikvision" = ps: with ps; [  ];
     "hikvisioncam" = ps: with ps; [  ];
-    "hipchat" = ps: with ps; [  ];
+    "hisense_aehw4a1" = ps: with ps; [  ];
     "history" = ps: with ps; [ aiohttp-cors sqlalchemy ];
     "history_graph" = ps: with ps; [ aiohttp-cors sqlalchemy ];
     "history_stats" = ps: with ps; [ aiohttp-cors sqlalchemy ];
@@ -324,22 +331,21 @@
     "html5" = ps: with ps; [ aiohttp-cors pywebpush ];
     "http" = ps: with ps; [ aiohttp-cors ];
     "htu21d" = ps: with ps; [  ];
-    "huawei_lte" = ps: with ps; [  ];
+    "huawei_lte" = ps: with ps; [ stringcase ];
     "huawei_router" = ps: with ps; [  ];
     "hue" = ps: with ps; [ aiohue ];
     "hunterdouglas_powerview" = ps: with ps; [  ];
     "hydrawise" = ps: with ps; [  ];
-    "hydroquebec" = ps: with ps; [  ];
     "hyperion" = ps: with ps; [  ];
     "ialarm" = ps: with ps; [  ];
     "iaqualink" = ps: with ps; [  ];
-    "icloud" = ps: with ps; [  ];
+    "icloud" = ps: with ps; [ pyicloud ];
     "idteck_prox" = ps: with ps; [  ];
     "ifttt" = ps: with ps; [ aiohttp-cors pyfttt ];
     "iglo" = ps: with ps; [  ];
     "ign_sismologia" = ps: with ps; [  ];
     "ihc" = ps: with ps; [ defusedxml ];
-    "image_processing" = ps: with ps; [ aiohttp-cors pillow ];
+    "image_processing" = ps: with ps; [ aiohttp-cors ];
     "imap" = ps: with ps; [  ];
     "imap_email_content" = ps: with ps; [  ];
     "incomfort" = ps: with ps; [  ];
@@ -351,6 +357,7 @@
     "input_text" = ps: with ps; [  ];
     "insteon" = ps: with ps; [  ];
     "integration" = ps: with ps; [  ];
+    "intent" = ps: with ps; [ aiohttp-cors ];
     "intent_script" = ps: with ps; [  ];
     "ios" = ps: with ps; [ aiohttp-cors zeroconf ];
     "iota" = ps: with ps; [  ];
@@ -470,6 +477,7 @@
     "mqtt_json" = ps: with ps; [ aiohttp-cors hbmqtt paho-mqtt ];
     "mqtt_room" = ps: with ps; [ aiohttp-cors hbmqtt paho-mqtt ];
     "mqtt_statestream" = ps: with ps; [ aiohttp-cors hbmqtt paho-mqtt ];
+    "msteams" = ps: with ps; [  ];
     "mvglive" = ps: with ps; [ PyMVGLive ];
     "mychevy" = ps: with ps; [  ];
     "mycroft" = ps: with ps; [  ];
@@ -538,6 +546,7 @@
     "openweathermap" = ps: with ps; [ pyowm ];
     "opple" = ps: with ps; [  ];
     "orangepi_gpio" = ps: with ps; [  ];
+    "oru" = ps: with ps; [  ];
     "orvibo" = ps: with ps; [  ];
     "osramlightify" = ps: with ps; [  ];
     "otp" = ps: with ps; [ pyotp ];
@@ -548,6 +557,7 @@
     "pandora" = ps: with ps; [ pexpect ];
     "panel_custom" = ps: with ps; [ aiohttp-cors ];
     "panel_iframe" = ps: with ps; [ aiohttp-cors ];
+    "pcal9535a" = ps: with ps; [  ];
     "pencom" = ps: with ps; [  ];
     "persistent_notification" = ps: with ps; [  ];
     "person" = ps: with ps; [  ];
@@ -572,6 +582,7 @@
     "prometheus" = ps: with ps; [ aiohttp-cors prometheus_client ];
     "prowl" = ps: with ps; [  ];
     "proximity" = ps: with ps; [  ];
+    "proxmoxve" = ps: with ps; [  ];
     "proxy" = ps: with ps; [ pillow ];
     "ps4" = ps: with ps; [  ];
     "ptvsd" = ps: with ps; [  ];
@@ -583,7 +594,7 @@
     "pushsafer" = ps: with ps; [  ];
     "pvoutput" = ps: with ps; [  ];
     "pyload" = ps: with ps; [  ];
-    "python_script" = ps: with ps; [  ];
+    "python_script" = ps: with ps; [ restrictedpython ];
     "qbittorrent" = ps: with ps; [  ];
     "qld_bushfire" = ps: with ps; [  ];
     "qnap" = ps: with ps; [  ];
@@ -644,10 +655,10 @@
     "sensehat" = ps: with ps; [  ];
     "sensibo" = ps: with ps; [  ];
     "sensor" = ps: with ps; [  ];
-    "serial" = ps: with ps; [  ];
+    "serial" = ps: with ps; [ pyserial-asyncio ];
     "serial_pm" = ps: with ps; [  ];
     "sesame" = ps: with ps; [  ];
-    "seven_segments" = ps: with ps; [  ];
+    "seven_segments" = ps: with ps; [ pillow ];
     "seventeentrack" = ps: with ps; [  ];
     "shell_command" = ps: with ps; [  ];
     "shiftr" = ps: with ps; [ paho-mqtt ];
@@ -658,6 +669,7 @@
     "simplepush" = ps: with ps; [  ];
     "simplisafe" = ps: with ps; [  ];
     "simulated" = ps: with ps; [  ];
+    "sinch" = ps: with ps; [  ];
     "sisyphus" = ps: with ps; [  ];
     "sky_hub" = ps: with ps; [  ];
     "skybeacon" = ps: with ps; [  ];
@@ -679,9 +691,10 @@
     "socialblade" = ps: with ps; [  ];
     "solaredge" = ps: with ps; [ stringcase ];
     "solaredge_local" = ps: with ps; [  ];
+    "solarlog" = ps: with ps; [  ];
     "solax" = ps: with ps; [  ];
     "soma" = ps: with ps; [  ];
-    "somfy" = ps: with ps; [  ];
+    "somfy" = ps: with ps; [ aiohttp-cors ];
     "somfy_mylink" = ps: with ps; [  ];
     "sonarr" = ps: with ps; [  ];
     "songpal" = ps: with ps; [  ];
@@ -697,7 +710,8 @@
     "spotify" = ps: with ps; [ aiohttp-cors ];
     "sql" = ps: with ps; [ sqlalchemy ];
     "squeezebox" = ps: with ps; [  ];
-    "ssdp" = ps: with ps; [ netdisco ];
+    "ssdp" = ps: with ps; [ defusedxml netdisco ];
+    "starline" = ps: with ps; [  ];
     "starlingbank" = ps: with ps; [  ];
     "startca" = ps: with ps; [ xmltodict ];
     "statistics" = ps: with ps; [  ];
@@ -706,7 +720,7 @@
     "stiebel_eltron" = ps: with ps; [  ];
     "stream" = ps: with ps; [ aiohttp-cors av ];
     "streamlabswater" = ps: with ps; [  ];
-    "stride" = ps: with ps; [  ];
+    "stt" = ps: with ps; [ aiohttp-cors ];
     "suez_water" = ps: with ps; [  ];
     "sun" = ps: with ps; [  ];
     "supervisord" = ps: with ps; [  ];
@@ -735,14 +749,14 @@
     "tcp" = ps: with ps; [  ];
     "ted5000" = ps: with ps; [ xmltodict ];
     "teksavvy" = ps: with ps; [  ];
-    "telegram" = ps: with ps; [ aiohttp-cors python-telegram-bot ];
-    "telegram_bot" = ps: with ps; [ aiohttp-cors python-telegram-bot ];
+    "telegram" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
+    "telegram_bot" = ps: with ps; [ pysocks aiohttp-cors python-telegram-bot ];
     "tellduslive" = ps: with ps; [  ];
     "tellstick" = ps: with ps; [  ];
     "telnet" = ps: with ps; [  ];
     "temper" = ps: with ps; [  ];
     "template" = ps: with ps; [  ];
-    "tensorflow" = ps: with ps; [ numpy protobuf tensorflow ];
+    "tensorflow" = ps: with ps; [ numpy pillow protobuf tensorflow ];
     "tesla" = ps: with ps; [  ];
     "tfiac" = ps: with ps; [  ];
     "thermoworks_smoke" = ps: with ps; [ stringcase ];
@@ -789,6 +803,7 @@
     "uk_transport" = ps: with ps; [  ];
     "unifi" = ps: with ps; [ aiounifi ];
     "unifi_direct" = ps: with ps; [ pexpect ];
+    "unifiled" = ps: with ps; [  ];
     "universal" = ps: with ps; [  ];
     "upc_connect" = ps: with ps; [  ];
     "upcloud" = ps: with ps; [  ];
@@ -808,13 +823,14 @@
     "venstar" = ps: with ps; [  ];
     "vera" = ps: with ps; [  ];
     "verisure" = ps: with ps; [  ];
+    "versasense" = ps: with ps; [  ];
     "version" = ps: with ps; [ pyhaversion ];
     "vesync" = ps: with ps; [  ];
     "viaggiatreno" = ps: with ps; [  ];
     "vicare" = ps: with ps; [  ];
     "vivotek" = ps: with ps; [  ];
     "vizio" = ps: with ps; [  ];
-    "vlc" = ps: with ps; [  ];
+    "vlc" = ps: with ps; [ python-vlc ];
     "vlc_telnet" = ps: with ps; [  ];
     "voicerss" = ps: with ps; [  ];
     "volkszaehler" = ps: with ps; [  ];
@@ -839,6 +855,7 @@
     "wink" = ps: with ps; [  ];
     "wirelesstag" = ps: with ps; [  ];
     "withings" = ps: with ps; [ aiohttp-cors ];
+    "wled" = ps: with ps; [  ];
     "workday" = ps: with ps; [ holidays ];
     "worldclock" = ps: with ps; [  ];
     "worldtidesinfo" = ps: with ps; [  ];
@@ -873,7 +890,7 @@
     "zengge" = ps: with ps; [  ];
     "zeroconf" = ps: with ps; [ aiohttp-cors zeroconf ];
     "zestimate" = ps: with ps; [ xmltodict ];
-    "zha" = ps: with ps; [  ];
+    "zha" = ps: with ps; [ zha-quirks zigpy-deconz zigpy ];
     "zhong_hong" = ps: with ps; [  ];
     "zigbee" = ps: with ps; [  ];
     "ziggo_mediabox_xl" = ps: with ps; [  ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 392f1f510cc..8e83d7f15da 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -1,7 +1,7 @@
 { lib, fetchurl, fetchFromGitHub, fetchpatch, python3, protobuf3_6
 
 # Look up dependencies of specified components in component-packages.nix
-, extraComponents ? []
+, extraComponents ? [ ]
 
 # Additional packages to add to propagatedBuildInputs
 , extraPackages ? ps: []
@@ -21,44 +21,15 @@ let
 
   defaultOverrides = [
     # Override the version of some packages pinned in Home Assistant's setup.py
-#     (mkOverride "aiohttp" "3.5.4"
-#       "9c4c83f4fa1938377da32bc2d59379025ceeee8e24b89f72fcbccd8ca22dc9bf")
-#     (mkOverride "astral" "1.10.1"
-#       "d2a67243c4503131c856cafb1b1276de52a86e5b8a1d507b7e08bee51cb67bf1")
-#     (mkOverride "async-timeout" "3.0.1"
-#       "0c3c816a028d47f659d6ff5c745cb2acf1f966da1fe5c19c77a70282b25f4c5f")
-#     (mkOverride "bcrypt" "3.1.7"
-#       "0b0069c752ec14172c5f78208f1863d7ad6755a6fae6fe76ec2c80d13be41e42")
-#     (mkOverride "pyjwt" "1.7.1"
-#       "8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96")
-    (mkOverride "cryptography" "2.7" # TODO for 2.8: Remove the override below
-      "e6347742ac8f35ded4a46ff835c60e68c22a536a8ae5c4422966d06946b6d4c6")
-    (mkOverride "cryptography_vectors" "2.7" # required by cryptography==2.7
-      "f12dfb9bd669a68004074cb5b26df6e93ed1a95ebd1a999dff0a840212ff68bc")
-#     (mkOverride "importlib-metadata" "0.18"
-#       "cb6ee23b46173539939964df59d3d72c3e0c1b5d54b84f1d8a7e912fe43612db")
-    (mkOverride "python-slugify" "3.0.4"
-      "0dv97yi5fq074q5qyqbin09pmi8ixg36caf5nkpw2bqkd8jh6pap")
-#     (mkOverride "pyyaml" "5.1.1"
-#       "b4bb4d3f5e232425e25dda21c070ce05168a786ac9eda43768ab7f3ac2770955")
-#     (mkOverride "requests" "2.22.0"
-#       "11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4")
-#     (mkOverride "ruamel_yaml" "0.15.97"
-#       "17dbf6b7362e7aee8494f7a0f5cffd44902a6331fe89ef0853b855a7930ab845")
-#     (mkOverride "voluptuous" "0.11.5"
-#       "567a56286ef82a9d7ae0628c5842f65f516abcb496e74f3f59f1d7b28df314ef")
-#     (mkOverride "voluptuous-serialize" "2.1.0"
-#       "d30fef4f1aba251414ec0b315df81a06da7bf35201dcfb1f6db5253d738a154f")
-
-    # used by auth.mfa_modules.totp
-    (mkOverride "pyotp" "2.2.7"
-      "be0ffeabddaa5ee53e7204e7740da842d070cf69168247a3d0c08541b84de602")
 
     # used by check_config script
     # can be unpinned once https://github.com/home-assistant/home-assistant/issues/11917 is resolved
     (mkOverride "colorlog" "4.0.2"
       "3cf31b25cbc8f86ec01fef582ef3b840950dea414084ed19ab922c8b493f9b42")
 
+    (mkOverride "pyyaml" "5.1.2"
+      "1r5faspz73477hlbjgilw05xsms0glmsa371yqdd26znqsvg1b81")
+
     # required by aioesphomeapi
     (self: super: {
       protobuf = super.protobuf.override {
@@ -66,19 +37,6 @@ let
       };
     })
 
-    (self: super: {
-      # TODO: Remove this override after updating to cryptography 2.8
-      cryptography = super.cryptography.overridePythonAttrs (oldAttrs: {
-        propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ super.asn1crypto ];
-        patches = [
-          (fetchpatch {
-            url = "https://github.com/pyca/cryptography/commit/e575e3d482f976c4a1f3203d63ea0f5007a49a2a.patch";
-            sha256 = "0vg9prqsizd6gzh5j7lscsfxzxlhz7pacvzhgqmj1vhdhjwbblcp";
-          })
-        ];
-      });
-    })
-
     # hass-frontend does not exist in python3.pkgs
     (self: super: {
       hass-frontend = self.callPackage ./frontend.nix { };
@@ -112,7 +70,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "0.100.3";
+  hassVersion = "0.103.6";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -127,7 +85,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "home-assistant";
     rev = version;
-    sha256 = "1rrv71h91qjq5sii4wfcdjvrcpid2aci1dwadrcd35363ff0w200";
+    sha256 = "1492q4icyhvz30fw5ysrwlnsls4iy5pv62ay3vq1ygcfnlapkqhl";
   };
 
   propagatedBuildInputs = [
@@ -140,7 +98,15 @@ in with py.pkgs; buildPythonApplication rec {
   ] ++ componentBuildInputs ++ extraBuildInputs;
 
   checkInputs = [
-    asynctest pytest pytest-aiohttp requests-mock pydispatcher aiohue
+    asynctest pytest pytest-aiohttp requests-mock pydispatcher aiohue netdisco hass-nabucasa
+  ];
+
+  patches = [
+    # newer importlib-metadata version
+    (fetchpatch {
+      url = "https://github.com/home-assistant/home-assistant/commit/63c6b803dc2d835d57b97ed833ee5cd8318bf7ae.patch";
+      sha256 = "16q3qdnmgsw5415f70zvsv1z63dljp3c9glv06cyj4s6qsl13xdc";
+    })
   ];
 
   postPatch = ''
@@ -151,9 +117,10 @@ in with py.pkgs; buildPythonApplication rec {
   '';
 
   checkPhase = ''
-    # The components' dependencies are not included, so they cannot be tested
-    # test_webhook_create_cloudhook imports hass_nabucasa and is thus excluded
-    py.test --ignore tests/components -k "not test_webhook_create_cloudhook and not test_webhook_config_flow_registers_webhook"
+    # - components' dependencies are not included, so they cannot be tested
+    # - test_merge_id_schema requires pyqwikswitch
+    # - unclear why test_merge fails: assert merge_log_err.call_count != 0
+    py.test --ignore tests/components -k "not test_merge_id_schema and not test_merge"
     # Some basic components should be tested however
     py.test \
       tests/components/{api,config,configurator,demo,discovery,frontend,group,history,history_graph} \
diff --git a/pkgs/servers/home-assistant/esphome.nix b/pkgs/servers/home-assistant/esphome.nix
index 27dabd2a2eb..12b36de4965 100644
--- a/pkgs/servers/home-assistant/esphome.nix
+++ b/pkgs/servers/home-assistant/esphome.nix
@@ -3,27 +3,26 @@
 let
   python = python3.override {
     packageOverrides = self: super: {
-      tornado = super.tornado.overridePythonAttrs (oldAttrs: rec {
-        version = "5.1.1";
+      protobuf = super.protobuf.override {
+        protobuf = protobuf3_10;
+      };
+      pyyaml = super.pyyaml.overridePythonAttrs (oldAttrs: rec {
+        version = "5.1.2";
         src = oldAttrs.src.override {
           inherit version;
-          sha256 = "4e5158d97583502a7e2739951553cbd88a72076f152b4b11b64b9a10c4c49409";
+          sha256 = "1r5faspz73477hlbjgilw05xsms0glmsa371yqdd26znqsvg1b81";
         };
       });
-      protobuf = super.protobuf.override {
-        protobuf = protobuf3_10;
-      };
-
     };
   };
 
 in python.pkgs.buildPythonApplication rec {
   pname = "esphome";
-  version = "1.14.1";
+  version = "1.14.3";
 
   src = python.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "1hw1q2fck9429077w207rk65a1krzyi6qya5pzjkpw4av5s0v0g3";
+    sha256 = "0xnsl000c5a2li9qw9anrzzq437qn1n4hcfc24i4rfq37awzmig7";
   };
 
   ESPHOME_USE_SUBPROCESS = "";
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index fd873011488..75d02ed0635 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,11 +4,11 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20190919.0";
+  version = "20200108.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1xdw8fj4njc3sf15mlyiwigrwf89xsz4r2dsv6zs5fnl512r439a";
+    sha256 = "1h6fgkx8fffzs829893gjbh0wbjgxjzz2ca64v8r5sb938bfayg8";
   };
 
   # no Python tests implemented
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/parse-requirements.py
index 647e4513de4..96cf1d86050 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/parse-requirements.py
@@ -105,7 +105,9 @@ components = parse_components(version=version)
 build_inputs = {}
 for component in sorted(components.keys()):
     attr_paths = []
-    for req in sorted(get_reqs(components, component)):
+    missing_reqs = []
+    reqs = sorted(get_reqs(components, component))
+    for req in reqs:
         # Some requirements are specified by url, e.g. https://example.org/foobar#xyz==1.0.0
         # Therefore, if there's a "#" in the line, only take the part after it
         req = req[req.find('#') + 1:]
@@ -114,8 +116,14 @@ for component in sorted(components.keys()):
         if attr_path is not None:
             # Add attribute path without "python3Packages." prefix
             attr_paths.append(attr_path[len(PKG_SET + '.'):])
+        else:
+            missing_reqs.append(name)
     else:
         build_inputs[component] = attr_paths
+    n_diff = len(reqs) > len(build_inputs[component])
+    if n_diff > 0:
+        print("Component {} is missing {} dependencies".format(component, n_diff))
+        print("missing requirements: {}".format(missing_reqs))
 
 with open(os.path.dirname(sys.argv[0]) + '/component-packages.nix', 'w') as f:
     f.write('# Generated by parse-requirements.py\n')
diff --git a/pkgs/servers/http/4store/4store-1.1.6-glibc-2.26.patch b/pkgs/servers/http/4store/4store-1.1.6-glibc-2.26.patch
deleted file mode 100644
index dda21c54f69..00000000000
--- a/pkgs/servers/http/4store/4store-1.1.6-glibc-2.26.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/frontend/filter-datatypes.c b/src/frontend/filter-datatypes.c
-index 8aae1dd..49ed358 100644
---- a/src/frontend/filter-datatypes.c
-+++ b/src/frontend/filter-datatypes.c
-@@ -23,6 +23,7 @@
- #include <string.h>
- #include <math.h>
- #define __USE_MISC
-+#define __USE_XOPEN_EXTENDED
- #include <time.h>
- 
- #include "filter.h"
diff --git a/pkgs/servers/http/4store/default.nix b/pkgs/servers/http/4store/default.nix
deleted file mode 100644
index 6e4be4a36fe..00000000000
--- a/pkgs/servers/http/4store/default.nix
+++ /dev/null
@@ -1,50 +0,0 @@
-{ stdenv, fetchFromGitHub, librdf_raptor
-, librdf_rasqal, glib, libxml2, pcre
-, avahi, readline, ncurses, expat, autoreconfHook
-, zlib, pkgconfig, which, perl, libuuid
-, gmp, mpfr
-, db_dir ? "/var/lib/4store" }:
-
-
-stdenv.mkDerivation rec {
-  pname = "4store";
-  version = "1.1.6";
-
-  src = fetchFromGitHub {
-    owner = "4store";
-    repo = "4store";
-    rev = "v${version}";
-    sha256 = "1kzdfmwpzy64cgqlkcz5v4klwx99w0jk7afckyf7yqbqb4rydmpk";
-  };
-
-  patches = [ ./4store-1.1.6-glibc-2.26.patch ];
-
-  nativeBuildInputs = [ autoreconfHook perl pkgconfig which ];
-
-  buildInputs = [ librdf_raptor librdf_rasqal glib libxml2 pcre
-    avahi readline ncurses expat zlib libuuid gmp mpfr ];
-
-  # needed for ./autogen.sh
-  prePatch = ''
-    echo "${version}" > .version
-  '';
-
-  preConfigure =  ''
-    sed -e 's@#! */bin/bash@#! ${stdenv.shell}@' -i configure
-    find . -name Makefile -exec sed -e "s@/usr/local@$out@g" -i '{}' ';'
-
-    rm src/utilities/4s-backend
-    sed -e 's@/var/lib/4store@${db_dir}@g' -i configure.ac src/utilities/*
-    sed -e '/FS_STORE_ROOT/d' -i src/utilities/Makefile*
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    description = "SparQL query server (RDF storage)";
-    homepage = https://4store.danielknoell.de/;
-    maintainers = with maintainers; [ raskin ];
-    platforms = platforms.linux;
-    broken = true; # since 2018-04-11
-  };
-}
diff --git a/pkgs/servers/http/4store/src-for-default.nix b/pkgs/servers/http/4store/src-for-default.nix
deleted file mode 100644
index 7076b921911..00000000000
--- a/pkgs/servers/http/4store/src-for-default.nix
+++ /dev/null
@@ -1,9 +0,0 @@
-rec {
-   version="v1.1.5";
-   name="4store-v1.1.5";
-   hash="0nwckvf8xqwvc2h3v6s1rvmxvcx2xrjy6yapghc052180jw6zp9b";
-   url="http://4store.org/download/4store-${version}.tar.gz";
-   advertisedUrl="http://4store.org/download/4store-v1.1.5.tar.gz";
-  
-  
-}
diff --git a/pkgs/servers/http/4store/src-info-for-default.nix b/pkgs/servers/http/4store/src-info-for-default.nix
deleted file mode 100644
index 91a9bad92de..00000000000
--- a/pkgs/servers/http/4store/src-info-for-default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  downloadPage = "http://4store.org/download/";
-  baseName = "4store";
-  choiceCommand = "tail -n 1";
-  versionExtractorSedScript = "s@.*-(v[0-9.]+)[.].*@\\1@";
-}
diff --git a/pkgs/servers/http/apache-httpd/2.4.nix b/pkgs/servers/http/apache-httpd/2.4.nix
index 63861714145..252365098dd 100644
--- a/pkgs/servers/http/apache-httpd/2.4.nix
+++ b/pkgs/servers/http/apache-httpd/2.4.nix
@@ -39,15 +39,12 @@ stdenv.mkDerivation rec {
   prePatch = ''
     sed -i config.layout -e "s|installbuilddir:.*|installbuilddir: $dev/share/build|"
     sed -i support/apachectl.in -e 's|@LYNX_PATH@|${lynx}/bin/lynx|'
+    sed -i support/apachectl.in -e 's|$HTTPD -t|$HTTPD -t -f /etc/httpd/httpd.conf|'
   '';
 
   # Required for ‘pthread_cancel’.
   NIX_LDFLAGS = stdenv.lib.optionalString (!stdenv.isDarwin) "-lgcc_s";
 
-  preConfigure = ''
-    configureFlags="$configureFlags --includedir=$dev/include"
-  '';
-
   configureFlags = [
     "--with-apr=${apr.dev}"
     "--with-apr-util=${aprutil.dev}"
@@ -60,6 +57,7 @@ stdenv.mkDerivation rec {
     "--enable-cern-meta"
     "--enable-imagemap"
     "--enable-cgi"
+    "--includedir=${placeholder "dev"}/include"
     (stdenv.lib.enableFeature proxySupport "proxy")
     (stdenv.lib.enableFeature sslSupport "ssl")
     (stdenv.lib.withFeatureAs libxml2Support "libxml2" "${libxml2.dev}/include/libxml2")
diff --git a/pkgs/servers/http/apache-modules/mod_ca/default.nix b/pkgs/servers/http/apache-modules/mod_ca/default.nix
new file mode 100644
index 00000000000..37f2a397ae6
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_ca/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, pkgconfig, apacheHttpd, openssl, openldap }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_ca";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "1pxapjrzdsk2s25vhgvf56fkakdqcbn9hjncwmqh0asl1pa25iic";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ apacheHttpd openssl openldap ];
+
+  # Note that configureFlags and installFlags are inherited by
+  # the various submodules.
+  #
+  configureFlags = [
+    "--with-apxs=${apacheHttpd.dev}/bin/apxs"
+  ];
+
+  installFlags = [
+    "INCLUDEDIR=${placeholder ''out''}/include"
+    "LIBEXECDIR=${placeholder ''out''}/modules"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service module";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_crl/default.nix b/pkgs/servers/http/apache-modules/mod_crl/default.nix
new file mode 100644
index 00000000000..54c0de1c701
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_crl/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_crl";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "0k6iqn5a4bqdz3yx6d53f1r75c21jnwhxmmcq071zq0361xjzzj6";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  meta = with stdenv.lib; {
+    description = "RedWax module for Certificate Revocation Lists";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_csr/default.nix b/pkgs/servers/http/apache-modules/mod_csr/default.nix
new file mode 100644
index 00000000000..60f97d2f361
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_csr/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_csr";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "01sdvv07kchdd6ssrmd2cbhj50qh2ibp5g5h6jy1jqbzp0b3j9ja";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  # After openssl-1.0.2t, starting in  openssl-1.1.0l
+  # parts of the OpenSSL struct API was replaced by
+  # getters - but some setters where forgotten.
+  #
+  # It is expected that these are back/retrofitted in version
+  # openssl-1.1.1d -- but while fixing this it was found
+  # that there were quite a few other setters missing and
+  # that some of the memory management needed was at odds
+  # with the principles used sofar.
+  #
+  # See https://github.com/openssl/openssl/pull/10563
+  #
+  # So as a stopgap - use a minimalist compat. layer
+  # https://source.redwax.eu/projects/RS/repos/mod_csr/browse/openssl_setter_compat.h
+  #
+  preBuild = "cp ${./openssl_setter_compat.h} openssl_setter_compat.h";
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service module to handle Certificate Signing Requests";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_csr/openssl_setter_compat.h b/pkgs/servers/http/apache-modules/mod_csr/openssl_setter_compat.h
new file mode 100644
index 00000000000..a2a9e0f7a18
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_csr/openssl_setter_compat.h
@@ -0,0 +1,66 @@
+/* Licensed to Stichting The Commons Conservancy (TCC) under one or more
+ * contributor license agreements.  See the AUTHORS file distributed with
+ * this work for additional information regarding copyright ownership.
+ * TCC licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// These routines are copies from OpenSSL/1.1.1 its x509/x509_req.c
+// and the private header files for that. They are needed as
+// starting with OpenSSL 1.1.0 the X509_req structure became
+// private; and got some get0 functions to access its internals.
+// But no getter's until post 1.1.1 (PR#10563). So this is a
+// stopgap for these lacking releases.
+//
+// Testest against: 
+//   openssl-1.0.2t 0x01000214fL (does not need it, privates still accessile)
+//   openssl-1.1.0l 0x0101000cfL (needs it)
+//   openssl-1.1.1d 0x01010104fL (last version that needs it)
+//   openssl-1.1.1-dev		 (should not need it - post PR#10563).
+//
+/* #if OPENSSL_VERSION_NUMBER >= 0x010100000L &&  OPENSSL_VERSION_NUMBER  <= 0x01010104fL */
+#if OPENSSL_VERSION_NUMBER >= 0x010100000L 
+#include "openssl/x509.h"
+
+#define HAS_OPENSSL_PR10563_WORK_AROUND
+
+struct X509_req_info_st {
+    ASN1_ENCODING enc;          
+    ASN1_INTEGER *version;     
+    X509_NAME *subject;       
+    X509_PUBKEY *pubkey;     
+    STACK_OF(X509_ATTRIBUTE) *attributes;
+};
+
+typedef _Atomic int CRYPTO_REF_COUNT;
+
+struct X509_req_st {
+    X509_REQ_INFO req_info; 
+    X509_ALGOR sig_alg;       
+    ASN1_BIT_STRING *signature; /* signature */
+    CRYPTO_REF_COUNT references;
+    CRYPTO_RWLOCK *lock;
+# ifndef OPENSSL_NO_SM2
+    ASN1_OCTET_STRING *sm2_id;
+# endif
+};
+
+
+static void _X509_REQ_set1_signature(X509_REQ *req, X509_ALGOR *palg)
+{
+    if (req->sig_alg.algorithm)
+        ASN1_OBJECT_free(req->sig_alg.algorithm);
+    if (req->sig_alg.parameter)
+        ASN1_TYPE_free(req->sig_alg.parameter);
+    req->sig_alg = *palg;
+}
+#endif
diff --git a/pkgs/servers/http/apache-modules/mod_ocsp/default.nix b/pkgs/servers/http/apache-modules/mod_ocsp/default.nix
new file mode 100644
index 00000000000..6730ca16f10
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_ocsp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_ocsp";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "1vwgai56krdf8knb0mgy07ni9mqxk82bcb4gibwpnxvl6qwgv2i0";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service modules of OCSP Online Certificate Validation";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_pkcs12/default.nix b/pkgs/servers/http/apache-modules/mod_pkcs12/default.nix
new file mode 100644
index 00000000000..2bcf3b1d9c2
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_pkcs12/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_pkcs12";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "0by4qfjs3a8q0amzwazfq8ii6ydv36v2mjga0jzc9i6xyl4rs6ai";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service modules for PKCS#12 format files";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_python/default.nix b/pkgs/servers/http/apache-modules/mod_python/default.nix
index f947bf535cc..6aed1481ddf 100644
--- a/pkgs/servers/http/apache-modules/mod_python/default.nix
+++ b/pkgs/servers/http/apache-modules/mod_python/default.nix
@@ -16,8 +16,9 @@ stdenv.mkDerivation rec {
         --replace '-$GIT' ""
   '';
 
+  installFlags = [ "LIBEXECDIR=${placeholder "out"}/modules" ];
+
   preInstall = ''
-    installFlags="LIBEXECDIR=$out/modules $installFlags"
     mkdir -p $out/modules $out/bin
   '';
 
diff --git a/pkgs/servers/http/apache-modules/mod_scep/default.nix b/pkgs/servers/http/apache-modules/mod_scep/default.nix
new file mode 100644
index 00000000000..98703659c35
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_scep/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_scep";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "14l8v6y6kx5dg8avb5ny95qdcgrw40ss80nqrgmw615mk7zcj81f";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  # After openssl-1.0.2t, starting in  openssl-1.1.0l
+  # parts of the OpenSSL struct API was replaced by
+  # getters - but some setters where forgotten.
+  #
+  # It is expected that these are back/retrofitted in version
+  # openssl-1.1.1d -- but while fixing this it was found
+  # that there were quite a few other setters missing and
+  # that some of the memory management needed was at odds
+  # with the principles used sofar.
+  #
+  # See https://github.com/openssl/openssl/pull/10563
+  #
+  # So as a stopgap - use a minimalist compat. layer
+  # https://source.redwax.eu/projects/RS/repos/mod_csr/browse/openssl_setter_compat.h
+  #
+  preBuild = "cp ${./openssl_setter_compat.h} openssl_setter_compat.h";
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service modules for SCEP (Automatic ceritifcate issue/renewal)";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_scep/openssl_setter_compat.h b/pkgs/servers/http/apache-modules/mod_scep/openssl_setter_compat.h
new file mode 100644
index 00000000000..a2a9e0f7a18
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_scep/openssl_setter_compat.h
@@ -0,0 +1,66 @@
+/* Licensed to Stichting The Commons Conservancy (TCC) under one or more
+ * contributor license agreements.  See the AUTHORS file distributed with
+ * this work for additional information regarding copyright ownership.
+ * TCC licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// These routines are copies from OpenSSL/1.1.1 its x509/x509_req.c
+// and the private header files for that. They are needed as
+// starting with OpenSSL 1.1.0 the X509_req structure became
+// private; and got some get0 functions to access its internals.
+// But no getter's until post 1.1.1 (PR#10563). So this is a
+// stopgap for these lacking releases.
+//
+// Testest against: 
+//   openssl-1.0.2t 0x01000214fL (does not need it, privates still accessile)
+//   openssl-1.1.0l 0x0101000cfL (needs it)
+//   openssl-1.1.1d 0x01010104fL (last version that needs it)
+//   openssl-1.1.1-dev		 (should not need it - post PR#10563).
+//
+/* #if OPENSSL_VERSION_NUMBER >= 0x010100000L &&  OPENSSL_VERSION_NUMBER  <= 0x01010104fL */
+#if OPENSSL_VERSION_NUMBER >= 0x010100000L 
+#include "openssl/x509.h"
+
+#define HAS_OPENSSL_PR10563_WORK_AROUND
+
+struct X509_req_info_st {
+    ASN1_ENCODING enc;          
+    ASN1_INTEGER *version;     
+    X509_NAME *subject;       
+    X509_PUBKEY *pubkey;     
+    STACK_OF(X509_ATTRIBUTE) *attributes;
+};
+
+typedef _Atomic int CRYPTO_REF_COUNT;
+
+struct X509_req_st {
+    X509_REQ_INFO req_info; 
+    X509_ALGOR sig_alg;       
+    ASN1_BIT_STRING *signature; /* signature */
+    CRYPTO_REF_COUNT references;
+    CRYPTO_RWLOCK *lock;
+# ifndef OPENSSL_NO_SM2
+    ASN1_OCTET_STRING *sm2_id;
+# endif
+};
+
+
+static void _X509_REQ_set1_signature(X509_REQ *req, X509_ALGOR *palg)
+{
+    if (req->sig_alg.algorithm)
+        ASN1_OBJECT_free(req->sig_alg.algorithm);
+    if (req->sig_alg.parameter)
+        ASN1_TYPE_free(req->sig_alg.parameter);
+    req->sig_alg = *palg;
+}
+#endif
diff --git a/pkgs/servers/http/apache-modules/mod_spkac/default.nix b/pkgs/servers/http/apache-modules/mod_spkac/default.nix
new file mode 100644
index 00000000000..72e0d521e3b
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_spkac/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_spkac";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "0x6ia9qcr7lx2awpv9cr4ndic5f4g8yqzmp2hz66zpzkmk2b2pyz";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service module for handling the Netscape keygen requests. ";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_timestamp/default.nix b/pkgs/servers/http/apache-modules/mod_timestamp/default.nix
new file mode 100644
index 00000000000..139da289078
--- /dev/null
+++ b/pkgs/servers/http/apache-modules/mod_timestamp/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, mod_ca, apr, aprutil }:
+
+stdenv.mkDerivation rec {
+  pname = "mod_timestamp";
+  version = "0.2.1";
+
+  src = fetchurl {
+    url = "https://redwax.eu/dist/rs/${pname}-${version}.tar.gz";
+    sha256 = "0j4b04dbdwn9aff3da9m0lnqi0qbw6c6hhi81skl15kyc3vzp67f";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ mod_ca apr aprutil ];
+  inherit (mod_ca) configureFlags installFlags;
+
+  meta = with stdenv.lib; {
+    description = "RedWax CA service module for issuing signed timestamps";
+
+    homepage = "https://redwax.eu";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ dirkx ];
+  };
+}
diff --git a/pkgs/servers/http/apache-modules/mod_wsgi/default.nix b/pkgs/servers/http/apache-modules/mod_wsgi/default.nix
index 461ab1e297e..c0e4cefa40a 100644
--- a/pkgs/servers/http/apache-modules/mod_wsgi/default.nix
+++ b/pkgs/servers/http/apache-modules/mod_wsgi/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mod_wsgi";
-  version = "4.6.8";
+  version = "4.7.0";
 
   src = fetchurl {
     url = "https://github.com/GrahamDumpleton/mod_wsgi/archive/${version}.tar.gz";
-    sha256 = "0xym7i3iaxqi23dayacv2llhi0klxcb4ldll5cjxv6lg9v5r88x2";
+    sha256 = "079f4py20jd6n3d7djak5l9j8p6hfq96lf577iir6qpfsk2p0k3n";
   };
 
   buildInputs = [ apacheHttpd python ncurses ];
diff --git a/pkgs/servers/http/h2o/default.nix b/pkgs/servers/http/h2o/default.nix
index a8de0d7e084..d599956cfda 100644
--- a/pkgs/servers/http/h2o/default.nix
+++ b/pkgs/servers/http/h2o/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub
 , pkgconfig, cmake, ninja
-, libressl, libuv, zlib
+, openssl, libuv, zlib
 }:
 
 stdenv.mkDerivation rec {
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
   nativeBuildInputs = [ pkgconfig cmake ninja ];
-  buildInputs = [ libressl libuv zlib ];
+  buildInputs = [ openssl libuv zlib ];
 
   meta = with stdenv.lib; {
     description = "Optimized HTTP/1 and HTTP/2 server";
diff --git a/pkgs/servers/http/hiawatha/default.nix b/pkgs/servers/http/hiawatha/default.nix
index a3bcb64e6c0..4e799774569 100644
--- a/pkgs/servers/http/hiawatha/default.nix
+++ b/pkgs/servers/http/hiawatha/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
     description = "An advanced and secure webserver";
     license = licenses.gpl2;
     platforms = platforms.unix;    # "Hiawatha runs perfectly on Linux, BSD and MacOS X"
-    maintainers = [ maintainers.ndowens ];
+    maintainers = [];
   };
 
 }
diff --git a/pkgs/servers/http/jetty/default.nix b/pkgs/servers/http/jetty/default.nix
index 8d2340647cb..4a3a3f2da01 100644
--- a/pkgs/servers/http/jetty/default.nix
+++ b/pkgs/servers/http/jetty/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "jetty";
-  version = "9.4.24.v20191120";
+  version = "9.4.25.v20191220";
   src = fetchurl {
     url = "https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/${version}/jetty-distribution-${version}.tar.gz";
     name = "jetty-distribution-${version}.tar.gz";
-    sha256 = "072vr8gfly2xdwxx1c771yymf145l8nv0j31liwqrih8zqvvhsd4";
+    sha256 = "1jnx4hnvd2krsdisqwpws1qd1r0f8gm9a4sx4a8c7zqrmfd2zx1a";
   };
 
   phases = [ "unpackPhase" "installPhase" ];
diff --git a/pkgs/servers/http/lwan/default.nix b/pkgs/servers/http/lwan/default.nix
index f692832e882..9cd9a6b7fec 100644
--- a/pkgs/servers/http/lwan/default.nix
+++ b/pkgs/servers/http/lwan/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lwan";
-  version = "0.1";
+  version = "0.2";
 
   src = fetchFromGitHub {
     owner = "lpereira";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1mckryzb06smky0bx2bkqwqzpnq4pb8vlgmmwsvqmwi4mmw9wmi1";
+    sha256 = "1z1g6bmdsf7zj809sq6jqkpzkdnx1jch84kk67h0v2x6lxhdpv5r";
   };
 
   nativeBuildInputs = [ cmake pkgconfig ];
diff --git a/pkgs/servers/http/nginx/generic.nix b/pkgs/servers/http/nginx/generic.nix
index 2c0dbc7d665..990d7c5cf13 100644
--- a/pkgs/servers/http/nginx/generic.nix
+++ b/pkgs/servers/http/nginx/generic.nix
@@ -53,15 +53,15 @@ stdenv.mkDerivation {
     "--with-http_stub_status_module"
     "--with-threads"
     "--with-pcre-jit"
-  ] ++ optional withDebug [
+  ] ++ optionals withDebug [
     "--with-debug"
-  ] ++ optional withStream [
+  ] ++ optionals withStream [
     "--with-stream"
     "--with-stream_geoip_module"
     "--with-stream_realip_module"
     "--with-stream_ssl_module"
     "--with-stream_ssl_preread_module"
-  ] ++ optional withMail [
+  ] ++ optionals withMail [
     "--with-mail"
     "--with-mail_ssl_module"
   ] ++ optional (perl != null) [
@@ -73,10 +73,10 @@ stdenv.mkDerivation {
     ++ optional (with stdenv.hostPlatform; isLinux || isFreeBSD) "--with-file-aio"
     ++ map (mod: "--add-module=${mod.src}") modules;
 
-  NIX_CFLAGS_COMPILE = [
+  NIX_CFLAGS_COMPILE = toString ([
     "-I${libxml2.dev}/include/libxml2"
     "-Wno-error=implicit-fallthrough"
-  ] ++ optional stdenv.isDarwin "-Wno-error=deprecated-declarations";
+  ] ++ optional stdenv.isDarwin "-Wno-error=deprecated-declarations");
 
   configurePlatforms = [];
 
diff --git a/pkgs/servers/http/nginx/modules.nix b/pkgs/servers/http/nginx/modules.nix
index 5e21e8734bf..78ad5c5582d 100644
--- a/pkgs/servers/http/nginx/modules.nix
+++ b/pkgs/servers/http/nginx/modules.nix
@@ -258,6 +258,15 @@ in
     inputs = [ pkgs.pam ];
   };
 
+  pinba = {
+    src = fetchFromGitHub {
+      owner = "tony2001";
+      repo = "ngx_http_pinba_module";
+      rev = "28131255d4797a7e2f82a6a35cf9fc03c4678fe6";
+      sha256 = "00fii8bjvyipq6q47xhjhm3ylj4rhzmlk3qwxmfpdn37j7bc8p8c";
+    };
+  };
+
   push-stream ={
     src = fetchFromGitHub {
       owner = "wandenberg";
diff --git a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch
index 9dec715bf6c..c1473ccdb1b 100644
--- a/pkgs/servers/http/nginx/nix-etag-1.15.4.patch
+++ b/pkgs/servers/http/nginx/nix-etag-1.15.4.patch
@@ -1,14 +1,8 @@
-From f6a978f024d01202f954483423af1b2d5d5159a6 Mon Sep 17 00:00:00 2001
-From: Yegor Timoshenko <yegortimoshenko@riseup.net>
-Date: Fri, 28 Sep 2018 03:27:04 +0000
-Subject: [PATCH] If root is in Nix store, set ETag to its path hash
-
----
- src/http/ngx_http_core_module.c | 56 +++++++++++++++++++++++++++++----
- 1 file changed, 50 insertions(+), 6 deletions(-)
+This patch makes it possible to serve static content from Nix store paths, by
+using the hash of the store path for the ETag header.
 
 diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
-index c57ec00c..b7992de2 100644
+index cb49ef74..f88dc77c 100644
 --- a/src/http/ngx_http_core_module.c
 +++ b/src/http/ngx_http_core_module.c
 @@ -1583,6 +1583,7 @@ ngx_http_set_etag(ngx_http_request_t *r)
@@ -19,7 +13,7 @@ index c57ec00c..b7992de2 100644
  
      clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
  
-@@ -1598,16 +1599,61 @@ ngx_http_set_etag(ngx_http_request_t *r)
+@@ -1598,16 +1599,62 @@ ngx_http_set_etag(ngx_http_request_t *r)
      etag->hash = 1;
      ngx_str_set(&etag->key, "ETag");
  
@@ -68,6 +62,7 @@ index c57ec00c..b7992de2 100644
 +        }
 +
 +        ngx_memcpy(etag->value.data, ptr1, etag->value.len);
++        ngx_http_clear_last_modified(r);
 +    } else {
 +        etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
 +
@@ -87,6 +82,3 @@ index c57ec00c..b7992de2 100644
  
      r->headers_out.etag = etag;
  
--- 
-2.19.0
-
diff --git a/pkgs/servers/http/openresty/default.nix b/pkgs/servers/http/openresty/default.nix
index 53773302963..328db9ec986 100644
--- a/pkgs/servers/http/openresty/default.nix
+++ b/pkgs/servers/http/openresty/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ openssl zlib pcre libxml2 libxslt gd geoip postgresql ];
   nativeBuildInputs = [ perl ];
 
-  NIX_CFLAGS_COMPILE = ["-I${libxml2.dev}/include/libxml2"];
+  NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";
 
   preConfigure = ''
     patchShebangs .
diff --git a/pkgs/servers/http/tengine/default.nix b/pkgs/servers/http/tengine/default.nix
index 379a5c242f7..1eeb5a8c4dd 100644
--- a/pkgs/servers/http/tengine/default.nix
+++ b/pkgs/servers/http/tengine/default.nix
@@ -53,23 +53,23 @@ stdenv.mkDerivation rec {
     "--with-poll_module"
     "--with-google_perftools_module"
     "--with-jemalloc"
-  ] ++ optional withDebug [
+  ] ++ optionals withDebug [
     "--with-debug"
-  ] ++ optional withMail [
+  ] ++ optionals withMail [
     "--with-mail"
     "--with-mail_ssl_module"
-  ] ++ optional (!withMail) [
+  ] ++ optionals (!withMail) [
     "--without-mail_pop3_module"
     "--without-mail_imap_module"
     "--without-mail_smtp_module"
-  ] ++ optional withStream [
+  ] ++ optionals withStream [
     "--with-stream"
     "--with-stream_ssl_module"
     "--with-stream_realip_module"
     "--with-stream_geoip_module"
     "--with-stream_ssl_preread_module"
     "--with-stream_sni"
-  ] ++ optional (!withStream) [
+  ] ++ optionals (!withStream) [
     "--without-stream_limit_conn_module"
     "--without-stream_access_module"
     "--without-stream_geo_module"
@@ -84,10 +84,8 @@ stdenv.mkDerivation rec {
     ++ optional (with stdenv.hostPlatform; isLinux || isFreeBSD) "--with-file-aio"
     ++ map (mod: "--add-module=${mod.src}") modules;
 
-  NIX_CFLAGS_COMPILE = [
-    "-I${libxml2.dev}/include/libxml2"
-    "-Wno-error=implicit-fallthrough"
-  ] ++ optional stdenv.isDarwin "-Wno-error=deprecated-declarations";
+  NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2 -Wno-error=implicit-fallthrough"
+    + optionalString stdenv.isDarwin " -Wno-error=deprecated-declarations";
 
   preConfigure = (concatMapStringsSep "\n" (mod: mod.preConfigure or "") modules);
 
diff --git a/pkgs/servers/http/unit/default.nix b/pkgs/servers/http/unit/default.nix
index f05d9c1ce8f..c3af0d55543 100644
--- a/pkgs/servers/http/unit/default.nix
+++ b/pkgs/servers/http/unit/default.nix
@@ -1,11 +1,15 @@
 { stdenv, fetchFromGitHub, which
-, withPython ? true, python
-, withPHP72 ? true, php72
-, withPHP73 ? false, php73
-, withPerl ? true, perl
+, withPython2 ? false, python2
+, withPython3 ? true, python3, ncurses
+, withPHP72 ? false, php72
+, withPHP73 ? true, php73
+, withPerl528 ? false, perl528
+, withPerl530 ? true, perl530
 , withPerldevel ? false, perldevel
 , withRuby_2_4 ? false, ruby_2_4
-, withRuby ? true, ruby
+, withRuby_2_5 ? false, ruby_2_5
+, withRuby_2_6 ? true, ruby_2_6
+, withRuby_2_7 ? true, ruby_2_7
 , withSSL ? true, openssl ? null
 , withIPv6 ? true
 , withDebug ? false
@@ -14,26 +18,35 @@
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  version = "1.12.0";
+  version = "1.14.0";
   pname = "unit";
 
   src = fetchFromGitHub {
     owner = "nginx";
     repo = "unit";
     rev = version;
-    sha256 = "1ylzfsajjfaxzn7mycjs69ms4x58r4szpk07kqrmbf03dp2cmxkq";
+    sha256 = "01anczfcdwd22hb0y4zw647f86ivk5zq8lcd13xfxjvkmnsnbj9w";
   };
 
+  patches = [
+    # https://github.com/nginx/unit/issues/357
+    ./drop_cap.patch
+  ];
+
   nativeBuildInputs = [ which ];
 
   buildInputs = [ ]
-    ++ optional withPython python
+    ++ optional withPython2 python2
+    ++ optionals withPython3 [ python3 ncurses ]
     ++ optional withPHP72 php72
     ++ optional withPHP73 php73
-    ++ optional withPerl perl
+    ++ optional withPerl528 perl528
+    ++ optional withPerl530 perl530
     ++ optional withPerldevel perldevel
     ++ optional withRuby_2_4 ruby_2_4
-    ++ optional withRuby ruby
+    ++ optional withRuby_2_5 ruby_2_5
+    ++ optional withRuby_2_6 ruby_2_6
+    ++ optional withRuby_2_7 ruby_2_7
     ++ optional withSSL openssl;
 
   configureFlags = [
@@ -41,18 +54,22 @@ stdenv.mkDerivation rec {
     "--pid=/run/unit/unit.pid"
     "--user=unit"
     "--group=unit"
-  ] ++ optional withSSL     [ "--openssl" ]
-    ++ optional (!withIPv6) [ "--no-ipv6" ]
-    ++ optional withDebug   [ "--debug" ];
+  ] ++ optional withSSL     "--openssl"
+    ++ optional (!withIPv6) "--no-ipv6"
+    ++ optional withDebug   "--debug";
 
   postConfigure = ''
-    ${optionalString withPython     "./configure python  --module=python    --config=${python}/bin/python-config  --lib-path=${python}/lib"}
-    ${optionalString withPHP72      "./configure php     --module=php72     --config=${php72.dev}/bin/php-config  --lib-path=${php72}/lib"}
-    ${optionalString withPHP73      "./configure php     --module=php73     --config=${php73.dev}/bin/php-config  --lib-path=${php73}/lib"}
-    ${optionalString withPerl       "./configure perl    --module=perl      --perl=${perl}/bin/perl"}
-    ${optionalString withPerldevel  "./configure perl    --module=perl529   --perl=${perldevel}/bin/perl"}
-    ${optionalString withRuby_2_4   "./configure ruby    --module=ruby24    --ruby=${ruby_2_4}/bin/ruby"}
-    ${optionalString withRuby       "./configure ruby    --module=ruby      --ruby=${ruby}/bin/ruby"}
+    ${optionalString withPython2    "./configure python --module=python2  --config=${python2}/bin/python2-config  --lib-path=${python2}/lib"}
+    ${optionalString withPython3    "./configure python --module=python3  --config=${python3}/bin/python3-config  --lib-path=${python3}/lib"}
+    ${optionalString withPHP72      "./configure php    --module=php72    --config=${php72.dev}/bin/php-config    --lib-path=${php72}/lib"}
+    ${optionalString withPHP73      "./configure php    --module=php73    --config=${php73.dev}/bin/php-config    --lib-path=${php73}/lib"}
+    ${optionalString withPerl528    "./configure perl   --module=perl528  --perl=${perl528}/bin/perl"}
+    ${optionalString withPerl530    "./configure perl   --module=perl530  --perl=${perl530}/bin/perl"}
+    ${optionalString withPerldevel  "./configure perl   --module=perldev  --perl=${perldevel}/bin/perl"}
+    ${optionalString withRuby_2_4   "./configure ruby   --module=ruby24   --ruby=${ruby_2_4}/bin/ruby"}
+    ${optionalString withRuby_2_5   "./configure ruby   --module=ruby25   --ruby=${ruby_2_5}/bin/ruby"}
+    ${optionalString withRuby_2_6   "./configure ruby   --module=ruby26   --ruby=${ruby_2_6}/bin/ruby"}
+    ${optionalString withRuby_2_7   "./configure ruby   --module=ruby27   --ruby=${ruby_2_7}/bin/ruby"}
   '';
 
   meta = {
diff --git a/pkgs/servers/http/unit/drop_cap.patch b/pkgs/servers/http/unit/drop_cap.patch
new file mode 100644
index 00000000000..87caf77904e
--- /dev/null
+++ b/pkgs/servers/http/unit/drop_cap.patch
@@ -0,0 +1,79 @@
+diff -r ed17ce89119f src/nxt_capability.c
+--- a/src/nxt_capability.c      Fri Dec 06 17:02:23 2019 +0000
++++ b/src/nxt_capability.c      Mon Dec 09 23:23:00 2019 +0000
+@@ -93,6 +93,26 @@ nxt_capability_specific_set(nxt_task_t *
+     return NXT_OK;
+ }
+ 
++
++nxt_int_t
++nxt_capability_drop_all(nxt_task_t *task)
++{
++    struct __user_cap_header_struct hdr;
++    struct __user_cap_data_struct data[2];
++
++    hdr.version = nxt_capability_linux_get_version();
++    hdr.pid = nxt_pid;
++
++    nxt_memset(data, 0, sizeof(data));
++
++    if (nxt_slow_path(nxt_capset(&hdr, data) == -1)) {
++        nxt_alert(task, "failed to drop capabilities %E", nxt_errno);
++        return NXT_ERROR;
++    }
++
++    return NXT_OK;
++}
++
+ #else
+ 
+ static nxt_int_t
+diff -r ed17ce89119f src/nxt_capability.h
+--- a/src/nxt_capability.h      Fri Dec 06 17:02:23 2019 +0000
++++ b/src/nxt_capability.h      Mon Dec 09 23:23:00 2019 +0000
+@@ -14,4 +14,6 @@ typedef struct {
+ NXT_EXPORT nxt_int_t nxt_capability_set(nxt_task_t *task,
+     nxt_capabilities_t *cap);
+ 
++NXT_EXPORT nxt_int_t nxt_capability_drop_all(nxt_task_t *task);
++
+ #endif /* _NXT_CAPABILITY_INCLUDED_ */
+diff -r ed17ce89119f src/nxt_process.c
+--- a/src/nxt_process.c Fri Dec 06 17:02:23 2019 +0000
++++ b/src/nxt_process.c Mon Dec 09 23:23:00 2019 +0000
+@@ -264,7 +264,7 @@ cleanup:
+ static void
+ nxt_process_start(nxt_task_t *task, nxt_process_t *process)
+ {
+-    nxt_int_t                    ret, cap_setid;
++    nxt_int_t                    ret, cap_setid, drop_caps;
+     nxt_port_t                   *port, *main_port;
+     nxt_thread_t                 *thread;
+     nxt_runtime_t                *rt;
+@@ -285,9 +285,12 @@ nxt_process_start(nxt_task_t *task, nxt_
+ 
+     cap_setid = rt->capabilities.setid;
+ 
++    drop_caps = cap_setid;
++
+ #if (NXT_HAVE_CLONE_NEWUSER)
+-    if (!cap_setid && NXT_CLONE_USER(init->isolation.clone.flags)) {
++    if (NXT_CLONE_USER(init->isolation.clone.flags)) {
+         cap_setid = 1;
++        drop_caps = 0;
+     }
+ #endif
+ 
+@@ -301,6 +304,12 @@ nxt_process_start(nxt_task_t *task, nxt_
+         if (nxt_slow_path(ret != NXT_OK)) {
+             goto fail;
+         }
++
++#if (NXT_HAVE_LINUX_CAPABILITY)
++        if (drop_caps && nxt_capability_drop_all(task) != NXT_OK) {
++            goto fail;
++        }
++#endif
+     }
+ 
+     rt->type = init->type;
\ No newline at end of file
diff --git a/pkgs/servers/jellyfin/default.nix b/pkgs/servers/jellyfin/default.nix
index b1116dc4a95..6da342ae880 100644
--- a/pkgs/servers/jellyfin/default.nix
+++ b/pkgs/servers/jellyfin/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, unzip, sqlite, makeWrapper, dotnet-sdk, ffmpeg,
+{ stdenv, lib, fetchurl, unzip, sqlite, makeWrapper, dotnet-netcore, ffmpeg,
   fontconfig, freetype }:
 
 let
@@ -32,7 +32,7 @@ in stdenv.mkDerivation rec {
   ];
 
   propagatedBuildInputs = [
-    dotnet-sdk
+    dotnet-netcore
     sqlite
   ];
 
@@ -42,7 +42,7 @@ in stdenv.mkDerivation rec {
     install -dm 755 "$out/opt/jellyfin"
     cp -r * "$out/opt/jellyfin"
 
-    makeWrapper "${dotnet-sdk}/bin/dotnet" $out/bin/jellyfin \
+    makeWrapper "${dotnet-netcore}/bin/dotnet" $out/bin/jellyfin \
       --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [
         sqlite fontconfig freetype stdenv.cc.cc.lib
       ]}:$out/opt/jellyfin/runtimes/${runtimeDir}/native/" \
diff --git a/pkgs/servers/ldap/389/default.nix b/pkgs/servers/ldap/389/default.nix
index e7bff373c3a..8de4c471e22 100644
--- a/pkgs/servers/ldap/389/default.nix
+++ b/pkgs/servers/ldap/389/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, fetchpatch, autoreconfHook, pkgconfig, doxygen, perl, pam, nspr, nss, openldap
-, db, cyrus_sasl, svrcore, icu, net_snmp, kerberos, pcre, perlPackages, libevent, openssl, python
+, db, cyrus_sasl, svrcore, icu, net-snmp, kerberos, pcre, perlPackages, libevent, openssl, python
 }:
 
 stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoreconfHook pkgconfig doxygen ];
   buildInputs = [
     perl pam nspr nss openldap db cyrus_sasl svrcore icu
-    net_snmp kerberos pcre libevent openssl python
+    net-snmp kerberos pcre libevent openssl python
   ] ++ (with perlPackages; [ MozillaLdap NetAddrIP DBFile ]);
 
   patches = [
@@ -46,7 +46,9 @@ stdenv.mkDerivation rec {
     "--with-db-inc=${db.dev}/include"
     "--with-db-lib=${db.out}/lib"
     "--with-sasl=${cyrus_sasl.dev}"
-    "--with-netsnmp=${net_snmp}"
+    "--with-netsnmp=yes"
+    "--with-netsnmp-inc=${stdenv.lib.getDev net-snmp}/include"
+    "--with-netsnmp-lib=${stdenv.lib.getLib net-snmp}/lib"
   ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/servers/mail/archiveopteryx/default.nix b/pkgs/servers/mail/archiveopteryx/default.nix
index 5a318c311af..55cc4c121f0 100644
--- a/pkgs/servers/mail/archiveopteryx/default.nix
+++ b/pkgs/servers/mail/archiveopteryx/default.nix
@@ -20,10 +20,11 @@ stdenv.mkDerivation rec {
     sed -i 's:READMEDIR = $(PREFIX):READMEDIR = '$out'/share/doc/archiveopteryx:' ./Jamsettings
   '';
 
-  # fix build on gcc7
-  NIX_CFLAGS_COMPILE = [
+  # fix build on gcc7+
+  NIX_CFLAGS_COMPILE = builtins.toString [
     "-Wno-error=builtin-declaration-mismatch"
     "-Wno-error=implicit-fallthrough"
+    "-Wno-error=deprecated-copy"
   ];
 
   buildPhase = ''jam "-j$NIX_BUILD_CORES" '';
diff --git a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
deleted file mode 100644
index 422bfad92e6..00000000000
--- a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-diff --git a/src/auth/main.c b/src/auth/main.c
-index 2dbf9e1..b1e778a 100644
---- a/src/auth/main.c
-+++ b/src/auth/main.c
-@@ -192,7 +192,7 @@ static void main_preinit(void)
- 	mod_set.debug = global_auth_settings->debug;
- 	mod_set.filter_callback = auth_module_filter;
- 
--	modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	if (!worker)
-@@ -223,7 +223,7 @@ void auth_module_load(const char *names)
- 	mod_set.debug = global_auth_settings->debug;
- 	mod_set.ignore_missing = TRUE;
- 
--	modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names,
-+	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names,
- 					  &mod_set);
- 	module_dir_init(modules);
- }
-diff --git a/src/config/all-settings.c b/src/config/all-settings.c
-index 4a2ab53..5057d63 100644
---- a/src/config/all-settings.c
-+++ b/src/config/all-settings.c
-@@ -1079,7 +1079,7 @@ static const struct mail_user_settings mail_user_default_settings = {
- 	.last_valid_gid = 0,
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 
- 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
- 
-@@ -4723,7 +4723,7 @@ const struct doveadm_settings doveadm_default_settings = {
- 	.base_dir = PKG_RUNDIR,
- 	.libexec_dir = PKG_LIBEXECDIR,
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 	.auth_debug = FALSE,
- 	.auth_socket_path = "auth-userdb",
- 	.doveadm_socket_path = "doveadm-server",
-diff --git a/src/config/config-parser.c b/src/config/config-parser.c
-index 6894123..07e9fec 100644
---- a/src/config/config-parser.c
-+++ b/src/config/config-parser.c
-@@ -1077,7 +1077,7 @@ void config_parse_load_modules(void)
- 
- 	i_zero(&mod_set);
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
--	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	i_array_init(&new_roots, 64);
-diff --git a/src/dict/main.c b/src/dict/main.c
-index 722ed02..4ed12ae 100644
---- a/src/dict/main.c
-+++ b/src/dict/main.c
-@@ -104,7 +104,7 @@ static void main_init(void)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.require_init_funcs = TRUE;
- 
--	modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set);
-+	modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set);
- 	module_dir_init(modules);
- 
- 	/* Register only after loading modules. They may contain SQL drivers,
-diff --git a/src/doveadm/doveadm-settings.c b/src/doveadm/doveadm-settings.c
-index 88da40c..141ed05 100644
---- a/src/doveadm/doveadm-settings.c
-+++ b/src/doveadm/doveadm-settings.c
-@@ -86,7 +86,7 @@ const struct doveadm_settings doveadm_default_settings = {
- 	.base_dir = PKG_RUNDIR,
- 	.libexec_dir = PKG_LIBEXECDIR,
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 	.auth_debug = FALSE,
- 	.auth_socket_path = "auth-userdb",
- 	.doveadm_socket_path = "doveadm-server",
-diff --git a/src/lib-fs/fs-api.c b/src/lib-fs/fs-api.c
-index a939f61..846cf86 100644
---- a/src/lib-fs/fs-api.c
-+++ b/src/lib-fs/fs-api.c
-@@ -114,7 +114,7 @@ static void fs_class_try_load_plugin(const char *driver)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.ignore_missing = TRUE;
- 
--	fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR,
-+	fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules",
- 					     module_name, &mod_set);
- 	module_dir_init(fs_modules);
- 
-diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c
-index f857ec9..0d1023b 100644
---- a/src/lib-ssl-iostream/iostream-ssl.c
-+++ b/src/lib-ssl-iostream/iostream-ssl.c
-@@ -53,7 +53,7 @@ int ssl_module_load(const char **error_r)
- 	mod_set.abi_version = DOVECOT_ABI_VERSION;
- 	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
- 	mod_set.require_init_funcs = TRUE;
--	ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set);
-+	ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set);
- 	if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name,
- 					&mod_set, error_r) < 0)
- 		return -1;
-diff --git a/src/lib-storage/mail-storage-settings.c b/src/lib-storage/mail-storage-settings.c
-index b314b52..7055094 100644
---- a/src/lib-storage/mail-storage-settings.c
-+++ b/src/lib-storage/mail-storage-settings.c
-@@ -337,7 +337,7 @@ static const struct mail_user_settings mail_user_default_settings = {
- 	.last_valid_gid = 0,
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- 
- 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
- 
-diff --git a/src/lmtp/lmtp-settings.c b/src/lmtp/lmtp-settings.c
-index 1666ec9..8a27200 100644
---- a/src/lmtp/lmtp-settings.c
-+++ b/src/lmtp/lmtp-settings.c
-@@ -89,7 +89,7 @@ static const struct lmtp_settings lmtp_default_settings = {
- 	.login_trusted_networks = "",
- 
- 	.mail_plugins = "",
--	.mail_plugin_dir = MODULEDIR,
-+	.mail_plugin_dir = "/etc/dovecot/modules",
- };
- 
- static const struct setting_parser_info *lmtp_setting_dependencies[] = {
diff --git a/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch
new file mode 100644
index 00000000000..0f987b44d8a
--- /dev/null
+++ b/pkgs/servers/mail/dovecot/2.3.x-module_dir.patch
@@ -0,0 +1,165 @@
+diff -ru dovecot-2.3.9.2.orig/src/auth/main.c dovecot-2.3.9.2/src/auth/main.c
+--- dovecot-2.3.9.2.orig/src/auth/main.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/auth/main.c	2019-12-15 19:46:52.101597499 +0100
+@@ -191,7 +191,7 @@
+ 	mod_set.debug = global_auth_settings->debug;
+ 	mod_set.filter_callback = auth_module_filter;
+ 
+-	modules = module_dir_load(AUTH_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/auth", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	if (!worker)
+@@ -222,7 +222,7 @@
+ 	mod_set.debug = global_auth_settings->debug;
+ 	mod_set.ignore_missing = TRUE;
+ 
+-	modules = module_dir_load_missing(modules, AUTH_MODULE_DIR, names,
++	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/auth", names,
+ 					  &mod_set);
+ 	module_dir_init(modules);
+ }
+diff -ru dovecot-2.3.9.2.orig/src/config/all-settings.c dovecot-2.3.9.2/src/config/all-settings.c
+--- dovecot-2.3.9.2.orig/src/config/all-settings.c	2019-12-13 14:12:32.000000000 +0100
++++ dovecot-2.3.9.2/src/config/all-settings.c	2019-12-15 19:49:42.764650074 +0100
+@@ -1080,7 +1080,7 @@
+ 	.last_valid_gid = 0,
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 
+ 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
+ 
+@@ -3849,7 +3849,7 @@
+ 	.login_log_format = "%$: %s",
+ 	.login_access_sockets = "",
+ 	.login_proxy_notify_path = "proxy-notify",
+-	.login_plugin_dir = MODULEDIR"/login",
++	.login_plugin_dir = "/etc/dovecot/modules""/login",
+ 	.login_plugins = "",
+ 	.login_proxy_max_disconnect_delay = 0,
+ 	.director_username_hash = "%u",
+@@ -4058,7 +4058,7 @@
+ 	.login_trusted_networks = "",
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ };
+ static const struct setting_parser_info *lmtp_setting_dependencies[] = {
+ 	&lda_setting_parser_info,
+@@ -4823,7 +4823,7 @@
+ 	.base_dir = PKG_RUNDIR,
+ 	.libexec_dir = PKG_LIBEXECDIR,
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 	.mail_temp_dir = "/tmp",
+ 	.auth_debug = FALSE,
+ 	.auth_socket_path = "auth-userdb",
+diff -ru dovecot-2.3.9.2.orig/src/config/config-parser.c dovecot-2.3.9.2/src/config/config-parser.c
+--- dovecot-2.3.9.2.orig/src/config/config-parser.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/config/config-parser.c	2019-12-15 19:46:52.102597505 +0100
+@@ -1077,7 +1077,7 @@
+ 
+ 	i_zero(&mod_set);
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+-	modules = module_dir_load(CONFIG_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/settings", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	i_array_init(&new_roots, 64);
+diff -ru dovecot-2.3.9.2.orig/src/dict/main.c dovecot-2.3.9.2/src/dict/main.c
+--- dovecot-2.3.9.2.orig/src/dict/main.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/dict/main.c	2019-12-15 19:46:52.102597505 +0100
+@@ -104,7 +104,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.require_init_funcs = TRUE;
+ 
+-	modules = module_dir_load(DICT_MODULE_DIR, NULL, &mod_set);
++	modules = module_dir_load("/etc/dovecot/modules/dict", NULL, &mod_set);
+ 	module_dir_init(modules);
+ 
+ 	/* Register only after loading modules. They may contain SQL drivers,
+diff -ru dovecot-2.3.9.2.orig/src/doveadm/doveadm-settings.c dovecot-2.3.9.2/src/doveadm/doveadm-settings.c
+--- dovecot-2.3.9.2.orig/src/doveadm/doveadm-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/doveadm/doveadm-settings.c	2019-12-15 19:47:29.525812499 +0100
+@@ -89,7 +89,7 @@
+ 	.base_dir = PKG_RUNDIR,
+ 	.libexec_dir = PKG_LIBEXECDIR,
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 	.mail_temp_dir = "/tmp",
+ 	.auth_debug = FALSE,
+ 	.auth_socket_path = "auth-userdb",
+diff -ru dovecot-2.3.9.2.orig/src/doveadm/doveadm-util.c dovecot-2.3.9.2/src/doveadm/doveadm-util.c
+--- dovecot-2.3.9.2.orig/src/doveadm/doveadm-util.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/doveadm/doveadm-util.c	2019-12-15 19:52:32.003844670 +0100
+@@ -33,7 +33,7 @@
+ 	mod_set.debug = doveadm_debug;
+ 	mod_set.ignore_dlopen_errors = TRUE;
+ 
+-	modules = module_dir_load_missing(modules, DOVEADM_MODULEDIR,
++	modules = module_dir_load_missing(modules, "/etc/dovecot/modules/doveadm",
+ 					  NULL, &mod_set);
+ 	module_dir_init(modules);
+ }
+@@ -58,7 +58,7 @@
+ 			return FALSE;
+ 	}
+ 
+-	dir = opendir(DOVEADM_MODULEDIR);
++	dir = opendir("/etc/dovecot/modules/doveadm");
+ 	if (dir == NULL)
+ 		return FALSE;
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lib-fs/fs-api.c dovecot-2.3.9.2/src/lib-fs/fs-api.c
+--- dovecot-2.3.9.2.orig/src/lib-fs/fs-api.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-fs/fs-api.c	2019-12-15 19:46:52.102597505 +0100
+@@ -114,7 +114,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.ignore_missing = TRUE;
+ 
+-	fs_modules = module_dir_load_missing(fs_modules, MODULE_DIR,
++	fs_modules = module_dir_load_missing(fs_modules, "/etc/dovecot/modules",
+ 					     module_name, &mod_set);
+ 	module_dir_init(fs_modules);
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lib-ssl-iostream/iostream-ssl.c dovecot-2.3.9.2/src/lib-ssl-iostream/iostream-ssl.c
+--- dovecot-2.3.9.2.orig/src/lib-ssl-iostream/iostream-ssl.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-ssl-iostream/iostream-ssl.c	2019-12-15 19:46:52.102597505 +0100
+@@ -54,7 +54,7 @@
+ 	mod_set.abi_version = DOVECOT_ABI_VERSION;
+ 	mod_set.setting_name = "<built-in lib-ssl-iostream lookup>";
+ 	mod_set.require_init_funcs = TRUE;
+-	ssl_module = module_dir_load(MODULE_DIR, plugin_name, &mod_set);
++	ssl_module = module_dir_load("/etc/dovecot/modules", plugin_name, &mod_set);
+ 	if (module_dir_try_load_missing(&ssl_module, MODULE_DIR, plugin_name,
+ 					&mod_set, error_r) < 0)
+ 		return -1;
+diff -ru dovecot-2.3.9.2.orig/src/lib-storage/mail-storage-settings.c dovecot-2.3.9.2/src/lib-storage/mail-storage-settings.c
+--- dovecot-2.3.9.2.orig/src/lib-storage/mail-storage-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lib-storage/mail-storage-settings.c	2019-12-15 19:46:52.102597505 +0100
+@@ -337,7 +337,7 @@
+ 	.last_valid_gid = 0,
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ 
+ 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
+ 
+diff -ru dovecot-2.3.9.2.orig/src/lmtp/lmtp-settings.c dovecot-2.3.9.2/src/lmtp/lmtp-settings.c
+--- dovecot-2.3.9.2.orig/src/lmtp/lmtp-settings.c	2019-12-13 14:12:00.000000000 +0100
++++ dovecot-2.3.9.2/src/lmtp/lmtp-settings.c	2019-12-15 19:46:52.102597505 +0100
+@@ -95,7 +95,7 @@
+ 	.login_trusted_networks = "",
+ 
+ 	.mail_plugins = "",
+-	.mail_plugin_dir = MODULEDIR,
++	.mail_plugin_dir = "/etc/dovecot/modules",
+ };
+ 
+ static const struct setting_parser_info *lmtp_setting_dependencies[] = {
diff --git a/pkgs/servers/mail/dovecot/default.nix b/pkgs/servers/mail/dovecot/default.nix
index 35c274eff25..3aff9f53ce7 100644
--- a/pkgs/servers/mail/dovecot/default.nix
+++ b/pkgs/servers/mail/dovecot/default.nix
@@ -9,7 +9,7 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "dovecot-2.3.8";
+  name = "dovecot-2.3.9.2";
 
   nativeBuildInputs = [ perl pkgconfig ];
   buildInputs =
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dovecot.org/releases/2.3/${name}.tar.gz";
-    sha256 = "0jdng27hqqagjy6v7ymd0xflbv5dbc1rhh450nk39ar6pw1qsxy5";
+    sha256 = "1yc6hi4hqg4hcc4495sf4m5f1lnargphi6dawj43if21vncgp127";
   };
 
   enableParallelBuilding = true;
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
     # Make dovecot look for plugins in /etc/dovecot/modules
     # so we can symlink plugins from several packages there.
     # The symlinking needs to be done in NixOS.
-    ./2.2.x-module_dir.patch
+    ./2.3.x-module_dir.patch
   ];
 
   configureFlags = [
diff --git a/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
index 4184771f8a8..71a5c20dea3 100644
--- a/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
+++ b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "dovecot-pigeonhole";
-  version = "0.5.8";
+  version = "0.5.9";
 
   src = fetchurl {
     url = "https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-${version}.tar.gz";
-    sha256 = "08lhfl877xm790f1mqdhvz74xqr2kkl8wpz2m6p0j6hv1kan1f4g";
+    sha256 = "01dxidrnmrr2gqggfsgkfxa6ynvyjyw13xw32gi86yqmwnm6inin";
   };
 
   buildInputs = [ dovecot openssl ];
diff --git a/pkgs/servers/mail/mailman/core.nix b/pkgs/servers/mail/mailman/core.nix
deleted file mode 100644
index 1ba220039ea..00000000000
--- a/pkgs/servers/mail/mailman/core.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, alembic, aiosmtpd, dnspython
-, flufl_bounce, flufl_i18n, flufl_lock, lazr_config, lazr_delegates, passlib
-, requests, zope_configuration, click, falcon, importlib-resources
-, zope_component, lynx, postfix
-}:
-
-buildPythonPackage rec {
-  pname = "mailman";
-  version = "3.2.2";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "09s9p5pb8gff6zblwidyq830yfgcvv50p5drdaxj1qpy8w46lvc6";
-  };
-
-  propagatedBuildInputs = [
-    alembic aiosmtpd click dnspython falcon flufl_bounce flufl_i18n flufl_lock
-    importlib-resources lazr_config passlib requests zope_configuration
-    zope_component
-  ];
-
-  patchPhase = ''
-    substituteInPlace src/mailman/config/postfix.cfg \
-      --replace /usr/sbin/postmap ${postfix}/bin/postmap
-    substituteInPlace src/mailman/config/schema.cfg \
-      --replace /usr/bin/lynx ${lynx}/bin/lynx
-  '';
-
-  # Mailman assumes that those scripts in $out/bin are Python scripts. Wrapping
-  # them in shell code breaks this assumption. The proper way to use mailman is
-  # to create a specialized python interpreter:
-  #
-  #   python37.withPackages (ps: [ps.mailman])
-  #
-  # This gives a properly wrapped 'mailman' command plus an interpreter that
-  # has all the necessary search paths to execute unwrapped 'master' and
-  # 'runner' scripts. The setup is a little tricky, but fortunately NixOS is
-  # about to get a OS module that takes care of those details.
-  dontWrapPythonPrograms = true;
-
-  meta = {
-    homepage = https://www.gnu.org/software/mailman/;
-    description = "Free software for managing electronic mail discussion and newsletter lists";
-    license = stdenv.lib.licenses.gpl3Plus;
-    maintainers = with stdenv.lib.maintainers; [ peti ];
-  };
-}
diff --git a/pkgs/servers/mail/mailman/default.nix b/pkgs/servers/mail/mailman/default.nix
index e9f66b92be2..8e763800f65 100644
--- a/pkgs/servers/mail/mailman/default.nix
+++ b/pkgs/servers/mail/mailman/default.nix
@@ -1,33 +1,48 @@
-{ stdenv, fetchurl, python2 }:
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, alembic, aiosmtpd, dnspython
+, flufl_bounce, flufl_i18n, flufl_lock, lazr_config, lazr_delegates, passlib
+, requests, zope_configuration, click, falcon, importlib-resources
+, zope_component, lynx, postfix, authheaders, gunicorn
+}:
 
-stdenv.mkDerivation rec {
+buildPythonPackage rec {
   pname = "mailman";
-  version = "2.1.29";
+  version = "3.3.0";
+  disabled = !isPy3k;
 
-  src = fetchurl {
-    url = "mirror://gnu/mailman/${pname}-${version}.tgz";
-    sha256 = "0b0dpwf6ap260791c7lg2vpw30llf19hymbf2hja3s016rqp5243";
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1qph9i93ndahfxi3bb2sd0kjm2c0pkh844ai6zacfmvihl1k3pvy";
   };
 
-  buildInputs = [ python2 python2.pkgs.dnspython ];
-
-  patches = [ ./fix-var-prefix.patch ];
-
-  configureFlags = [
-    "--without-permcheck"
-    "--with-cgi-ext=.cgi"
-    "--with-var-prefix=/var/lib/mailman"
+  propagatedBuildInputs = [
+    alembic aiosmtpd click dnspython falcon flufl_bounce flufl_i18n flufl_lock
+    importlib-resources lazr_config passlib requests zope_configuration
+    zope_component authheaders gunicorn
   ];
 
-  installTargets = "doinstall"; # Leave out the 'update' target that's implied by 'install'.
-
-  makeFlags = [ "DIRSETGID=:" ];
+  patchPhase = ''
+    substituteInPlace src/mailman/config/postfix.cfg \
+      --replace /usr/sbin/postmap ${postfix}/bin/postmap
+    substituteInPlace src/mailman/config/schema.cfg \
+      --replace /usr/bin/lynx ${lynx}/bin/lynx
+  '';
+
+  # Mailman assumes that those scripts in $out/bin are Python scripts. Wrapping
+  # them in shell code breaks this assumption. The proper way to use mailman is
+  # to create a specialized python interpreter:
+  #
+  #   python37.withPackages (ps: [ps.mailman])
+  #
+  # This gives a properly wrapped 'mailman' command plus an interpreter that
+  # has all the necessary search paths to execute unwrapped 'master' and
+  # 'runner' scripts. The setup is a little tricky, but fortunately NixOS is
+  # about to get a OS module that takes care of those details.
+  dontWrapPythonPrograms = true;
 
   meta = {
     homepage = https://www.gnu.org/software/mailman/;
-    description = "Free software for managing electronic mail discussion and e-newsletter lists";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
-    maintainers = [ stdenv.lib.maintainers.peti ];
+    description = "Free software for managing electronic mail discussion and newsletter lists";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [ peti ];
   };
 }
diff --git a/pkgs/servers/mail/mailman/hyperkitty.nix b/pkgs/servers/mail/mailman/hyperkitty.nix
index 8f060da3446..fedd6c9f759 100644
--- a/pkgs/servers/mail/mailman/hyperkitty.nix
+++ b/pkgs/servers/mail/mailman/hyperkitty.nix
@@ -1,27 +1,34 @@
-{ stdenv, buildPythonPackage, fetchPypi, coverage, mock
+{ stdenv, buildPythonPackage, fetchPypi, isPy3k, isort, coverage, mock
 , robot-detection, django_extensions, rjsmin, cssmin, django-mailman3
-, django-haystack, lockfile, networkx, dateutil, defusedxml
+, django-haystack, flufl_lock, networkx, dateutil, defusedxml
 , django-paintstore, djangorestframework, django, django-q
-, django_compressor, beautifulsoup4, six, psycopg2, whoosh
+, django_compressor, beautifulsoup4, six, psycopg2, whoosh, elasticsearch
 }:
 
 buildPythonPackage rec {
   pname = "HyperKitty";
-  version = "1.2.2";
+  version = "1.3.2";
+  disabled = !isPy3k;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1z2zswlml6nppxhzw9a4nrj7i5wsxd29s3q78ka1rwr5m5n7s1rz";
+    sha256 = "092fkv0xyf5vgj33xwq0mh9h5c5d56ifwimaqbfpx5cwc6yivb88";
   };
 
-  buildInputs = [ coverage mock ];
+  nativeBuildInputs = [ isort ];
   propagatedBuildInputs = [
     robot-detection django_extensions rjsmin cssmin django-mailman3
-    django-haystack lockfile networkx dateutil defusedxml
+    django-haystack flufl_lock networkx dateutil defusedxml
     django-paintstore djangorestframework django django-q
-    django_compressor beautifulsoup4 six psycopg2 whoosh
+    django_compressor six psycopg2 isort
   ];
 
+  # Some of these are optional runtime dependencies that are not
+  # listed as dependencies in setup.py.  To use these, they should be
+  # dependencies of the Django Python environment, but not of
+  # HyperKitty so they're not included for people who don't need them.
+  checkInputs = [ beautifulsoup4 coverage elasticsearch mock whoosh ];
+
   checkPhase = ''
     cd $NIX_BUILD_TOP/$sourceRoot
     PYTHONPATH=.:$PYTHONPATH python example_project/manage.py test \
diff --git a/pkgs/servers/mail/mailman/postorius.nix b/pkgs/servers/mail/mailman/postorius.nix
index 871f2ea244d..bcb92051fc8 100644
--- a/pkgs/servers/mail/mailman/postorius.nix
+++ b/pkgs/servers/mail/mailman/postorius.nix
@@ -1,23 +1,21 @@
 { stdenv, buildPythonPackage, fetchPypi, beautifulsoup4, vcrpy, mock
-, django-mailman3, mailmanclient
+, django-mailman3, mailmanclient, readme_renderer
 }:
 
 buildPythonPackage rec {
   pname = "postorius";
-  version = "1.2.4";
+  version = "1.3.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1722lnscxfl8wdigf5d80d1qmd5gblr439wa989jxlww0wkjg9fl";
+    sha256 = "0wrm0hda7ym9qaygxirqaaii66ndmgyy7gx8wqdg07pfx14zcyja";
   };
 
-  buildInputs = [ beautifulsoup4 vcrpy mock ];
-  propagatedBuildInputs = [ django-mailman3 ];
+  propagatedBuildInputs = [ django-mailman3 readme_renderer ];
+  checkInputs = [ beautifulsoup4 vcrpy mock ];
 
-  checkPhase = ''
-    cd $NIX_BUILD_TOP/$sourceRoot
-    PYTHONPATH=.:$PYTHONPATH python example_project/manage.py test --settings=test_settings postorius
-  '';
+  # Tries to connect to database.
+  doCheck = false;
 
   meta = {
     homepage = https://www.gnu.org/software/mailman/;
diff --git a/pkgs/servers/mail/mailman/web.nix b/pkgs/servers/mail/mailman/web.nix
index b0ead765a60..ec16775b1d4 100644
--- a/pkgs/servers/mail/mailman/web.nix
+++ b/pkgs/servers/mail/mailman/web.nix
@@ -1,4 +1,4 @@
-{ stdenv, python, hyperkitty, postorius, buildPythonPackage
+{ stdenv, python, hyperkitty, postorius, buildPythonPackage, isPy3k
 , serverEMail ? "postmaster@example.org"
 , archiverKey ? "SecretArchiverAPIKey"
 , allowedHosts ? []
@@ -17,6 +17,7 @@ in
 
 buildPythonPackage {
   name = "mailman-web-0";
+  disabled = !isPy3k;
 
   propagatedBuildInputs = [ hyperkitty postorius ];
 
diff --git a/pkgs/servers/mail/opensmtpd/extras.nix b/pkgs/servers/mail/opensmtpd/extras.nix
index f7ed6382a7b..14d36ad6554 100644
--- a/pkgs/servers/mail/opensmtpd/extras.nix
+++ b/pkgs/servers/mail/opensmtpd/extras.nix
@@ -48,39 +48,38 @@ stdenv.mkDerivation rec {
     "--with-scheduler-ram"
     "--with-scheduler-stub"
 
-  ] ++ stdenv.lib.optional enablePython [
+  ] ++ stdenv.lib.optionals enablePython [
     "--with-python=${python2}"
     "--with-filter-python"
     "--with-queue-python"
     "--with-table-python"
     "--with-scheduler-python"
 
-  ] ++ stdenv.lib.optional enableLua [
+  ] ++ stdenv.lib.optionals enableLua [
     "--with-lua=${pkgconfig}"
     "--with-filter-lua"
 
-  ] ++ stdenv.lib.optional enablePerl [
+  ] ++ stdenv.lib.optionals enablePerl [
     "--with-perl=${perl}"
     "--with-filter-perl"
 
-  ] ++ stdenv.lib.optional enableMysql [
+  ] ++ stdenv.lib.optionals enableMysql [
     "--with-table-mysql"
 
-  ] ++ stdenv.lib.optional enablePostgres [
+  ] ++ stdenv.lib.optionals enablePostgres [
     "--with-table-postgres"
 
-  ] ++ stdenv.lib.optional enableSqlite [
+  ] ++ stdenv.lib.optionals enableSqlite [
     "--with-table-sqlite"
 
-  ] ++ stdenv.lib.optional enableRedis [
+  ] ++ stdenv.lib.optionals enableRedis [
     "--with-table-redis"
   ];
 
-  NIX_CFLAGS_COMPILE =
-    stdenv.lib.optional enableRedis
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString enableRedis
       "-I${hiredis}/include/hiredis -lhiredis"
-    ++ stdenv.lib.optional enableMysql
-      "-L${libmysqlclient}/lib/mysql";
+    + stdenv.lib.optionalString enableMysql
+      " -L${libmysqlclient}/lib/mysql";
 
   meta = with stdenv.lib; {
     homepage = https://www.opensmtpd.org/;
diff --git a/pkgs/servers/mail/postfix/default.nix b/pkgs/servers/mail/postfix/default.nix
index b3345f9420c..c0e6252a551 100644
--- a/pkgs/servers/mail/postfix/default.nix
+++ b/pkgs/servers/mail/postfix/default.nix
@@ -79,7 +79,7 @@ in stdenv.mkDerivation rec {
     make makefiles CCARGS='${ccargs}' AUXLIBS='${auxlibs}'
   '';
 
-  NIX_LDFLAGS = lib.optional withLDAP "-llber";
+  NIX_LDFLAGS = lib.optionalString withLDAP "-llber";
 
   installTargets = [ "non-interactive-package" ];
 
diff --git a/pkgs/servers/mail/postfix/pfixtools.nix b/pkgs/servers/mail/postfix/pfixtools.nix
index 8a92843e43e..9fb441a92de 100644
--- a/pkgs/servers/mail/postfix/pfixtools.nix
+++ b/pkgs/servers/mail/postfix/pfixtools.nix
@@ -42,12 +42,9 @@ stdenv.mkDerivation {
                       --replace /bin/bash ${bash}/bin/bash;
   '';
 
-  NIX_CFLAGS_COMPILE = [
-    "-Wno-error=unused-result" "-Wno-error=nonnull-compare"
-    "-Wno-error=format-truncation"
-  ];
+  NIX_CFLAGS_COMPILE = "-Wno-error=unused-result -Wno-error=nonnull-compare -Wno-error=format-truncation";
 
-  makeFlags = "DESTDIR=$(out) prefix=";
+  makeFlags = [ "DESTDIR=$(out)" "prefix=" ];
 
   meta = {
     description = "A collection of postfix-related tools";
diff --git a/pkgs/servers/mail/public-inbox/0002-msgtime-drop-Date-Parse-for-RFC2822.patch b/pkgs/servers/mail/public-inbox/0002-msgtime-drop-Date-Parse-for-RFC2822.patch
new file mode 100644
index 00000000000..ebc9a6f2237
--- /dev/null
+++ b/pkgs/servers/mail/public-inbox/0002-msgtime-drop-Date-Parse-for-RFC2822.patch
@@ -0,0 +1,172 @@
+From c9b5164c954cd0de80d971f1c4ced16bf41ea81b Mon Sep 17 00:00:00 2001
+From: Eric Wong <e@80x24.org>
+Date: Fri, 29 Nov 2019 12:25:07 +0000
+Subject: [PATCH 2/2] msgtime: drop Date::Parse for RFC2822
+
+Date::Parse is not optimized for RFC2822 dates and isn't
+packaged on OpenBSD.  It's still useful for historical
+email when email clients were less conformant, but is
+less relevant for new emails.
+---
+ lib/PublicInbox/MsgTime.pm | 115 ++++++++++++++++++++++++++++++++-----
+ t/msgtime.t                |   6 ++
+ 2 files changed, 107 insertions(+), 14 deletions(-)
+
+diff --git a/lib/PublicInbox/MsgTime.pm b/lib/PublicInbox/MsgTime.pm
+index 58e11d72..e9b27a49 100644
+--- a/lib/PublicInbox/MsgTime.pm
++++ b/lib/PublicInbox/MsgTime.pm
+@@ -7,24 +7,114 @@ use strict;
+ use warnings;
+ use base qw(Exporter);
+ our @EXPORT_OK = qw(msg_timestamp msg_datestamp);
+-use Date::Parse qw(str2time strptime);
++use Time::Local qw(timegm);
++my @MoY = qw(january february march april may june
++		july august september october november december);
++my %MoY;
++@MoY{@MoY} = (0..11);
++@MoY{map { substr($_, 0, 3) } @MoY} = (0..11);
++
++my %OBSOLETE_TZ = ( # RFC2822 4.3 (Obsolete Date and Time)
++	EST => '-0500', EDT => '-0400',
++	CST => '-0600', CDT => '-0500',
++	MST => '-0700', MDT => '-0600',
++	PST => '-0800', PDT => '-0700',
++	UT => '+0000', GMT => '+0000', Z => '+0000',
++
++	# RFC2822 states:
++	#   The 1 character military time zones were defined in a non-standard
++	#   way in [RFC822] and are therefore unpredictable in their meaning.
++);
++my $OBSOLETE_TZ = join('|', keys %OBSOLETE_TZ);
+ 
+ sub str2date_zone ($) {
+ 	my ($date) = @_;
++	my ($ts, $zone);
++
++	# RFC822 is most likely for email, but we can tolerate an extra comma
++	# or punctuation as long as all the data is there.
++	# We'll use '\s' since Unicode spaces won't affect our parsing.
++	# SpamAssassin ignores commas and redundant spaces, too.
++	if ($date =~ /(?:[A-Za-z]+,?\s+)? # day-of-week
++			([0-9]+),?\s+  # dd
++			([A-Za-z]+)\s+ # mon
++			([0-9]{2,})\s+ # YYYY or YY (or YYY :P)
++			([0-9]+)[:\.] # HH:
++				((?:[0-9]{2})|(?:\s?[0-9])) # MM
++				(?:[:\.]((?:[0-9]{2})|(?:\s?[0-9])))? # :SS
++			\s+	# a TZ offset is required:
++				([\+\-])? # TZ sign
++				[\+\-]* # I've seen extra "-" e.g. "--500"
++				([0-9]+|$OBSOLETE_TZ)(?:\s|$) # TZ offset
++			/xo) {
++		my ($dd, $m, $yyyy, $hh, $mm, $ss, $sign, $tz) =
++					($1, $2, $3, $4, $5, $6, $7, $8);
++		# don't accept non-English months
++		defined(my $mon = $MoY{lc($m)}) or return;
++
++		if (defined(my $off = $OBSOLETE_TZ{$tz})) {
++			$sign = substr($off, 0, 1);
++			$tz = substr($off, 1);
++		}
++
++		# Y2K problems: 3-digit years, follow RFC2822
++		if (length($yyyy) <= 3) {
++			$yyyy += 1900;
++
++			# and 2-digit years from '09 (2009) (0..49)
++			$yyyy += 100 if $yyyy < 1950;
++		}
++
++		$ts = timegm($ss // 0, $mm, $hh, $dd, $mon, $yyyy);
+ 
+-	my $ts = str2time($date);
+-	return undef unless(defined $ts);
++		# Compute the time offset from [+-]HHMM
++		$tz //= 0;
++		my ($tz_hh, $tz_mm);
++		if (length($tz) == 1) {
++			$tz_hh = $tz;
++			$tz_mm = 0;
++		} elsif (length($tz) == 2) {
++			$tz_hh = 0;
++			$tz_mm = $tz;
++		} else {
++			$tz_hh = $tz;
++			$tz_hh =~ s/([0-9]{2})\z//;
++			$tz_mm = $1;
++		}
++		while ($tz_mm >= 60) {
++			$tz_mm -= 60;
++			$tz_hh += 1;
++		}
++		$sign //= '+';
++		my $off = $sign . ($tz_mm * 60 + ($tz_hh * 60 * 60));
++		$ts -= $off;
++		$sign = '+' if $off == 0;
++		$zone = sprintf('%s%02d%02d', $sign, $tz_hh, $tz_mm);
+ 
+-	# off is the time zone offset in seconds from GMT
+-	my ($ss,$mm,$hh,$day,$month,$year,$off) = strptime($date);
+-	return undef unless(defined $off);
++	# Time::Zone and Date::Parse are part of the same distibution,
++	# and we need Time::Zone to deal with tz names like "EDT"
++	} elsif (eval { require Date::Parse }) {
++		$ts = Date::Parse::str2time($date);
++		return undef unless(defined $ts);
+ 
+-	# Compute the time zone from offset
+-	my $sign = ($off < 0) ? '-' : '+';
+-	my $hour = abs(int($off / 3600));
+-	my $min  = ($off / 60) % 60;
+-	my $zone = sprintf('%s%02d%02d', $sign, $hour, $min);
++		# off is the time zone offset in seconds from GMT
++		my ($ss,$mm,$hh,$day,$month,$year,$off) =
++					Date::Parse::strptime($date);
++		return undef unless(defined $off);
++
++		# Compute the time zone from offset
++		my $sign = ($off < 0) ? '-' : '+';
++		my $hour = abs(int($off / 3600));
++		my $min  = ($off / 60) % 60;
++
++		$zone = sprintf('%s%02d%02d', $sign, $hour, $min);
++	} else {
++		warn "Date::Parse missing for non-RFC822 date: $date\n";
++		return undef;
++	}
+ 
++	# Note: we've already applied the offset to $ts at this point,
++	# but we want to keep "git fsck" happy.
+ 	# "-1200" is the furthest westermost zone offset,
+ 	# but git fast-import is liberal so we use "-1400"
+ 	if ($zone >= 1400 || $zone <= -1400) {
+@@ -59,9 +149,6 @@ sub msg_date_only ($) {
+ 	my @date = $hdr->header_raw('Date');
+ 	my ($ts);
+ 	foreach my $d (@date) {
+-		# Y2K problems: 3-digit years
+-		$d =~ s!([A-Za-z]{3}) ([0-9]{3}) ([0-9]{2}:[0-9]{2}:[0-9]{2})!
+-			my $yyyy = $2 + 1900; "$1 $yyyy $3"!e;
+ 		$ts = eval { str2date_zone($d) } and return $ts;
+ 		if ($@) {
+ 			my $mid = $hdr->header_raw('Message-ID');
+diff --git a/t/msgtime.t b/t/msgtime.t
+index 6b396602..d9643b65 100644
+--- a/t/msgtime.t
++++ b/t/msgtime.t
+@@ -84,4 +84,10 @@ is_deeply(datestamp('Fri, 28 Jun 2002 12:54:40 -700'), [1025294080, '-0700']);
+ is_deeply(datestamp('Sat, 12 Jan 2002 12:52:57 -200'), [1010847177, '-0200']);
+ is_deeply(datestamp('Mon, 05 Nov 2001 10:36:16 -800'), [1004985376, '-0800']);
+ 
++# obsolete formats described in RFC2822
++for (qw(UT GMT Z)) {
++	is_deeply(datestamp('Fri, 02 Oct 1993 00:00:00 '.$_), [ 749520000, '+0000']);
++}
++is_deeply(datestamp('Fri, 02 Oct 1993 00:00:00 EDT'), [ 749534400, '-0400']);
++
+ done_testing();
+-- 
+2.24.1
+
diff --git a/pkgs/servers/mail/public-inbox/default.nix b/pkgs/servers/mail/public-inbox/default.nix
new file mode 100644
index 00000000000..affcb0e8b23
--- /dev/null
+++ b/pkgs/servers/mail/public-inbox/default.nix
@@ -0,0 +1,74 @@
+{ buildPerlPackage, lib, fetchurl, fetchpatch, makeWrapper
+, DBDSQLite, EmailMIME, IOSocketSSL, IPCRun, Plack, PlackMiddlewareReverseProxy
+, SearchXapian, TimeDate, URI
+, git, highlight, openssl, xapian
+}:
+
+let
+
+  # These tests would fail, and produce "Operation not permitted"
+  # errors from git, because they use git init --shared.  This tries
+  # to set the setgid bit, which isn't permitted inside build
+  # sandboxes.
+  #
+  # These tests were indentified with
+  #     grep -r shared t/
+  skippedTests = [ "convert-compact" "search" "v2writable" "www_listing" ];
+
+  testConditions = with lib;
+    concatMapStringsSep " " (n: "! -name ${escapeShellArg n}.t") skippedTests;
+
+in
+
+buildPerlPackage rec {
+  pname = "public-inbox";
+  version = "1.2.0";
+
+  src = fetchurl {
+    url = "https://public-inbox.org/releases/public-inbox-${version}.tar.gz";
+    sha256 = "0sa2m4f2x7kfg3mi4im7maxqmqvawafma8f7g92nyfgybid77g6s";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://public-inbox.org/meta/20200101032822.GA13063@dcvr/raw";
+      sha256 = "0ncxqqkvi5lwi8zaa7lk7l8mf8h278raxsvbvllh3z7jhfb48r3l";
+    })
+    ./0002-msgtime-drop-Date-Parse-for-RFC2822.patch
+  ];
+
+  outputs = [ "out" "devdoc" "sa_config" ];
+
+  postConfigure = ''
+    substituteInPlace Makefile --replace 'TEST_FILES = t/*.t' \
+        'TEST_FILES = $(shell find t -name *.t ${testConditions})'
+  '';
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [
+    DBDSQLite EmailMIME IOSocketSSL IPCRun Plack PlackMiddlewareReverseProxy
+    SearchXapian TimeDate URI highlight
+  ];
+
+  checkInputs = [ git openssl xapian ];
+  preCheck = ''
+    perl certs/create-certs.perl
+  '';
+
+  installTargets = [ "install" ];
+  postInstall = ''
+    for prog in $out/bin/*; do
+        wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ git ]}
+    done
+
+    mv sa_config $sa_config
+  '';
+
+  meta = with lib; {
+    homepage = "https://public-inbox.org/";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ qyliss ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/servers/mail/spamassassin/default.nix b/pkgs/servers/mail/spamassassin/default.nix
index 186f4670153..274f45d5b2d 100644
--- a/pkgs/servers/mail/spamassassin/default.nix
+++ b/pkgs/servers/mail/spamassassin/default.nix
@@ -2,24 +2,27 @@
 
 perlPackages.buildPerlPackage rec {
   pname = "SpamAssassin";
-  version = "3.4.2";
+  version = "3.4.3";
 
   src = fetchurl {
     url = "mirror://apache/spamassassin/source/Mail-${pname}-${version}.tar.bz2";
-    sha256 = "1np8h293bzg33i0xn9gj9krwgr7k6xbyf1yhxr2j2xci95d080yg";
+    sha256 = "1380cmrgjsyidnznr844c5yr9snz36dw7xchdfryi2s61vjzvf55";
   };
 
   # https://bz.apache.org/SpamAssassin/show_bug.cgi?id=7434
   patches = [ ./sa-update_add--siteconfigpath.patch ];
 
-  buildInputs = [ makeWrapper ] ++ (with perlPackages; [ HTMLParser NetDNS NetAddrIP DBFile HTTPDate MailDKIM
-    LWP IOSocketSSL DBI EncodeDetect IPCountry NetIdent Razor2ClientAgent MailSPF NetDNSResolverProgrammable ]);
+  buildInputs = [ makeWrapper ] ++ (with perlPackages; [
+    HTMLParser NetCIDRLite NetDNS NetAddrIP DBFile HTTPDate MailDKIM LWP
+    IOSocketSSL DBI EncodeDetect IPCountry NetIdent Razor2ClientAgent MailSPF
+    NetDNSResolverProgrammable Socket6
+  ]);
 
   # Enabling 'taint' mode is desirable, but that flag disables support
   # for the PERL5LIB environment variable. Needs further investigation.
-  makeFlags = "PERL_BIN=${perlPackages.perl}/bin/perl PERL_TAINT=no";
+  makeFlags = [ "PERL_BIN=${perlPackages.perl}/bin/perl" "PERL_TAINT=no" ];
 
-  makeMakerFlags = "CONFDIR=/homeless/shelter LOCALSTATEDIR=/var/lib/spamassassin";
+  makeMakerFlags = [ "CONFDIR=/homeless/shelter" "LOCALSTATEDIR=/var/lib/spamassassin" ];
 
   doCheck = false;
 
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index 07087315dc2..608ac6028f4 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, python3, openssl
-, enableSystemd ? stdenv.isLinux
+, enableSystemd ? stdenv.isLinux, nixosTests
 }:
 
 with python3.pkgs;
@@ -7,11 +7,11 @@ with python3.pkgs;
 let
   matrix-synapse-ldap3 = buildPythonPackage rec {
     pname = "matrix-synapse-ldap3";
-    version = "0.1.3";
+    version = "0.1.4";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "0a0d1y9yi0abdkv6chbmxr3vk36gynnqzrjhbg26q4zg06lh9kgn";
+      sha256 = "01bms89sl16nyh9f141idsz4mnhxvjrc3gj721wxh1fhikps0djx";
     };
 
     propagatedBuildInputs = [ service-identity ldap3 twisted ];
@@ -23,11 +23,11 @@ let
 
 in buildPythonApplication rec {
   pname = "matrix-synapse";
-  version = "1.6.1";
+  version = "1.9.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "184d7qd76bb2714pfkx9p4zzn4akb6xkx2iw86cpn7aqmccxysld";
+    sha256 = "0ghmxzk2njid7d7ccggda8a9zx4dg1r59n5ymp8f2n9kxz7z2rj2";
   };
 
   patches = [
@@ -78,6 +78,8 @@ in buildPythonApplication rec {
 
   doCheck = !stdenv.isDarwin;
 
+  passthru.tests = { inherit (nixosTests) matrix-synapse; };
+
   checkPhase = ''
     PYTHONPATH=".:$PYTHONPATH" ${python3.interpreter} -m twisted.trial tests
   '';
diff --git a/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix b/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
index 6cbcd4d38f7..d46e3d75f02 100644
--- a/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
+++ b/pkgs/servers/matrix-synapse/matrix-appservice-slack/node-packages.nix
@@ -22,13 +22,13 @@ let
         sha512 = "7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==";
       };
     };
-    "@slack/logger-1.1.0" = {
+    "@slack/logger-1.1.1" = {
       name = "_at_slack_slash_logger";
       packageName = "@slack/logger";
-      version = "1.1.0";
+      version = "1.1.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@slack/logger/-/logger-1.1.0.tgz";
-        sha512 = "D3tabyLoUrsFy0w3koxaCVv+5ZJfIy+j0QW3PUq0XO3UiVuF5rtpAbqngAYVpeKnxPpqBjeth4XJ3tllKoW3aA==";
+        url = "https://registry.npmjs.org/@slack/logger/-/logger-1.1.1.tgz";
+        sha512 = "PAC5CMnNAv/FPtJ0le+YD2wUV+tZ7n3Bnjj9dBI+deIcHsExCnQkQmZE79cLvfuYXbz3PWyv5coti30MJQhEjA==";
       };
     };
     "@slack/rtm-api-5.0.3" = {
@@ -40,22 +40,22 @@ let
         sha512 = "rzNIFst8iuVYyHdE7e3KSrbAtIA7sfS4Pth9ObKUm5KDemX0zyI7YfAijO1kgr1EMriQkjlpKBhlNq9Y+aQr6g==";
       };
     };
-    "@slack/types-1.2.1" = {
+    "@slack/types-1.3.0" = {
       name = "_at_slack_slash_types";
       packageName = "@slack/types";
-      version = "1.2.1";
+      version = "1.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@slack/types/-/types-1.2.1.tgz";
-        sha512 = "NyGh7MibW+a0OHkwwOPlv63hC639dzQdkFy4dj0tl4sAdZR4OBaE/OhXixKhCzcT3kJsPXaQmvkUN7sqSf52iA==";
+        url = "https://registry.npmjs.org/@slack/types/-/types-1.3.0.tgz";
+        sha512 = "3AjHsDJjJKT3q0hQzFHQN7piYIh99LuN7Po56W/R6P/uscqZqwS5xm1U1cTYGIzk8fmsuW7TvWVg0W85hKY/MQ==";
       };
     };
-    "@slack/web-api-5.2.1" = {
+    "@slack/web-api-5.6.0" = {
       name = "_at_slack_slash_web-api";
       packageName = "@slack/web-api";
-      version = "5.2.1";
+      version = "5.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@slack/web-api/-/web-api-5.2.1.tgz";
-        sha512 = "YobhBNMwEFZvfvOIBNU+GNyOqUa/S1rdiWliESYAq9ZcUXGblgEYIL3sxKwuNQckBjCgSYzexT3+nX5dSepwJg==";
+        url = "https://registry.npmjs.org/@slack/web-api/-/web-api-5.6.0.tgz";
+        sha512 = "/HxTI9/4fMk3su1UAa7oN0n8fGSZLHXGUne3WJ+vjxGek2rvvzazqL6yTRWWWcpttPtsNyjk4KI9FkPq+6yLNg==";
       };
     };
     "@types/body-parser-1.17.1" = {
@@ -76,13 +76,13 @@ let
         sha512 = "6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==";
       };
     };
-    "@types/chai-4.2.3" = {
+    "@types/chai-4.2.6" = {
       name = "_at_types_slash_chai";
       packageName = "@types/chai";
-      version = "4.2.3";
+      version = "4.2.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/chai/-/chai-4.2.3.tgz";
-        sha512 = "VRw2xEGbll3ZiTQ4J02/hUjNqZoue1bMhoo2dgM2LXjDdyaq4q80HgBDHwpI0/VKlo4Eg+BavyQMv/NYgTetzA==";
+        url = "https://registry.npmjs.org/@types/chai/-/chai-4.2.6.tgz";
+        sha512 = "HF8faEUA4JurIm+68VaA2KedtZf5LYdXpQEAbIAN79DwWQbO82BNTksZgCH3UMqbZHXex9C6TrBfg7OUInRISQ==";
       };
     };
     "@types/connect-3.4.32" = {
@@ -103,22 +103,22 @@ let
         sha512 = "EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==";
       };
     };
-    "@types/express-4.17.1" = {
+    "@types/express-4.17.2" = {
       name = "_at_types_slash_express";
       packageName = "@types/express";
-      version = "4.17.1";
+      version = "4.17.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/express/-/express-4.17.1.tgz";
-        sha512 = "VfH/XCP0QbQk5B5puLqTLEeFgR8lfCJHZJKkInZ9mkYd+u8byX0kztXEQxEk4wZXJs8HI+7km2ALXjn4YKcX9w==";
+        url = "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz";
+        sha512 = "5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==";
       };
     };
-    "@types/express-serve-static-core-4.16.9" = {
+    "@types/express-serve-static-core-4.17.0" = {
       name = "_at_types_slash_express-serve-static-core";
       packageName = "@types/express-serve-static-core";
-      version = "4.16.9";
+      version = "4.17.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.9.tgz";
-        sha512 = "GqpaVWR0DM8FnRUJYKlWgyARoBUAVfRIeVDZQKOttLFp5SmhhF9YFIYeTPwMd/AXfxlP7xVO2dj1fGu0Q+krKQ==";
+        url = "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.0.tgz";
+        sha512 = "Xnub7w57uvcBqFdIGoRg1KhNOeEj0vB6ykUM7uFWyxvbdE89GFyqgmUcanAriMr4YOxNFZBAWkfcWIb4WBPt3g==";
       };
     };
     "@types/is-stream-1.1.0" = {
@@ -157,13 +157,13 @@ let
         sha512 = "w9Tl3DQCkdT0Ghes+PKhe+3/pZppBXuFFpSCjPJbb2KE3DjYmUpEyCYzjrAYlT9Y1TndnbbnChzkax2h/JorVQ==";
       };
     };
-    "@types/node-12.7.11" = {
+    "@types/node-12.12.14" = {
       name = "_at_types_slash_node";
       packageName = "@types/node";
-      version = "12.7.11";
+      version = "12.12.14";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/node/-/node-12.7.11.tgz";
-        sha512 = "Otxmr2rrZLKRYIybtdG/sgeO+tHY20GxeDjcGmUnmmlCWyEnv2a2x1ZXBo3BTec4OiTXMQCiazB8NMBf0iRlFw==";
+        url = "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz";
+        sha512 = "u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==";
       };
     };
     "@types/node-emoji-1.8.1" = {
@@ -238,22 +238,22 @@ let
         sha512 = "oprSwp094zOglVrXdlo/4bAHtKTAxX6VT8FOZlBKrmyLbNvE1zxZyJ6yikMVtHIvwP45+ZQGJn+FdXGKTozq0g==";
       };
     };
-    "@types/tough-cookie-2.3.5" = {
+    "@types/tough-cookie-2.3.6" = {
       name = "_at_types_slash_tough-cookie";
       packageName = "@types/tough-cookie";
-      version = "2.3.5";
+      version = "2.3.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz";
-        sha512 = "SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==";
+        url = "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz";
+        sha512 = "wHNBMnkoEBiRAd3s8KTKwIuO9biFtTf0LehITzBhSco+HQI0xkXZbLOD55SW3Aqw3oUkHstkm5SPv58yaAdFPQ==";
       };
     };
-    "@types/uuid-3.4.5" = {
+    "@types/uuid-3.4.6" = {
       name = "_at_types_slash_uuid";
       packageName = "@types/uuid";
-      version = "3.4.5";
+      version = "3.4.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.5.tgz";
-        sha512 = "MNL15wC3EKyw1VLF+RoVO4hJJdk9t/Hlv3rt1OL65Qvuadm4BYo6g9ZJQqoq7X8NBFSsQXgAujWciovh2lpVjA==";
+        url = "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.6.tgz";
+        sha512 = "cCdlC/1kGEZdEglzOieLDYBxHsvEOIg7kp/2FYyVR9Pxakq+Qf/inL3RKQ+PA8gOlI/NnL+fXmQH12nwcGzsHw==";
       };
     };
     "@types/ws-5.1.2" = {
@@ -365,13 +365,13 @@ let
         sha512 = "VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==";
       };
     };
-    "arg-4.1.1" = {
+    "arg-4.1.2" = {
       name = "arg";
       packageName = "arg";
-      version = "4.1.1";
+      version = "4.1.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/arg/-/arg-4.1.1.tgz";
-        sha512 = "SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==";
+        url = "https://registry.npmjs.org/arg/-/arg-4.1.2.tgz";
+        sha512 = "+ytCkGcBtHZ3V2r2Z06AncYO8jz46UEamcspGoU8lHcEbpn6J77QK0vdWvChsclg/tM5XIJC5tnjmPp7Eq6Obg==";
       };
     };
     "argparse-1.0.10" = {
@@ -482,13 +482,13 @@ let
         sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
       };
     };
-    "aws4-1.8.0" = {
+    "aws4-1.9.0" = {
       name = "aws4";
       packageName = "aws4";
-      version = "1.8.0";
+      version = "1.9.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz";
-        sha512 = "ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==";
+        url = "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz";
+        sha512 = "Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==";
       };
     };
     "axios-0.18.1" = {
@@ -572,13 +572,13 @@ let
         sha1 = "534b9033c022c9579c56ba3b3e5a5caafbb650e1";
       };
     };
-    "bluebird-3.7.0" = {
+    "bluebird-3.5.5" = {
       name = "bluebird";
       packageName = "bluebird";
-      version = "3.7.0";
+      version = "3.5.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/bluebird/-/bluebird-3.7.0.tgz";
-        sha512 = "aBQ1FxIa7kSWCcmKHlcHFlT2jt6J/l4FzC7KcPELkOJOsPOb/bccdhmIrKDfXhwFrmc7vDoDrrepFvGqjyXGJg==";
+        url = "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz";
+        sha512 = "5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==";
       };
     };
     "body-parser-1.19.0" = {
@@ -788,13 +788,13 @@ let
         sha512 = "FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==";
       };
     };
-    "commander-2.20.1" = {
+    "commander-2.20.3" = {
       name = "commander";
       packageName = "commander";
-      version = "2.20.1";
+      version = "2.20.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/commander/-/commander-2.20.1.tgz";
-        sha512 = "cCuLsMhJeWQ/ZpsFTbE765kvVfoeSddc4nU3up4fV+fDBcfUXnbITJ+JzhkdjzOqhURjZgujxaioam4RM9yGUg==";
+        url = "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz";
+        sha512 = "GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==";
       };
     };
     "concat-map-0.0.1" = {
@@ -842,13 +842,13 @@ let
         sha1 = "e303a882b342cc3ee8ca513a79999734dab3ae2c";
       };
     };
-    "core-js-2.6.9" = {
+    "core-js-2.6.10" = {
       name = "core-js";
       packageName = "core-js";
-      version = "2.6.9";
+      version = "2.6.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz";
-        sha512 = "HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==";
+        url = "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz";
+        sha512 = "I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==";
       };
     };
     "core-util-is-1.0.2" = {
@@ -1040,22 +1040,22 @@ let
         sha512 = "zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA==";
       };
     };
-    "es-abstract-1.15.0" = {
+    "es-abstract-1.16.3" = {
       name = "es-abstract";
       packageName = "es-abstract";
-      version = "1.15.0";
+      version = "1.16.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz";
-        sha512 = "bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==";
+        url = "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.3.tgz";
+        sha512 = "WtY7Fx5LiOnSYgF5eg/1T+GONaGmpvpPdCpSnYij+U2gDTL0UPfWrhDw7b2IYb+9NQJsYpCA0wOQvZfsd6YwRw==";
       };
     };
-    "es-to-primitive-1.2.0" = {
+    "es-to-primitive-1.2.1" = {
       name = "es-to-primitive";
       packageName = "es-to-primitive";
-      version = "1.2.0";
+      version = "1.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz";
-        sha512 = "qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==";
+        url = "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz";
+        sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
       };
     };
     "escape-html-1.0.3" = {
@@ -1409,13 +1409,13 @@ let
         sha1 = "b5d454dc2199ae225699f3467e5a07f3b955bafd";
       };
     };
-    "has-symbols-1.0.0" = {
+    "has-symbols-1.0.1" = {
       name = "has-symbols";
       packageName = "has-symbols";
-      version = "1.0.0";
+      version = "1.0.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz";
-        sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
+        url = "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz";
+        sha512 = "PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==";
       };
     };
     "he-1.2.0" = {
@@ -1580,13 +1580,13 @@ let
         sha1 = "12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44";
       };
     };
-    "is-symbol-1.0.2" = {
+    "is-symbol-1.0.3" = {
       name = "is-symbol";
       packageName = "is-symbol";
-      version = "1.0.2";
+      version = "1.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz";
-        sha512 = "HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==";
+        url = "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz";
+        sha512 = "OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==";
       };
     };
     "is-typedarray-1.0.0" = {
@@ -1778,13 +1778,13 @@ let
         sha512 = "+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==";
       };
     };
-    "loglevel-1.6.1" = {
+    "loglevel-1.6.6" = {
       name = "loglevel";
       packageName = "loglevel";
-      version = "1.6.1";
+      version = "1.6.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz";
-        sha1 = "e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa";
+        url = "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz";
+        sha512 = "Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==";
       };
     };
     "make-error-1.3.5" = {
@@ -1805,31 +1805,31 @@ let
         sha512 = "pfDSB7QYoVg0Io4KMV9hhPoXpj6p0uBscgtyUSKCOFZe8bqgbpStfgnKIbF/ulnr6U3ICu4OqdyxAqBgOhZwBQ==";
       };
     };
-    "matrix-appservice-0.3.5" = {
+    "matrix-appservice-0.4.1" = {
       name = "matrix-appservice";
       packageName = "matrix-appservice";
-      version = "0.3.5";
+      version = "0.4.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/matrix-appservice/-/matrix-appservice-0.3.5.tgz";
-        sha512 = "oQcxlpERcUj90QbGjV7t5Ly5/Aze/sUwB9ZrIt1UMFwuNT+CgEzA7cxLDHAiJkXfgoNzFvjVnKJ3203oIuLONQ==";
+        url = "https://registry.npmjs.org/matrix-appservice/-/matrix-appservice-0.4.1.tgz";
+        sha512 = "mxHr9XDOvN/p6OFrfb4kkcEjCPftnXNzMS8Lg9Cz/pDy1arfRWq11vl9pL9bjzBaAouBGLpW1JzmCR2MsW+VKA==";
       };
     };
-    "matrix-appservice-bridge-1.10.3" = {
+    "matrix-appservice-bridge-1.11.1" = {
       name = "matrix-appservice-bridge";
       packageName = "matrix-appservice-bridge";
-      version = "1.10.3";
+      version = "1.11.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/matrix-appservice-bridge/-/matrix-appservice-bridge-1.10.3.tgz";
-        sha512 = "PqAExCsokZOAnY/d2uqTmB7sCVNKDSHZ9R1V8hDNr6rtMUmO3jIuuKNuwFudeOGL2iYcqzB+s8tCz7yh9a3dew==";
+        url = "https://registry.npmjs.org/matrix-appservice-bridge/-/matrix-appservice-bridge-1.11.1.tgz";
+        sha512 = "xrtjxScBIx33HRkiK/5G6wkUxZ9jxF9GqTiKzM/Fn7CgMZoHVDIms3sTc7ybZKA6RHAqH68bg4Eg4JbGCtUrhw==";
       };
     };
-    "matrix-js-sdk-2.4.1" = {
+    "matrix-js-sdk-2.4.5" = {
       name = "matrix-js-sdk";
       packageName = "matrix-js-sdk";
-      version = "2.4.1";
+      version = "2.4.5";
       src = fetchurl {
-        url = "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-2.4.1.tgz";
-        sha512 = "5mOp396eOtvaMiuUD85TWvuxSP532PuvtH/QLugBGenI15FGwtnC40cTnVYviYWGBi340FPrOKWulc5ILRX6qQ==";
+        url = "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-2.4.5.tgz";
+        sha512 = "Mh0fPoiqyXRksFNYS4/2s20xAklmYVIgSms3qFvLhno32LN43NizUoAMBYYGtyjt8BQi+U77lbNL0s5f2V7gPQ==";
       };
     };
     "media-typer-0.3.0" = {
@@ -1868,22 +1868,22 @@ let
         sha512 = "x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==";
       };
     };
-    "mime-db-1.40.0" = {
+    "mime-db-1.42.0" = {
       name = "mime-db";
       packageName = "mime-db";
-      version = "1.40.0";
+      version = "1.42.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz";
-        sha512 = "jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==";
+        url = "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz";
+        sha512 = "UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==";
       };
     };
-    "mime-types-2.1.24" = {
+    "mime-types-2.1.25" = {
       name = "mime-types";
       packageName = "mime-types";
-      version = "2.1.24";
+      version = "2.1.25";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz";
-        sha512 = "WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==";
+        url = "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz";
+        sha512 = "5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==";
       };
     };
     "minimatch-3.0.4" = {
@@ -1922,13 +1922,13 @@ let
         sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
       };
     };
-    "mocha-6.2.1" = {
+    "mocha-6.2.2" = {
       name = "mocha";
       packageName = "mocha";
-      version = "6.2.1";
+      version = "6.2.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/mocha/-/mocha-6.2.1.tgz";
-        sha512 = "VCcWkLHwk79NYQc8cxhkmI8IigTIhsCwZ6RTxQsqK6go4UvEhzJkYuHm8B2YtlSxcYq2fY+ucr4JBwoD6ci80A==";
+        url = "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz";
+        sha512 = "FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==";
       };
     };
     "moment-2.24.0" = {
@@ -2039,13 +2039,13 @@ let
         sha512 = "OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==";
       };
     };
-    "object-inspect-1.6.0" = {
+    "object-inspect-1.7.0" = {
       name = "object-inspect";
       packageName = "object-inspect";
-      version = "1.6.0";
+      version = "1.7.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz";
-        sha512 = "GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==";
+        url = "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz";
+        sha512 = "a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==";
       };
     };
     "object-keys-1.1.1" = {
@@ -2156,22 +2156,22 @@ let
         sha512 = "n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==";
       };
     };
-    "p-queue-6.1.1" = {
+    "p-queue-6.2.1" = {
       name = "p-queue";
       packageName = "p-queue";
-      version = "6.1.1";
+      version = "6.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/p-queue/-/p-queue-6.1.1.tgz";
-        sha512 = "R9gq36Th88xZ+rWAptN5IXLwqkwA1gagCQhT6ZXQ6RxEfmjb9ZW+UBzRVqv9sm5TQmbbI/TsKgGLbOaA61xR5w==";
+        url = "https://registry.npmjs.org/p-queue/-/p-queue-6.2.1.tgz";
+        sha512 = "wV8yC/rkuWpgu9LGKJIb48OynYSrE6lVl2Bx6r8WjbyVKrFAzzQ/QevAvwnDjlD+mLt8xy0LTDOU1freOvMTCg==";
       };
     };
-    "p-retry-4.1.0" = {
+    "p-retry-4.2.0" = {
       name = "p-retry";
       packageName = "p-retry";
-      version = "4.1.0";
+      version = "4.2.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/p-retry/-/p-retry-4.1.0.tgz";
-        sha512 = "oepllyG9gX1qH4Sm20YAKxg1GA7L7puhvGnTfimi31P07zSIj7SDV6YtuAx9nbJF51DES+2CIIRkXs8GKqWJxA==";
+        url = "https://registry.npmjs.org/p-retry/-/p-retry-4.2.0.tgz";
+        sha512 = "jPH38/MRh263KKcq0wBNOGFJbm+U6784RilTmHjB/HM9kH9V8WlCpVUcdOmip9cjXOh6MxZ5yk1z2SjDUJfWmA==";
       };
     };
     "p-timeout-3.2.0" = {
@@ -2309,13 +2309,13 @@ let
         sha512 = "UiJyO5B9zZpu32GSlP0tXy8J2NsJ9EFGFfz5v6PSbdz/1hBLX1rNiiy5+mAm5iJJYwfCv4A0EBcQLGWwjbpzZw==";
       };
     };
-    "pg-promise-9.3.3" = {
+    "pg-promise-9.3.6" = {
       name = "pg-promise";
       packageName = "pg-promise";
-      version = "9.3.3";
+      version = "9.3.6";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pg-promise/-/pg-promise-9.3.3.tgz";
-        sha512 = "C7Mj5RSUvK0cGOaJ0p1fcOk5jhS1n+HgY+DoE8s1+Zjzf6ta70zYDIlOmy6MtYWs4DFHhUW654hb0FmtGKkIkg==";
+        url = "https://registry.npmjs.org/pg-promise/-/pg-promise-9.3.6.tgz";
+        sha512 = "b64UalKAkUImn01z7LeG2NtTTsp0TYfqMzo1vXjO2bDAshL+kXJ2HvCyHstJ4Nj8hLeqtCe0Tar5TbB4QGUHfw==";
       };
     };
     "pg-types-2.2.0" = {
@@ -2399,13 +2399,13 @@ let
         sha512 = "t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==";
       };
     };
-    "psl-1.4.0" = {
+    "psl-1.6.0" = {
       name = "psl";
       packageName = "psl";
-      version = "1.4.0";
+      version = "1.6.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz";
-        sha512 = "HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==";
+        url = "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz";
+        sha512 = "SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==";
       };
     };
     "punycode-1.4.1" = {
@@ -2516,22 +2516,22 @@ let
         sha512 = "NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==";
       };
     };
-    "request-promise-core-1.1.2" = {
+    "request-promise-core-1.1.3" = {
       name = "request-promise-core";
       packageName = "request-promise-core";
-      version = "1.1.2";
+      version = "1.1.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz";
-        sha512 = "UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==";
+        url = "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz";
+        sha512 = "QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==";
       };
     };
-    "request-promise-native-1.0.7" = {
+    "request-promise-native-1.0.8" = {
       name = "request-promise-native";
       packageName = "request-promise-native";
-      version = "1.0.7";
+      version = "1.0.8";
       src = fetchurl {
-        url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz";
-        sha512 = "rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==";
+        url = "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz";
+        sha512 = "dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==";
       };
     };
     "require-directory-2.1.1" = {
@@ -2552,13 +2552,13 @@ let
         sha512 = "NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==";
       };
     };
-    "resolve-1.12.0" = {
+    "resolve-1.13.1" = {
       name = "resolve";
       packageName = "resolve";
-      version = "1.12.0";
+      version = "1.13.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz";
-        sha512 = "B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==";
+        url = "https://registry.npmjs.org/resolve/-/resolve-1.13.1.tgz";
+        sha512 = "CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w==";
       };
     };
     "retry-0.12.0" = {
@@ -2678,13 +2678,13 @@ let
         sha512 = "UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==";
       };
     };
-    "source-map-support-0.5.13" = {
+    "source-map-support-0.5.16" = {
       name = "source-map-support";
       packageName = "source-map-support";
-      version = "0.5.13";
+      version = "0.5.16";
       src = fetchurl {
-        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz";
-        sha512 = "SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==";
+        url = "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz";
+        sha512 = "efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==";
       };
     };
     "spex-3.0.0" = {
@@ -2903,13 +2903,13 @@ let
         sha512 = "XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==";
       };
     };
-    "ts-node-8.4.1" = {
+    "ts-node-8.5.4" = {
       name = "ts-node";
       packageName = "ts-node";
-      version = "8.4.1";
+      version = "8.5.4";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ts-node/-/ts-node-8.4.1.tgz";
-        sha512 = "5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==";
+        url = "https://registry.npmjs.org/ts-node/-/ts-node-8.5.4.tgz";
+        sha512 = "izbVCRV68EasEPQ8MSIGBNK9dc/4sYJJKYA+IarMQct1RtEot6Xp0bXuClsbUSnKpg50ho+aOAx8en5c+y4OFw==";
       };
     };
     "tslib-1.10.0" = {
@@ -2921,13 +2921,13 @@ let
         sha512 = "qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==";
       };
     };
-    "tslint-5.20.0" = {
+    "tslint-5.20.1" = {
       name = "tslint";
       packageName = "tslint";
-      version = "5.20.0";
+      version = "5.20.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz";
-        sha512 = "2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==";
+        url = "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz";
+        sha512 = "EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==";
       };
     };
     "tsutils-2.29.0" = {
@@ -2975,13 +2975,13 @@ let
         sha512 = "TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==";
       };
     };
-    "typescript-3.6.3" = {
+    "typescript-3.7.3" = {
       name = "typescript";
       packageName = "typescript";
-      version = "3.6.3";
+      version = "3.7.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/typescript/-/typescript-3.6.3.tgz";
-        sha512 = "N7bceJL1CtRQ2RiG0AQME13ksR7DiuQh/QehubYcghzv20tnh+MQnQIuJddTmsbqYj+dztchykemz0zFzlvdQw==";
+        url = "https://registry.npmjs.org/typescript/-/typescript-3.7.3.tgz";
+        sha512 = "Mcr/Qk7hXqFBXMN7p7Lusj1ktCBydylfQM/FZCk5glCNQJrCUKPkMHdo9R0MTFWsC/4kPFvDS0fDPvukfCkFsw==";
       };
     };
     "underscore-1.4.4" = {
@@ -2993,13 +2993,13 @@ let
         sha1 = "61a6a32010622afa07963bf325203cf12239d604";
       };
     };
-    "unhomoglyph-1.0.2" = {
+    "unhomoglyph-1.0.3" = {
       name = "unhomoglyph";
       packageName = "unhomoglyph";
-      version = "1.0.2";
+      version = "1.0.3";
       src = fetchurl {
-        url = "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.2.tgz";
-        sha1 = "d69e5f5a6a1c6b211941a0889b81eba86595c253";
+        url = "https://registry.npmjs.org/unhomoglyph/-/unhomoglyph-1.0.3.tgz";
+        sha512 = "PC/OAHE8aiTK0Gfmy0PxOlePazRn+BeCM1r4kFtkHgEnkJZgJoI7yD2yUEjsfSdLXKU1FSt/EcIZvNoKazYUTw==";
       };
     };
     "unpipe-1.0.0" = {
@@ -3212,42 +3212,42 @@ let
   };
 in
 {
-  "matrix-appservice-slack-git+https://github.com/matrix-org/matrix-appservice-slack.git#1.0.1" = nodeEnv.buildNodePackage {
+  "matrix-appservice-slack-git+https://github.com/matrix-org/matrix-appservice-slack.git#1.0.2" = nodeEnv.buildNodePackage {
     name = "matrix-appservice-slack";
     packageName = "matrix-appservice-slack";
-    version = "1.0.1";
+    version = "1.0.2";
     src = fetchgit {
       url = "https://github.com/matrix-org/matrix-appservice-slack.git";
-      rev = "3e30ae24faa0d457bea7f650a22083223af8d957";
-      sha256 = "40a68132606da347ffb90650ca5e0bd1e2be3025397c2f48e286fe9f5e78e847";
+      rev = "8202c97c1fee0f8215f86b0fda1845ca17db3612";
+      sha256 = "b419d34771f4f4be56fe66ba4cbf690fb5a337e317a927e70e65be3f1ddd55ef";
     };
     dependencies = [
       sources."@babel/code-frame-7.5.5"
       sources."@babel/highlight-7.5.0"
-      sources."@slack/logger-1.1.0"
+      sources."@slack/logger-1.1.1"
       (sources."@slack/rtm-api-5.0.3" // {
         dependencies = [
           sources."p-queue-2.4.2"
         ];
       })
-      sources."@slack/types-1.2.1"
-      (sources."@slack/web-api-5.2.1" // {
+      sources."@slack/types-1.3.0"
+      (sources."@slack/web-api-5.6.0" // {
         dependencies = [
           sources."p-queue-2.4.2"
         ];
       })
       sources."@types/body-parser-1.17.1"
       sources."@types/caseless-0.12.2"
-      sources."@types/chai-4.2.3"
+      sources."@types/chai-4.2.6"
       sources."@types/connect-3.4.32"
       sources."@types/events-3.0.0"
-      sources."@types/express-4.17.1"
-      sources."@types/express-serve-static-core-4.16.9"
+      sources."@types/express-4.17.2"
+      sources."@types/express-serve-static-core-4.17.0"
       sources."@types/is-stream-1.1.0"
       sources."@types/mime-2.0.1"
       sources."@types/mocha-5.2.7"
       sources."@types/nedb-1.8.9"
-      sources."@types/node-12.7.11"
+      sources."@types/node-12.12.14"
       sources."@types/node-emoji-1.8.1"
       sources."@types/p-queue-2.3.2"
       sources."@types/randomstring-1.1.6"
@@ -3256,8 +3256,8 @@ in
       sources."@types/request-promise-native-1.0.17"
       sources."@types/retry-0.12.0"
       sources."@types/serve-static-1.13.3"
-      sources."@types/tough-cookie-2.3.5"
-      sources."@types/uuid-3.4.5"
+      sources."@types/tough-cookie-2.3.6"
+      sources."@types/uuid-3.4.6"
       sources."@types/ws-5.1.2"
       sources."@types/yargs-13.0.3"
       sources."@types/yargs-parser-13.1.0"
@@ -3269,7 +3269,7 @@ in
       sources."ansi-colors-3.2.3"
       sources."ansi-regex-4.1.0"
       sources."ansi-styles-3.2.1"
-      sources."arg-4.1.1"
+      sources."arg-4.1.2"
       sources."argparse-1.0.10"
       sources."array-flatten-1.1.1"
       sources."array-uniq-1.0.2"
@@ -3281,7 +3281,7 @@ in
       sources."async-limiter-1.0.1"
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
-      sources."aws4-1.8.0"
+      sources."aws4-1.9.0"
       sources."axios-0.18.1"
       sources."babel-runtime-6.26.0"
       sources."balanced-match-1.0.0"
@@ -3322,13 +3322,13 @@ in
       sources."colors-1.4.0"
       sources."colorspace-1.1.2"
       sources."combined-stream-1.0.8"
-      sources."commander-2.20.1"
+      sources."commander-2.20.3"
       sources."concat-map-0.0.1"
       sources."content-disposition-0.5.3"
       sources."content-type-1.0.4"
       sources."cookie-0.4.0"
       sources."cookie-signature-1.0.6"
-      sources."core-js-2.6.9"
+      sources."core-js-2.6.10"
       sources."core-util-is-1.0.2"
       sources."cycle-1.0.3"
       sources."dashdash-1.14.1"
@@ -3347,8 +3347,8 @@ in
       sources."enabled-1.0.2"
       sources."encodeurl-1.0.2"
       sources."env-variable-0.0.5"
-      sources."es-abstract-1.15.0"
-      sources."es-to-primitive-1.2.0"
+      sources."es-abstract-1.16.3"
+      sources."es-to-primitive-1.2.1"
       sources."escape-html-1.0.3"
       sources."escape-string-regexp-2.0.0"
       sources."esprima-4.0.1"
@@ -3393,7 +3393,7 @@ in
       sources."har-validator-5.1.3"
       sources."has-1.0.3"
       sources."has-flag-3.0.0"
-      sources."has-symbols-1.0.0"
+      sources."has-symbols-1.0.1"
       sources."he-1.2.0"
       sources."http-errors-1.7.2"
       sources."http-signature-1.2.0"
@@ -3412,7 +3412,7 @@ in
       sources."is-property-1.0.2"
       sources."is-regex-1.0.4"
       sources."is-stream-1.1.0"
-      sources."is-symbol-1.0.2"
+      sources."is-symbol-1.0.3"
       sources."is-typedarray-1.0.0"
       sources."isarray-1.0.0"
       sources."isexe-2.0.0"
@@ -3437,22 +3437,22 @@ in
           sources."ms-2.1.2"
         ];
       })
-      sources."loglevel-1.6.1"
+      sources."loglevel-1.6.6"
       sources."make-error-1.3.5"
       sources."manakin-0.5.2"
-      sources."matrix-appservice-0.3.5"
-      sources."matrix-appservice-bridge-1.10.3"
-      (sources."matrix-js-sdk-2.4.1" // {
+      sources."matrix-appservice-0.4.1"
+      sources."matrix-appservice-bridge-1.11.1"
+      (sources."matrix-js-sdk-2.4.5" // {
         dependencies = [
-          sources."bluebird-3.7.0"
+          sources."bluebird-3.5.5"
         ];
       })
       sources."media-typer-0.3.0"
       sources."merge-descriptors-1.0.1"
       sources."methods-1.1.2"
       sources."mime-1.6.0"
-      sources."mime-db-1.40.0"
-      sources."mime-types-2.1.24"
+      sources."mime-db-1.42.0"
+      sources."mime-types-2.1.25"
       sources."minimatch-3.0.4"
       sources."minimist-1.2.0"
       (sources."mkdirp-0.5.1" // {
@@ -3460,7 +3460,7 @@ in
           sources."minimist-0.0.8"
         ];
       })
-      (sources."mocha-6.2.1" // {
+      (sources."mocha-6.2.2" // {
         dependencies = [
           sources."debug-3.2.6"
           sources."escape-string-regexp-1.0.5"
@@ -3486,7 +3486,7 @@ in
       sources."nopt-3.0.6"
       sources."oauth-sign-0.9.0"
       sources."object-hash-1.3.1"
-      sources."object-inspect-1.6.0"
+      sources."object-inspect-1.7.0"
       sources."object-keys-1.1.1"
       sources."object.assign-4.1.0"
       sources."object.getownpropertydescriptors-2.0.3"
@@ -3498,12 +3498,12 @@ in
       sources."p-finally-1.0.0"
       sources."p-limit-2.2.1"
       sources."p-locate-3.0.0"
-      (sources."p-queue-6.1.1" // {
+      (sources."p-queue-6.2.1" // {
         dependencies = [
           sources."eventemitter3-4.0.0"
         ];
       })
-      sources."p-retry-4.1.0"
+      sources."p-retry-4.2.0"
       sources."p-timeout-3.2.0"
       sources."p-try-2.2.0"
       sources."packet-reader-1.0.0"
@@ -3519,7 +3519,7 @@ in
       sources."pg-int8-1.0.1"
       sources."pg-minify-1.5.1"
       sources."pg-pool-2.0.7"
-      sources."pg-promise-9.3.3"
+      sources."pg-promise-9.3.6"
       sources."pg-types-2.2.0"
       sources."pgpass-1.0.2"
       sources."postgres-array-2.0.0"
@@ -3529,7 +3529,7 @@ in
       sources."process-nextick-args-2.0.1"
       sources."prom-client-11.5.3"
       sources."proxy-addr-2.0.5"
-      sources."psl-1.4.0"
+      sources."psl-1.6.0"
       sources."punycode-2.1.1"
       sources."qs-6.7.0"
       sources."quick-lru-4.0.1"
@@ -3544,11 +3544,11 @@ in
           sources."qs-6.5.2"
         ];
       })
-      sources."request-promise-core-1.1.2"
-      sources."request-promise-native-1.0.7"
+      sources."request-promise-core-1.1.3"
+      sources."request-promise-native-1.0.8"
       sources."require-directory-2.1.1"
       sources."require-main-filename-2.0.0"
-      sources."resolve-1.12.0"
+      sources."resolve-1.13.1"
       sources."retry-0.12.0"
       sources."safe-buffer-5.1.2"
       sources."safer-buffer-2.1.2"
@@ -3568,7 +3568,7 @@ in
       sources."setprototypeof-1.1.1"
       sources."simple-swizzle-0.2.2"
       sources."source-map-0.6.1"
-      sources."source-map-support-0.5.13"
+      sources."source-map-support-0.5.16"
       sources."spex-3.0.0"
       sources."split-1.0.1"
       sources."sprintf-js-1.0.3"
@@ -3597,13 +3597,13 @@ in
         ];
       })
       sources."triple-beam-1.3.0"
-      (sources."ts-node-8.4.1" // {
+      (sources."ts-node-8.5.4" // {
         dependencies = [
           sources."diff-4.0.1"
         ];
       })
       sources."tslib-1.10.0"
-      (sources."tslint-5.20.0" // {
+      (sources."tslint-5.20.1" // {
         dependencies = [
           sources."diff-4.0.1"
           sources."semver-5.7.1"
@@ -3614,9 +3614,9 @@ in
       sources."tweetnacl-0.14.5"
       sources."type-detect-4.0.8"
       sources."type-is-1.6.18"
-      sources."typescript-3.6.3"
+      sources."typescript-3.7.3"
       sources."underscore-1.4.4"
-      sources."unhomoglyph-1.0.2"
+      sources."unhomoglyph-1.0.3"
       sources."unpipe-1.0.0"
       sources."uri-js-4.2.2"
       sources."util-deprecate-1.0.2"
diff --git a/pkgs/servers/matrix-synapse/matrix-appservice-slack/package.json b/pkgs/servers/matrix-synapse/matrix-appservice-slack/package.json
index 72d259f26ce..87dada8f027 100644
--- a/pkgs/servers/matrix-synapse/matrix-appservice-slack/package.json
+++ b/pkgs/servers/matrix-synapse/matrix-appservice-slack/package.json
@@ -1,3 +1,3 @@
 [
-    {"matrix-appservice-slack": "git+https://github.com/matrix-org/matrix-appservice-slack.git#1.0.1" }
+    {"matrix-appservice-slack": "git+https://github.com/matrix-org/matrix-appservice-slack.git#1.0.2" }
 ]
diff --git a/pkgs/servers/matterbridge/default.nix b/pkgs/servers/matterbridge/default.nix
index 673d3f1f21b..2226d960581 100644
--- a/pkgs/servers/matterbridge/default.nix
+++ b/pkgs/servers/matterbridge/default.nix
@@ -1,14 +1,15 @@
-{ stdenv, buildGoPackage, fetchurl }:
+{ stdenv, buildGoModule, fetchurl }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "matterbridge";
-  version = "1.11.0";
+  version = "1.16.3";
 
   goPackagePath = "github.com/42wim/matterbridge";
+  modSha256 = "sha256-Q6R6AhAELirFijw5ntyjly46HCzFMpLGSJYfv864gt0=";
 
   src = fetchurl {
     url = "https://github.com/42wim/matterbridge/archive/v${version}.tar.gz";
-    sha256 = "1fjpgdaq4mfgf36gzk3hhmlbpfn44b7xll2rdpy69y460jrjfg6k";
+    sha256 = "sha256-VAbZSXilmmd2z2bK4/UZzOrjohDVcJHah9t3DE1mtOE=";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/servers/mautrix-telegram/default.nix b/pkgs/servers/mautrix-telegram/default.nix
index 415609e77c2..5089acc2a0f 100644
--- a/pkgs/servers/mautrix-telegram/default.nix
+++ b/pkgs/servers/mautrix-telegram/default.nix
@@ -4,30 +4,32 @@ with python3.pkgs;
 
 buildPythonPackage rec {
   pname = "mautrix-telegram";
-  version = "0.6.1";
+  version = "0.7.0";
+  disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1lsi6x5yr8f9yjxsh1rmcd6wnxr6s6rpr720lg7sq629m42d9p1d";
+    sha256 = "0xzivcn1s5j2nn9p7li9bzr0h225bnli4fr3yrh8v7npx2ymg1r3";
   };
 
   patches = [
+    # fix tests
     (fetchpatch {
-      url = https://github.com/tulir/mautrix-telegram/commit/be6d395ed66d86ec7f13a262f9ae37731987019c.patch;
-      sha256 = "1q69ip17r45yhyrxr0pj8bvqj2grw2l39wak8pi5pm7qrxra93j2";
+      url = "https://github.com/tulir/mautrix-telegram/commit/fe52f0ad106122f08af72e356c4c62bb8875b453.patch";
+      sha256 = "0r7j7q78brqqx0rkchld328k00yq0ykdk7syvwpihqzj3gchacb7";
     })
   ];
 
-  disabled = pythonOlder "3.6";
-
   postPatch = ''
     sed -i -e '/alembic>/d' setup.py
+    substituteInPlace setup.py \
+      --replace "telethon>=1.9,<1.10" "telethon~=1.9"
   '';
 
   propagatedBuildInputs = [
     Mako
     aiohttp
-    mautrix-appservice
+    mautrix
     sqlalchemy
     CommonMark
     ruamel_yaml
@@ -63,6 +65,7 @@ buildPythonPackage rec {
     homepage = https://github.com/tulir/mautrix-telegram;
     description = "A Matrix-Telegram hybrid puppeting/relaybot bridge";
     license = licenses.agpl3Plus;
+    platforms = platforms.linux;
     maintainers = with maintainers; [ nyanloutre ma27 ];
   };
 }
diff --git a/pkgs/servers/mautrix-whatsapp/0001-Add-missing-go-dependencies-to-go.sum.patch b/pkgs/servers/mautrix-whatsapp/0001-Add-missing-go-dependencies-to-go.sum.patch
deleted file mode 100644
index e1fd5f4725b..00000000000
--- a/pkgs/servers/mautrix-whatsapp/0001-Add-missing-go-dependencies-to-go.sum.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From e9b9d97074ab811747792ef86f3d195709b65751 Mon Sep 17 00:00:00 2001
-From: Maximilian Bosch <maximilian@mbosch.me>
-Date: Fri, 29 Nov 2019 16:27:15 +0100
-Subject: [PATCH] Add missing go dependencies to go.sum
-
-Generated by running `go build` locally. Otherwise some dependencies are
-missing when building with `buildGoModule` in Nix as it tries to fetch
-the packages during compilation and fails with the following error:
-
-```
-verifying maunium.net/go/mautrix-appservice@v0.1.0-alpha.3.0.20191110192030-cd699619a163: maunium.net/go/mautrix-appservice@v0.1.0-alpha.3.0.20191110192030-cd699619a163: Get https://sum.golang.org/lookup/maunium.net/go/mautrix-appservice@v0.1.0-alpha.3.0.20191110192030-cd699619a163: dial tcp: lookup sum.golang.org on [::1]:53: read udp [::1]:44681->[::1]:53: read: connection refused
-builder for '/nix/store/qxpy80j6y4gl1h6hplsznml1ffrca6az-mautrix-whatsapp-unstable-2019-11-17.drv' failed with exit code 1
-```
----
- go.sum | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/go.sum b/go.sum
-index f638f9a..ab7e907 100644
---- a/go.sum
-+++ b/go.sum
-@@ -45,6 +45,7 @@ github.com/tulir/go-whatsapp v0.0.2-0.20190830212741-33ca6ee47cf5 h1:0pUczFGOo4s
- github.com/tulir/go-whatsapp v0.0.2-0.20190830212741-33ca6ee47cf5/go.mod h1:u3Hdptbz3iB5y/NEoSKgsp9hBzUlm0A5OrLMVdENAX8=
- github.com/tulir/go-whatsapp v0.0.2-0.20190903182221-4e1a838ff3ba h1:exEcedSHn0qEZ1iwNwFF5brEuflhMScjFyyzmxUA+og=
- github.com/tulir/go-whatsapp v0.0.2-0.20190903182221-4e1a838ff3ba/go.mod h1:u3Hdptbz3iB5y/NEoSKgsp9hBzUlm0A5OrLMVdENAX8=
-+github.com/tulir/go-whatsapp v0.0.2-0.20191109203156-c477dae1c7e9 h1:WyLOadcpkAvoyaGfUvBgj/mTHetzliBGFioEEtM+Ac8=
- github.com/tulir/go-whatsapp v0.0.2-0.20191109203156-c477dae1c7e9/go.mod h1:ustkccVUt0hOuKikjFb6b4Eray6At5djkcKYYu4+Lco=
- golang.org/x/crypto v0.0.0-20190131182504-b8fe1690c613/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
- golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
-@@ -73,6 +74,7 @@ maunium.net/go/mautrix v0.1.0-alpha.3.0.20190622085722-6406f15cb8e3 h1:oVabjOi2r
- maunium.net/go/mautrix v0.1.0-alpha.3.0.20190622085722-6406f15cb8e3/go.mod h1:O+QWJP3H7BZEzIBSrECKpnpRnEKBwaoWVEu/yZwVwxg=
- maunium.net/go/mautrix v0.1.0-alpha.3.0.20190825132810-9d870654e9d2 h1:0iVxLLAOSBqtJqhIjW9EbblMsaSYoCJRo5mHPZnytUk=
- maunium.net/go/mautrix v0.1.0-alpha.3.0.20190825132810-9d870654e9d2/go.mod h1:O+QWJP3H7BZEzIBSrECKpnpRnEKBwaoWVEu/yZwVwxg=
-+maunium.net/go/mautrix v0.1.0-alpha.3.0.20191110191816-178ce1f1561d h1:lfEHd6diaoKLdZvVNcmBF9kD667xWw+x7iXlvfpEd00=
- maunium.net/go/mautrix v0.1.0-alpha.3.0.20191110191816-178ce1f1561d/go.mod h1:O+QWJP3H7BZEzIBSrECKpnpRnEKBwaoWVEu/yZwVwxg=
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190618052224-6e6c9bb47548 h1:ni1nqs+2AOO+g1ND6f2W0pMcb6sIDVqzerXosO+pI2g=
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190618052224-6e6c9bb47548/go.mod h1:yVWU0gvIHIXClgyVnShiufiDksFbFrBqHG9lDAYcmGI=
-@@ -86,4 +88,5 @@ maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190830063827-e7dcd7e42e7c h
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190830063827-e7dcd7e42e7c/go.mod h1:FJRRpH5+p3wCfEt6u/3kMeu9aGX/pk2PqtvjRDRW74w=
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190901152202-40639f5932be h1:sSBx9AGR4iYHRFwljqNwxXFtbY2bKLJHgI9B4whAU8I=
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20190901152202-40639f5932be/go.mod h1:FJRRpH5+p3wCfEt6u/3kMeu9aGX/pk2PqtvjRDRW74w=
-+maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20191110192030-cd699619a163 h1:+tWThOHlyIW2VITR4A05wuhixu0AH8iZZ/Ha7AwkAys=
- maunium.net/go/mautrix-appservice v0.1.0-alpha.3.0.20191110192030-cd699619a163/go.mod h1:ST7YYCoHtFC4c7/Iga8W5wwKXyxjwVh4DlsnyIU6rYw=
--- 
-2.23.0
-
diff --git a/pkgs/servers/mautrix-whatsapp/default.nix b/pkgs/servers/mautrix-whatsapp/default.nix
index 892f797a00e..bb72ce1b45f 100644
--- a/pkgs/servers/mautrix-whatsapp/default.nix
+++ b/pkgs/servers/mautrix-whatsapp/default.nix
@@ -2,18 +2,16 @@
 
 buildGoModule {
   pname = "mautrix-whatsapp-unstable";
-  version = "2019-11-17";
+  version = "2020-01-12";
 
   src = fetchFromGitHub {
     owner = "tulir";
     repo = "mautrix-whatsapp";
-    rev = "0fba1db6aa88a95ff567f44aa9be7ce6ef24787f";
-    sha256 = "07cgpvicr6n897myx86mlnx7bydsxnf51lnjbv9dl5yyii73f957";
+    rev = "39e46833b471b0cf262d4ff57fcd61530b5d2b9e";
+    sha256 = "1r1f52advibb97vrhi2gw0d0scnsvfbmfqizsbpjmgm7ci9jjhcl";
   };
 
-  patches = [ ./0001-Add-missing-go-dependencies-to-go.sum.patch ];
-
-  modSha256 = "0y0im3dz5z3rcsmnxkk0l6xqwcyxb0bi9h4arw7zblfy16iw6vrr";
+  modSha256 = "18bcv7x49bqnzwhafh8fvyv9z2d4j6w0iyqql0alq57hy7h7lxik";
 
   meta = with stdenv.lib; {
     homepage = https://github.com/tulir/mautrix-whatsapp;
diff --git a/pkgs/servers/metabase/default.nix b/pkgs/servers/metabase/default.nix
index 5c0fa2886dc..69a92942f5c 100644
--- a/pkgs/servers/metabase/default.nix
+++ b/pkgs/servers/metabase/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "metabase";
-  version = "0.33.6";
+  version = "0.34.1";
 
   src = fetchurl {
     url = "http://downloads.metabase.com/v${version}/metabase.jar";
-    sha256 = "1q5d323fzfvlc12v1g0mahlcz2sjii3k7cc6qg8q4q8yl0vg5c9k";
+    sha256 = "0fcggpv9ikx481ci7jw6phhmk3mqxbsn9pfs1kqmhwy1ka4ck6dg";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/miniflux/default.nix b/pkgs/servers/miniflux/default.nix
index 96f09c2f82a..dd06c358358 100644
--- a/pkgs/servers/miniflux/default.nix
+++ b/pkgs/servers/miniflux/default.nix
@@ -2,13 +2,13 @@
 
 buildGoPackage rec {
   pname = "miniflux";
-  version = "2.0.18";
+  version = "2.0.19";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = version;
-    sha256 = "0480f4481qf47l3l79f4gxhgfzzhfapjvl18kw9qjj3rzqn9xyj4";
+    sha256 = "121qy1af1qbc09c3yfwhpk6r3hwmh3jg6gjx8ygfv3hfrss9yfll";
   };
 
   goPackagePath = "miniflux.app";
diff --git a/pkgs/servers/monitoring/alertmanager-bot/default.nix b/pkgs/servers/monitoring/alertmanager-bot/default.nix
new file mode 100644
index 00000000000..8677a8d03f2
--- /dev/null
+++ b/pkgs/servers/monitoring/alertmanager-bot/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "alertmanager-bot";
+  version = "0.4.0";
+
+  goPackagePath = "github.com/metalmatze/alertmanager-bot";
+
+  src = fetchFromGitHub {
+    owner = "metalmatze";
+    repo = pname;
+    rev = version;
+    sha256 = "10v0fxxcs5s6zmqindr30plyw7p2yg0a64rdw1b2cj2mc1m3byx3";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Bot for Prometheus' Alertmanager";
+    homepage = "https://github.com/metalmatze/alertmanager-bot";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mmahut ];
+  };
+}
diff --git a/pkgs/servers/monitoring/alertmanager-bot/deps.nix b/pkgs/servers/monitoring/alertmanager-bot/deps.nix
new file mode 100644
index 00000000000..51e98ccbc93
--- /dev/null
+++ b/pkgs/servers/monitoring/alertmanager-bot/deps.nix
@@ -0,0 +1,948 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/DataDog/datadog-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/DataDog/datadog-go";
+      rev = "0ddda6bee211";
+      sha256 = "07ap1qhz8vwdypmlny5gxnc191c0qbm6acacs30m1d4p22x6wxip";
+    };
+  }
+  {
+    goPackagePath = "github.com/OneOfOne/xxhash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/OneOfOne/xxhash";
+      rev = "v1.2.5";
+      sha256 = "15ai4nzm8cv8nqs4xm5h6ghnms19c2sp8z0zpkc46rld6y7k0xky";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/template";
+      rev = "a0175ee3bccc";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/alecthomas/units";
+      rev = "2efee857e7cf";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/circbuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/circbuf";
+      rev = "bbbad097214e";
+      sha256 = "1idpr0lzb2px2p3wgfq2276yl7jpaz43df6n91kf790404s4zmk3";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/go-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/go-metrics";
+      rev = "f0300d1749da";
+      sha256 = "13l7c35ps0r27vxfil2w0xhhc7w5rh00awvlmn4cz0a937b9ffpv";
+    };
+  }
+  {
+    goPackagePath = "github.com/armon/go-radix";
+    fetch = {
+      type = "git";
+      url = "https://github.com/armon/go-radix";
+      rev = "7fddfc383310";
+      sha256 = "0y8chspn14n9xpsfb9gxnnf819rfpriaz64v81p7873a42kkhxb4";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "v1.0.1";
+      sha256 = "17n4yygjxa6p499dj3yaqzfww2g7528165cl13haj97hlx94dgl7";
+    };
+  }
+  {
+    goPackagePath = "github.com/bgentry/speakeasy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bgentry/speakeasy";
+      rev = "v0.1.0";
+      sha256 = "02dfrj0wyphd3db9zn2mixqxwiz1ivnyc5xc7gkz58l5l27nzp8s";
+    };
+  }
+  {
+    goPackagePath = "github.com/boltdb/bolt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/boltdb/bolt";
+      rev = "v1.3.1";
+      sha256 = "0z7j06lijfi4y30ggf2znak2zf2srv2m6c68ar712wd2ys44qb3r";
+    };
+  }
+  {
+    goPackagePath = "github.com/cenkalti/backoff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cenkalti/backoff";
+      rev = "v2.1.1";
+      sha256 = "1mf4lsl3rbb8kk42x0mrhzzy4ikqy0jf6nxpzhkr02rdgwh6rjk8";
+    };
+  }
+  {
+    goPackagePath = "github.com/cespare/xxhash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cespare/xxhash";
+      rev = "v1.0.0";
+      sha256 = "02aii7z46sasagw816zz3v0gzax1z5d1hkjslz7ng25386p0gzk1";
+    };
+  }
+  {
+    goPackagePath = "github.com/circonus-labs/circonus-gometrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/circonus-labs/circonus-gometrics";
+      rev = "v2.0.0";
+      sha256 = "0d6cnswq28mjak7092vf89f9l0ga2ziwyamq9kdgfc7aavpwr6l9";
+    };
+  }
+  {
+    goPackagePath = "github.com/circonus-labs/circonusllhist";
+    fetch = {
+      type = "git";
+      url = "https://github.com/circonus-labs/circonusllhist";
+      rev = "6e85b9352cf0";
+      sha256 = "182gry1clk12m34574qif7bx74qpxib2zv0mr5kv2j9hfq7f9m01";
+    };
+  }
+  {
+    goPackagePath = "github.com/creack/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/creack/pty";
+      rev = "v1.1.7";
+      sha256 = "1plwwlk1i9b80zv8zdplvv81shfyc9gf0flydnydsh5sr3ib5vrc";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/docker/libkv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/libkv";
+      rev = "v0.2.1";
+      sha256 = "0blq7kxjy1bvm3j5q4i6csnc4i88c1wvj4gjvxbqfk3sny73gjkr";
+    };
+  }
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-kit/kit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-kit/kit";
+      rev = "v0.8.0";
+      sha256 = "1rcywbc2pvab06qyf8pc2rdfjv7r6kxdv2v4wnpqnjhz225wqvc0";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-logfmt/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-logfmt/logfmt";
+      rev = "v0.3.0";
+      sha256 = "1gkgh3k5w1xwb2qbjq52p6azq3h1c1rr6pfwjlwj1zrijpzn2xb9";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-stack/stack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-stack/stack";
+      rev = "v1.8.0";
+      sha256 = "0wk25751ryyvxclyp8jdk5c3ar0cmfr8lrjb66qbg4808x66b96v";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.1.1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.3.2";
+      sha256 = "1k1wb4zr0qbwgpvz9q5ws9zhlal8hq7dmq62pwxxriksayl6hzym";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev = "4030bb1f1f0c";
+      sha256 = "0ba430m9fbnagacp57krgidsyrgp3ycw5r7dj71brgp5r52g82p6";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev = "v0.3.1";
+      sha256 = "1caw49i0plkjxir7kdf5qhwls3krqwfmi7g4h392rdfwi3kfahx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev = "v1.0.0";
+      sha256 = "0qz439qvccm91w0mmjz4fqgx48clxdwagkvvx89cr43q1d4iry36";
+    };
+  }
+  {
+    goPackagePath = "github.com/hako/durafmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hako/durafmt";
+      rev = "ea3ab126a649";
+      sha256 = "1niq0v6av5vsn4rizfda4zq922jvavig5b0qg9g0gyz6cj62rjzs";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/consul";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/consul";
+      rev = "v1.4.5";
+      sha256 = "0gpg3cbpsmzcaab3scqhpzz57892s95hwq5z0l9bq7qqm6iqfr9d";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/errwrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/errwrap";
+      rev = "v1.0.0";
+      sha256 = "0slfb6w3b61xz04r32bi0a1bygc82rjzhqkxj2si2074wynqnr1c";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-cleanhttp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-cleanhttp";
+      rev = "3573b8b52aa7";
+      sha256 = "1pbl6p7w5wp1c70x7fp94h4ynk2ajfa76rqin3d2hq1w2fcb7byr";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-immutable-radix";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-immutable-radix";
+      rev = "v1.0.0";
+      sha256 = "1v3nmsnk1s8bzpclrhirz7iq0g5xxbw9q5gvrg9ss6w9crs72qr6";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-msgpack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-msgpack";
+      rev = "v0.5.5";
+      sha256 = "0fqmfx3dxnvb0d23cpn2xpd067pibwlchdc58ln8w6lznzrbzaan";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-multierror";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-multierror";
+      rev = "v1.0.0";
+      sha256 = "00nyn8llqzbfm8aflr9kwsvpzi4kv8v45c141v88xskxp5xf6z49";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-retryablehttp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-retryablehttp";
+      rev = "794af36148bf";
+      sha256 = "1686d4qav0ayj3f5881w3kd9pz4fxsmknfqwccbj9yklxm3khvp4";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-rootcerts";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-rootcerts";
+      rev = "v1.0.1";
+      sha256 = "0ca5h7vlvrghf24dzh8l6w5px293n173qxfkjxb9kgsl6hsrsl3y";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-sockaddr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-sockaddr";
+      rev = "v1.0.2";
+      sha256 = "0y106nhd3s63lj7h7k21iq0br97h0z9qjrvx028zqcsq9407k9is";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-syslog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-syslog";
+      rev = "v1.0.0";
+      sha256 = "09vccqggz212cg0jir6vv708d6mx0f9w5bxrcdah3h6chgmal6v1";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-uuid";
+      rev = "v1.0.1";
+      sha256 = "0jvb88m0rq41bwgirsadgw7mnayl27av3gd2vqa3xvxp3fy0hp5k";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev = "v0.5.3";
+      sha256 = "1p2igd58xkm8yaj2c2wxiplkf2hj6kxwrg6ss7mx61s5rd71v5xb";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/logutils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/logutils";
+      rev = "v1.0.0";
+      sha256 = "076wf4sh5p3f953ndqk1cc0x7jhmlqrxak9953rz79rcdw77rjvv";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/mdns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/mdns";
+      rev = "v1.0.1";
+      sha256 = "185zpyj1jf1jm7hihg73gqnspr0a359aqwv11v4a6mwd5bkdh19j";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/memberlist";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/memberlist";
+      rev = "v0.1.4";
+      sha256 = "0l9qx8j7mm00ia6m41zbn39z7p77jjf95zph2nw8j2vihm56q9ql";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/serf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/serf";
+      rev = "v0.8.3";
+      sha256 = "0isaq2m08rpwvlzd72gvy3caapkrzgr9cwizl99ainsjgj2nkds9";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/uuid";
+      rev = "ebb0a03e909c";
+      sha256 = "0bzqr8y81h96cw299lhc5nxi9203a7xpd7csjsm6rh4k1bx4hdlf";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/yamux";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/yamux";
+      rev = "f5742cb6b856";
+      sha256 = "1k9b399ljsp443s1v69c1m5jqdiw1998ryz4b4lh86nkz775ws5s";
+    };
+  }
+  {
+    goPackagePath = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev = "v1.0.0";
+      sha256 = "1njpzc0pi1acg5zx9y6vj9xi6ksbsc5d387rd6904hy6rh2m6kn0";
+    };
+  }
+  {
+    goPackagePath = "github.com/joho/godotenv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/joho/godotenv";
+      rev = "v1.3.0";
+      sha256 = "0ri8if0pc3x6jg4c3i8wr58xyfpxkwmcjk3rp8gb398a1aa3gpjm";
+    };
+  }
+  {
+    goPackagePath = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev = "v1.1.7";
+      sha256 = "0n79p4s67zl5zprxv7diayw3vavnmmfqkmd6snz0i9bxp825dsyz";
+    };
+  }
+  {
+    goPackagePath = "github.com/julienschmidt/httprouter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/julienschmidt/httprouter";
+      rev = "v1.2.0";
+      sha256 = "1k8bylc9s4vpvf5xhqh9h246dl1snxrzzz0614zz88cdh8yzs666";
+    };
+  }
+  {
+    goPackagePath = "github.com/konsorten/go-windows-terminal-sequences";
+    fetch = {
+      type = "git";
+      url = "https://github.com/konsorten/go-windows-terminal-sequences";
+      rev = "v1.0.2";
+      sha256 = "09mn209ika7ciy87xf2x31dq5fnqw39jidgaljvmqxwk7ff1hnx7";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/logfmt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/logfmt";
+      rev = "b84e30acd515";
+      sha256 = "02ldzxgznrfdzvghfraslhgp19la1fczcbzh7wm2zdc6lmpd1qq9";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.8";
+      sha256 = "1vcl6f90n0f8s8b4fyh0832ilybjqcypqyj233lqj1hx62fvgdbk";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/kylelemons/godebug";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kylelemons/godebug";
+      rev = "v1.1.0";
+      sha256 = "0dkk3friykg8p6wgqryx6745ahhb9z1j740k7px9dac6v5xjp78c";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.0.9";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.9";
+      sha256 = "0i3km37lajahh1y2392g4hpgvq05arcgiiv93yhzxxyv0fpqj72m";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/miekg/dns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/miekg/dns";
+      rev = "v1.0.15";
+      sha256 = "051f51fyrsnj69j9ni9j72acqnrvvzqda4l831ijffy5h5jdl8f2";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/cli";
+      rev = "v1.0.0";
+      sha256 = "1i9kmr7rcf10d2hji8h4247hmc0nbairv7a0q51393aw2h1bnwg2";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.1.0";
+      sha256 = "0ydzkipf28hwj2bfxqmwlww47khyk6d152xax4bnyh60f4lq3nx1";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-testing-interface";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-testing-interface";
+      rev = "v1.0.0";
+      sha256 = "1dl2js8di858bawg7dadlf1qjpkl2g3apziihjyf5imri3znyfpw";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-wordwrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-wordwrap";
+      rev = "v1.0.0";
+      sha256 = "1jffbwcr3nnq6c12c5856bwzv2nxjzqk3jwgvxkwi1xhpd2by0bf";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/hashstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/hashstructure";
+      rev = "2bca23e0e452";
+      sha256 = "0vpacsls26474wya360fjhzi6l4y8s8s251c4szvqxh17n5f5gk1";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "d0303fe80992";
+      sha256 = "1fjwi5ghc1ibyx93apz31n4hj6gcq1hzismpdfbg2qxwshyg0ya8";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev = "bacd9c7ef1dd";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev = "v1.0.1";
+      sha256 = "06a3sablw53n1dqqbr2f53jyksbxdmmk8axaas4yvnhyfi55k4lf";
+    };
+  }
+  {
+    goPackagePath = "github.com/mwitkow/go-conntrack";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mwitkow/go-conntrack";
+      rev = "cc309e4a2223";
+      sha256 = "0nbrnpk7bkmqg9mzwsxlm0y8m7s9qd9phr1q30qlx2qmdmz7c1mf";
+    };
+  }
+  {
+    goPackagePath = "github.com/oklog/run";
+    fetch = {
+      type = "git";
+      url = "https://github.com/oklog/run";
+      rev = "v1.0.0";
+      sha256 = "1pbjza4claaj95fpqvvfrysvs10y7dm0pl6qr5lzh6qy1vnhmcgw";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "v1.6.0";
+      sha256 = "0x0gc89vgq38xhgmi2h22bhr73cf2gmk42g89nz89k8dgg9hhr25";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "v1.4.3";
+      sha256 = "1c8rqg5i2hz3snmq7s41yar1zjnzilb0fyiyhkg83v97afcfx79v";
+    };
+  }
+  {
+    goPackagePath = "github.com/pascaldekloe/goe";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pascaldekloe/goe";
+      rev = "v0.1.0";
+      sha256 = "1dqd3mfb4z2vmv6pg6fhgvfc53vhndk24wcl9lj1rz02n6m279fq";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/posener/complete";
+    fetch = {
+      type = "git";
+      url = "https://github.com/posener/complete";
+      rev = "v1.1.2";
+      sha256 = "02xrnfkk9r2jarna8jqfkksrn469jdap716037zq84waq3d5xk3l";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/alertmanager";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/alertmanager";
+      rev = "v0.9.1";
+      sha256 = "1lkfj63pp4jf58xmn015r7s42p1wyj6fryihpmdn0k76b0ccwqzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v0.9.4";
+      sha256 = "0s134fj4i7k6pxdmxwkdi7amb1882yq33spv15hg3pkpbd3h311p";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "fd36f4220a90";
+      sha256 = "1bs5d72k361llflgl94c22n0w53j30rsfh84smgk8mbjbcmjsaa5";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "v0.4.1";
+      sha256 = "0sf4sjdckblz1hqdfvripk3zyp8xq89w7q75kbsyg4c078af896s";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "v0.0.3";
+      sha256 = "18c4m795fwng8f8qa395f3crvamlbk5y5afk8b5rzyisnmjq774y";
+    };
+  }
+  {
+    goPackagePath = "github.com/ryanuber/columnize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ryanuber/columnize";
+      rev = "v2.1.0";
+      sha256 = "0m9jhagb1k44zfcdai76xdf9vpi3bqdl7p078ffyibmz0z9jfap6";
+    };
+  }
+  {
+    goPackagePath = "github.com/satori/go.uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/satori/go.uuid";
+      rev = "v1.1.0";
+      sha256 = "1nbydsmjr60904kz5d46nib0zid5kcv4gk9wayi44gn5wlzz80zp";
+    };
+  }
+  {
+    goPackagePath = "github.com/sean-/seed";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sean-/seed";
+      rev = "e2103e2c3529";
+      sha256 = "0glir8jxi1w7aga2jwdb63pp1h8q4whknili7xixsqzwyy716125";
+    };
+  }
+  {
+    goPackagePath = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev = "v1.2.0";
+      sha256 = "0r6334x2bls8ddznvzaldx4g88msjjns4mlks95rqrrg7h0ijigg";
+    };
+  }
+  {
+    goPackagePath = "github.com/spaolacci/murmur3";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spaolacci/murmur3";
+      rev = "v1.1.0";
+      sha256 = "1lv3zyz3jy2d76bhvvs8svygx66606iygdvwy5cwc0p5z8yghq25";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev = "v0.1.1";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.3.0";
+      sha256 = "0wjchp2c8xbgcbbq32w3kvblk6q6yn533g78nxl6iskq6y95lxsy";
+    };
+  }
+  {
+    goPackagePath = "github.com/tucnak/telebot";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tucnak/telebot";
+      rev = "00cebf376d79";
+      sha256 = "0yay3h7gp6yag8jbapbq10vhmszad7svn68nnq5yp6pl1hmykzd6";
+    };
+  }
+  {
+    goPackagePath = "github.com/weaveworks/mesh";
+    fetch = {
+      type = "git";
+      url = "https://github.com/weaveworks/mesh";
+      rev = "f74318fb713b";
+      sha256 = "093j5i7wrkq1g92xaprd0rlfv9i74381wns4941bhbp6x6ahdcz7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "45a5f77698d3";
+      sha256 = "0636jjj89wkzqchajwwzgcn4aafc334p70nawh9jzavg2mkx0ch4";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "891ebc4b82d6";
+      sha256 = "1rgw5gl2lc6bkmsx0fak84s6zdc1bhzfxgqg4mg4yh5hlnhpwrki";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "37e7f081c4d4";
+      sha256 = "1bb0mw6ckb1k7z8v3iil2qlqwfj408fvvp8m1cik2b46p7snyjhm";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "fde4db37ae7a";
+      sha256 = "16k4w4pzziq1kln18k5fg01qgk4hpzb5xsm7175kaky6d6gwyhg3";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.2";
+      sha256 = "0flv9idw0jm5nm8lx25xqanbkqgfiym6619w575p7nrdh0riqwqh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "90fa682c2a6e";
+      sha256 = "03ic2xsy51jw9749wl7gszdbz99iijbd2bckgygl6cm9w5m364ak";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev = "v1.1.0";
+      sha256 = "1pz202zszg8f35dk5pfhwgcdi3r6dx1l4yk6x6ly7nb4j45zi96x";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/airbrake/gobrake.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/airbrake/gobrake.v2";
+      rev = "v2.0.9";
+      sha256 = "1x06f7n7qlyzqgyz0sdfcidf3w4ldn6zs6qx2mhibggk2z4whcjw";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev = "v2.2.6";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/fsnotify.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/fsnotify.v1";
+      rev = "v1.4.7";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/gemnasium/logrus-airbrake-hook.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/gemnasium/logrus-airbrake-hook.v2";
+      rev = "v2.1.2";
+      sha256 = "0sbg0dn6cysmf8f2bi209jwl4jnpiwp4rdghnxlzirw3c32ms5y5";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/tomb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/tomb.v1";
+      rev = "dd632973f1e7";
+      sha256 = "1lqmq1ag7s4b3gc3ddvr792c5xb5k6sfn0cchr3i2s7f1c231zjv";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/vmihailenco/msgpack.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/vmihailenco/msgpack.v2";
+      rev = "v2.9.1";
+      sha256 = "0ah9j7i97ifyqhiscq8d43gcrhksb3bx83s2p1nyfi1bxw78jwfi";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "v2.2.2";
+      sha256 = "01wj12jzsdqlnidpyjssmj0r4yavlqy7dwrg7adqd8dicjc4ncsa";
+    };
+  }
+]
diff --git a/pkgs/servers/monitoring/cadvisor/default.nix b/pkgs/servers/monitoring/cadvisor/default.nix
index 029d8700956..aa4db2239f0 100644
--- a/pkgs/servers/monitoring/cadvisor/default.nix
+++ b/pkgs/servers/monitoring/cadvisor/default.nix
@@ -1,32 +1,21 @@
-{ stdenv, go, fetchFromGitHub }:
+{ stdenv, buildGoPackage, fetchFromGitHub }:
 
-stdenv.mkDerivation rec {
+buildGoPackage rec {
   pname = "cadvisor";
-  version = "0.34.0";
+  version = "0.35.0";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "cadvisor";
     rev = "v${version}";
-    sha256 = "1hshmhsclja50ja2jqxx2f5lcvbs64n6aw6dw28wbnq3z9v0q8ad";
+    sha256 = "1652yf2a4ng9z0jq8q6jnzh6svj5nwar9j8q7sssgy36bi03ixqa";
   };
 
-  nativeBuildInputs = [ go ];
+  goPackagePath = "github.com/google/cadvisor";
 
-  buildPhase = ''
-    export GOCACHE="$TMPDIR/go-cache"
-    mkdir -p Godeps/_workspace/src/github.com/google/
-    ln -s $(pwd) Godeps/_workspace/src/github.com/google/cadvisor
-    GOPATH=$(pwd)/Godeps/_workspace go build -v -o cadvisor -ldflags="-s -w -X github.com/google/cadvisor/version.Version=${version}" github.com/google/cadvisor
-  '';
+  subPackages = [ "." ];
 
-  installPhase = ''
-    runHook preInstall
-
-    install -Dm755 -t $out/bin cadvisor
-
-    runHook postInstall
-  '';
+  buildFlagsArray = [ "-ldflags=-s -w -X github.com/google/cadvisor/version.Version=${version}" ];
 
   meta = with stdenv.lib; {
     description = "Analyzes resource usage and performance characteristics of running docker containers";
diff --git a/pkgs/servers/monitoring/facette/default.nix b/pkgs/servers/monitoring/facette/default.nix
deleted file mode 100644
index 5d6f0fc3bfe..00000000000
--- a/pkgs/servers/monitoring/facette/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ stdenv, fetchFromGitHub
-, go, pkgconfig, nodejs, nodePackages, pandoc, rrdtool }:
-
-stdenv.mkDerivation rec {
-  pname = "facette";
-  version = "0.4.1";
-  src = fetchFromGitHub {
-    owner = "facette";
-    repo = "facette";
-    rev = version;
-    sha256 = "0p28s2vn18cqg8p7bzhb38wky0m98d5xv3wvf1nmg1kmwhwim6mi";
-  };
-  nativeBuildInputs = [ go pkgconfig nodejs nodePackages.npm pandoc ];
-  buildInputs = [ rrdtool ];
-  preBuild = ''
-    export HOME="$NIX_BUILD_ROOT" # npm needs a writable home
-  '';
-  makeFlags = [ "PREFIX=$(out)" ];
-
-  meta = with stdenv.lib; {
-    description = "Time series data visualization software";
-    longDescription = ''
-      Facette is a web application to display time series data from various
-      sources — such as collectd, Graphite, InfluxDB or KairosDB — on graphs.
-    '';
-    homepage = https://facette.io/;
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ fgaz ];
-    broken = true; # not really broken, it just requires an internet connection to build. see #45382
-  };
-}
diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix
index 7e2aaa66257..183bbc73f5d 100644
--- a/pkgs/servers/monitoring/grafana/default.nix
+++ b/pkgs/servers/monitoring/grafana/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "grafana";
-  version = "6.5.1";
+  version = "6.5.3";
 
   goPackagePath = "github.com/grafana/grafana";
 
@@ -12,12 +12,12 @@ buildGoPackage rec {
     rev = "v${version}";
     owner = "grafana";
     repo = "grafana";
-    sha256 = "1hcfn9dgx8vabadagm69dgk5sdyc1kxkbma2ryfdb0v6vpm01784";
+    sha256 = "1ks951b3ar1wdpbxn8ak74m8zh02d3lbmk6mphwni68c019ymahi";
   };
 
   srcStatic = fetchurl {
     url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
-    sha256 = "1m2rxxgs8sf8qrg0bk3i2gy17q6n4nk4cwlp9bbffwmwcmf78gnw";
+    sha256 = "1gjj0h7kz4lan00ka5kg901l3nyzswnjfr0slqy08bl4svqpizh2";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/monitoring/loki/default.nix b/pkgs/servers/monitoring/loki/default.nix
index c7b75fdbe2b..b5e63a3aed4 100644
--- a/pkgs/servers/monitoring/loki/default.nix
+++ b/pkgs/servers/monitoring/loki/default.nix
@@ -1,7 +1,7 @@
 { stdenv, buildGoPackage, fetchFromGitHub, makeWrapper, systemd }:
 
 buildGoPackage rec {
-  version = "1.1.0";
+  version = "1.3.0";
   pname = "grafana-loki";
   goPackagePath = "github.com/grafana/loki";
 
@@ -11,13 +11,19 @@ buildGoPackage rec {
     rev = "v${version}";
     owner = "grafana";
     repo = "loki";
-    sha256 = "1c9bw5bib577pgjd71skncxf3cdcyj1ab36j6ag7szl2kym62j6x";
+    sha256 = "0b1dpb3vh5i18467qk8kpb5ic14p4p1dfyr8hjkznf6bs7g8ka1q";
   };
 
+  postPatch = ''
+    substituteInPlace pkg/distributor/distributor_test.go --replace \
+      '"eth0", "en0", "lo0"' \
+      '"lo"'
+  '';
+
   nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ systemd.dev ];
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [ systemd.dev ];
 
-  preFixup = ''
+  preFixup = stdenv.lib.optionalString stdenv.isLinux ''
     wrapProgram $bin/bin/promtail \
       --prefix LD_LIBRARY_PATH : "${systemd.lib}/lib"
   '';
@@ -25,8 +31,8 @@ buildGoPackage rec {
   meta = with stdenv.lib; {
     description = "Like Prometheus, but for logs";
     license = licenses.asl20;
-    homepage = "https://grafana.com/loki";
+    homepage = "https://grafana.com/oss/loki/";
     maintainers = with maintainers; [ willibutz globin mmahut ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/servers/monitoring/munin/default.nix b/pkgs/servers/monitoring/munin/default.nix
index d978cb003c7..46e1460d795 100644
--- a/pkgs/servers/monitoring/munin/default.nix
+++ b/pkgs/servers/monitoring/munin/default.nix
@@ -92,16 +92,16 @@ stdenv.mkDerivation rec {
   # DESTDIR shouldn't be needed (and shouldn't have worked), but munin
   # developers have forgotten to use PREFIX everywhere, so we use DESTDIR to
   # ensure that everything is installed in $out.
-  makeFlags = ''
-    PREFIX=$(out)
-    DESTDIR=$(out)
-    PERLLIB=$(out)/${perlPackages.perl.libPrefix}
-    PERL=${perlPackages.perl.outPath}/bin/perl
-    PYTHON=${python.outPath}/bin/python
-    RUBY=${ruby.outPath}/bin/ruby
-    JAVARUN=${jre.outPath}/bin/java
-    PLUGINUSER=munin
-  '';
+  makeFlags = [
+    "PREFIX=$(out)"
+    "DESTDIR=$(out)"
+    "PERLLIB=$(out)/${perlPackages.perl.libPrefix}"
+    "PERL=${perlPackages.perl.outPath}/bin/perl"
+    "PYTHON=${python.outPath}/bin/python"
+    "RUBY=${ruby.outPath}/bin/ruby"
+    "JAVARUN=${jre.outPath}/bin/java"
+    "PLUGINUSER=munin"
+  ];
 
   postFixup = ''
     echo "Removing references to /usr/{bin,sbin}/ from munin plugins..."
diff --git a/pkgs/servers/monitoring/nagios/default.nix b/pkgs/servers/monitoring/nagios/default.nix
index 693e67ee6dd..006d91ef74e 100644
--- a/pkgs/servers/monitoring/nagios/default.nix
+++ b/pkgs/servers/monitoring/nagios/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, php, gd, libpng, zlib, unzip }:
+{ stdenv, fetchurl, perl, php, gd, libpng, zlib, unzip, nixosTests }:
 
 stdenv.mkDerivation rec {
   pname = "nagios";
@@ -13,13 +13,23 @@ stdenv.mkDerivation rec {
   buildInputs = [ php perl gd libpng zlib unzip ];
 
   configureFlags = [ "--localstatedir=/var/lib/nagios" ];
-  buildFlags = "all";
+  buildFlags = [ "all" ];
 
   # Do not create /var directories
   preInstall = ''
     substituteInPlace Makefile --replace '$(MAKE) install-basic' ""
   '';
   installTargets = "install install-config";
+  postInstall = ''
+    # don't make default files use hardcoded paths to commands
+    sed -i 's@command_line *[^ ]*/\([^/]*\) @command_line \1 @'  $out/etc/objects/commands.cfg
+    sed -i 's@/usr/bin/@@g' $out/etc/objects/commands.cfg
+    sed -i 's@/bin/@@g' $out/etc/objects/commands.cfg
+  '';
+
+  passthru.tests = {
+    inherit (nixosTests) nagios;
+  };
 
   meta = {
     description = "A host, service and network monitoring program";
diff --git a/pkgs/servers/monitoring/nagios/plugins/pynagsystemd.nix b/pkgs/servers/monitoring/nagios/plugins/pynagsystemd.nix
new file mode 100644
index 00000000000..62f6bc96a52
--- /dev/null
+++ b/pkgs/servers/monitoring/nagios/plugins/pynagsystemd.nix
@@ -0,0 +1,22 @@
+{ fetchFromGitHub, python3Packages, lib }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pynagsystemd";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    owner = "kbytesys";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1xjhkhdpmqa7ngcpcfhrkmj4cid2wla3fzgr04wvw672ysffv2vz";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ nagiosplugin ];
+
+  meta = with lib; {
+    description = "Simple and easy nagios check for systemd status";
+    homepage = "https://github.com/kbytesys/pynagsystemd";
+    maintainers = with maintainers; [ symphorien ];
+    license = licenses.gpl2;
+  };
+}
diff --git a/pkgs/servers/monitoring/net-snmp/default.nix b/pkgs/servers/monitoring/net-snmp/default.nix
index 2bbab30d9ec..ed2abbc7fc8 100644
--- a/pkgs/servers/monitoring/net-snmp/default.nix
+++ b/pkgs/servers/monitoring/net-snmp/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, fetchpatch, autoreconfHook, file, openssl, perl, perlPackages, unzip, nettools, ncurses }:
+{ stdenv, fetchurl, fetchpatch, autoreconfHook, removeReferencesTo
+, file, openssl, perl, perlPackages, unzip, nettools, ncurses }:
 
 stdenv.mkDerivation rec {
   name = "net-snmp-5.8";
@@ -19,6 +20,8 @@ stdenv.mkDerivation rec {
     ./0002-autoconf-version.patch
   ];
 
+  outputs = [ "bin" "out" "dev" "lib" ];
+
   configureFlags =
     [ "--with-default-snmp-version=3"
       "--with-sys-location=Unknown"
@@ -34,17 +37,21 @@ stdenv.mkDerivation rec {
     substituteInPlace testing/fulltests/support/simple_TESTCONF.sh --replace "/bin/netstat" "${nettools}/bin/netstat"
   '';
 
-  nativeBuildInputs = [ autoreconfHook nettools ];
-  buildInputs = [ file perl unzip openssl ncurses ];
-  propagatedBuildInputs = with perlPackages; [ perl JSON Tk TermReadKey ];
+  nativeBuildInputs = [ autoreconfHook nettools removeReferencesTo ];
+  buildInputs = with perlPackages; [ file perl unzip openssl ncurses JSON Tk TermReadKey ];
 
   enableParallelBuilding = true;
   doCheck = false;  # tries to use networking
 
   postInstall = ''
-    for f in "$out/lib/"*.la $out/bin/net-snmp-config $out/bin/net-snmp-create-v3-user; do
+    for f in "$lib/lib/"*.la $bin/bin/net-snmp-config $bin/bin/net-snmp-create-v3-user; do
       sed 's|-L${openssl.dev}|-L${openssl.out}|g' -i $f
     done
+    mkdir $dev/bin
+    mv $bin/bin/net-snmp-config $dev/bin
+    # libraries contain configure options
+    find $lib/lib -type f -exec remove-references-to -t $bin '{}' +
+    find $lib/lib -type f -exec remove-references-to -t $dev '{}' +
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/servers/monitoring/plugins/default.nix b/pkgs/servers/monitoring/plugins/default.nix
index 62f40b59d37..f72fa16cd12 100644
--- a/pkgs/servers/monitoring/plugins/default.nix
+++ b/pkgs/servers/monitoring/plugins/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, fetchpatch, autoreconfHook
-, coreutils, gnugrep, gnused, lm_sensors, net_snmp, openssh, openssl, perl
+{ stdenv, fetchFromGitHub, fetchpatch, autoreconfHook, runCommand
+, coreutils, gnugrep, gnused, lm_sensors, net-snmp, openssh, openssl, perl
 , dnsutils, libdbi, libmysqlclient, zlib, openldap, procps
 , runtimeShell }:
 
@@ -9,7 +9,7 @@ let
   majorVersion = "2.2";
   minorVersion = ".0";
 
-  binPath = makeBinPath [ coreutils gnugrep gnused lm_sensors net_snmp procps ];
+  binPath = makeBinPath [ coreutils gnugrep gnused lm_sensors net-snmp procps ];
 
 in stdenv.mkDerivation {
   name = "monitoring-plugins-${majorVersion}${minorVersion}";
@@ -44,11 +44,16 @@ in stdenv.mkDerivation {
     configureFlagsArray=(
       --with-ping-command='/run/wrappers/bin/ping -4 -n -U -w %d -c %d %s'
       --with-ping6-command='/run/wrappers/bin/ping -6 -n -U -w %d -c %d %s'
+      --with-sudo-command='/run/wrappers/bin/sudo'
+      --with-mailq-command='${runCommand "mailq-wrapper" {preferLocalBuild=true;} ''
+        mkdir -p $out/bin
+        ln -s /run/wrappers/bin/sendmail $out/bin/mailq
+        ''}/bin/mailq'
     )
   '';
 
   # !!! make openssh a runtime dependency only
-  buildInputs = [ dnsutils libdbi libmysqlclient net_snmp openldap openssh openssl perl procps zlib ];
+  buildInputs = [ dnsutils libdbi libmysqlclient net-snmp openldap openssh openssl perl procps zlib ];
 
   nativeBuildInputs = [ autoreconfHook ];
 
diff --git a/pkgs/servers/monitoring/prometheus/snmp-exporter.nix b/pkgs/servers/monitoring/prometheus/snmp-exporter.nix
index dfa81d4da83..f3dfccee3bc 100644
--- a/pkgs/servers/monitoring/prometheus/snmp-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/snmp-exporter.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildGoPackage, fetchFromGitHub, net_snmp }:
+{ stdenv, buildGoPackage, fetchFromGitHub, net-snmp }:
 
 buildGoPackage rec {
   pname = "snmp_exporter";
@@ -13,7 +13,7 @@ buildGoPackage rec {
     sha256 = "1cnz1wapxs3fkghzy6v90s56vd0ngynypyapcpbmx5y66rlpdxx6";
   };
 
-  buildInputs = [ net_snmp ];
+  buildInputs = [ net-snmp ];
 
   doCheck = true;
 
diff --git a/pkgs/servers/monitoring/riemann/default.nix b/pkgs/servers/monitoring/riemann/default.nix
index 83b7433b14a..295a7592880 100644
--- a/pkgs/servers/monitoring/riemann/default.nix
+++ b/pkgs/servers/monitoring/riemann/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "riemann";
-  version = "0.3.4";
+  version = "0.3.5";
 
   src = fetchurl {
     url = "https://github.com/riemann/riemann/releases/download/${version}/${pname}-${version}.tar.bz2";
-    sha256 = "1c31higrsmpkvl956rrw1hpwjyvypgrjzl6vky0gn55zgvisasn4";
+    sha256 = "1d7v2lg1b7z6v0qckq70nzqpqcs90v29laizsf8ghyj113ips3rc";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/monitoring/zabbix/proxy.nix b/pkgs/servers/monitoring/zabbix/proxy.nix
index 53932af6a18..697492d9627 100644
--- a/pkgs/servers/monitoring/zabbix/proxy.nix
+++ b/pkgs/servers/monitoring/zabbix/proxy.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pkgconfig, libevent, libiconv, openssl, pcre, zlib
 , odbcSupport ? true, unixODBC
-, snmpSupport ? true, net_snmp
+, snmpSupport ? true, net-snmp
 , sshSupport ? true, libssh2
 , sqliteSupport ? false, sqlite
 , mysqlSupport ? false, libmysqlclient
@@ -34,7 +34,7 @@ in
         zlib
       ]
       ++ optional odbcSupport unixODBC
-      ++ optional snmpSupport net_snmp
+      ++ optional snmpSupport net-snmp
       ++ optional sqliteSupport sqlite
       ++ optional sshSupport libssh2
       ++ optional mysqlSupport libmysqlclient
diff --git a/pkgs/servers/monitoring/zabbix/server.nix b/pkgs/servers/monitoring/zabbix/server.nix
index ac5dcca901d..4046cc7d8bb 100644
--- a/pkgs/servers/monitoring/zabbix/server.nix
+++ b/pkgs/servers/monitoring/zabbix/server.nix
@@ -2,7 +2,7 @@
 , jabberSupport ? true, iksemel
 , ldapSupport ? true, openldap
 , odbcSupport ? true, unixODBC
-, snmpSupport ? true, net_snmp
+, snmpSupport ? true, net-snmp
 , sshSupport ? true, libssh2
 , mysqlSupport ? false, libmysqlclient
 , postgresqlSupport ? false, postgresql
@@ -38,7 +38,7 @@ in
       ++ optional odbcSupport unixODBC
       ++ optional jabberSupport iksemel
       ++ optional ldapSupport openldap
-      ++ optional snmpSupport net_snmp
+      ++ optional snmpSupport net-snmp
       ++ optional sshSupport libssh2
       ++ optional mysqlSupport libmysqlclient
       ++ optional postgresqlSupport postgresql;
diff --git a/pkgs/servers/monitoring/zabbix/versions.nix b/pkgs/servers/monitoring/zabbix/versions.nix
index affd73f9b41..0a61ba489eb 100644
--- a/pkgs/servers/monitoring/zabbix/versions.nix
+++ b/pkgs/servers/monitoring/zabbix/versions.nix
@@ -1,16 +1,16 @@
 generic: {
   v44 = generic {
-    version = "4.4.3";
-    sha256 = "1rpkgimi9kv9zrcis1zwbrny7yzralick206n71i8071hf95jvwx";
+    version = "4.4.4";
+    sha256 = "0pw66zd89w0i9365zkwn6vihx9bdzsmg7f91hd7zzm42s7kyvxvv";
   };
 
   v40 = generic {
-    version = "4.0.15";
-    sha256 = "19q8h79h7lnsq6gbd0awrlw59scg92x0a1375kd2av6bjpx8r0y9";
+    version = "4.0.16";
+    sha256 = "0hjdvi0cwr9qczmkvnmmd22828hv5c587xcszp9pnap6621f3mx8";
   };
 
   v30 = generic {
-    version = "3.0.28";
-    sha256 = "16966danf5ww4lhjg5gx5bnpid8abxh2ymdg6k5mymrman5bcdjj";
+    version = "3.0.29";
+    sha256 = "1d81w68hnkjdj1a00iasg6aidw25syi4lrbsiyc98pdihmxbpiky";
   };
 }
diff --git a/pkgs/servers/mpd/clientlib.nix b/pkgs/servers/mpd/clientlib.nix
index 76b00b4cb29..c6b36fed8eb 100644
--- a/pkgs/servers/mpd/clientlib.nix
+++ b/pkgs/servers/mpd/clientlib.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, meson, ninja, fixDarwinDylibNames }:
 
 stdenv.mkDerivation rec {
-  version = "2.16";
+  version = "2.17";
   pname = "libmpdclient";
 
   src = fetchFromGitHub {
     owner  = "MusicPlayerDaemon";
     repo   = "libmpdclient";
     rev    = "v${version}";
-    sha256 = "0kd76pcf8pvmzl4k3cbq68c16imwaak2zljsa1wwwgk6idyw6gb1";
+    sha256 = "0458zq12ph1pbm9mcbdj8mm31iq3yzzc1aq9fhfwz341zwpwcp21";
   };
 
   nativeBuildInputs = [ meson ninja ]
diff --git a/pkgs/servers/mpd/default.nix b/pkgs/servers/mpd/default.nix
index 2364043c868..f4081e5fa01 100644
--- a/pkgs/servers/mpd/default.nix
+++ b/pkgs/servers/mpd/default.nix
@@ -82,7 +82,7 @@ let
       # Disable platform specific features if needed
       # using libmad to decode mp3 files on darwin is causing a segfault -- there
       # is probably a solution, but I'm disabling it for now
-      platformMask = lib.optionals stdenv.isDarwin [ "mad" "pulse" "jack" "nfs" "smb" ]
+      platformMask = lib.optionals stdenv.isDarwin [ "mad" "pulse" "jack" "nfs" "smbclient" ]
                   ++ lib.optionals (!stdenv.isLinux) [ "alsa" "systemd" "syslog" ];
 
       knownFeatures = builtins.attrNames featureDependencies;
@@ -102,18 +102,18 @@ let
 
     in stdenv.mkDerivation rec {
       pname = "mpd";
-      version = "0.21.16";
+      version = "0.21.18";
 
       src = fetchFromGitHub {
         owner  = "MusicPlayerDaemon";
         repo   = "MPD";
         rev    = "v${version}";
-        sha256 = "0yfzn1hcyww8z5pp70n7iinycz097vjc6q9fzmfrc6ikvz3db8f4";
+        sha256 = "04kzdxigg6yhf5km66hxk6y8n7gl72bxnv2bc5zy274fzqf4cy9p";
       };
 
       buildInputs = [ glib boost ]
         ++ (lib.concatLists (lib.attrVals features_ featureDependencies))
-        ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.AudioToolbox;
+        ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.AudioToolbox darwin.apple_sdk.frameworks.AudioUnit ];
 
       nativeBuildInputs = [ meson ninja pkgconfig ];
 
diff --git a/pkgs/servers/mqtt/mosquitto/default.nix b/pkgs/servers/mqtt/mosquitto/default.nix
index 5b0f4eceaed..b52cfb09d4f 100644
--- a/pkgs/servers/mqtt/mosquitto/default.nix
+++ b/pkgs/servers/mqtt/mosquitto/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mosquitto";
-  version = "1.6.7";
+  version = "1.6.8";
 
   src = fetchFromGitHub {
     owner  = "eclipse";
     repo   = "mosquitto";
     rev    = "v${version}";
-    sha256 = "1g9g9c95ypfa9dv53ga3hjqxrrlqmcf1lmpxgrifl2l34q4zzfln";
+    sha256 = "1py13vg3vwwwg6jdnmq46z6rlzb84r4ggqsmsrn4yar5hrw9pa90";
   };
 
   postPatch = ''
diff --git a/pkgs/servers/mxisd/default.nix b/pkgs/servers/mxisd/default.nix
index 4290d31870c..c5841d4d1a8 100644
--- a/pkgs/servers/mxisd/default.nix
+++ b/pkgs/servers/mxisd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, jre, git, gradle_4, perl, makeWrapper }:
+{ stdenv, fetchFromGitHub, jre, git, gradle, perl, makeWrapper }:
 
 let
   name = "mxisd-${version}";
@@ -16,7 +16,7 @@ let
   deps = stdenv.mkDerivation {
     name = "${name}-deps";
     inherit src;
-    nativeBuildInputs = [ gradle_4 perl git ];
+    nativeBuildInputs = [ gradle perl git ];
 
     buildPhase = ''
       export MXISD_BUILD_VERSION=${rev}
@@ -41,7 +41,7 @@ let
 in
 stdenv.mkDerivation {
   inherit name src version;
-  nativeBuildInputs = [ gradle_4 perl makeWrapper ];
+  nativeBuildInputs = [ gradle perl makeWrapper ];
   buildInputs = [ jre ];
 
   patches = [ ./0001-gradle.patch ];
diff --git a/pkgs/servers/nextcloud/default.nix b/pkgs/servers/nextcloud/default.nix
index 02c3759c58b..9fb7a2e3e0e 100644
--- a/pkgs/servers/nextcloud/default.nix
+++ b/pkgs/servers/nextcloud/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "nextcloud";
-  version = "17.0.1";
+  version = "18.0.0";
 
   src = fetchurl {
     url = "https://download.nextcloud.com/server/releases/${pname}-${version}.tar.bz2";
-    sha256 = "0jrbpzc4xf52zfncn6w2m0ch2fszqqz3ny0jq1cw7fy24vjhwgkp";
+    sha256 = "0yr6sh9nf15dpnpcj4ypdmm9l3y8ls57pxsmqh5h913db2jrah0r";
   };
 
   installPhase = ''
diff --git a/pkgs/servers/nginx-sso/default.nix b/pkgs/servers/nginx-sso/default.nix
index 5cc583c68b3..10a0c99996d 100644
--- a/pkgs/servers/nginx-sso/default.nix
+++ b/pkgs/servers/nginx-sso/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   pname = "nginx-sso";
-  version = "0.22.0";
+  version = "0.24.0";
   rev = "v${version}";
 
   goPackagePath = "github.com/Luzifer/nginx-sso";
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "Luzifer";
     repo = "nginx-sso";
-    sha256 = "1kcyb7sbqna18yw3myi3c0imhh4hsa0h2k2y0bqfr2pqsnssz54a";
+    sha256 = "0jkmd1hdr40i1wd3001ixjv1nminsxmwhvnhcgfqcdn5gnaradwn";
   };
 
   postInstall = ''
diff --git a/pkgs/servers/nosql/aerospike/default.nix b/pkgs/servers/nosql/aerospike/default.nix
index d3b80aa00fe..b7b43edc1cd 100644
--- a/pkgs/servers/nosql/aerospike/default.nix
+++ b/pkgs/servers/nosql/aerospike/default.nix
@@ -15,7 +15,12 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoconf automake libtool ];
   buildInputs = [ openssl zlib ];
 
-  NIX_CFLAGS_COMPILE = "-Wno-error=format-truncation";
+  NIX_CFLAGS_COMPILE = [
+    "-Wno-error=format-truncation"
+    "-Wno-error=address-of-packed-member"
+    "-Wno-error=format-overflow"
+    "-Wno-error=stringop-truncation"
+  ];
 
   preBuild = ''
     patchShebangs build/gen_version
diff --git a/pkgs/servers/nosql/arangodb/default.nix b/pkgs/servers/nosql/arangodb/default.nix
index ef75dad9151..e41930a2f48 100644
--- a/pkgs/servers/nosql/arangodb/default.nix
+++ b/pkgs/servers/nosql/arangodb/default.nix
@@ -17,7 +17,7 @@ let
 
     # prevent failing with "cmake-3.13.4/nix-support/setup-hook: line 10: ./3rdParty/rocksdb/RocksDBConfig.cmake.in: No such file or directory"
     dontFixCmake       =                     lib.versionAtLeast version "3.5";
-    NIX_CFLAGS_COMPILE = lib.optionals      (lib.versionAtLeast version "3.5") [ "-Wno-error" ];
+    NIX_CFLAGS_COMPILE = lib.optionalString (lib.versionAtLeast version "3.5") "-Wno-error";
     preConfigure       = lib.optionalString (lib.versionAtLeast version "3.5") "patchShebangs utils";
 
     postPatch = ''
diff --git a/pkgs/servers/nosql/mongodb/default.nix b/pkgs/servers/nosql/mongodb/default.nix
index 4c4ac4c5cb6..c2ae83f3e8a 100644
--- a/pkgs/servers/nosql/mongodb/default.nix
+++ b/pkgs/servers/nosql/mongodb/default.nix
@@ -66,7 +66,7 @@ in stdenv.mkDerivation {
       --replace 'engine("wiredTiger")' 'engine("mmapv1")'
   '';
 
-  NIX_CFLAGS_COMPILE = stdenv.lib.optional stdenv.cc.isClang "-Wno-unused-command-line-argument";
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang "-Wno-unused-command-line-argument";
 
   sconsFlags = [
     "--release"
diff --git a/pkgs/servers/nosql/neo4j/default.nix b/pkgs/servers/nosql/neo4j/default.nix
index 69decb2f28d..98dd604c76d 100644
--- a/pkgs/servers/nosql/neo4j/default.nix
+++ b/pkgs/servers/nosql/neo4j/default.nix
@@ -4,11 +4,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   pname = "neo4j";
-  version = "3.5.12";
+  version = "3.5.14";
 
   src = fetchurl {
     url = "https://neo4j.com/artifact.php?name=neo4j-community-${version}-unix.tar.gz";
-    sha256 = "0v6qs3szxdqi1s8r9bfh5xpfs4hby7wlm3zicj5n46qx44mbg0iv";
+    sha256 = "1zjb6cgk2lpzx6pq1cs5fh65in6b5ccpl1cgfiglgpjc948mnhzv";
   };
 
   buildInputs = [ makeWrapper jre8 which gawk ];
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index 4b1003db284..278ba8d13c5 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -23,7 +23,8 @@ stdenv.mkDerivation rec {
   # Note: this enables libc malloc as a temporary fix for cross-compiling.
   # Due to hardcoded configure flags in jemalloc, we can't cross-compile vendored jemalloc properly, and so we're forced to use libc allocator.
   # It's weird that the build isn't failing because of failure to compile dependencies, it's from failure to link them!
-  makeFlags = "PREFIX=$(out)" + stdenv.lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) " AR=${stdenv.cc.targetPrefix}ar RANLIB=${stdenv.cc.targetPrefix}ranlib MALLOC=libc";
+  makeFlags = [ "PREFIX=$(out)" ]
+    ++ stdenv.lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "AR=${stdenv.cc.targetPrefix}ar" "RANLIB=${stdenv.cc.targetPrefix}ranlib" "MALLOC=libc" ];
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/servers/osrm-backend/default.nix b/pkgs/servers/osrm-backend/default.nix
index c0018529ea8..b744c58d4fb 100644
--- a/pkgs/servers/osrm-backend/default.nix
+++ b/pkgs/servers/osrm-backend/default.nix
@@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
     sha256 = "1m4hf26mgfvvx9z37qww8v8w4mhzyfl554ymdnzl99pr5ild093s";
   };
 
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=pessimizing-move" "-Wno-error=redundant-move" ];
+
   nativeBuildInputs = [ cmake pkgconfig ];
   buildInputs = [ bzip2 libxml2 libzip boost lua luabind tbb expat ];
 
diff --git a/pkgs/servers/plex/raw.nix b/pkgs/servers/plex/raw.nix
index 998d64e34f0..380e5bb4be5 100644
--- a/pkgs/servers/plex/raw.nix
+++ b/pkgs/servers/plex/raw.nix
@@ -8,13 +8,13 @@
 # server, and the FHS userenv and corresponding NixOS module should
 # automatically pick up the changes.
 stdenv.mkDerivation rec {
-  version = "1.18.2.2058-e67a4e892";
+  version = "1.18.4.2171-ac2afe5f8";
   pname = "plexmediaserver";
 
   # Fetch the source
   src = fetchurl {
     url = "https://downloads.plex.tv/plex-media-server-new/${version}/redhat/plexmediaserver-${version}.x86_64.rpm";
-    sha256 = "12riaabhc4pp3nbjqvbp81fsnjzw43yfgnkjm7s9il0n85awzg0s";
+    sha256 = "10x4cf1c826vj9gqr7r6k70rrjifmi36sd7imfi7pdw5swizjzqv";
   };
 
   outputs = [ "out" "basedb" ];
diff --git a/pkgs/servers/pounce/default.nix b/pkgs/servers/pounce/default.nix
new file mode 100644
index 00000000000..c581027530e
--- /dev/null
+++ b/pkgs/servers/pounce/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, libressl, fetchzip, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  pname = "pounce";
+  version = "1.0p1";
+
+  src = fetchzip {
+    url = "https://code.causal.agency/june/pounce/archive/${version}.zip";
+    sha256 = "1fh1cf15ybl962n7x70hlg7zfcmpwgq6q90s74d3jhawmjj01syw";
+  };
+
+  patches = [
+    # Don't always create ${ETCDIR}/rc.d
+    (fetchpatch {
+      url = https://code.causal.agency/june/pounce/commit/db65889605a2fa5352e90a573b7584a6b7a59dd5.patch;
+      sha256 = "0bxhig72g4q0hs8lb7g8lb7kf0w9jdy22qwm9yndlwrdw3vi36zq";
+    })
+    # Simplify Linux.mk
+    (fetchpatch {
+      url = https://code.causal.agency/june/pounce/commit/b7dc2e3439a37d23d4847e130b37ece39b8efdd7.patch;
+      sha256 = "0c2pa6w9abkmaaq4957arfmpsrn933vcrs4a2da785v57pgkj4lq";
+    })
+    # Reference openssl(1) by absolute path
+    (fetchpatch {
+      url = https://code.causal.agency/june/pounce/commit/973f19b4fe73ef956fbb4eeaf963bbb83c926203.patch;
+      sha256 = "1w4rhwqfcakzb9a6afq788rrsypay0rw75bjk2f3l66spjb7v3ps";
+    })
+  ];
+
+  buildInputs = [ libressl ];
+
+  configurePhase = "ln -s Linux.mk config.mk";
+
+  buildFlags = [ "all" ];
+
+  makeFlags = [
+    "PREFIX=$(out)"
+    "LIBRESSL_BIN_PREFIX=${libressl}/bin"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://code.causal.agency/june/pounce;
+    description = "Simple multi-client TLS-only IRC bouncer";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ edef ];
+  };
+}
diff --git a/pkgs/servers/quagga/default.nix b/pkgs/servers/quagga/default.nix
index fc130965cf1..bd679fd3ff8 100644
--- a/pkgs/servers/quagga/default.nix
+++ b/pkgs/servers/quagga/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, libcap, libnl, readline, net_snmp, less, perl, texinfo,
+{ stdenv, fetchurl, libcap, libnl, readline, net-snmp, less, perl, texinfo,
   pkgconfig, c-ares }:
 
 stdenv.mkDerivation rec {
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   };
 
   buildInputs =
-    [ readline net_snmp c-ares ]
+    [ readline net-snmp c-ares ]
     ++ stdenv.lib.optionals stdenv.isLinux [ libcap libnl ];
 
   nativeBuildInputs = [ pkgconfig perl texinfo ];
diff --git a/pkgs/servers/rippled/default.nix b/pkgs/servers/rippled/default.nix
index 840f63f3e05..905e776ea36 100644
--- a/pkgs/servers/rippled/default.nix
+++ b/pkgs/servers/rippled/default.nix
@@ -1,34 +1,28 @@
-{ stdenv, fetchFromGitHub, fetchgit, fetchurl, git, cmake, pkgconfig
+{ stdenv, fetchFromGitHub, fetchgit, fetchurl, runCommand, git, cmake, pkgconfig
 , openssl, boost, zlib }:
 
 let
-  sqlite3 = fetchurl {
+  sqlite3 = fetchurl rec {
     url = "https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip";
     sha256 = "0vh9aa5dyvdwsyd8yp88ss300mv2c2m40z79z569lcxa6fqwlpfy";
-  };
-
-  beast = fetchgit {
-    url = "https://github.com/boostorg/beast.git";
-    rev = "2f9a8440c2432d8a196571d6300404cb76314125";
-    sha256 = "1n9ms5cn67b0p0mhldz5psgylds22sm5x22q7knrsf20856vlk5a";
-    fetchSubmodules = false;
-    leaveDotGit = true;
+    passthru.url = url;
   };
 
   docca = fetchgit {
     url = "https://github.com/vinniefalco/docca.git";
     rev = "335dbf9c3613e997ed56d540cc8c5ff2e28cab2d";
-    sha256 = "09cb90k0ygmnlpidybv6nzf6is51i80lnwlvad6ijc3gf1z6i1yh";
-    fetchSubmodules = false;
+    sha256 = "1yisdg7q2p9q9gz0c446796p3ggx9s4d6g8w4j1pjff55655805h";
     leaveDotGit = true;
+    fetchSubmodules = false;
   };
 
-  rocksdb = fetchgit {
+  rocksdb = fetchgit rec {
     url = "https://github.com/facebook/rocksdb.git";
-    rev = "a297643f2e327a8bc7061bfc838fdf11935a2cf2";
-    sha256 = "00z8i4fwr27j9d4ymnls7rcgfvm6xh36a4hy2m2njx4x513pgyzw";
-    fetchSubmodules = false;
+    rev = "v5.17.2";
+    sha256 = "0d9ssggjls1hc4zhng65yg8slqlcw0lr23qr6f39shg42lzr227p";
     leaveDotGit = true;
+    fetchSubmodules = false;
+    postFetch = "cd $out && git tag ${rev}";
   };
 
   lz4 = fetchgit rec {
@@ -51,8 +45,8 @@ let
 
   soci = fetchgit {
     url = "https://github.com/SOCI/soci.git";
-    rev = "3a1f602b3021b925d38828e3ff95f9e7f8887ff7";
-    sha256 = "0lnps42cidlrn43h13b9yc8cs3fwgz7wb6a1kfc9rnw7swkh757f";
+    rev = "04e1870294918d20761736743bb6136314c42dd5";
+    sha256 = "0w3b7qi3bwn8bxh4qbqy6c1fw2bbwh7pxvk8b3qb6h4qgsh6kx89";
     leaveDotGit = true;
     fetchSubmodules = false;
   };
@@ -67,11 +61,11 @@ let
   };
 
   nudb = fetchgit rec {
-    url = "https://github.com/vinniefalco/NuDB.git";
-    rev = "1.0.0";
-    sha256 = "142bxicv25xaw4fmpw8bbblb1grdw30wyj181xl4a5734zw3qgmz";
+    url = "https://github.com/CPPAlliance/NuDB.git";
+    rev = "2.0.1";
+    sha256 = "0h7hmwavrxzj1v547h3z0031ckwphjayfpv1mgcr6q86wm9p5468";
     leaveDotGit = true;
-    fetchSubmodules = false;
+    fetchSubmodules = true; # submodules are needed, rocksdb is dependency
     postFetch = "cd $out && git tag ${rev}";
   };
 
@@ -88,40 +82,54 @@ let
     url = "https://github.com/google/googletest.git";
     rev = "c3bb0ee2a63279a803aaad956b9b26d74bf9e6e2";
     sha256 = "0pj5b6jnrj5lrccz2disr8hklbnzd8hwmrwbfqmvhiwb9q9p0k2k";
-    leaveDotGit = true;
     fetchSubmodules = false;
+    leaveDotGit = true;
   };
 
   google-benchmark = fetchgit {
     url = "https://github.com/google/benchmark.git";
     rev = "5b7683f49e1e9223cf9927b24f6fd3d6bd82e3f8";
     sha256 = "0qg70j47zqnrbszlgrzmxpr4g88kq0gyq6v16bhaggfm83c6mg6i";
-    leaveDotGit = true;
     fetchSubmodules = false;
+    leaveDotGit = true;
   };
+
+  # hack to merge rocksdb revisions from rocksdb and nudb, so build process
+  # will find both
+  rocksdb-merged = runCommand "rocksdb-merged" {
+    buildInputs = [ git ];
+  } ''
+    commit=$(cd ${nudb} && git ls-tree HEAD extras/rocksdb | awk '{ print $3  }')
+    git clone ${rocksdb} $out && cd $out
+    git fetch ${nudb}/extras/rocksdb $commit
+    git checkout $commit
+  '';
 in stdenv.mkDerivation rec {
   pname = "rippled";
-  version = "1.2.1";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "ripple";
     repo = "rippled";
     rev = version;
-    sha256 = "1lm0zzz0hi2sh2f4iqq3scapzdjbxcjgr700fgham9wqgaj2ash5";
+    sha256 = "1z04378bg8lcyrnn7sl3j2zfxbwwy2biasg1d4fbaq4snxg5d1pq";
   };
 
   hardeningDisable = ["format"];
-  cmakeFlags = ["-Dstatic=OFF"];
+  cmakeFlags = [
+    "-Dstatic=OFF"
+    "-DBOOST_LIBRARYDIR=${boost.out}/lib"
+    "-DBOOST_INCLUDEDIR=${boost.dev}/include"
+  ];
 
   nativeBuildInputs = [ pkgconfig cmake git ];
-  buildInputs = [ openssl openssl.dev boost zlib ];
+  buildInputs = [ openssl openssl.dev zlib ];
 
   preConfigure = ''
     export HOME=$PWD
 
-    git config --global url."file://${beast}".insteadOf "https://github.com/vinniefalco/Beast.git"
-    git config --global url."file://${docca}".insteadOf "https://github.com/vinniefalco/docca.git"
-    git config --global url."file://${rocksdb}".insteadOf "https://github.com/facebook/rocksdb.git"
+    git config --global url."file://${docca}".insteadOf "${docca.url}"
+    git config --global url."file://${rocksdb-merged}".insteadOf "${rocksdb.url}"
     git config --global url."file://${lz4}".insteadOf "${lz4.url}"
     git config --global url."file://${libarchive}".insteadOf "${libarchive.url}"
     git config --global url."file://${soci}".insteadOf "${soci.url}"
@@ -131,7 +139,7 @@ in stdenv.mkDerivation rec {
     git config --global url."file://${google-benchmark}".insteadOf "${google-benchmark.url}"
     git config --global url."file://${google-test}".insteadOf "${google-test.url}"
 
-    substituteInPlace CMakeLists.txt --replace "URL https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip" "URL ${sqlite3}"
+    substituteInPlace Builds/CMake/deps/Sqlite.cmake --replace "URL ${sqlite3.url}" "URL ${sqlite3}"
   '';
 
   doCheck = true;
@@ -141,7 +149,7 @@ in stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Ripple P2P payment network reference server";
-    homepage = https://ripple.com;
+    homepage = https://github.com/ripple/rippled;
     maintainers = with maintainers; [ ehmry offline ];
     license = licenses.isc;
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/servers/roundcube/default.nix b/pkgs/servers/roundcube/default.nix
index 8278674faf1..27ff5b409f7 100644
--- a/pkgs/servers/roundcube/default.nix
+++ b/pkgs/servers/roundcube/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "roundcube";
-  version = "1.4.1";
+  version = "1.4.2";
 
   src = fetchurl {
     url = "https://github.com/roundcube/roundcubemail/releases/download/${version}/roundcubemail-${version}-complete.tar.gz";
-    sha256 = "0jml16djrap0602agwm3hvq53c4lw5bg2qklxbfk79qs3v926134";
+    sha256 = "0s8gkfnyid1r4xv07vjrbl6558xv6dyn4aapvx8snqdm79n78fn8";
   };
 
   patches = [ ./0001-Don-t-resolve-symlinks-when-trying-to-find-INSTALL_P.patch ];
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Open Source Webmail Software";
-    maintainers = with stdenv.lib.maintainers; [ vskilet globin ];
+    maintainers = with stdenv.lib.maintainers; [ vskilet globin ma27 ];
     license = stdenv.lib.licenses.gpl3;
     platforms = stdenv.lib.platforms.all;
   };
diff --git a/pkgs/servers/samba/4.x.nix b/pkgs/servers/samba/4.x.nix
index f92c5aaa210..c7ee15bc9f8 100644
--- a/pkgs/servers/samba/4.x.nix
+++ b/pkgs/servers/samba/4.x.nix
@@ -20,11 +20,11 @@ with lib;
 
 stdenv.mkDerivation rec {
   pname = "samba";
-  version = "4.10.10";
+  version = "4.10.11";
 
   src = fetchurl {
     url = "mirror://samba/pub/samba/stable/${pname}-${version}.tar.gz";
-    sha256 = "19b653rr2i9snvapik58phbqj38cxjdlyx6nl3m2y3k1a55p633h";
+    sha256 = "157qvz8x2s7994rzxhcmpc79cfk86zc0rq5qwg8alvjcw0r457v0";
   };
 
   outputs = [ "out" "dev" "man" ];
diff --git a/pkgs/servers/search/elasticsearch/7.x.nix b/pkgs/servers/search/elasticsearch/7.x.nix
index 31891920369..73a947066bf 100644
--- a/pkgs/servers/search/elasticsearch/7.x.nix
+++ b/pkgs/servers/search/elasticsearch/7.x.nix
@@ -17,12 +17,12 @@ let
   shas =
     if enableUnfree
     then {
-      x86_64-linux  = "0x1ws6iqflvzphg2srvdrn4xrr5wd5fnykkc9h006mj9rb5lp1k9";
-      x86_64-darwin = "0yjzgsbsgwa6gbp270fqfm1klm6f8n4s2xmay62gdgvnsj543cxz";
+      x86_64-linux  = "1s27bzx5y8vcd95qrw6av3fhyxb45219x9ahwaxa2cygmbpighrp";
+      x86_64-darwin = "1ia3byir3i5qaarmcaysrg3dhnxjmxnf0m0kzyf61g9aiy87gb7q";
     }
     else {
-      x86_64-linux  = "1nl6yic1j422l2c7mf8wv0ylfx6marrwm7d181z9nzdswq509kpg";
-      x86_64-darwin = "1sy4an9d1faifr3n2y45kalrd22yb68dnpjhi9h8q73c21gp8pzf";
+      x86_64-linux  = "005i7d7ag10qkn7bkx7md50iihvcvc84hay2j94wvsm7yghhbmi3";
+      x86_64-darwin = "01f81720rbzdqc0g1xymhz2lflldfbnb0rh7mpki99pss28vj9sh";
     };
 in
 stdenv.mkDerivation (rec {
diff --git a/pkgs/servers/search/elasticsearch/plugins.nix b/pkgs/servers/search/elasticsearch/plugins.nix
index a40a142368a..cdab1fce7b0 100644
--- a/pkgs/servers/search/elasticsearch/plugins.nix
+++ b/pkgs/servers/search/elasticsearch/plugins.nix
@@ -30,9 +30,9 @@ in {
     pluginName = "analysis-lemmagen";
     version = esVersion;
     src = fetchurl {
-      url = "https://github.com/vhyza/${pluginName}/releases/download/v${version}/${pluginName}-${version}-plugin.zip";
+      url = "https://github.com/vhyza/elasticsearch-${pluginName}/releases/download/v${version}/elasticsearch-${pluginName}-${version}-plugin.zip";
       sha256 =
-        if version == "7.3.1" then "1nb82z6s94mzdx1srb1pwj7cpzs8w74njap0xiqn7sg5ylk6adm8"
+        if version == "7.5.1" then "0js8b9a9ma797448m3sy92qxbwziix8gkcka7hf17dqrb9k29v61"
         else if version == "6.8.3" then "12bshvp01pp2lgwd0cn9l58axg8gdimsh4g9wfllxi1bdpv4cy53"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
@@ -49,7 +49,7 @@ in {
     src = fetchurl {
       url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
       sha256 =
-        if version == "7.3.1" then "1p30by7pqnvj8dcwws51kh9s962c42qwqq07gmj4jl83zxcl8kyl"
+        if version == "7.5.1" then "09wl2bpng4xx384xns960rymnm64b5zn2cb1sp25n85pd0isp4p2"
         else if version == "6.8.3" then "0pmffz761dqjpvmkl7i7xsyw1iyyspqpddxp89rjsznfc9pak5im"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
@@ -66,7 +66,7 @@ in {
     src = fetchurl {
       url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
       sha256 =
-        if version == "7.3.1" then "1b9l17zv6582sdcdiabwd293xx5ckc2d3h6smiv6znk5f4dxj7km"
+        if version == "7.5.1" then "0hhwxkjlkw1yv5sp6pdn5k1y8bdv4mnmb6nby1z4367mig6rm8v9"
         else if version == "6.8.3" then "0kfr4i2rcwinjn31xrc2piicasjanaqcgnbif9xc7lnak2nnzmll"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
@@ -83,7 +83,7 @@ in {
     src = fetchurl {
       url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
       sha256 =
-        if version == "7.3.1" then "1dqd3hd8qa1bsvd1p42k5zcrdmb66d2yspfc7g8nsz89w6b1invg"
+        if version == "7.5.1" then "1j1rgbha5lh0a02h55zqc5qn0mvvi16l2m5r8lmaswp97px056v9"
         else if version == "6.8.3" then "1mm6hj2m1db68n81rzsvlw6nisflr5ikzk5zv9nmk0z641n5vh1x"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
@@ -100,7 +100,7 @@ in {
     src = fetchurl {
       url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
       sha256 =
-        if version == "7.3.1" then "0kpb1hn2fb4lh6kn96vi7265ign9lwcd0zfc19l4n6fpp8js5lfh"
+        if version == "7.5.1" then "15g438zpxrcmsgddwmk3sccy92ha90cyq9c61kcw1q84wfi0a7jl"
         else if version == "6.8.3" then "1s2klpvnhpkrk53p64zbga3b66czi7h1a13f58kfn2cn0zfavnbk"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
@@ -117,13 +117,13 @@ in {
     pluginName = "search-guard";
     version =
       # https://docs.search-guard.com/latest/search-guard-versions
-      if esVersion == "7.3.1" then "${esVersion}-37.0.0"
+      if esVersion == "7.5.1" then "${esVersion}-38.0.0"
       else if esVersion == "6.8.3" then "${esVersion}-25.5"
       else throw "unsupported version ${esVersion} for plugin ${pluginName}";
     src = fetchurl {
       url = "mirror://maven/com/floragunn/${pluginName}-${majorVersion}/${version}/${pluginName}-${majorVersion}-${version}.zip";
       sha256 =
-        if version == "7.3.1-37.0.0" then "0rb631npr6vykrhln3x6q75xwb0wndvrspwnak0rld5d7pqn1r04"
+        if version == "7.5.1-38.0.0" then "1a1wp9wrmz6ji2rnpk0b9jqnp86w0w0z8sb48giyc1gzcy1ra9yh"
         else if version == "6.8.3-25.5" then "0a7ys9qinc0fjyka03cx9rv0pm7wnvslk234zv5vrphkrj52s1cb"
         else throw "unsupported version ${version} for plugin ${pluginName}";
     };
diff --git a/pkgs/servers/search/groonga/default.nix b/pkgs/servers/search/groonga/default.nix
index 7fb7a774e8d..d610a02ee91 100644
--- a/pkgs/servers/search/groonga/default.nix
+++ b/pkgs/servers/search/groonga/default.nix
@@ -7,11 +7,11 @@
 stdenv.mkDerivation rec {
 
   pname = "groonga";
-  version = "9.0.9";
+  version = "9.1.1";
 
   src = fetchurl {
     url    = "https://packages.groonga.org/source/groonga/${pname}-${version}.tar.gz";
-    sha256 = "0axf07cg8j5lahkl41li9f7i3c6318cmlb40865iscmkjl17yxh9";
+    sha256 = "16i5bmypawxjac6g808qgr0z3rvla6g6dr586rmwl7sbq0z2nr82";
   };
 
   buildInputs = with stdenv.lib;
diff --git a/pkgs/servers/search/solr/8.x.nix b/pkgs/servers/search/solr/8.x.nix
index 7abfe9a2b20..db70aadf8d5 100644
--- a/pkgs/servers/search/solr/8.x.nix
+++ b/pkgs/servers/search/solr/8.x.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "solr";
-  version = "8.3.0";
+  version = "8.4.0";
 
   src = fetchurl {
     url = "mirror://apache/lucene/${pname}/${version}/${pname}-${version}.tgz";
-    sha256 = "11qkipmj8qq4gw5lwnx1j8dr2lq8d5h1v1fbdyppw8l6a68j160s";
+    sha256 = "19l11w867y4bms9bmp9pj4ilkay7zb5015vlywdci2mswlafvrv6";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/servers/ser2net/default.nix b/pkgs/servers/ser2net/default.nix
new file mode 100644
index 00000000000..e18d96013e4
--- /dev/null
+++ b/pkgs/servers/ser2net/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, fetchFromGitHub, gensio, libyaml, autoreconfHook }:
+
+stdenv.mkDerivation rec {
+  pname = "ser2net";
+  version = "4.1.1";
+
+  src = fetchFromGitHub {
+    owner = "cminyard";
+    repo = "${pname}";
+    rev = "v${version}";
+    sha256 = "1zl68mmd7pp10cjv1jk8rs2dlbwvzskyb58qvc7ph7vc6957lfhc";
+  };
+
+  buildInputs = [ autoreconfHook gensio libyaml ];
+
+  meta = with lib; {
+    description = "Serial to network connection server";
+    homepage = "https://sourceforge.net/projects/ser2net/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ emantor ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/servers/shairport-sync/default.nix b/pkgs/servers/shairport-sync/default.nix
index f97182612fd..99402b3e1be 100644
--- a/pkgs/servers/shairport-sync/default.nix
+++ b/pkgs/servers/shairport-sync/default.nix
@@ -2,11 +2,11 @@
 , libdaemon, popt, pkgconfig, libconfig, libpulseaudio, soxr }:
 
 stdenv.mkDerivation rec {
-  version = "3.3.4";
+  version = "3.3.5";
   pname = "shairport-sync";
 
   src = fetchFromGitHub {
-    sha256 = "07rxf1la93g5y7yq49fglhxji8vizzr268p1ccf8ws8j025vbl7n";
+    sha256 = "1qaxx1g4dvdx54mc1kw07hm445zij37w6qmkdcwymy13krvsfd4b";
     rev = version;
     repo = "shairport-sync";
     owner = "mikebrady";
diff --git a/pkgs/servers/sip/freeswitch/default.nix b/pkgs/servers/sip/freeswitch/default.nix
index a55d1cf14cd..aeedf8b30ae 100644
--- a/pkgs/servers/sip/freeswitch/default.nix
+++ b/pkgs/servers/sip/freeswitch/default.nix
@@ -1,5 +1,21 @@
+{ fetchFromGitHub, stdenv, lib, pkgconfig, autoreconfHook
+, ncurses, gnutls, readline
+, openssl, perl, sqlite, libjpeg, speex, pcre
+, ldns, libedit, yasm, which, libsndfile, libtiff
+
+, curl, lua, libmysqlclient, postgresql, libopus, libctb, gsmlib
+
+, SystemConfiguration
+
+, modules ? null
+}:
+
 let
 
+availableModules = import ./modules.nix {
+  inherit curl lua libmysqlclient postgresql libopus libctb gsmlib;
+};
+
 # the default list from v1.8.7, except with applications/mod_signalwire also disabled
 defaultModules = mods: with mods; [
   applications.commands
@@ -27,6 +43,9 @@ defaultModules = mods: with mods; [
   codecs.h26x
   codecs.opus
 
+  databases.mariadb
+  databases.pgsql
+
   dialplans.asterisk
   dialplans.xml
 
@@ -57,26 +76,9 @@ defaultModules = mods: with mods; [
   xml_int.cdr
   xml_int.rpc
   xml_int.scgi
-];
-
-in
+] ++ lib.optionals stdenv.isLinux [ endpoints.gsmopen ];
 
-{ fetchurl, stdenv, lib, ncurses, curl, pkgconfig, gnutls, readline
-, openssl, perl, sqlite, libjpeg, speex, pcre
-, ldns, libedit, yasm, which, lua, libopus, libsndfile, libtiff
-
-, modules ? defaultModules
-, postgresql
-, enablePostgres ? true
-
-, SystemConfiguration
-}:
-
-let
-
-availableModules = import ./modules.nix { inherit curl lua libopus; };
-
-enabledModules = modules availableModules;
+enabledModules = (if modules != null then modules else defaultModules) availableModules;
 
 modulesConf = let
   lst = builtins.map (mod: mod.path) enabledModules;
@@ -86,11 +88,13 @@ modulesConf = let
 in
 
 stdenv.mkDerivation rec {
-  name = "freeswitch-1.8.7";
-
-  src = fetchurl {
-    url = "https://files.freeswitch.org/freeswitch-releases/${name}.tar.bz2";
-    sha256 = "0k52mxdfc5w9fdnz8kvfjiwnnjjhnpkirnyrfkhq7bad84m731z4";
+  pname = "freeswitch";
+  version = "1.10.2";
+  src = fetchFromGitHub {
+    owner = "signalwire";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1fmrm51zgrasjbmhs0pzb1lyca3ddx0wd35shvxnkjnifi8qd1h7";
   };
   postPatch = ''
     patchShebangs     libs/libvpx/build/make/rtcd.pl
@@ -98,23 +102,21 @@ stdenv.mkDerivation rec {
       --replace AS=\''${AS} AS=yasm
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  nativeBuildInputs = [ pkgconfig autoreconfHook ];
   buildInputs = [
     openssl ncurses gnutls readline perl libjpeg
     sqlite pcre speex ldns libedit yasm which
     libsndfile libtiff
   ]
   ++ lib.unique (lib.concatMap (mod: mod.inputs) enabledModules)
-  ++ lib.optionals enablePostgres [ postgresql ]
   ++ lib.optionals stdenv.isDarwin [ SystemConfiguration ];
 
   NIX_CFLAGS_COMPILE = "-Wno-error";
 
   hardeningDisable = [ "format" ];
 
-  configureFlags = lib.optionals enablePostgres [ "--enable-core-pgsql-support" ];
-
   preConfigure = ''
+    ./bootstrap.sh
     cp "${modulesConf}" modules.conf
   '';
 
@@ -127,7 +129,7 @@ stdenv.mkDerivation rec {
     description = "Cross-Platform Scalable FREE Multi-Protocol Soft Switch";
     homepage = https://freeswitch.org/;
     license = stdenv.lib.licenses.mpl11;
-    maintainers = with stdenv.lib.maintainers; [ ];
+    maintainers = with stdenv.lib.maintainers; [ misuzu ];
     platforms = with stdenv.lib.platforms; unix;
   };
 }
diff --git a/pkgs/servers/sip/freeswitch/modules.nix b/pkgs/servers/sip/freeswitch/modules.nix
index aed30e467e8..be80fe56dda 100644
--- a/pkgs/servers/sip/freeswitch/modules.nix
+++ b/pkgs/servers/sip/freeswitch/modules.nix
@@ -1,6 +1,10 @@
 { libopus
+, libctb
+, gsmlib
 , lua
 , curl
+, libmysqlclient
+, postgresql
 }:
 
 let
@@ -101,6 +105,11 @@ in
     theora = mk "codecs/mod_theora" [];
   };
 
+  databases = {
+    mariadb = mk "databases/mod_mariadb" [ libmysqlclient ];
+    pgsql = mk "databases/mod_pgsql" [ postgresql ];
+  };
+
   dialplans = {
     asterisk = mk "dialplans/mod_dialplan_asterisk" [];
     directory = mk "dialplans/mod_dialplan_directory" [];
@@ -114,7 +123,7 @@ in
   endpoints = {
     alsa = mk "endpoints/mod_alsa" [];
     dingaling = mk "endpoints/mod_dingaling" [];
-    gsmopen = mk "endpoints/mod_gsmopen" [];
+    gsmopen = mk "endpoints/mod_gsmopen" [ gsmlib libctb ];
     h323 = mk "endpoints/mod_h323" [];
     khomp = mk "endpoints/mod_khomp" [];
     loopback = mk "endpoints/mod_loopback" [];
diff --git a/pkgs/servers/sql/cockroachdb/default.nix b/pkgs/servers/sql/cockroachdb/default.nix
index ba395c5e7f6..6637a75ea2f 100644
--- a/pkgs/servers/sql/cockroachdb/default.nix
+++ b/pkgs/servers/sql/cockroachdb/default.nix
@@ -13,15 +13,17 @@ let
 in
 buildGoPackage rec {
   pname = "cockroach";
-  version = "19.1.4";
+  version = "19.1.5";
 
   goPackagePath = "github.com/cockroachdb/cockroach";
 
   src = fetchurl {
     url = "https://binaries.cockroachdb.com/cockroach-v${version}.src.tgz";
-    sha256 = "1bqzs844ildvyh4332vapsqhfkwcvjmgkkmn3i8ndd89q5yic6fq";
+    sha256 = "1pnzzmxxb7qxiiy8qpl2sifk4qrijjbhmzy47bnjj5ssdsjjjcqy";
   };
 
+  NIX_CFLAGS_COMPILE = stdenv.lib.optionals stdenv.cc.isGNU [ "-Wno-error=deprecated-copy" "-Wno-error=redundant-move" "-Wno-error=pessimizing-move" ];
+
   inherit nativeBuildInputs buildInputs;
 
   buildPhase = ''
diff --git a/pkgs/servers/sql/dolt/default.nix b/pkgs/servers/sql/dolt/default.nix
new file mode 100644
index 00000000000..b9876fbc5ea
--- /dev/null
+++ b/pkgs/servers/sql/dolt/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, lib, buildGoModule }:
+
+buildGoModule rec {
+    pname = "dolt";
+    version = "0.12.0";
+
+    src = fetchFromGitHub {
+        owner = "liquidata-inc";
+        repo = "dolt";
+        rev = "v${version}";
+        sha256 = "1sy8ia9j5aymjpf3k86fc8yw6384iy9ryd8cl72fr9cp70l7sx1q";
+    };
+
+    modRoot = "./go";
+    subPackages = [ "cmd/dolt" "cmd/git-dolt" "cmd/git-dolt-smudge" ];
+    modSha256 = "0fagi529m1gf5jrqdlg9vxxq4yz9k9q8h92ch0gahp43kxfbgr4q";
+
+    meta = with lib; {
+        description = "Relational database with version control and CLI a-la Git.";
+        homepage = "https://github.com/liquidata-inc/dolt";
+        license = licenses.asl20;
+        maintainers = with maintainers; [ danbst ];
+        platforms = platforms.linux ++ platforms.darwin;
+    };
+}
diff --git a/pkgs/servers/sql/percona/5.6.x.nix b/pkgs/servers/sql/percona/5.6.x.nix
index 7f8f0786e03..860c1f8e94f 100644
--- a/pkgs/servers/sql/percona/5.6.x.nix
+++ b/pkgs/servers/sql/percona/5.6.x.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
     "-DINSTALL_SHAREDIR=share/mysql"
   ];
 
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=address-of-packed-member" ];
   NIX_LDFLAGS = "-lgcc_s";
 
   prePatch = ''
diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix
index 440375db841..3f05b3e36c1 100644
--- a/pkgs/servers/sql/postgresql/default.nix
+++ b/pkgs/servers/sql/postgresql/default.nix
@@ -44,7 +44,7 @@ let
 
     buildFlags = [ "world" ];
 
-    NIX_CFLAGS_COMPILE = [ "-I${libxml2.dev}/include/libxml2" ];
+    NIX_CFLAGS_COMPILE = "-I${libxml2.dev}/include/libxml2";
 
     # Otherwise it retains a reference to compiler and fails; see #44767.  TODO: better.
     preConfigure = "CC=${stdenv.cc.targetPrefix}cc";
diff --git a/pkgs/servers/sql/postgresql/ext/plv8.nix b/pkgs/servers/sql/postgresql/ext/plv8.nix
index 75a2853e2c0..ffba1bd8e3b 100644
--- a/pkgs/servers/sql/postgresql/ext/plv8.nix
+++ b/pkgs/servers/sql/postgresql/ext/plv8.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "plv8";
-  version = "2.3.13";
+  version = "2.3.14";
 
   nativeBuildInputs = [ perl ];
   buildInputs = [ v8 postgresql ];
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "plv8";
     repo = "plv8";
     rev = "v${version}";
-    sha256 = "12xpcc1ylzyy75wi1m4vijknzv2gxab05w9z90jb03faq18cnlql";
+    sha256 = "12g7z0xkb6zg2qd0hppk2izq238v1k52vb13jlvaij1rbhh10mbp";
   };
 
   makefile = "Makefile.shared";
diff --git a/pkgs/servers/sql/postgresql/ext/timescaledb.nix b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
index 0427de60aa5..6f0ec04cd75 100644
--- a/pkgs/servers/sql/postgresql/ext/timescaledb.nix
+++ b/pkgs/servers/sql/postgresql/ext/timescaledb.nix
@@ -8,7 +8,7 @@
 
 stdenv.mkDerivation rec {
   pname = "timescaledb";
-  version = "1.5.1";
+  version = "1.6.0";
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [ postgresql openssl ];
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     owner  = "timescale";
     repo   = "timescaledb";
     rev    = "refs/tags/${version}";
-    sha256 = "1mgmkc42nksfsmjg463v03rj1v8gybwlzzi515gxz6ijx8604w4c";
+    sha256 = "0b42rhkycr4pwwa4fxnmppd3bl0xz7azvlm145rd7warlsr5h0lb";
   };
 
   cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" ];
diff --git a/pkgs/servers/tt-rss/theme-feedly/default.nix b/pkgs/servers/tt-rss/theme-feedly/default.nix
index c35667546c6..8ad511e5b5b 100644
--- a/pkgs/servers/tt-rss/theme-feedly/default.nix
+++ b/pkgs/servers/tt-rss/theme-feedly/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchFromGitHub }: stdenv.mkDerivation rec {
   pname = "tt-rss-theme-feedly";
-  version = "2.0.0";
+  version = "2.3.1";
 
   src = fetchFromGitHub {
     owner = "levito";
     repo = "tt-rss-feedly-theme";
     rev = "v${version}";
-    sha256 = "024hngwzfdgw5jqppc8vh75jidfqghaccy969hvbhxhgk6j6l8m4";
+    sha256 = "0rl5g664grx3m7yxa14rgnbvnlc3xnn44kzjji5layxww6jd8h2s";
   };
 
   dontBuild = true;
diff --git a/pkgs/servers/tvheadend/default.nix b/pkgs/servers/tvheadend/default.nix
index 7fad204a018..9a01bf3eed6 100644
--- a/pkgs/servers/tvheadend/default.nix
+++ b/pkgs/servers/tvheadend/default.nix
@@ -25,7 +25,7 @@ in stdenv.mkDerivation {
 
   enableParallelBuilding = true;
 
-  NIX_CFLAGS_COMPILE = "-Wno-error=format-truncation";
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=format-truncation" "-Wno-error=stringop-truncation" ];
 
   # disable dvbscan, as having it enabled causes a network download which
   # cannot happen during build.
diff --git a/pkgs/servers/uhub/default.nix b/pkgs/servers/uhub/default.nix
index 6483973546c..11dd5449b4b 100644
--- a/pkgs/servers/uhub/default.nix
+++ b/pkgs/servers/uhub/default.nix
@@ -44,10 +44,10 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  cmakeFlags = ''
-    -DSYSTEMD_SUPPORT=ON
-    ${if tlsSupport then "-DSSL_SUPPORT=ON" else "-DSSL_SUPPORT=OFF"}
-  '';
+  cmakeFlags = [
+    "-DSYSTEMD_SUPPORT=ON"
+    (if tlsSupport then "-DSSL_SUPPORT=ON" else "-DSSL_SUPPORT=OFF")
+  ];
 
   meta = with stdenv.lib; {
     description = "High performance peer-to-peer hub for the ADC network";
diff --git a/pkgs/servers/unpfs/default.nix b/pkgs/servers/unpfs/default.nix
new file mode 100644
index 00000000000..df6cfb70438
--- /dev/null
+++ b/pkgs/servers/unpfs/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "unpfs";
+  version = "0.0.2019-05-17";
+
+  src = fetchFromGitHub {
+    owner = "pfpacket";
+    repo = "rust-9p";
+    rev = "01cf9c60bff0f35567d876db7be7fb86032b44eb";
+    sha256 = "0mhmr1912z5nyfpcvhnlgb3v67a5n7i2n9l5abi05sfqffqssi79";
+  };
+
+  sourceRoot = "source/example/unpfs";
+
+  cargoSha256 = "1d33nwj3i333a6ji3r3037mgg553lc3wsawm0pz13kbvhjf336i8";
+
+  RUSTC_BOOTSTRAP = 1;
+
+  postInstall = ''
+    install -D -m 0444 ../../README* -t "$out/share/doc/${pname}"
+    install -D -m 0444 ../../LICEN* -t "$out/share/doc/${pname}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "9P2000.L server implementation in Rust";
+    homepage = "https://github.com/pfpacket/rust-9p";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ raskin ];
+
+    # macOS build fails: https://github.com/pfpacket/rust-9p/issues/7
+    platforms = with platforms; linux;
+  };
+}
diff --git a/pkgs/servers/uwsgi/default.nix b/pkgs/servers/uwsgi/default.nix
index 556c44b61a7..7669053d229 100644
--- a/pkgs/servers/uwsgi/default.nix
+++ b/pkgs/servers/uwsgi/default.nix
@@ -89,7 +89,7 @@ stdenv.mkDerivation rec {
     ${lib.concatMapStringsSep "\n" (x: x.install or "") needed}
   '';
 
-  NIX_CFLAGS_LINK = lib.optional withSystemd "-lsystemd" ++ lib.concatMap (x: x.NIX_CFLAGS_LINK or []) needed;
+  NIX_CFLAGS_LINK = toString (lib.optional withSystemd "-lsystemd" ++ lib.concatMap (x: x.NIX_CFLAGS_LINK or []) needed);
 
   meta = with stdenv.lib; {
     homepage = https://uwsgi-docs.readthedocs.org/en/latest/;
diff --git a/pkgs/servers/varnish/default.nix b/pkgs/servers/varnish/default.nix
index 8af11183c69..8d49846cbc0 100644
--- a/pkgs/servers/varnish/default.nix
+++ b/pkgs/servers/varnish/default.nix
@@ -19,7 +19,7 @@ let
         pcre libxslt groff ncurses readline libedit makeWrapper python3
       ];
 
-      buildFlags = "localstatedir=/var/spool";
+      buildFlags = [ "localstatedir=/var/spool" ];
 
       postInstall = ''
         wrapProgram "$out/sbin/varnishd" --prefix PATH : "${stdenv.lib.makeBinPath [ stdenv.cc ]}"
diff --git a/pkgs/servers/web-apps/fileshelter/default.nix b/pkgs/servers/web-apps/fileshelter/default.nix
index 47184fe9c96..928d80b1297 100644
--- a/pkgs/servers/web-apps/fileshelter/default.nix
+++ b/pkgs/servers/web-apps/fileshelter/default.nix
@@ -16,9 +16,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
   buildInputs = [ libzip boost wt4 libconfig ];
 
-  NIX_LDFLAGS = [
-    "-lpthread"
-  ];
+  NIX_LDFLAGS = "-lpthread";
 
   postInstall = ''
     ln -s ${wt4}/share/Wt/resources $out/share/fileshelter/docroot/resources
diff --git a/pkgs/servers/web-apps/matomo/default.nix b/pkgs/servers/web-apps/matomo/default.nix
index 5c88b8efb4a..d5f0b7057f0 100644
--- a/pkgs/servers/web-apps/matomo/default.nix
+++ b/pkgs/servers/web-apps/matomo/default.nix
@@ -3,8 +3,8 @@
 let
   versions = {
     matomo = {
-      version = "3.13.0";
-      sha256 = "0h4jqibb86zw5l26r927qrbjhba8c79pc4xp3hgpi25p3fjncax8";
+      version = "3.13.1";
+      sha256 = "071m3sw3rrhlccbwdyklcn8rwp4mcnii5m2a7zmgx3rv87i9n2ni";
     };
 
     matomo-beta = {
diff --git a/pkgs/servers/web-apps/mediawiki/default.nix b/pkgs/servers/web-apps/mediawiki/default.nix
index 490459f2e25..d16d59af6b9 100644
--- a/pkgs/servers/web-apps/mediawiki/default.nix
+++ b/pkgs/servers/web-apps/mediawiki/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mediawiki";
-  version = "1.33.1";
+  version = "1.34.0";
 
   src = with stdenv.lib; fetchurl {
     url = "https://releases.wikimedia.org/mediawiki/${versions.majorMinor version}/${pname}-${version}.tar.gz";
-    sha256 = "19x10vsgg2fhcpmfvdswwilqwa65byrsmzvhk2v8bsxzhp6s95vx";
+    sha256 = "1lckjnharwxh9xb7gxdxrkb0r3xgd0dh4019cnbixn5mmzgc696y";
   };
 
   prePatch = ''
diff --git a/pkgs/servers/web-apps/moodle/default.nix b/pkgs/servers/web-apps/moodle/default.nix
index 2957d296dc4..3de6005a3cf 100644
--- a/pkgs/servers/web-apps/moodle/default.nix
+++ b/pkgs/servers/web-apps/moodle/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, writeText }:
 
 let
-  version = "3.8";
+  version = "3.8.1";
   stableVersion = builtins.substring 0 2 (builtins.replaceStrings ["."] [""] version);
 in
 
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://download.moodle.org/stable${stableVersion}/${pname}-${version}.tgz";
-    sha256 = "00ssx0drgp1fy062x6alp0x8di7hjn4xc87v8skpy3aznchfxyk9";
+    sha256 = "1xz2wq16blw9p2b6wlrn9lr524gddm5jyac5prka8kp6lrk0v0y1";
   };
 
   phpConfig = writeText "config.php" ''
diff --git a/pkgs/servers/web-apps/shaarli/material-theme.nix b/pkgs/servers/web-apps/shaarli/material-theme.nix
index ef0a4331d41..b0829fce733 100644
--- a/pkgs/servers/web-apps/shaarli/material-theme.nix
+++ b/pkgs/servers/web-apps/shaarli/material-theme.nix
@@ -26,10 +26,13 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
+    # This package has not been updated for the new build process
+    # introduced in 0.10.3 which depends on npm and gulp.
+    broken = true;
     description = "A theme base on Google's Material Design for Shaarli, the superfast delicious clone";
     license = licenses.mit;
     homepage = https://github.com/kalvn/Shaarli-Material;
-    maintainers = with maintainers; [ schneefux ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/servers/web-apps/wordpress/default.nix b/pkgs/servers/web-apps/wordpress/default.nix
index 0cf16f17791..00ea34829aa 100644
--- a/pkgs/servers/web-apps/wordpress/default.nix
+++ b/pkgs/servers/web-apps/wordpress/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wordpress";
-  version = "5.2.4";
+  version = "5.3.2";
 
   src = fetchurl {
     url = "https://wordpress.org/${pname}-${version}.tar.gz";
-    sha256 = "1vf5220rw37sxvzy6yxn636ip2lx4bkc84z7q8rdwcs2wkv6md1p";
+    sha256 = "0rq1j431x0fvcpry721hxglszql4c80qr26fglcdlm51h9z6i1p1";
   };
 
   installPhase = ''
diff --git a/pkgs/servers/webmetro/default.nix b/pkgs/servers/webmetro/default.nix
index 352c5a80e1f..fc9876e10c2 100644
--- a/pkgs/servers/webmetro/default.nix
+++ b/pkgs/servers/webmetro/default.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "1n2c7ygs8qsd5zgii6fqqcwg427bsij082bg4ijnzkq5630dx651";
   };
 
-  cargoSha256 = "07c8rrm70idmpvijvgkbgw5vswcyrghlrzv1km054xds5qxi2ldq";
+  cargoSha256 = "03ncwj9bn21590phcnqyclclcird7rikbhxbwhg8i9i0nad81aaa";
 
   meta = with stdenv.lib; {
     description = "Simple relay server for broadcasting a WebM stream";
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index c334365d8b5..84bf23a0fde 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -1,10 +1,10 @@
 { abiCompat ? null,
-  stdenv, makeWrapper, fetchurl, fetchpatch, buildPackages,
+  stdenv, makeWrapper, fetchurl, fetchpatch, fetchFromGitLab, buildPackages,
   automake, autoconf, gettext, libiconv, libtool, intltool,
   freetype, tradcpp, fontconfig, meson, ninja, ed,
   libGL, spice-protocol, zlib, libGLU, dbus, libunwind, libdrm,
   mesa, udev, bootstrap_cmds, bison, flex, clangStdenv, autoreconfHook,
-  mcpp, epoxy, openssl, pkgconfig, llvm_6,
+  mcpp, epoxy, openssl, pkgconfig, llvm_6, python3,
   ApplicationServices, Carbon, Cocoa, Xplugin
 }:
 
@@ -63,16 +63,18 @@ self: super:
     x11BuildHook = ./imake.sh;
     patches = [./imake.patch ./imake-cc-wrapper-uberhack.patch];
     setupHook = ./imake-setup-hook.sh;
-    CFLAGS = [ ''-DIMAKE_COMPILETIME_CPP='"${if stdenv.isDarwin
+    CFLAGS = "-DIMAKE_COMPILETIME_CPP='\"${if stdenv.isDarwin
       then "${tradcpp}/bin/cpp"
-      else "gcc"}"' ''
-    ];
+      else "gcc"}\"'";
+
     inherit tradcpp;
   });
 
   mkfontdir = self.mkfontscale;
 
-  libxcb = super.libxcb.overrideAttrs (attrs: {
+  libxcb = (super.libxcb.override {
+    python = python3;
+  }).overrideAttrs (attrs: {
     configureFlags = [ "--enable-xkb" "--enable-xinput" ];
     outputs = [ "out" "dev" "man" "doc" ];
   });
@@ -121,9 +123,7 @@ self: super:
     outputs = [ "out" "dev" ];
     propagatedBuildInputs = [ freetype ]; # propagate link reqs. like bzip2
     # prevents "misaligned_stack_error_entering_dyld_stub_binder"
-    configureFlags = lib.optionals isDarwin [
-      "CFLAGS=-O0"
-    ];
+    configureFlags = lib.optional isDarwin "CFLAGS=-O0";
   });
 
   libXxf86vm = super.libXxf86vm.overrideAttrs (attrs: {
@@ -205,9 +205,8 @@ self: super:
   libXi = super.libXi.overrideAttrs (attrs: {
     outputs = [ "out" "dev" "man" "doc" ];
     propagatedBuildInputs = [ self.libXfixes ];
-    configureFlags = stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-      "xorg_cv_malloc0_returns_null=no"
-    ];
+    configureFlags = stdenv.lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
+      "xorg_cv_malloc0_returns_null=no";
   });
 
   libXinerama = super.libXinerama.overrideAttrs (attrs: {
@@ -218,7 +217,7 @@ self: super:
 
   libXmu = super.libXmu.overrideAttrs (attrs: {
     outputs = [ "out" "dev" "doc" ];
-    buildFlags = ''BITMAP_DEFINES=-DBITMAPDIR=\"/no-such-path\"'';
+    buildFlags = [ "BITMAP_DEFINES='-DBITMAPDIR=\"/no-such-path\"'" ];
   });
 
   libXrandr = super.libXrandr.overrideAttrs (attrs: {
@@ -308,6 +307,10 @@ self: super:
     buildInputs = attrs.buildInputs ++ [ freetype fontconfig ];
   });
 
+  xcbproto = super.xcbproto.override {
+    python = python3;
+  };
+
   xcbutil = super.xcbutil.overrideAttrs (attrs: {
     outputs = [ "out" "dev" ];
   });
@@ -336,32 +339,43 @@ self: super:
   xf86inputevdev = super.xf86inputevdev.overrideAttrs (attrs: {
     outputs = [ "out" "dev" ]; # to get rid of xorgserver.dev; man is tiny
     preBuild = "sed -e '/motion_history_proc/d; /history_size/d;' -i src/*.c";
-    installFlags = "sdkdir=\${out}/include/xorg";
+    installFlags = [
+      "sdkdir=${placeholder ''out''}/include/xorg"
+    ];
   });
 
   xf86inputmouse = super.xf86inputmouse.overrideAttrs (attrs: {
-    installFlags = "sdkdir=\${out}/include/xorg";
+    installFlags = [
+      "sdkdir=${placeholder ''out''}/include/xorg"
+    ];
   });
 
   xf86inputjoystick = super.xf86inputjoystick.overrideAttrs (attrs: {
-    installFlags = "sdkdir=\${out}/include/xorg";
+    installFlags = [
+      "sdkdir=${placeholder ''out''}/include/xorg"
+    ];
   });
 
   xf86inputlibinput = super.xf86inputlibinput.overrideAttrs (attrs: {
     outputs = [ "out" "dev" ];
-    installFlags = "sdkdir=\${dev}/include/xorg";
+    installFlags = [
+      "sdkdir=${placeholder ''dev''}/include/xorg"
+    ];
   });
 
   xf86inputsynaptics = super.xf86inputsynaptics.overrideAttrs (attrs: {
     outputs = [ "out" "dev" ]; # *.pc pulls xorgserver.dev
-    installFlags = "sdkdir=\${out}/include/xorg configdir=\${out}/share/X11/xorg.conf.d";
+    installFlags = [
+      "sdkdir=${placeholder ''out''}/include/xorg"
+      "configdir=${placeholder ''out''}/share/X11/xorg.conf.d"
+    ];
   });
 
   xf86inputvmmouse = super.xf86inputvmmouse.overrideAttrs (attrs: {
     configureFlags = [
-      "--sysconfdir=$(out)/etc"
-      "--with-xorg-conf-dir=$(out)/share/X11/xorg.conf.d"
-      "--with-udev-rules-dir=$(out)/lib/udev/rules.d"
+      "--sysconfdir=${placeholder ''out''}/etc"
+      "--with-xorg-conf-dir=${placeholder ''out''}/share/X11/xorg.conf.d"
+      "--with-udev-rules-dir=${placeholder ''out''}/lib/udev/rules.d"
     ];
 
     meta = attrs.meta // {
@@ -382,6 +396,10 @@ self: super:
   xf86videovoodoo  = super.xf86videovoodoo.overrideAttrs  (attrs: { meta = attrs.meta // { broken = true; }; });
   xf86videowsfb    = super.xf86videowsfb.overrideAttrs    (attrs: { meta = attrs.meta // { broken = true; }; });
 
+  xf86videoomap    = super.xf86videoomap.overrideAttrs (attrs: {
+    NIX_CFLAGS_COMPILE = [ "-Wno-error=format-overflow" ];
+  });
+
   xf86videoamdgpu = super.xf86videoamdgpu.overrideAttrs (attrs: {
     configureFlags = [ "--with-xorg-conf-dir=$(out)/share/X11/xorg.conf.d" ];
   });
@@ -727,11 +745,14 @@ self: super:
 
   xf86videointel = super.xf86videointel.overrideAttrs (attrs: {
     # the update script only works with released tarballs :-/
-    name = "xf86-video-intel-2018-12-03";
-    src = fetchurl {
-      url = "http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/snapshot/"
-          + "e5ff8e1828f97891c819c919d7115c6e18b2eb1f.tar.gz";
-      sha256 = "01136zljk6liaqbk8j9m43xxzqj6xy4v50yjgi7l7g6pp8pw0gx6";
+    name = "xf86-video-intel-2019-12-09";
+    src = fetchFromGitLab {
+      domain = "gitlab.freedesktop.org";
+      group = "xorg";
+      owner = "driver";
+      repo = "xf86-video-intel";
+      rev = "f66d39544bb8339130c96d282a80f87ca1606caf";
+      sha256 = "14rwbbn06l8qpx7s5crxghn80vgcx8jmfc7qvivh72d81r0kvywl";
     };
     buildInputs = attrs.buildInputs ++ [self.libXfixes self.libXScrnSaver self.pixman];
     nativeBuildInputs = attrs.nativeBuildInputs ++ [autoreconfHook self.utilmacros];
diff --git a/pkgs/servers/xandikos/default.nix b/pkgs/servers/xandikos/default.nix
new file mode 100644
index 00000000000..27fb93a8803
--- /dev/null
+++ b/pkgs/servers/xandikos/default.nix
@@ -0,0 +1,31 @@
+{ stdenv
+, fetchFromGitHub
+, python3Packages
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "xandikos";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "jelmer";
+    repo = "xandikos";
+    rev = "v${version}";
+    sha256 = "12r8fciid2qpqf054584ywwh49yddyhhpkpcm6jihzyr5y2r4kn1";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    dulwich
+    defusedxml
+    icalendar
+    jinja2
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight CalDAV/CardDAV server";
+    homepage = "https://github.com/jelmer/xandikos";
+    license = licenses.gpl3Plus;
+    maintainers = [ maintainers."0x4A6F" ];
+  };
+}
+
diff --git a/pkgs/servers/zoneminder/default.nix b/pkgs/servers/zoneminder/default.nix
index 2dcaf44010e..e536ea0373c 100644
--- a/pkgs/servers/zoneminder/default.nix
+++ b/pkgs/servers/zoneminder/default.nix
@@ -162,6 +162,10 @@ in stdenv.mkDerivation rec {
     "-DZM_CONFIG_DIR=${placeholder "out"}/etc/zoneminder"
     "-DZM_WEB_USER=${user}"
     "-DZM_WEB_GROUP=${user}"
+
+    # Workaround issue in CMakeLists.txt where ZM_CGIDIR set to ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBEXECDIR}/zoneminder/cgi-bin
+    # But CMAKE_INSTALL_LIBEXECDIR is already an absolute path from cmake setup-hook
+    "-DZM_CGIDIR=${placeholder "out"}/libexec/zoneminder/cgi-bin"
   ];
 
   passthru = { inherit dirName; };