summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix22
-rw-r--r--nixos/modules/misc/ids.nix5
-rw-r--r--nixos/modules/services/mail/rspamd.nix2
-rw-r--r--nixos/modules/services/networking/bitcoind.nix3
-rw-r--r--nixos/modules/services/networking/eternal-terminal.nix6
-rw-r--r--nixos/modules/services/web-servers/nginx/location-options.nix3
-rw-r--r--nixos/modules/services/web-servers/nginx/vhost-options.nix2
-rw-r--r--nixos/modules/testing/test-instrumentation.nix2
-rw-r--r--pkgs/applications/audio/vcv-rack/default.nix27
-rw-r--r--pkgs/applications/audio/vcv-rack/remove-custom-glfw-function.patch16
-rw-r--r--pkgs/applications/editors/vscode/vscode.nix6
-rw-r--r--pkgs/applications/misc/gpscorrelate/default.nix11
-rw-r--r--pkgs/applications/misc/gpscorrelate/fix-localedir.diff27
-rw-r--r--pkgs/applications/networking/instant-messengers/signal-cli/default.nix17
-rw-r--r--pkgs/applications/office/qownnotes/default.nix4
-rw-r--r--pkgs/applications/video/obs-studio/hardcode-ndi-path.patch17
-rw-r--r--pkgs/applications/video/obs-studio/obs-ndi.nix14
-rw-r--r--pkgs/desktops/gnome-3/default.nix8
-rw-r--r--pkgs/desktops/gnome-3/extensions/system-monitor/default.nix3
-rw-r--r--pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix5
-rw-r--r--pkgs/development/interpreters/elixir/1.9.nix6
-rw-r--r--pkgs/development/interpreters/erlang/R22.nix6
-rw-r--r--pkgs/development/libraries/ffmpeg/2.8.nix4
-rw-r--r--pkgs/development/libraries/ffmpeg/3.4.nix4
-rw-r--r--pkgs/development/libraries/ffmpeg/4.nix4
-rw-r--r--pkgs/development/libraries/ndi/default.nix60
-rw-r--r--pkgs/development/libraries/science/biology/elastix/default.nix15
-rw-r--r--pkgs/development/libraries/science/math/mkl/default.nix1
-rw-r--r--pkgs/development/python-modules/apache-airflow/default.nix188
-rw-r--r--pkgs/development/python-modules/apispec/default.nix36
-rw-r--r--pkgs/development/python-modules/cliff/default.nix19
-rw-r--r--pkgs/development/python-modules/croniter/default.nix37
-rw-r--r--pkgs/development/python-modules/flask-admin/default.nix71
-rw-r--r--pkgs/development/python-modules/flask-appbuilder/default.nix80
-rw-r--r--pkgs/development/python-modules/flask-babelex/default.nix47
-rw-r--r--pkgs/development/python-modules/flask-bcrypt/default.nix35
-rw-r--r--pkgs/development/python-modules/flask-mongoengine/default.nix47
-rw-r--r--pkgs/development/python-modules/flask-openid/default.nix34
-rw-r--r--pkgs/development/python-modules/json-merge-patch/default.nix32
-rw-r--r--pkgs/development/python-modules/marshmallow-enum/default.nix42
-rw-r--r--pkgs/development/python-modules/mongoengine/default.nix49
-rw-r--r--pkgs/development/python-modules/prance/default.nix57
-rw-r--r--pkgs/development/python-modules/prison/default.nix33
-rw-r--r--pkgs/development/python-modules/snakebite/default.nix41
-rw-r--r--pkgs/development/python-modules/sqlalchemy-citext/default.nix31
-rw-r--r--pkgs/development/python-modules/wrf-python/default.nix9
-rw-r--r--pkgs/development/python-modules/wtf-peewee/default.nix33
-rw-r--r--pkgs/development/tools/buildpack/default.nix26
-rw-r--r--pkgs/servers/computing/slurm/default.nix4
-rw-r--r--pkgs/servers/sql/postgresql/ext/pgroonga.nix4
-rw-r--r--pkgs/tools/audio/essentia-extractor/default.nix41
-rw-r--r--pkgs/tools/misc/html-proofer/Gemfile.lock2
-rw-r--r--pkgs/tools/misc/html-proofer/gemset.nix4
-rw-r--r--pkgs/tools/networking/croc/default.nix6
-rw-r--r--pkgs/tools/networking/dnsproxy/default.nix23
-rw-r--r--pkgs/tools/networking/tinyfecvpn/default.nix37
-rw-r--r--pkgs/tools/package-management/home-manager/default.nix6
-rw-r--r--pkgs/top-level/all-packages.nix18
-rw-r--r--pkgs/top-level/python-packages.nix34
59 files changed, 1282 insertions, 144 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 3002f5b3909..bb7bc8bd827 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -1405,6 +1405,12 @@
     githubId = 1740337;
     name = "Chris Ostrouchov";
   };
+  contrun = {
+    email = "uuuuuu@protonmail.com";
+    github = "contrun";
+    githubId = 32609395;
+    name = "B YI";
+  };
   couchemar = {
     email = "couchemar@yandex.ru";
     github = "couchemar";
@@ -3944,6 +3950,22 @@
     github = "lovek323";
     name = "Jason O'Conal";
   };
+  lovesegfault = {
+    email = "meurerbernardo@gmail.com";
+    github = "lovesegfault";
+    githubId = 7243783;
+    name = "Bernardo Meurer";
+    keys = [
+      {
+        longkeyid = "rsa2048/0xE421C74191EA186C";
+        fingerprint = "5894 12CE 19DF 582A E10A  3320 E421 C741 91EA 186C";
+      }
+      {
+        longkeyid = "rsa2048/0x4A6D87A0E7475769";
+        fingerprint = "56A8 E164 E834 290C 4AC0  EE3E 4A6D 87A0 E747 5769";
+      }
+    ];
+  };
   lowfatcomputing = {
     email = "andreas.wagner@lowfatcomputing.org";
     github = "lowfatcomputing";
diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix
index a4db2c9d1d8..f8b188e7b1c 100644
--- a/nixos/modules/misc/ids.nix
+++ b/nixos/modules/misc/ids.nix
@@ -11,6 +11,9 @@
 
 { lib, ... }:
 
+let
+  inherit (lib) types;
+in
 {
   options = {
 
@@ -19,6 +22,7 @@
       description = ''
         The user IDs used in NixOS.
       '';
+      type = types.attrsOf types.int;
     };
 
     ids.gids = lib.mkOption {
@@ -26,6 +30,7 @@
       description = ''
         The group IDs used in NixOS.
       '';
+      type = types.attrsOf types.int;
     };
 
   };
diff --git a/nixos/modules/services/mail/rspamd.nix b/nixos/modules/services/mail/rspamd.nix
index 4db35d9e89a..7ef23ad1726 100644
--- a/nixos/modules/services/mail/rspamd.nix
+++ b/nixos/modules/services/mail/rspamd.nix
@@ -60,7 +60,7 @@ let
       };
       type = mkOption {
         type = types.nullOr (types.enum [
-          "normal" "controller" "fuzzy_storage" "rspamd_proxy" "lua" "proxy"
+          "normal" "controller" "fuzzy" "rspamd_proxy" "lua" "proxy"
         ]);
         description = ''
           The type of this worker. The type <literal>proxy</literal> is
diff --git a/nixos/modules/services/networking/bitcoind.nix b/nixos/modules/services/networking/bitcoind.nix
index 90f1291c019..4e00a886547 100644
--- a/nixos/modules/services/networking/bitcoind.nix
+++ b/nixos/modules/services/networking/bitcoind.nix
@@ -177,9 +177,6 @@ in {
         NoNewPrivileges = "true";
         PrivateDevices = "true";
         MemoryDenyWriteExecute = "true";
-
-        # Permission for preStart
-        PermissionsStartOnly = "true";
       };
     };
     users.users.${cfg.user} = {
diff --git a/nixos/modules/services/networking/eternal-terminal.nix b/nixos/modules/services/networking/eternal-terminal.nix
index be7337ece7e..a2e5b30dc0f 100644
--- a/nixos/modules/services/networking/eternal-terminal.nix
+++ b/nixos/modules/services/networking/eternal-terminal.nix
@@ -23,6 +23,8 @@ in
         type = types.int;
         description = ''
           The port the server should listen on. Will use the server's default (2022) if not specified.
+
+          Make sure to open this port in the firewall if necessary.
         '';
       };
 
@@ -86,4 +88,8 @@ in
       };
     };
   };
+
+  meta = {
+    maintainers = with lib.maintainers; [ pingiun ];
+  };
 }
diff --git a/nixos/modules/services/web-servers/nginx/location-options.nix b/nixos/modules/services/web-servers/nginx/location-options.nix
index aeb9b1dd79e..2b3749d8a74 100644
--- a/nixos/modules/services/web-servers/nginx/location-options.nix
+++ b/nixos/modules/services/web-servers/nginx/location-options.nix
@@ -1,4 +1,4 @@
-# This file defines the options that can be used both for the Apache
+# This file defines the options that can be used both for the Nginx
 # main server configuration, and for the virtual hosts.  (The latter
 # has additional options that affect the web server as a whole, like
 # the user/group to run under.)
@@ -92,4 +92,3 @@ with lib;
     };
   };
 }
-
diff --git a/nixos/modules/services/web-servers/nginx/vhost-options.nix b/nixos/modules/services/web-servers/nginx/vhost-options.nix
index 15b933c984a..7e488f33a41 100644
--- a/nixos/modules/services/web-servers/nginx/vhost-options.nix
+++ b/nixos/modules/services/web-servers/nginx/vhost-options.nix
@@ -1,4 +1,4 @@
-# This file defines the options that can be used both for the Apache
+# This file defines the options that can be used both for the Nginx
 # main server configuration, and for the virtual hosts.  (The latter
 # has additional options that affect the web server as a whole, like
 # the user/group to run under.)
diff --git a/nixos/modules/testing/test-instrumentation.nix b/nixos/modules/testing/test-instrumentation.nix
index 1a11d9ce7c2..1baeab53b0c 100644
--- a/nixos/modules/testing/test-instrumentation.nix
+++ b/nixos/modules/testing/test-instrumentation.nix
@@ -15,7 +15,7 @@ with import ../../lib/qemu-flags.nix { inherit pkgs; };
   #
   # One particular example are the boot tests where we want instrumentation
   # within the images but not other stuff like setting up 9p filesystems.
-  options.virtualisation.qemu.program = mkOption { type = types.path; };
+  options.virtualisation.qemu = { };
 
   config = {
 
diff --git a/pkgs/applications/audio/vcv-rack/default.nix b/pkgs/applications/audio/vcv-rack/default.nix
index 1beb68a3af3..c0bbd6e71db 100644
--- a/pkgs/applications/audio/vcv-rack/default.nix
+++ b/pkgs/applications/audio/vcv-rack/default.nix
@@ -3,17 +3,10 @@
 , libzip, rtaudio, rtmidi, speex, libsamplerate }:
 
 let
-  glfw-git = glfw.overrideAttrs (oldAttrs: rec {
-    name = "glfw-git-${version}";
-    version = "2019-06-30";
-    src = fetchFromGitHub {
-      owner = "glfw";
-      repo = "glfw";
-      rev = "d25248343e248337284dfbe5ecd1eddbd37ae66d";
-      sha256 = "0gbz353bfmqbpm0af2nqf5draz3k4f3lqwiqj68s8nwn7878aqm3";
-    };
-    buildInputs = oldAttrs.buildInputs ++ [ libXext libXi ];
-  });
+  # The package repo vendors some of the package dependencies as submodules.
+  # Others are downloaded with `make deps`. Due to previous issues with the
+  # `glfw` submodule (see above) and because we can not access the network when
+  # building in a sandbox, we fetch the dependency source manually.
   pfft-source = fetchFromBitbucket {
     owner = "jpommier";
     repo = "pffft";
@@ -47,24 +40,22 @@ let
 in
 with stdenv.lib; stdenv.mkDerivation rec {
   pname = "VCV-Rack";
-  version = "1.1.5";
+  version = "1.1.6";
 
   src = fetchFromGitHub {
     owner = "VCVRack";
     repo = "Rack";
     rev = "v${version}";
-    sha256 = "1g3mkghgiycbxyvzjhanc1b10jynkfkw03bpnha06qgd6gd9wv7k";
+    sha256 = "0ji64prr74qzxf5bx1sw022kbslx9nzll16lmk5in78hbl137b3i";
   };
 
   patches = [
     ./rack-minimize-vendoring.patch
-    # We patch out a call to a custom function, that is not needed on Linux.
-    # This avoids needing a patched version of glfw. The version we previously used disappeared
-    # on GitHub. See https://github.com/NixOS/nixpkgs/issues/71189
-    ./remove-custom-glfw-function.patch
   ];
 
   prePatch = ''
+    # As we can't use `make dep` to set up the dependencies (as explained
+    # above), we do it here manually
     mkdir -p dep/include
 
     cp -r ${pfft-source} dep/jpommier-pffft-source
@@ -86,7 +77,7 @@ with stdenv.lib; stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   nativeBuildInputs = [ makeWrapper pkgconfig ];
-  buildInputs = [ glfw-git alsaLib curl glew gtk2-x11 jansson libjack2 libzip rtaudio rtmidi speex libsamplerate ];
+  buildInputs = [ alsaLib curl glew glfw gtk2-x11 jansson libjack2 libsamplerate libzip rtaudio rtmidi speex ];
 
   buildFlags = "Rack";
 
diff --git a/pkgs/applications/audio/vcv-rack/remove-custom-glfw-function.patch b/pkgs/applications/audio/vcv-rack/remove-custom-glfw-function.patch
deleted file mode 100644
index ceb273b81af..00000000000
--- a/pkgs/applications/audio/vcv-rack/remove-custom-glfw-function.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/src/main.cpp b/src/main.cpp
-index 0954ae6..a8299f7 100644
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -162,11 +162,6 @@ int main(int argc, char* argv[]) {
- 	INFO("Initializing app");
- 	appInit();
- 
--	const char* openedFilename = glfwGetOpenedFilename();
--	if (openedFilename) {
--		patchPath = openedFilename;
--	}
--
- 	if (!settings::headless) {
- 		APP->patch->init(patchPath);
- 	}
diff --git a/pkgs/applications/editors/vscode/vscode.nix b/pkgs/applications/editors/vscode/vscode.nix
index c6ea333b3a3..f914c90dd79 100644
--- a/pkgs/applications/editors/vscode/vscode.nix
+++ b/pkgs/applications/editors/vscode/vscode.nix
@@ -11,13 +11,13 @@ let
   archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
 
   sha256 = {
-    x86_64-linux = "1jxjf1yg17l61n8qmnh4916426da8asp8p36lfyawxif8m9sx8ag";
-    x86_64-darwin = "1yxxvqpk849dzbzhdqz0j16f50z4slcx51bkv2svfb36nxdaahl1";
+    x86_64-linux = "1zxj1vav7swjmvvgcn1y61figjhqrczf8d16rk6yayja1pfjgvs5";
+    x86_64-darwin = "0f6ck40rkngzcm5xih1rbwpz905r533n2z08maycgf4iajgwrn43";
   }.${system};
 in
   callPackage ./generic.nix rec {
 
-    version = "1.40.0";
+    version = "1.40.1";
     pname = "vscode";
 
     executableName = "code" + lib.optionalString isInsiders "-insiders";
diff --git a/pkgs/applications/misc/gpscorrelate/default.nix b/pkgs/applications/misc/gpscorrelate/default.nix
index bf7bec38afb..07918d3d599 100644
--- a/pkgs/applications/misc/gpscorrelate/default.nix
+++ b/pkgs/applications/misc/gpscorrelate/default.nix
@@ -3,17 +3,15 @@
 
 stdenv.mkDerivation rec {
   pname = "gpscorrelate";
-  version = "unstable-2019-09-03";
+  version = "2.0";
 
   src = fetchFromGitHub {
     owner = "dfandrich";
     repo = pname;
-    rev = "e1dd44a34f67b1ab7201440e60a840258ee448d2";
-    sha256 = "0gjwwdqh9dprzylmmnk3gm41khka9arkij3i9amd8y7d49pm9rlv";
+    rev = version;
+    sha256 = "1wkpb0nqnm0ik46hp2sibf96h2gxi6n951zm8c72scgmh4ciq4fl";
   };
 
-  patches = [ ./fix-localedir.diff ];
-
   nativeBuildInputs = [
     desktop-file-utils
     docbook_xml_dtd_42
@@ -30,7 +28,6 @@ stdenv.mkDerivation rec {
 
   makeFlags = [
     "prefix=${placeholder "out"}"
-    "GTK=3"
     "CC=cc"
     "CXX=c++"
     "CFLAGS=-DENABLE_NLS"
@@ -60,7 +57,7 @@ stdenv.mkDerivation rec {
     '';
 
     license = licenses.gpl2Plus;
-    homepage = "https://github.com/dfandrich/gpscorrelate";
+    homepage = "https://dfandrich.github.io/gpscorrelate/";
     platforms = platforms.linux;
     maintainers = with maintainers; [ sikmir ];
   };
diff --git a/pkgs/applications/misc/gpscorrelate/fix-localedir.diff b/pkgs/applications/misc/gpscorrelate/fix-localedir.diff
deleted file mode 100644
index 5f9cb296ecd..00000000000
--- a/pkgs/applications/misc/gpscorrelate/fix-localedir.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git i/Makefile w/Makefile
-index 47919ca..408fd68 100644
---- i/Makefile
-+++ w/Makefile
-@@ -33,8 +33,9 @@ datadir  = $(prefix)/share
- mandir   = $(datadir)/man
- docdir   = $(datadir)/doc/gpscorrelate
- applicationsdir = $(datadir)/applications
-+localedir = ${datadir}/locale
- 
--DEFS = -DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\"
-+DEFS = -DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\" -DPACKAGE_LOCALE_DIR=\"$(localedir)\"
- 
- TARGETS = gpscorrelate-gui$(EXEEXT) gpscorrelate$(EXEEXT) doc/gpscorrelate.1 doc/gpscorrelate.html
- 
-diff --git i/main-gui.c w/main-gui.c
-index fdace6f..8a6197b 100644
---- i/main-gui.c
-+++ w/main-gui.c
-@@ -40,6 +40,7 @@
- int main(int argc, char* argv[])
- {
- 	/* Initialize gettext (gtk_init initializes the locale) */
-+	(void) bindtextdomain(TEXTDOMAIN, PACKAGE_LOCALE_DIR);
- 	(void) textdomain(TEXTDOMAIN);
- 	(void) bind_textdomain_codeset(TEXTDOMAIN, "UTF-8");
- 
diff --git a/pkgs/applications/networking/instant-messengers/signal-cli/default.nix b/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
index 7c474d26c88..027b5b5805c 100644
--- a/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
+++ b/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, makeWrapper, jre_headless }:
+{ stdenv, lib, fetchurl, makeWrapper, jre_headless, libmatthew_java, dbus, dbus_java }:
 
 stdenv.mkDerivation rec {
   pname = "signal-cli";
@@ -10,16 +10,24 @@ stdenv.mkDerivation rec {
     sha256 = "1gvdifscyxmxn2dwlkqi684ahy5kbcj84mqda0m8l4aa8iaq1d59";
   };
 
-  buildInputs = [ makeWrapper ];
+  buildInputs = lib.optional stdenv.isLinux [ libmatthew_java dbus dbus_java ];
+  nativeBuildInputs = [ makeWrapper ];
 
   installPhase = ''
     mkdir -p $out/bin
     cp -r lib $out/lib
     cp bin/signal-cli $out/bin/signal-cli
+  '' + (if stdenv.isLinux then ''
+    makeWrapper ${jre_headless}/bin/java $out/bin/signal-cli \
+      --set JAVA_HOME "${jre_headless}" \
+      --add-flags "-classpath '$out/lib/*:${libmatthew_java}/lib/jni'" \
+      --add-flags "-Djava.library.path=${libmatthew_java}/lib/jni:${dbus_java}/share/java/dbus:$out/lib" \
+      --add-flags "org.asamk.signal.Main"
+  '' else ''
     wrapProgram $out/bin/signal-cli \
       --prefix PATH : ${lib.makeBinPath [ jre_headless ]} \
       --set JAVA_HOME ${jre_headless}
-  '';
+  '');
 
   # Execution in the macOS (10.13) sandbox fails with
   # dyld: Library not loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
@@ -29,6 +37,7 @@ stdenv.mkDerivation rec {
   #         /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa: file system sandbox blocked stat()
   # /nix/store/in41dz8byyyz4c0w132l7mqi43liv4yr-stdenv-darwin/setup: line 1310:  2231 Abort trap: 6           signal-cli --version
   doInstallCheck = stdenv.isLinux;
+
   installCheckPhase = ''
     export PATH=$PATH:$out/bin
     # --help returns non-0 exit code even when working
@@ -39,7 +48,7 @@ stdenv.mkDerivation rec {
     homepage = https://github.com/AsamK/signal-cli;
     description = "Command-line and dbus interface for communicating with the Signal messaging service";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ ivan ];
+    maintainers = with maintainers; [ ivan erictapen ];
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/applications/office/qownnotes/default.nix b/pkgs/applications/office/qownnotes/default.nix
index 4152c08ebaf..b646d0fc93f 100644
--- a/pkgs/applications/office/qownnotes/default.nix
+++ b/pkgs/applications/office/qownnotes/default.nix
@@ -2,13 +2,13 @@
 
 mkDerivation rec {
   pname = "qownnotes";
-  version = "19.10.10";
+  version = "19.11.14";
 
   src = fetchurl {
     url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
     # Can grab official version like so:
     # $ curl https://download.tuxfamily.org/qownnotes/src/qownnotes-19.1.8.tar.xz.sha256
-    sha256 = "1zhszlrcmi8l96wq6hp48d8qv16jlyni02wf41dvh5r9ccfwlq42";
+    sha256 = "8faa67720443fc9a116feae3e7d641922a08814b9af4d973d348ff8a0ee0e35d";
   };
 
   nativeBuildInputs = [ qmake qttools ];
diff --git a/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch b/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch
new file mode 100644
index 00000000000..caef96c381f
--- /dev/null
+++ b/pkgs/applications/video/obs-studio/hardcode-ndi-path.patch
@@ -0,0 +1,17 @@
+diff --git a/src/obs-ndi.cpp b/src/obs-ndi.cpp
+index 493831c..7b0f8db 100644
+--- a/src/obs-ndi.cpp
++++ b/src/obs-ndi.cpp
+@@ -197,11 +197,7 @@ const char* obs_module_description()
+ const NDIlib_v4* load_ndilib()
+ {
+ 	QStringList locations;
+-	locations << QString(qgetenv(NDILIB_REDIST_FOLDER));
+-#if defined(__linux__) || defined(__APPLE__)
+-	locations << "/usr/lib";
+-	locations << "/usr/local/lib";
+-#endif
++	locations << "@NDI@/lib";
+ 
+ 	for (QString path : locations) {
+ 		blog(LOG_INFO, "Trying '%s'", path.toUtf8().constData());
diff --git a/pkgs/applications/video/obs-studio/obs-ndi.nix b/pkgs/applications/video/obs-studio/obs-ndi.nix
index 450ebf4ac20..452793f442e 100644
--- a/pkgs/applications/video/obs-studio/obs-ndi.nix
+++ b/pkgs/applications/video/obs-studio/obs-ndi.nix
@@ -2,15 +2,18 @@
 # somewhat manually install this:
 
 # nix-env -f "<nixpkgs>" -iA obs-ndi
-# mkdir -p ~/.config/obs-studio/plugins
-# ln -s ~/.nix-profile/share/obs/obs-plugins/obs-ndi ~/.config/obs-studio/plugins/
+# mkdir -p ~/.config/obs-studio/plugins/bin
+# ln -s ~/.nix-profile/lib/obs-plugins/obs-ndi.so ~/.config/obs-studio/plugins/bin/
 
-{ stdenv, fetchFromGitHub, obs-studio, cmake, qt5 }:
+{ stdenv, fetchFromGitHub, obs-studio, cmake, qt5, ndi }:
 
 stdenv.mkDerivation rec {
   pname = "obs-ndi";
   version = "4.7.1";
 
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ obs-studio qt5.qtbase ndi ];
+
   src = fetchFromGitHub {
     owner = "Palakis";
     repo = "obs-ndi";
@@ -18,10 +21,9 @@ stdenv.mkDerivation rec {
     sha256 = "040fkbf3f3qgqcrd3072y3zrjb4fwga8zr10jym744xd7bgyylqh";
   };
 
-  patches = [ ./fix-search-path.patch ];
+  patches = [ ./fix-search-path.patch ./hardcode-ndi-path.patch ];
 
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ obs-studio qt5.qtbase ];
+  postPatch = "sed -i -e s,@NDI@,${ndi},g src/obs-ndi.cpp";
 
   cmakeFlags = [
     "-DLIBOBS_INCLUDE_DIR=${obs-studio}/include/obs"
diff --git a/pkgs/desktops/gnome-3/default.nix b/pkgs/desktops/gnome-3/default.nix
index 6d2ae92ac80..3b55cf86bd9 100644
--- a/pkgs/desktops/gnome-3/default.nix
+++ b/pkgs/desktops/gnome-3/default.nix
@@ -349,11 +349,11 @@ lib.makeScope pkgs.newScope (self: with self; {
   pidgin-im-gnome-shell-extension = pkgs.gnomeExtensions.pidgin-im-integration; # added 2019-08-01
 
   # added 2019-08-25
-  corePackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-shell.enable`";
-  optionalPackages = throw "deprecated 2019-08-25: please use `services.gnome3.core-utilities.enable`";
-  gamesPackages = throw "deprecated 2019-08-25: please use `services.gnome3.games.enable`";
+  corePackages = throw "gnome3.corePackages is removed since 2019-08-25: please use `services.gnome3.core-shell.enable`";
+  optionalPackages = throw "gnome3.optionalPackages is removed since 2019-08-25: please use `services.gnome3.core-utilities.enable`";
+  gamesPackages = throw "gnome3.gamesPackages is removed since 2019-08-25: please use `services.gnome3.games.enable`";
 
-  nautilus-sendto = throw "deprecated 2019-09-17: abandoned";
+  nautilus-sendto = throw "nautilus-sendto is removed since 2019-09-17: abandoned upstream";
 
   inherit (pkgs) vala; # added 2019-10-10
 
diff --git a/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix b/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix
index 921991a33ae..13b2d6a1db4 100644
--- a/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix
+++ b/pkgs/desktops/gnome-3/extensions/system-monitor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop, gnome3 }:
+{ stdenv, substituteAll, fetchFromGitHub, glib, glib-networking, libgtop }:
 
 stdenv.mkDerivation rec {
   pname = "gnome-shell-system-monitor";
@@ -41,6 +41,5 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ aneeshusa tiramiseb ];
     homepage = https://github.com/paradoxxxzero/gnome-shell-system-monitor-applet;
-    broken = versionAtLeast gnome3.gnome-shell.version "3.32";
   };
 }
diff --git a/pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix b/pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix
index 5c54a90ce7e..ec0e4377f76 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-8.8.x.nix
@@ -102,11 +102,6 @@ self: super: {
   vault = dontHaddock super.vault;
   monad-par = dontCheck super.monad-par;   # test suite does not compile in monad-par-0.3.4.8
 
-  # TODO dont fetch patch if https://github.com/simonmar/alex/issues/140 is resolved
-  alex = appendPatch super.alex (pkgs.fetchpatch {
-    url = "https://github.com/simonmar/alex/commit/deaae6eddef5186bfd0e42e2c3ced39e26afa4d6.patch";
-    sha256 = "1v40gmnw4lqyk271wngdwz8whpfdhmza58srbkka8icwwwrck3l5";
-  });
   # https://github.com/snapframework/snap-core/issues/288
   snap-core = overrideCabal super.snap-core (drv: { prePatch = "substituteInPlace src/Snap/Internal/Core.hs --replace 'fail   = Fail.fail' ''"; });
   # needs a release
diff --git a/pkgs/development/interpreters/elixir/1.9.nix b/pkgs/development/interpreters/elixir/1.9.nix
index 2d9fec02e10..4eead35bae3 100644
--- a/pkgs/development/interpreters/elixir/1.9.nix
+++ b/pkgs/development/interpreters/elixir/1.9.nix
@@ -1,7 +1,9 @@
 { mkDerivation }:
 
+# How to obtain `sha256`:
+# nix-prefetch-url --unpack https://github.com/elixir-lang/elixir/archive/v${version}.tar.gz
 mkDerivation {
-  version = "1.9.2";
-  sha256 = "19yn6nx6r627f5zbyc7ckgr96d6b45sgwx95n2gp2imqwqvpj8wc";
+  version = "1.9.4";
+  sha256 = "1l4318g35y4h0vi2w07ayc3jizw1xc3s7hdb47w6j3iw33y06g6b";
   minimumOTPVersion = "20";
 }
diff --git a/pkgs/development/interpreters/erlang/R22.nix b/pkgs/development/interpreters/erlang/R22.nix
index 8b471f63247..88fe21453a8 100644
--- a/pkgs/development/interpreters/erlang/R22.nix
+++ b/pkgs/development/interpreters/erlang/R22.nix
@@ -1,8 +1,10 @@
 { mkDerivation }:
 
+# How to obtain `sha256`:
+# nix-prefetch-url --unpack https://github.com/erlang/otp/archive/OTP-${version}.tar.gz
 mkDerivation {
-  version = "22.0.4";
-  sha256 = "1aqkhd6nwdn4xp5yz02zbymd4x8ij8fjw9ji8kh860n1a513k9ai";
+  version = "22.1.7";
+  sha256 = "18aqy2s8nqd82v4lzzxknrwjva8mv1y2hvai9cakz5nkyd3vwq62";
 
   prePatch = ''
     substituteInPlace make/configure.in --replace '`sw_vers -productVersion`' "''${MACOSX_DEPLOYMENT_TARGET:-10.12}"
diff --git a/pkgs/development/libraries/ffmpeg/2.8.nix b/pkgs/development/libraries/ffmpeg/2.8.nix
index 5ffbc215d8b..98ada9a3f09 100644
--- a/pkgs/development/libraries/ffmpeg/2.8.nix
+++ b/pkgs/development/libraries/ffmpeg/2.8.nix
@@ -1,7 +1,7 @@
 { callPackage, ... } @ args:
 
-callPackage ./generic.nix (args // rec {
+callPackage ./generic.nix (rec {
   version = "${branch}.14";
   branch = "2.8";
   sha256 = "1g6x3lyjl1zlfksizj1ys61kj97yg0xf4dlr6sr5acpbja3a26yn";
-})
+} // args)
diff --git a/pkgs/development/libraries/ffmpeg/3.4.nix b/pkgs/development/libraries/ffmpeg/3.4.nix
index bea367b2554..759fba65587 100644
--- a/pkgs/development/libraries/ffmpeg/3.4.nix
+++ b/pkgs/development/libraries/ffmpeg/3.4.nix
@@ -4,9 +4,9 @@
 , ...
 }@args:
 
-callPackage ./generic.nix (args // rec {
+callPackage ./generic.nix (rec {
   version = branch;
   branch = "3.4.6";
   sha256 = "1s20wzgxxrm56gckyb8cf1lh36hdnkdxvmmnnvdxvia4zb3grf1b";
   darwinFrameworks = [ Cocoa CoreMedia ];
-})
+} // args)
diff --git a/pkgs/development/libraries/ffmpeg/4.nix b/pkgs/development/libraries/ffmpeg/4.nix
index a0b95cecaab..387069d1618 100644
--- a/pkgs/development/libraries/ffmpeg/4.nix
+++ b/pkgs/development/libraries/ffmpeg/4.nix
@@ -4,9 +4,9 @@
 , ...
 }@args:
 
-callPackage ./generic.nix (args // rec {
+callPackage ./generic.nix (rec {
   version = "4.2.1";
   branch = "4.2";
   sha256 = "090naa6rj46pzkgh03bf51hbqdz356qqckr2pw6pykc6ysiryak8";
   darwinFrameworks = [ Cocoa CoreMedia VideoToolbox ];
-})
+} // args)
diff --git a/pkgs/development/libraries/ndi/default.nix b/pkgs/development/libraries/ndi/default.nix
new file mode 100644
index 00000000000..fcf9457c691
--- /dev/null
+++ b/pkgs/development/libraries/ndi/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, requireFile, avahi }:
+
+stdenv.mkDerivation rec {
+  pname = "ndi";
+  version = "4";
+
+  src = requireFile rec {
+    name    = "InstallNDISDK_v${version}_Linux.tar.gz";
+    sha256  = "1hac5npyg8nifs9ipj34pkn0zjyx8774x3i3h8znhmijx2j2982p";
+    message = ''
+      In order to use the NDI SDK, you need to comply with NewTek's license and
+      download the Linux version ${version} tarball from:
+
+      ${meta.homepage}
+
+      Once you have downloaded the file, please use the following command and
+      re-run the installation:
+
+      nix-prefetch-url file://\$PWD/${name}
+    '';
+  };
+
+  buildInputs = [ avahi ];
+
+  unpackPhase = ''
+    unpackFile ${src}
+    echo y | ./InstallNDISDK_v4_Linux.sh
+    sourceRoot="NDI SDK for Linux";
+  '';
+
+  installPhase = ''
+    mkdir $out
+    mv bin/x86_64-linux-gnu $out/bin
+    for i in $out/bin/*; do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$i"
+    done
+    patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" $out/bin/ndi-record
+    mv lib/x86_64-linux-gnu $out/lib
+    for i in $out/lib/*; do
+      if [ -L "$i" ]; then continue; fi
+      patchelf --set-rpath "${avahi}/lib:${stdenv.cc.libc}/lib" "$i"
+    done
+    mv include examples $out/
+    mkdir -p $out/share/doc/${pname}-${version}
+    mv licenses $out/share/doc/${pname}-${version}/licenses
+    mv logos $out/share/doc/${pname}-${version}/logos
+    mv documentation/* $out/share/doc/${pname}-${version}/
+  '';
+
+  # Stripping breaks ndi-record.
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    homepage = "https://ndi.tv/sdk/";
+    description = "NDI Software Developer Kit";
+    platforms = ["x86_64-linux"];
+    hydraPlatforms = [];
+    license = licenses.unfree;
+  };
+}
diff --git a/pkgs/development/libraries/science/biology/elastix/default.nix b/pkgs/development/libraries/science/biology/elastix/default.nix
index 9105b1c52ac..4cfc07c1cba 100644
--- a/pkgs/development/libraries/science/biology/elastix/default.nix
+++ b/pkgs/development/libraries/science/biology/elastix/default.nix
@@ -1,15 +1,15 @@
-{ stdenv, fetchurl, cmake, itk, python }:
+{ stdenv, fetchFromGitHub, cmake, itk, python }:
 
 stdenv.mkDerivation rec {
   pname    = "elastix";
-  pversion = "4.9.0";
-  name  = "${pname}-${pversion}";
+  version = "5.0.0";
 
-  src = fetchurl {
-    url    = "https://github.com/SuperElastix/${pname}/archive/${pversion}.tar.gz";
-    sha256 = "02pbln36nq98xxfyqwlxg7b6gmigdq4fgfqr9mym1qn58aj04shg";
+  src = fetchFromGitHub {
+    owner  = "SuperElastix";
+    repo   = pname;
+    rev    = version;
+    sha256 = "1zrl7rz4lwsx88b2shnl985f3a97lmp4ksbd437h9y0hfjq8l0lj";
   };
-
   nativeBuildInputs = [ cmake python ];
   buildInputs = [ itk ];
 
@@ -19,6 +19,5 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ bcdarwin ];
     platforms = platforms.linux;
     license = licenses.asl20;
-    broken = true;
   };
 }
diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix
index c1a5ea2969e..382d2c303e3 100644
--- a/pkgs/development/libraries/science/math/mkl/default.nix
+++ b/pkgs/development/libraries/science/math/mkl/default.nix
@@ -46,6 +46,7 @@ in stdenvNoCC.mkDerivation {
       tar xzvf $f
     done
   '' else ''
+    rpmextract rpm/intel-mkl-cluster-rt-${rpm-ver}.x86_64.rpm
     rpmextract rpm/intel-mkl-common-c-${rpm-ver}.noarch.rpm
     rpmextract rpm/intel-mkl-core-${rpm-ver}.x86_64.rpm
     rpmextract rpm/intel-mkl-core-rt-${rpm-ver}.x86_64.rpm
diff --git a/pkgs/development/python-modules/apache-airflow/default.nix b/pkgs/development/python-modules/apache-airflow/default.nix
new file mode 100644
index 00000000000..c15aac61b5c
--- /dev/null
+++ b/pkgs/development/python-modules/apache-airflow/default.nix
@@ -0,0 +1,188 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, fetchFromGitHub
+, fetchpatch
+, alembic
+, cached-property
+, configparser
+, colorlog
+, croniter
+, dill
+, flask
+, flask-appbuilder
+, flask-admin
+, flask-caching
+, flask_login
+, flask-swagger
+, flask_wtf
+, flask-bcrypt
+, funcsigs
+, future
+, GitPython
+, gunicorn
+, iso8601
+, json-merge-patch
+, jinja2
+, ldap3
+, lxml
+, lazy-object-proxy
+, markdown
+, pandas
+, pendulum
+, psutil
+, pygments
+, python-daemon
+, python-dateutil
+, requests
+, setproctitle
+, snakebite
+, sqlalchemy
+, tabulate
+, tenacity
+, termcolor
+, text-unidecode
+, thrift
+, tzlocal
+, unicodecsv
+, werkzeug
+, zope_deprecation
+, enum34
+, typing
+, nose
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "apache-airflow";
+  version = "1.10.5";
+  disabled = (!isPy3k);
+
+  src = fetchFromGitHub rec {
+    owner = "apache";
+    repo = "airflow";
+    rev = version;
+    sha256 = "14fmhfwx977c9jdb2kgm93i6acx43l45ggj30rb37r68pzpb6l6h";
+  };
+
+  patches = [
+       # Not yet accepted: https://github.com/apache/airflow/pull/6562
+     (fetchpatch {
+       name = "avoid-warning-from-abc.collections";
+       url = https://patch-diff.githubusercontent.com/raw/apache/airflow/pull/6562.patch;
+       sha256 = "0swpay1qlb7f9kgc56631s1qd9k82w4nw2ggvkm7jvxwf056k61z";
+     })
+       # Not yet accepted: https://github.com/apache/airflow/pull/6561
+     (fetchpatch {
+       name = "pendulum2-compatibility";
+       url = https://patch-diff.githubusercontent.com/raw/apache/airflow/pull/6561.patch;
+       sha256 = "17hw8qyd4zxvib9zwpbn32p99vmrdz294r31gnsbkkcl2y6h9knk";
+     })
+  ];
+
+  propagatedBuildInputs = [
+    alembic
+    cached-property
+    colorlog
+    configparser
+    croniter
+    dill
+    flask
+    flask-admin
+    flask-appbuilder
+    flask-bcrypt
+    flask-caching
+    flask_login
+    flask-swagger
+    flask_wtf
+    funcsigs
+    future
+    GitPython
+    gunicorn
+    iso8601
+    json-merge-patch
+    jinja2
+    ldap3
+    lxml
+    lazy-object-proxy
+    markdown
+    pandas
+    pendulum
+    psutil
+    pygments
+    python-daemon
+    python-dateutil
+    requests
+    setproctitle
+    sqlalchemy
+    tabulate
+    tenacity
+    termcolor
+    text-unidecode
+    thrift
+    tzlocal
+    unicodecsv
+    werkzeug
+    zope_deprecation
+  ];
+
+  checkInputs = [
+    snakebite
+    nose
+  ];
+
+  postPatch = ''
+
+   substituteInPlace setup.py \
+     --replace "flask>=1.1.0, <2.0" "flask" \
+     --replace "flask-caching>=1.3.3, <1.4.0" "flask-caching" \
+     --replace "flask-appbuilder>=1.12.5, <2.0.0" "flask-appbuilder" \
+     --replace "pendulum==1.4.4" "pendulum" \
+     --replace "cached_property~=1.5" "cached_property" \
+     --replace "dill>=0.2.2, <0.3" "dill" \
+     --replace "configparser>=3.5.0, <3.6.0" "configparser" \
+     --replace "jinja2>=2.7.3, <=2.10.0" "jinja2" \
+     --replace "funcsigs==1.0.0" "funcsigs" \
+     --replace "flask-swagger==0.2.13" "flask-swagger" \
+     --replace "python-daemon>=2.1.1, <2.2" "python-daemon" \
+     --replace "alembic>=0.9, <1.0" "alembic" \
+     --replace "markdown>=2.5.2, <3.0" "markdown" \
+     --replace "future>=0.16.0, <0.17" "future" \
+     --replace "tenacity==4.12.0" "tenacity" \
+     --replace "text-unidecode==1.2" "text-unidecode" \
+     --replace "tzlocal>=1.4,<2.0.0" "tzlocal" \
+     --replace "sqlalchemy~=1.3" "sqlalchemy" \
+     --replace "werkzeug>=0.14.1, <0.15.0" "werkzeug"
+ 
+  # dumb-init is only needed for CI and Docker, not relevant for NixOS.
+  substituteInPlace setup.py \
+     --replace "'dumb-init>=1.2.2'," ""
+
+   substituteInPlace tests/core.py \
+     --replace "/bin/bash" "${stdenv.shell}"
+  '';
+
+  checkPhase = ''
+   export HOME=$(mktemp -d)
+   export AIRFLOW_HOME=$HOME
+   export AIRFLOW__CORE__UNIT_TEST_MODE=True
+   export AIRFLOW_DB="$HOME/airflow.db"
+   export PATH=$PATH:$out/bin
+
+   airflow version
+   airflow initdb
+   airflow resetdb -y
+   nosetests tests.core.CoreTest
+   ## all tests
+   # nosetests --cover-package=airflow
+  '';
+
+  meta = with lib; {
+    description = "Programmatically author, schedule and monitor data pipelines";
+    homepage = http://airflow.apache.org/;
+    license = licenses.asl20;
+    maintainers = [ maintainers.costrouc maintainers.ingenieroariel ];
+  };
+}
diff --git a/pkgs/development/python-modules/apispec/default.nix b/pkgs/development/python-modules/apispec/default.nix
new file mode 100644
index 00000000000..217a921a634
--- /dev/null
+++ b/pkgs/development/python-modules/apispec/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pyyaml
+, prance
+, marshmallow
+, pytestCheckHook
+, mock
+, openapi-spec-validator
+}:
+
+buildPythonPackage rec {
+  pname = "apispec";
+  version = "3.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0rr32z9hbf8w4w1fs5gj2v0ixcq2vq7a3wssrlxagi5ii7ygap7y";
+  };
+
+  checkInputs = [
+    pyyaml
+    prance
+    openapi-spec-validator
+    marshmallow
+    mock
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification";
+    homepage = https://github.com/marshmallow-code/apispec;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/cliff/default.nix b/pkgs/development/python-modules/cliff/default.nix
index d8ecd2553e8..7882c98e524 100644
--- a/pkgs/development/python-modules/cliff/default.nix
+++ b/pkgs/development/python-modules/cliff/default.nix
@@ -9,6 +9,10 @@
 , pyyaml
 , unicodecsv
 , cmd2
+, pytest
+, mock
+, testtools
+, fixtures
 }:
 
 buildPythonPackage rec {
@@ -31,10 +35,17 @@ buildPythonPackage rec {
     unicodecsv
   ];
 
-  # test dependencies are complex
-  # and would require about 20 packages
-  # to be added
-  doCheck = false;
+  # remove version constraints
+  postPatch = ''
+    sed -i '/cmd2/c\cmd2' requirements.txt
+  '';
+
+  checkInputs = [ fixtures mock pytest testtools ];
+  # add some tests
+  checkPhase = ''
+    pytest cliff/tests/test_{utils,app,command,help,lister}.py \
+      -k 'not interactive_mode'
+  '';
 
   meta = with lib; {
     description = "Command Line Interface Formulation Framework";
diff --git a/pkgs/development/python-modules/croniter/default.nix b/pkgs/development/python-modules/croniter/default.nix
new file mode 100644
index 00000000000..e262a7f164c
--- /dev/null
+++ b/pkgs/development/python-modules/croniter/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, python-dateutil
+, pytest
+, pytz
+}:
+
+buildPythonPackage rec {
+  pname = "croniter";
+  version = "0.3.30";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "538adeb3a7f7816c3cdec6db974c441620d764c25ff4ed0146ee7296b8a50590";
+  };
+
+  propagatedBuildInputs = [
+    python-dateutil
+  ];
+
+  checkInputs = [
+    pytest
+    pytz
+  ];
+
+  checkPhase = ''
+    pytest src/croniter
+  '';
+
+  meta = with lib; {
+    description = "croniter provides iteration for datetime object with cron like format";
+    homepage = http://github.com/kiorky/croniter;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-admin/default.nix b/pkgs/development/python-modules/flask-admin/default.nix
new file mode 100644
index 00000000000..3a2c1fe5e9b
--- /dev/null
+++ b/pkgs/development/python-modules/flask-admin/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, pillow
+, mongoengine
+, pymongo
+, wtf-peewee
+, sqlalchemy
+, sqlalchemy-citext
+, flask-mongoengine
+, flask_sqlalchemy
+, flask-babelex
+, shapely
+, geoalchemy2
+, psycopg2
+, flask
+, wtforms
+, isPy27
+, enum34
+}:
+
+buildPythonPackage rec {
+  pname = "flask-admin";
+  version = "1.5.3";
+
+  src = fetchPypi {
+    pname = "Flask-Admin";
+    inherit version;
+    sha256 = "ca0be6ec11a6913b73f656c65c444ae5be416c57c75638dd3199376ce6bc7422";
+  };
+
+  checkInputs = [
+    nose
+    pillow
+    mongoengine
+    pymongo
+    wtf-peewee
+    sqlalchemy
+    sqlalchemy-citext
+    flask-mongoengine
+    flask_sqlalchemy
+    flask-babelex
+    shapely
+    geoalchemy2
+    psycopg2
+  ];
+
+  propagatedBuildInputs = [
+    flask
+    wtforms
+  ] ++ lib.optionals isPy27 [ enum34 ];
+
+  checkPhase = ''
+    # disable tests that require mongodb, postresql
+    nosetests \
+     -e "mongoengine" \
+     -e "pymongo" \
+     -e "test_form_upload" \
+     -e "test_postgres" \
+     -e "geoa" \
+     flask_admin/tests
+  '';
+
+  meta = with lib; {
+    description = "Simple and extensible admin interface framework for Flask";
+    homepage = https://github.com/flask-admin/flask-admin/;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-appbuilder/default.nix b/pkgs/development/python-modules/flask-appbuilder/default.nix
new file mode 100644
index 00000000000..46841f68d60
--- /dev/null
+++ b/pkgs/development/python-modules/flask-appbuilder/default.nix
@@ -0,0 +1,80 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, nose
+, apispec
+, colorama
+, click
+, flask
+, flask-babel
+, flask_login
+, flask-openid
+, flask_sqlalchemy
+, flask_wtf
+, flask-jwt-extended
+, jsonschema
+, marshmallow
+, marshmallow-enum
+, marshmallow-sqlalchemy
+, python-dateutil
+, prison
+, pyjwt
+, pyyaml
+, sqlalchemy-utils
+}:
+
+buildPythonPackage rec {
+  pname = "flask-appbuilder";
+  version = "2.1.6";
+
+  src = fetchPypi {
+    pname = "Flask-AppBuilder";
+    inherit version;
+    sha256 = "a37d7d6a62407a2e0975af5305c795f2fb5c06ecc34e3cf64659d083b1b2dd5f";
+  };
+
+  checkInputs = [
+    nose
+  ];
+
+  propagatedBuildInputs = [
+    apispec
+    colorama
+    click
+    flask
+    flask-babel
+    flask_login
+    flask-openid
+    flask_sqlalchemy
+    flask_wtf
+    flask-jwt-extended
+    jsonschema
+    marshmallow
+    marshmallow-enum
+    marshmallow-sqlalchemy
+    python-dateutil
+    prison
+    pyjwt
+    sqlalchemy-utils
+    pyyaml
+  ];
+
+  postPatch = ''
+   substituteInPlace setup.py \
+     --replace "jsonschema>=3.0.1<4" "jsonschema" \
+     --replace "marshmallow>=2.18.0,<2.20" "marshmallow" \
+     --replace "PyJWT>=1.7.1" "PyJWT" \
+     --replace "Flask-SQLAlchemy>=2.4,<3" "Flask-SQLAlchemy" \
+     --replace "Flask-JWT-Extended>=3.18,<4" "Flask-JWT-Extended"
+  '';
+
+  # majority of tests require network access or mongo
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Simple and rapid application development framework, built on top of Flask";
+    homepage = https://github.com/dpgaspar/flask-appbuilder/;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-babelex/default.nix b/pkgs/development/python-modules/flask-babelex/default.nix
new file mode 100644
index 00000000000..c5968be6b8f
--- /dev/null
+++ b/pkgs/development/python-modules/flask-babelex/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, Babel
+, speaklater
+, jinja2
+, pytest
+}:
+
+buildPythonPackage rec {
+  pname = "flask-babelex";
+  version = "0.9.3";
+
+  src = fetchPypi {
+    inherit version;
+    pname = "Flask-BabelEx";
+    sha256 = "cf79cdedb5ce860166120136b0e059e9d97b8df07a3bc2411f6243de04b754b4";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    Babel
+    speaklater
+    jinja2
+  ];
+
+  checkInputs = [
+    pytest
+  ];
+
+  checkPhase = ''
+    # Disabled 3 tests failing due to string representations of dates:
+    # Like "12. April 2010 um 15:46:00 MESZ" != 12. "April 2010 15:46:00 MESZ"
+
+    pytest tests/tests.py -k "not test_init_app \
+                              and not test_custom_locale_selector \
+                              and not test_basics"
+  '';
+
+  meta = with lib; {
+    description = "Adds i18n/l10n support to Flask applications";
+    homepage = http://github.com/mrjoes/flask-babelex;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-bcrypt/default.nix b/pkgs/development/python-modules/flask-bcrypt/default.nix
new file mode 100644
index 00000000000..dfcdad18f9c
--- /dev/null
+++ b/pkgs/development/python-modules/flask-bcrypt/default.nix
@@ -0,0 +1,35 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flask
+, bcrypt
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "flask-bcrypt";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    owner = "maxcountryman";
+    repo = pname;
+    rev = version;
+    sha256 = "0036gag3nj7fzib23lbbpwhlrn1s0kkrfwk5pd90y4cjcfqh8z9x";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    bcrypt
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} test_bcrypt.py
+  '';
+
+  meta = with lib; {
+    description = "Brcrypt hashing for Flask";
+    homepage = https://github.com/maxcountryman/flask-bcrypt;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-mongoengine/default.nix b/pkgs/development/python-modules/flask-mongoengine/default.nix
new file mode 100644
index 00000000000..5e61a2415b7
--- /dev/null
+++ b/pkgs/development/python-modules/flask-mongoengine/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flask
+, flask_wtf
+, mongoengine
+, six
+, nose
+, rednose
+, coverage
+}:
+
+buildPythonPackage rec {
+  pname = "flask-mongoengine";
+  version = "0.9.5";
+
+  src = fetchFromGitHub {
+    owner = "MongoEngine";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "05hfddf1dm594wnjyqhj0zmjfsf1kpmx1frjwhypgzx4hf62qcmr";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    flask_wtf
+    mongoengine
+    six
+  ];
+
+  # they set test requirements to setup_requirements...
+  buildInputs = [
+    nose
+    rednose
+    coverage
+  ];
+
+  # tests require working mongodb connection
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Flask-MongoEngine is a Flask extension that provides integration with MongoEngine and WTF model forms";
+    homepage = https://github.com/mongoengine/flask-mongoengine;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/flask-openid/default.nix b/pkgs/development/python-modules/flask-openid/default.nix
new file mode 100644
index 00000000000..ad500163609
--- /dev/null
+++ b/pkgs/development/python-modules/flask-openid/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, flask
+, python3-openid
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "flask-openid";
+  version = "1.2.5";
+  disable = !isPy3k;
+
+  src = fetchPypi {
+    pname = "Flask-OpenID";
+    inherit version;
+    sha256 = "5a8ffe1c8c0ad1cc1f5030e1223ea27f8861ee0215a2a58a528cc61379e5ccab";
+  };
+
+  propagatedBuildInputs = [
+    flask
+    python3-openid
+  ];
+
+  # no tests for repo...
+  doCheck = false;
+
+  meta = with lib; {
+    description = "OpenID support for Flask";
+    homepage = http://github.com/mitsuhiko/flask-openid/;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/json-merge-patch/default.nix b/pkgs/development/python-modules/json-merge-patch/default.nix
new file mode 100644
index 00000000000..b0bc2a835c4
--- /dev/null
+++ b/pkgs/development/python-modules/json-merge-patch/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+}:
+
+buildPythonPackage rec {
+  pname = "json-merge-patch";
+  version = "0.2";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "09898b6d427c08754e2a97c709cf2dfd7e28bd10c5683a538914975eab778d39";
+  };
+
+  patches = [
+    # This prevented tests from running (was using a relative import)
+    # https://github.com/OpenDataServices/json-merge-patch/pull/1
+   (fetchpatch {
+     name = "fully-qualified-json-merge-patch-import-on-tests";
+     url = https://patch-diff.githubusercontent.com/raw/OpenDataServices/json-merge-patch/pull/1.patch;
+     sha256 = "1k6xsrxsmz03nwcqsf4gf0zsfnl2r20n83npic8z6bqlpl4lidl4";
+   })
+  ];
+
+  meta = with lib; {
+    description = "JSON Merge Patch library";
+    homepage = https://github.com/open-contracting/json-merge-patch;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/marshmallow-enum/default.nix b/pkgs/development/python-modules/marshmallow-enum/default.nix
new file mode 100644
index 00000000000..9d68e66c91a
--- /dev/null
+++ b/pkgs/development/python-modules/marshmallow-enum/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, marshmallow
+, pytestCheckHook
+, isPy27
+, enum34
+, pytest-flake8
+}:
+
+buildPythonPackage rec {
+  pname = "marshmallow-enum";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "justanr";
+    repo = "marshmallow_enum";
+    rev = "v${version}";
+    sha256 = "1ihrcmyfjabivg6hc44i59hnw5ijlg1byv3zs1rqxfynp8xr7398";
+  };
+
+  propagatedBuildInputs = [
+    marshmallow
+  ] ++ lib.optionals isPy27 [ enum34 ];
+
+  checkInputs = [
+    pytestCheckHook
+    pytest-flake8
+  ];
+
+  disabledTests = [
+    "test_custom_error_in_deserialize_by_name"
+    "test_custom_error_in_deserialize_by_value"
+  ];
+
+  meta = with lib; {
+    description = "Enum field for Marshmallow";
+    homepage = https://github.com/justanr/marshmallow_enum;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/mongoengine/default.nix b/pkgs/development/python-modules/mongoengine/default.nix
new file mode 100644
index 00000000000..db20d9442ef
--- /dev/null
+++ b/pkgs/development/python-modules/mongoengine/default.nix
@@ -0,0 +1,49 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, pymongo
+, six
+, blinker
+, nose
+, pillow
+, coverage
+}:
+
+buildPythonPackage rec {
+  pname = "mongoengine";
+  version = "0.18.2";
+
+  src = fetchFromGitHub {
+    owner = "MongoEngine";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0gx091h9rcykdj233srrl3dfc0ly52p6r4qc9ah6z0f694kmqj1v";
+  };
+
+  propagatedBuildInputs = [
+    pymongo
+    six
+  ];
+
+  checkInputs = [
+    nose
+    pillow
+    coverage
+    blinker
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "coverage==4.2" "coverage"
+  '';
+
+  # tests require mongodb running in background
+  doCheck = false;
+
+  meta = with lib; {
+    description = "MongoEngine is a Python Object-Document Mapper for working with MongoDB";
+    homepage = http://mongoengine.org/;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/prance/default.nix b/pkgs/development/python-modules/prance/default.nix
new file mode 100644
index 00000000000..38133172ecf
--- /dev/null
+++ b/pkgs/development/python-modules/prance/default.nix
@@ -0,0 +1,57 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, chardet
+, pyyaml
+, requests
+, six
+, semver
+, pytest
+, pytestcov
+, pytestrunner
+, sphinx
+, openapi-spec-validator
+}:
+
+buildPythonPackage rec {
+  pname = "prance";
+  version = "0.15.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "793f96dc8bba73bf4342f57b3570f5e0a94c30e60f0c802a2aaa302759dd8610";
+  };
+
+  buildInputs = [
+    pytestrunner
+  ];
+
+  propagatedBuildInputs = [
+    chardet
+    pyyaml
+    requests
+    six
+    semver
+  ];
+
+  checkInputs = [
+    pytest
+    pytestcov
+    openapi-spec-validator
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "tests_require = dev_require," "tests_require = None,"
+  '';
+
+  # many tests require network connection
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Resolving Swagger/OpenAPI 2.0 and 3.0.0 Parser";
+    homepage = https://github.com/jfinkhaeuser/prance;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/prison/default.nix b/pkgs/development/python-modules/prison/default.nix
new file mode 100644
index 00000000000..4993976b51d
--- /dev/null
+++ b/pkgs/development/python-modules/prison/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, six
+, nose
+}:
+
+buildPythonPackage rec {
+  pname = "prison";
+  version = "0.1.2";
+
+  src = fetchFromGitHub {
+    owner = "betodealmeida";
+    repo = "python-rison";
+    rev = version;
+    sha256 = "14vb468iznf9416z993bbqihywp9ibyslw5vp67wfr200zyxjwak";
+  };
+
+  propagatedBuildInputs = [
+    six
+  ];
+
+  checkInputs = [
+    nose
+  ];
+
+  meta = with lib; {
+    description = "Rison encoder/decoder";
+    homepage = https://github.com/betodealmeida/python-rison;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/snakebite/default.nix b/pkgs/development/python-modules/snakebite/default.nix
new file mode 100644
index 00000000000..1d08570d727
--- /dev/null
+++ b/pkgs/development/python-modules/snakebite/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, tox
+, virtualenv
+, protobuf
+}:
+
+buildPythonPackage rec {
+  pname = "snakebite";
+  version = "2.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "085238b4944cb9c658ee62d5794de936ac3d0c337c504b2cc86424a205ae978a";
+  };
+
+  checkInputs = [
+    tox
+    virtualenv
+  ];
+
+  propagatedBuildInputs = [
+    protobuf
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "'argparse'" ""
+  '';
+
+  # tests require hadoop hdfs
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Pure Python HDFS client";
+    homepage = http://github.com/spotify/snakebite;
+    license = licenses.asl20;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/sqlalchemy-citext/default.nix b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
new file mode 100644
index 00000000000..b91e3385404
--- /dev/null
+++ b/pkgs/development/python-modules/sqlalchemy-citext/default.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, sqlalchemy
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "sqlalchemy-citext";
+  version = "1.3-0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "7d7343037a35153d6f94c3c2f6baf391f88a57651c3bde5d6749d216859ae4c5";
+  };
+
+  propagatedBuildInputs = [
+    sqlalchemy
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} tests/test_citext.py
+  '';
+
+  meta = with lib; {
+    description = "A sqlalchemy plugin that allows postgres use of CITEXT";
+    homepage = https://github.com/mahmoudimus/sqlalchemy-citext;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/python-modules/wrf-python/default.nix b/pkgs/development/python-modules/wrf-python/default.nix
index 8d1443837cd..29c1f8dfa79 100644
--- a/pkgs/development/python-modules/wrf-python/default.nix
+++ b/pkgs/development/python-modules/wrf-python/default.nix
@@ -1,19 +1,20 @@
-{lib, fetchFromGitHub, pythonOlder, buildPythonPackage, gfortran, mock, xarray, wrapt, numpy, netcdf4}:
+{lib, fetchFromGitHub, pythonOlder, buildPythonPackage, gfortran, mock, xarray, wrapt, numpy, netcdf4, setuptools}:
 
 buildPythonPackage rec {
   pname = "wrf-python";
-  version = "1.3.1.1";
+  version = "1.3.2";
 
   src = fetchFromGitHub {
     owner = "NCAR";
     repo = "wrf-python";
     rev = version;
-    sha256 = "12mm7x1r5md6x28vmwyh6k655pgsv6knj8ycmjbxxk8bk7qsj74h";
+    sha256 = "1rklkki54z5392cpwwy78bnmsy2ghc187l3j7nv0rzn6jk5bvyi7";
   };
 
   propagatedBuildInputs = [
     wrapt
     numpy
+    setuptools
     xarray
   ];
 
@@ -39,4 +40,4 @@ buildPythonPackage rec {
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ mhaselsteiner ];
 	};
-}
\ No newline at end of file
+}
diff --git a/pkgs/development/python-modules/wtf-peewee/default.nix b/pkgs/development/python-modules/wtf-peewee/default.nix
new file mode 100644
index 00000000000..a01aaa4631a
--- /dev/null
+++ b/pkgs/development/python-modules/wtf-peewee/default.nix
@@ -0,0 +1,33 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, peewee
+, wtforms
+, python
+}:
+
+buildPythonPackage rec {
+  pname = "wtf-peewee";
+  version = "3.0.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "acd05d136c8595da3327fcf9176fa85fdcec1f2aac51d235e46e6fc7a0871283";
+  };
+
+  propagatedBuildInputs = [
+    peewee
+    wtforms
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} runtests.py
+  '';
+
+  meta = with lib; {
+    description = "WTForms integration for peewee models";
+    homepage = https://github.com/coleifer/wtf-peewee/;
+    license = licenses.mit;
+    maintainers = [ maintainers.costrouc ];
+  };
+}
diff --git a/pkgs/development/tools/buildpack/default.nix b/pkgs/development/tools/buildpack/default.nix
new file mode 100644
index 00000000000..8c1a2bbb62d
--- /dev/null
+++ b/pkgs/development/tools/buildpack/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "pack";
+  version = "0.5.0";
+
+  src = fetchFromGitHub {
+    owner = "buildpack";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0yh62h7lz2i07gixccmfyxk607djp1nrs57rzk7nkxnjcj4jj5sr";
+  };
+
+  goPackagePath = "github.com/buildpack/pack";
+
+  subPackages = [ "cmd/pack" ];
+
+  buildFlagsArray = [ "-ldflags=-s -w -X github.com/buildpack/pack/cmd.Version=${version}" ];
+
+  meta = with lib; {
+    homepage = "https://buildpacks.io/";
+    description = "Local CLI for building apps using Cloud Native Buildpacks";
+    license = licenses.asl20;
+    maintainers = [ maintainers.marsam ];
+  };
+}
diff --git a/pkgs/servers/computing/slurm/default.nix b/pkgs/servers/computing/slurm/default.nix
index e0c7e635d6c..8eb8437b0d5 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.3.2";
+  version = "19.05.4.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 = "1ds4dvwswyx9rjcmcwz2fm2zi3q4gcc2n0fxxihl31i5i6wg1kv0";
+    sha256 = "07ydjda2dl9casz8hh91jlxdyc67mj4af1l2gq3gkzi4397azzz6";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/pkgs/servers/sql/postgresql/ext/pgroonga.nix b/pkgs/servers/sql/postgresql/ext/pgroonga.nix
index 15a22067000..866dd8021d0 100644
--- a/pkgs/servers/sql/postgresql/ext/pgroonga.nix
+++ b/pkgs/servers/sql/postgresql/ext/pgroonga.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pgroonga";
-  version = "2.2.1";
+  version = "2.2.2";
 
   src = fetchurl {
     url = "https://packages.groonga.org/source/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "0d913rkxx6qlkav6z9crsz3ypqkdffn4c667nsgzh5s9n4wbbpb8";
+    sha256 = "0pdz2lpi7g1n9b5rg6kwhh6fr0bwf06zr642brmh53n6mp41186m";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/tools/audio/essentia-extractor/default.nix b/pkgs/tools/audio/essentia-extractor/default.nix
new file mode 100644
index 00000000000..0d2bb17a75d
--- /dev/null
+++ b/pkgs/tools/audio/essentia-extractor/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl }:
+let
+  arch_table = {
+    "x86_64-linux" = "linux-x86_64";
+    "i686-linux" = "linux-i686";
+  };
+
+  sha_table = {
+    "x86_64-linux" =
+      "d9902aadac4f442992877945da2a6fe8d6ea6b0de314ca8ac0c28dc5f253f7d8";
+    "i686-linux" =
+      "46deb0a053b4910c4e68737a7b6556ff5360260c8f86652f91a0130445f5c949";
+  };
+
+  arch = arch_table.${stdenv.system};
+  sha = sha_table.${stdenv.system};
+in stdenv.mkDerivation rec {
+  pname = "essentia-extractor";
+  version = "2.1_beta2";
+
+  src = fetchurl {
+    url =
+      "ftp://ftp.acousticbrainz.org/pub/acousticbrainz/essentia-extractor-v${version}-${arch}.tar.gz";
+    sha256 = sha;
+  };
+
+  unpackPhase = "unpackFile $src ; export sourceRoot=.";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp streaming_extractor_music $out/bin
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://acousticbrainz.org/download";
+    description = "AcousticBrainz audio feature extractor";
+    license = licenses.agpl3Plus;
+    maintainers = with maintainers; [ lovesegfault ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/pkgs/tools/misc/html-proofer/Gemfile.lock b/pkgs/tools/misc/html-proofer/Gemfile.lock
index 18dd1ef6f0a..ac229cf4657 100644
--- a/pkgs/tools/misc/html-proofer/Gemfile.lock
+++ b/pkgs/tools/misc/html-proofer/Gemfile.lock
@@ -6,7 +6,7 @@ GEM
     ethon (0.12.0)
       ffi (>= 1.3.0)
     ffi (1.11.2)
-    html-proofer (3.14.0)
+    html-proofer (3.14.1)
       addressable (~> 2.3)
       mercenary (~> 0.3)
       nokogiri (~> 1.10)
diff --git a/pkgs/tools/misc/html-proofer/gemset.nix b/pkgs/tools/misc/html-proofer/gemset.nix
index a1162cba67e..8cf066c6c68 100644
--- a/pkgs/tools/misc/html-proofer/gemset.nix
+++ b/pkgs/tools/misc/html-proofer/gemset.nix
@@ -37,10 +37,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1hxv70w9zykv1x3a6y2wj6kyby05s26x3gzhnn0iar0hm0l3v8g7";
+      sha256 = "16i803vhrygcbln077czhv9ngipljsawr338lbvd0zr2473r8qja";
       type = "gem";
     };
-    version = "3.14.0";
+    version = "3.14.1";
   };
   mercenary = {
     groups = ["default"];
diff --git a/pkgs/tools/networking/croc/default.nix b/pkgs/tools/networking/croc/default.nix
index b23b5a17e1f..5a63581a28d 100644
--- a/pkgs/tools/networking/croc/default.nix
+++ b/pkgs/tools/networking/croc/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "croc";
-  version = "6.2.0";
+  version = "6.2.3";
 
   goPackagePath = "github.com/schollz/croc";
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "schollz";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0pav0l7akzqgwj7yqkgbpl96kndlb41kg1vmb3g6xp7ykmbdsbbc";
+    sha256 = "13z3k0s7piwxxh87f04ldvxsd664jncwgmin397v5152bxadbgxp";
   };
 
-  modSha256 = "02w4p877nvv7dril7l9nmj8xf3fnghxnj8kglxkv541vabvlpq03";
+  modSha256 = "0d9xhlszgy839naj4v2l613sn3nckx87cwwz1sh1rjwxarp8gqa9";
   subPackages = [ "." ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/networking/dnsproxy/default.nix b/pkgs/tools/networking/dnsproxy/default.nix
new file mode 100644
index 00000000000..6554dd465d4
--- /dev/null
+++ b/pkgs/tools/networking/dnsproxy/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+buildGoModule rec {
+  pname = "dnsproxy";
+  version = "0.20.0";
+
+  src = fetchFromGitHub {
+    owner = "AdguardTeam";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0yd3d90ssdzpbsdq068dvsi0r1z2rlv3wpbmpkhfgpxmwrvdanrq";
+  };
+
+  modSha256 = "0cqwkmhajp3py3b5aj3qz9480qy2ws0vy1gk21bxjm56wqxl2gf0";
+
+  meta = with stdenv.lib; {
+    description = "Simple DNS proxy with DoH, DoT, and DNSCrypt support";
+    homepage = "https://github.com/AdguardTeam/dnsproxy";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ contrun ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/tools/networking/tinyfecvpn/default.nix b/pkgs/tools/networking/tinyfecvpn/default.nix
new file mode 100644
index 00000000000..aab937c994e
--- /dev/null
+++ b/pkgs/tools/networking/tinyfecvpn/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "tinyfecvpn";
+  version = "20180820.0";
+
+  src = fetchFromGitHub {
+    owner = "wangyu-";
+    repo = pname;
+    rev = version;
+    sha256 = "1mbb9kzvy24na375dz0rlf5k93gan1vahamc9wzkn34mcx8i97cs";
+    fetchSubmodules = true;
+  };
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ pkgconfig ];
+
+  patchPhase = ''
+    runHook prePatch
+    find . -type f -name "makefile" -exec sed "s/ -static/ -g/g" -i \{\} \;
+    runHook postPatch
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 tinyvpn $out/bin/tinyvpn
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/wangyu-/tinyfecVPN";
+    description = "A VPN Designed for Lossy Links, with Build-in Forward Error Correction(FEC) Support";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ petabyteboy ];
+  };
+}
diff --git a/pkgs/tools/package-management/home-manager/default.nix b/pkgs/tools/package-management/home-manager/default.nix
index da4bb43066c..f093f442e52 100644
--- a/pkgs/tools/package-management/home-manager/default.nix
+++ b/pkgs/tools/package-management/home-manager/default.nix
@@ -6,13 +6,13 @@
 stdenv.mkDerivation rec {
 
   pname = "home-manager";
-  version = "2019-10-29";
+  version = "2019-11-17";
 
   src = fetchFromGitHub {
     owner = "rycee";
     repo = "home-manager";
-    rev = "450571056552c9311fcb2894328696b535265593";
-    sha256 = "1rlv234m0bqj9x2y9wnl8z3yq8mixzq8332nqlb8fw9k8mazis6s";
+    rev = "286dd9b3088298e5a4625b517f8e72b1c62e4f74";
+    sha256 = "0p3ba287h9a7mpj8chdgvz5qryc15qxdis3fdmv9jvl0hwsr738d";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 83907abdf14..27e5b655cff 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -559,6 +559,8 @@ in
 
   airfield = callPackage ../tools/networking/airfield { };
 
+  apache-airflow = with python3.pkgs; toPythonApplication apache-airflow;
+
   airsonic = callPackage ../servers/misc/airsonic { };
 
   airspy = callPackage ../applications/radio/airspy { };
@@ -855,6 +857,8 @@ in
 
   enpass = callPackage ../tools/security/enpass { };
 
+  essentia-extractor = callPackage ../tools/audio/essentia-extractor { };
+
   esh = callPackage ../tools/text/esh { };
 
   ezstream = callPackage ../tools/audio/ezstream { };
@@ -1249,6 +1253,8 @@ in
     asciidoc = asciidoc-full;
   };
 
+  buildpack = callPackage ../development/tools/buildpack { };
+
   buildtorrent = callPackage ../tools/misc/buildtorrent { };
 
   bustle = haskellPackages.bustle;
@@ -2712,6 +2718,8 @@ in
 
   dnsmasq = callPackage ../tools/networking/dnsmasq { };
 
+  dnsproxy = callPackage ../tools/networking/dnsproxy { };
+
   dnsperf = callPackage ../tools/networking/dnsperf { };
 
   dnsrecon = callPackage ../tools/security/dnsrecon { };
@@ -6678,6 +6686,8 @@ in
 
   tinyemu = callPackage ../applications/virtualization/tinyemu { };
 
+  tinyfecvpn = callPackage ../tools/networking/tinyfecvpn {};
+
   tinyprog = callPackage ../development/tools/misc/tinyprog { };
 
   tinyproxy = callPackage ../tools/networking/tinyproxy {};
@@ -13179,6 +13189,8 @@ in
     then null
     else callPackage ../development/libraries/ncurses { };
 
+  ndi = callPackage ../development/libraries/ndi { };
+
   neardal = callPackage ../development/libraries/neardal { };
 
   neon = callPackage ../development/libraries/neon { };
@@ -18807,7 +18819,7 @@ in
   wireshark-qt = wireshark;
 
   # The GTK UI is deprecated by upstream. You probably want the QT version.
-  wireshark-gtk = throw "Not supported anymore. Use wireshark-qt or wireshark-cli instead.";
+  wireshark-gtk = throw "wireshark-gtk is not supported anymore. Use wireshark-qt or wireshark-cli instead.";
   wireshark-cli = wireshark.override { withQt = false; };
 
   sngrep = callPackage ../applications/networking/sniffers/sngrep {};
@@ -23336,8 +23348,8 @@ in
     topicons-plus = callPackage ../desktops/gnome-3/extensions/topicons-plus { };
     window-corner-preview = callPackage ../desktops/gnome-3/extensions/window-corner-preview { };
 
-    nohotcorner = throw "removed 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
-    mediaplayer = throw "deprecated 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md";
+    nohotcorner = throw "gnomeExtensions.nohotcorner removed since 2019-10-09: Since 3.34, it is a part of GNOME Shell configurable through GNOME Tweaks.";
+    mediaplayer = throw "gnomeExtensions.mediaplayer deprecated since 2019-09-23: retired upstream https://github.com/JasonLG1979/gnome-shell-extensions-mediaplayer/blob/master/README.md";
   };
 
   hsetroot = callPackage ../tools/X11/hsetroot { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 7f1980d40da..e542ed77bbc 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1436,8 +1436,12 @@ in {
 
   antlr4-python3-runtime = callPackage ../development/python-modules/antlr4-python3-runtime { antlr4 = pkgs.antlr4; };
 
+  apache-airflow = callPackage ../development/python-modules/apache-airflow { };
+
   apipkg = callPackage ../development/python-modules/apipkg {};
 
+  apispec = callPackage ../development/python-modules/apispec {};
+
   appdirs = callPackage ../development/python-modules/appdirs { };
 
   appleseed = disabledIf isPy3k
@@ -1673,6 +1677,8 @@ in {
 
   crc16 = callPackage ../development/python-modules/crc16 { };
 
+  croniter = callPackage ../development/python-modules/croniter { };
+
   csscompressor = callPackage ../development/python-modules/csscompressor {};
 
   csvs-to-sqlite = callPackage ../development/python-modules/csvs-to-sqlite { };
@@ -1974,6 +1980,8 @@ in {
 
   jsonlines = callPackage ../development/python-modules/jsonlines { };
 
+  json-merge-patch = callPackage ../development/python-modules/json-merge-patch { };
+
   jsonrpc-async = callPackage ../development/python-modules/jsonrpc-async { };
 
   jsonrpc-base = callPackage ../development/python-modules/jsonrpc-base { };
@@ -3193,6 +3201,10 @@ in {
 
   flask = callPackage ../development/python-modules/flask { };
 
+  flask-admin = callPackage ../development/python-modules/flask-admin { };
+
+  flask-appbuilder = callPackage ../development/python-modules/flask-appbuilder { };
+
   flask-api = callPackage ../development/python-modules/flask-api { };
 
   flask_assets = callPackage ../development/python-modules/flask-assets { };
@@ -3201,6 +3213,10 @@ in {
 
   flask-babel = callPackage ../development/python-modules/flask-babel { };
 
+  flask-babelex = callPackage ../development/python-modules/flask-babelex { };
+
+  flask-bcrypt = callPackage ../development/python-modules/flask-bcrypt { };
+
   flask-bootstrap = callPackage ../development/python-modules/flask-bootstrap { };
 
   flask-caching = callPackage ../development/python-modules/flask-caching { };
@@ -3227,6 +3243,10 @@ in {
 
   flask_migrate = callPackage ../development/python-modules/flask-migrate { };
 
+  flask-mongoengine = callPackage ../development/python-modules/flask-mongoengine { };
+
+  flask-openid = callPackage ../development/python-modules/flask-openid { };
+
   flask-paginate = callPackage ../development/python-modules/flask-paginate { };
 
   flask_principal = callPackage ../development/python-modules/flask-principal { };
@@ -3253,6 +3273,8 @@ in {
 
   wtforms = callPackage ../development/python-modules/wtforms { };
 
+  wtf-peewee = callPackage ../development/python-modules/wtf-peewee { };
+
   graph-tool = callPackage ../development/python-modules/graph-tool/2.x.x.nix {
     inherit (pkgs) pkgconfig;
   };
@@ -3824,6 +3846,8 @@ in {
 
   marshmallow = callPackage ../development/python-modules/marshmallow { };
 
+  marshmallow-enum = callPackage ../development/python-modules/marshmallow-enum { };
+
   marshmallow-sqlalchemy = callPackage ../development/python-modules/marshmallow-sqlalchemy { };
 
   manuel = callPackage ../development/python-modules/manuel { };
@@ -4419,6 +4443,8 @@ in {
 
   praw = if isPy3k then callPackage ../development/python-modules/praw { }
     else callPackage ../development/python-modules/praw/6.3.nix { };
+  
+  prance = callPackage ../development/python-modules/prance { };
 
   prawcore = callPackage ../development/python-modules/prawcore { };
 
@@ -4478,6 +4504,8 @@ in {
 
   mongodict = callPackage ../development/python-modules/mongodict { };
 
+  mongoengine = callPackage ../development/python-modules/mongoengine { };
+
   repoze_who = callPackage ../development/python-modules/repoze_who { };
 
   vobject = callPackage ../development/python-modules/vobject { };
@@ -5123,6 +5151,8 @@ in {
 
   sqlalchemy = callPackage ../development/python-modules/sqlalchemy { };
 
+  sqlalchemy-citext = callPackage ../development/python-modules/sqlalchemy-citext { };
+
   sqlalchemy_migrate = callPackage ../development/python-modules/sqlalchemy-migrate { };
 
   sqlalchemy-utils = callPackage ../development/python-modules/sqlalchemy-utils { };
@@ -5839,6 +5869,8 @@ in {
 
   toposort = callPackage ../development/python-modules/toposort { };
 
+  snakebite = callPackage ../development/python-modules/snakebite { };
+
   snapperGUI = callPackage ../development/python-modules/snappergui { };
 
   dm-sonnet = callPackage ../development/python-modules/dm-sonnet { };
@@ -6199,6 +6231,8 @@ in {
 
   preggy = callPackage ../development/python-modules/preggy { };
 
+  prison = callPackage ../development/python-modules/prison { };
+
   pytoml = callPackage ../development/python-modules/pytoml { };
 
   pypandoc = callPackage ../development/python-modules/pypandoc { };