about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2019-07-28 09:10:03 +0200
committerFrederik Rietdijk <fridh@fridh.nl>2019-07-28 09:10:03 +0200
commitcca5ee9c07b8447757d80cc2d1738d2938305923 (patch)
tree80c05d3143b0b6382207f50a8953620c6fddff0f
parentcc79535f6f499368ecb55e388b64a6c5f8d16cc4 (diff)
parentf441d3e3a534197250f29f79bfa9ce0f4c4812c9 (diff)
downloadnixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar.gz
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar.bz2
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar.lz
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar.xz
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.tar.zst
nixlib-cca5ee9c07b8447757d80cc2d1738d2938305923.zip
Merge staging-next into staging
-rw-r--r--.github/ISSUE_TEMPLATE/security.md27
-rw-r--r--lib/systems/doubles.nix2
-rw-r--r--lib/systems/examples.nix12
-rw-r--r--maintainers/maintainer-list.nix14
-rw-r--r--nixos/doc/manual/configuration/x-windows.xml134
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/monitoring/zabbix-proxy.nix8
-rw-r--r--nixos/modules/services/x11/extra-layouts.nix165
-rw-r--r--nixos/modules/tasks/filesystems/zfs.nix39
-rw-r--r--pkgs/applications/audio/ladspa-sdk/default.nix8
-rw-r--r--pkgs/applications/audio/ladspa-sdk/ladspah.nix4
-rw-r--r--pkgs/applications/audio/synthv1/default.nix4
-rw-r--r--pkgs/applications/audio/wolf-shaper/default.nix4
-rw-r--r--pkgs/applications/misc/cool-retro-term/default.nix4
-rw-r--r--pkgs/applications/misc/dbeaver/default.nix4
-rw-r--r--pkgs/applications/misc/hubstaff/revision.json6
-rw-r--r--pkgs/applications/misc/termdown/default.nix4
-rw-r--r--pkgs/applications/misc/web-media-controller/default.nix29
-rw-r--r--pkgs/applications/networking/cluster/fluxctl/default.nix24
-rw-r--r--pkgs/applications/networking/cluster/k9s/default.nix23
-rw-r--r--pkgs/applications/networking/cluster/linkerd/default.nix24
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix26
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix11
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/data.nix205
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/default.nix1
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/providers.txt5
-rw-r--r--pkgs/applications/networking/instant-messengers/slack/dark-theme.nix6
-rw-r--r--pkgs/applications/networking/remote/x2goclient/default.nix16
-rw-r--r--pkgs/applications/version-management/git-repo/default.nix4
-rw-r--r--pkgs/applications/video/ccextractor/default.nix34
-rw-r--r--pkgs/applications/video/plex-media-player/default.nix4
-rw-r--r--pkgs/applications/virtualization/docker/default.nix18
-rw-r--r--pkgs/applications/window-managers/orbment/bemenu.nix26
-rw-r--r--pkgs/applications/window-managers/orbment/default.nix41
-rw-r--r--pkgs/applications/window-managers/velox/default.nix59
-rw-r--r--pkgs/applications/window-managers/velox/dmenu.nix37
-rw-r--r--pkgs/applications/window-managers/velox/st.nix40
-rw-r--r--pkgs/applications/window-managers/velox/swc.nix36
-rw-r--r--pkgs/applications/window-managers/velox/wld.nix32
-rw-r--r--pkgs/applications/window-managers/way-cooler/default.nix2
-rw-r--r--pkgs/applications/window-managers/way-cooler/wlc.nix (renamed from pkgs/development/libraries/wlc/default.nix)0
-rw-r--r--pkgs/development/idris-modules/sdl2.nix23
-rw-r--r--pkgs/development/interpreters/python/sitecustomize.py8
-rw-r--r--pkgs/development/interpreters/python/wrapper.nix3
-rw-r--r--pkgs/development/libraries/liburing/default.nix6
-rw-r--r--pkgs/development/libraries/opencv/3.x.nix27
-rw-r--r--pkgs/development/libraries/openjpeg/1.x.nix1
-rw-r--r--pkgs/development/libraries/openscenegraph/default.nix12
-rw-r--r--pkgs/development/python-modules/aplpy/default.nix15
-rw-r--r--pkgs/development/python-modules/astropy/default.nix27
-rw-r--r--pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch54
-rw-r--r--pkgs/development/python-modules/astroquery/default.nix25
-rw-r--r--pkgs/development/python-modules/fastapi/default.nix40
-rw-r--r--pkgs/development/python-modules/fastapi/setup.py.patch13
-rw-r--r--pkgs/development/python-modules/pydantic/default.nix51
-rw-r--r--pkgs/development/python-modules/pyregion/default.nix30
-rw-r--r--pkgs/development/python-modules/pytest-arraydiff/default.nix12
-rw-r--r--pkgs/development/python-modules/radio_beam/default.nix24
-rw-r--r--pkgs/development/python-modules/rq/default.nix24
-rw-r--r--pkgs/development/python-modules/simple-salesforce/default.nix51
-rw-r--r--pkgs/development/python-modules/spectral-cube/default.nix24
-rw-r--r--pkgs/development/python-modules/starlette/default.nix51
-rw-r--r--pkgs/development/python-modules/uvicorn/default.nix44
-rw-r--r--pkgs/development/python-modules/uvicorn/setup.patch13
-rw-r--r--pkgs/development/tools/misc/linuxkit/default.nix18
-rw-r--r--pkgs/development/tools/rust/bindgen/default.nix4
-rw-r--r--pkgs/development/tools/vagrant/default.nix3
-rw-r--r--pkgs/games/harmonist/default.nix4
-rw-r--r--pkgs/games/harmonist/deps.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.19.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.1.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-5.2.nix4
-rw-r--r--pkgs/servers/blockbook/default.nix7
-rw-r--r--pkgs/servers/mail/dovecot/2.2.x-module_dir.patch53
-rw-r--r--pkgs/servers/mail/dovecot/default.nix4
-rw-r--r--pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix4
-rw-r--r--pkgs/servers/matrix-synapse/default.nix4
-rw-r--r--pkgs/servers/serviio/default.nix4
-rw-r--r--pkgs/servers/x11/xorg/overrides.nix81
-rw-r--r--pkgs/tools/X11/dragon-drop/default.nix9
-rw-r--r--pkgs/tools/audio/mpd-mpris/default.nix33
-rw-r--r--pkgs/tools/misc/ethtool/default.nix4
-rw-r--r--pkgs/tools/networking/amass/default.nix11
-rw-r--r--pkgs/tools/security/gopass/default.nix7
-rw-r--r--pkgs/top-level/all-packages.nix27
-rw-r--r--pkgs/top-level/python-packages.nix12
86 files changed, 1431 insertions, 595 deletions
diff --git a/.github/ISSUE_TEMPLATE/security.md b/.github/ISSUE_TEMPLATE/security.md
deleted file mode 100644
index 59e7b64cc669..000000000000
--- a/.github/ISSUE_TEMPLATE/security.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-name: Security report
-about: Report security issues
-title: ''
-labels: '1.severity: security'
-assignees: ''
-
----
-
-To privately report a security issue with NixOS, Nix, and its ecosystem,
-please email a member of the NixOS Security Team and we will ensure the issue
-is handled. Our responses will be signed with our GPG keys:
-https://nixos.org/nixos/security.html
-
-**Report**
-
-CVE:
-
-**Metadata**
-
-Maintainer information:
-```yaml
-# a list of nixpkgs attributes affected by the problem
-attribute:
-# a list of nixos modules affected by the problem
-module:
-```
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix
index f096a0b17fc6..823f6a915d6e 100644
--- a/lib/systems/doubles.nix
+++ b/lib/systems/doubles.nix
@@ -26,7 +26,7 @@ let
 
     "riscv32-linux" "riscv64-linux"
 
-    "aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none"
+    "aarch64-none" "avr-none" "arm-none" "i686-none" "x86_64-none" "powerpc-none" "msp430-none" "riscv64-none" "riscv32-none"
   ];
 
   allParsed = map parse.mkSystemFromString all;
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index d17af9fcc148..aa55438de082 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -97,6 +97,18 @@ rec {
   riscv64 = riscv "64";
   riscv32 = riscv "32";
 
+  riscv64-embedded = {
+    config = "riscv64-none-elf";
+    libc = "newlib";
+    platform = platforms.riscv-multiplatform "64";
+  };
+
+  riscv32-embedded = {
+    config = "riscv32-none-elf";
+    libc = "newlib";
+    platform = platforms.riscv-multiplatform "32";
+  };
+
   msp430 = {
     config = "msp430-elf";
     libc = "newlib";
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 5e9c4c5c1167..ee279d0429a7 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -5001,6 +5001,15 @@
     github = "sternenseemann";
     name = "Lukas Epple";
   };
+  steshaw = {
+    name = "Steven Shaw";
+    email = "steven@steshaw.org";
+    github = "steshaw";
+    keys = [{
+      longkeyid = "rsa4096/0x1D9A17DFD23DCB91";
+      fingerprint = "0AFE 77F7 474D 1596 EE55  7A29 1D9A 17DF D23D CB91";
+    }];
+  };
   stesie = {
     email = "stesie@brokenpipe.de";
     github = "stesie";
@@ -5926,4 +5935,9 @@
     github = "mattmelling";
     name = "Matt Melling";
   };
+  wd15 = {
+    email = "daniel.wheeler2@gmail.com";
+    github = "wd15";
+    name = "Daniel Wheeler";
+  };
 }
diff --git a/nixos/doc/manual/configuration/x-windows.xml b/nixos/doc/manual/configuration/x-windows.xml
index 798d1fbdfd85..7cdc5196e0d2 100644
--- a/nixos/doc/manual/configuration/x-windows.xml
+++ b/nixos/doc/manual/configuration/x-windows.xml
@@ -125,10 +125,12 @@
    You will need to reboot after enabling this driver to prevent a clash with
    other kernel modules.
   </para>
+  <note>
   <para>
-   Note: for recent AMD GPUs you most likely want to keep either the defaults
+   For recent AMD GPUs you most likely want to keep either the defaults
    or <literal>"amdgpu"</literal> (both free).
   </para>
+  </note>
  </simplesect>
  <simplesect xml:id="sec-x11-touchpads">
   <title>Touchpads</title>
@@ -157,4 +159,134 @@
    versions.
   </para>
  </simplesect>
+ <simplesect xml:id="custom-xkb-layouts">
+  <title>Custom XKB layouts</title>
+  <para>
+   It is possible to install custom
+   <link xlink:href="https://en.wikipedia.org/wiki/X_keyboard_extension">
+    XKB
+   </link>
+   keyboard layouts using the option
+   <option>
+    <link linkend="opt-services.xserver.extraLayouts">
+     services.xserver.extraLayouts
+    </link>
+   </option>.
+   As a first example, we are going to create a layout based on the basic US
+   layout, with an additional layer to type some greek symbols by pressing the
+   right-alt key.
+  </para>
+  <para>
+   To do this we are going to create a <literal>us-greek</literal> file
+   with a <literal>xkb_symbols</literal> section.
+  </para>
+<programlisting>
+xkb_symbols &quot;us-greek&quot;
+{
+  include &quot;us(basic)&quot;            // includes the base US keys
+  include &quot;level3(ralt_switch)&quot;  // configures right alt as a third level switch
+
+  key &lt;LatA&gt; { [ a, A, Greek_alpha ] };
+  key &lt;LatB&gt; { [ b, B, Greek_beta  ] };
+  key &lt;LatG&gt; { [ g, G, Greek_gamma ] };
+  key &lt;LatD&gt; { [ d, D, Greek_delta ] };
+  key &lt;LatZ&gt; { [ z, Z, Greek_zeta  ] };
+};
+</programlisting>
+  <para>
+   To install the layout, the filepath, a description and the list of
+   languages must be given:
+  </para>
+<programlisting>
+<xref linkend="opt-services.xserver.extraLayouts"/>.us-greek = {
+  description = "US layout with alt-gr greek";
+  languages   = [ "eng" ];
+  symbolsFile = /path/to/us-greek;
+}
+</programlisting>
+  <note>
+  <para>
+   The name should match the one given to the
+   <literal>xkb_symbols</literal> block.
+  </para>
+  </note>
+  <para>
+   The layout should now be installed and ready to use: try it by
+   running <literal>setxkbmap us-greek</literal> and type
+   <literal>&lt;alt&gt;+a</literal>. To change the default the usual
+   <option>
+    <link linkend="opt-services.xserver.layout">
+     services.xserver.layout
+    </link>
+   </option>
+   option can still be used.
+  </para>
+  <para>
+   A layout can have several other components besides
+   <literal>xkb_symbols</literal>, for example we will define new
+   keycodes for some multimedia key and bind these to some symbol.
+  </para>
+  <para>
+   Use the <emphasis>xev</emphasis> utility from
+   <literal>pkgs.xorg.xev</literal> to find the codes of the keys of
+   interest, then create a <literal>media-key</literal> file to hold
+   the keycodes definitions
+  </para>
+<programlisting>
+xkb_keycodes &quot;media&quot;
+{
+ &lt;volUp&gt;   = 123;
+ &lt;volDown&gt; = 456;
+}
+</programlisting>
+  <para>
+    Now use the newly define keycodes in <literal>media-sym</literal>:
+  </para>
+<programlisting>
+xkb_symbols &quot;media&quot;
+{
+ key.type = &quot;ONE_LEVEL&quot;;
+ key &lt;volUp&gt;   { [ XF86AudioLowerVolume ] };
+ key &lt;volDown&gt; { [ XF86AudioRaiseVolume ] };
+}
+</programlisting>
+  <para>
+    As before, to install the layout do
+  </para>
+<programlisting>
+<xref linkend="opt-services.xserver.extraLayouts"/>.media = {
+  description  = "Multimedia keys remapping";
+  languages    = [ "eng" ];
+  symbolsFile  = /path/to/media-key;
+  keycodesFile = /path/to/media-sym;
+};
+</programlisting>
+  <note>
+  <para>
+   The function <literal>pkgs.writeText &lt;filename&gt; &lt;content&gt;
+   </literal> can be useful if you prefer to keep the layout definitions
+   inside the NixOS configuration.
+  </para>
+  </note>
+  <para>
+    Unfortunately, the Xorg server does not (currently) support setting a
+    keymap directly but relies instead on XKB rules to select the matching
+    components (keycodes, types, ...) of a layout. This means that components
+    other than symbols won't be loaded by default. As a workaround, you
+    can set the keymap using <literal>setxkbmap</literal> at the start of the
+    session with:
+  </para>
+<programlisting>
+<xref linkend="opt-services.xserver.displayManager.sessionCommands"/> = "setxkbmap -keycodes media";
+</programlisting>
+  <para>
+   To learn how to write layouts take a look at the XKB
+  <link xlink:href="https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Enhancing.html#Defining_New_Layouts">
+   documentation
+  </link>. More example layouts can also be found
+  <link xlink:href="https://wiki.archlinux.org/index.php/X_KeyBoard_extension#Basic_examples">
+   here
+  </link>.
+  </para>
+</simplesect>
 </chapter>
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 8d63a03dd057..8c6bc47df251 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -815,6 +815,7 @@
   ./services/web-servers/uwsgi.nix
   ./services/web-servers/varnish/default.nix
   ./services/web-servers/zope2.nix
+  ./services/x11/extra-layouts.nix
   ./services/x11/colord.nix
   ./services/x11/compton.nix
   ./services/x11/unclutter.nix
diff --git a/nixos/modules/services/monitoring/zabbix-proxy.nix b/nixos/modules/services/monitoring/zabbix-proxy.nix
index c1a45fba4af3..9cfcd1697c11 100644
--- a/nixos/modules/services/monitoring/zabbix-proxy.nix
+++ b/nixos/modules/services/monitoring/zabbix-proxy.nix
@@ -23,6 +23,7 @@ let
     LogType = console
     ListenIP = ${cfg.listen.ip}
     ListenPort = ${toString cfg.listen.port}
+    Server = ${cfg.server}
     # TODO: set to cfg.database.socket if database type is pgsql?
     DBHost = ${optionalString (cfg.database.createLocally != true) cfg.database.host}
     ${optionalString (cfg.database.createLocally != true) "DBPort = ${cfg.database.port}"}
@@ -50,6 +51,13 @@ in
     services.zabbixProxy = {
       enable = mkEnableOption "the Zabbix Proxy";
 
+      server = mkOption {
+        type = types.str;
+        description = ''
+          The IP address or hostname of the Zabbix server to connect to.
+          '';
+        };
+
       package = mkOption {
         type = types.package;
         default =
diff --git a/nixos/modules/services/x11/extra-layouts.nix b/nixos/modules/services/x11/extra-layouts.nix
new file mode 100644
index 000000000000..5523dd2bf023
--- /dev/null
+++ b/nixos/modules/services/x11/extra-layouts.nix
@@ -0,0 +1,165 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  layouts = config.services.xserver.extraLayouts;
+
+  layoutOpts = {
+    options = {
+      description = mkOption {
+        type = types.str;
+        description = "A short description of the layout.";
+      };
+
+      languages = mkOption {
+        type = types.listOf types.str;
+        description =
+        ''
+          A list of languages provided by the layout.
+          (Use ISO 639-2 codes, for example: "eng" for english)
+        '';
+      };
+
+      compatFile = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        description = ''
+          The path to the xkb compat file.
+          This file sets the compatibility state, used to preserve
+          compatibility with xkb-unaware programs.
+          It must contain a <literal>xkb_compat "name" { ... }</literal> block.
+        '';
+      };
+
+      geometryFile = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        description = ''
+          The path to the xkb geometry file.
+          This (completely optional) file describes the physical layout of
+          keyboard, which maybe be used by programs to depict it.
+          It must contain a <literal>xkb_geometry "name" { ... }</literal> block.
+        '';
+      };
+
+      keycodesFile = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        description = ''
+          The path to the xkb keycodes file.
+          This file specifies the range and the interpretation of the raw
+          keycodes sent by the keyboard.
+          It must contain a <literal>xkb_keycodes "name" { ... }</literal> block.
+        '';
+      };
+
+      symbolsFile = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        description = ''
+          The path to the xkb symbols file.
+          This is the most important file: it defines which symbol or action
+          maps to each key and must contain a
+          <literal>xkb_symbols "name" { ... }</literal> block.
+        '';
+      };
+
+      typesFile = mkOption {
+        type = types.nullOr types.path;
+        default = null;
+        description = ''
+          The path to the xkb types file.
+          This file specifies the key types that can be associated with
+          the various keyboard keys.
+          It must contain a <literal>xkb_types "name" { ... }</literal> block.
+        '';
+      };
+
+    };
+  };
+
+in
+
+{
+
+  ###### interface
+
+  options.services.xserver = {
+    extraLayouts = mkOption {
+      type = types.attrsOf (types.submodule layoutOpts);
+      default = {};
+      example = literalExample
+      ''
+        {
+          mine = {
+            description = "My custom xkb layout.";
+            languages = [ "eng" ];
+            symbolsFile = /path/to/my/layout;
+          };
+        }
+      '';
+      description = ''
+        Extra custom layouts that will be included in the xkb configuration.
+        Information on how to create a new layout can be found here:
+        <link xlink:href="https://www.x.org/releases/current/doc/xorg-docs/input/XKB-Enhancing.html#Defining_New_Layouts"></link>.
+        For more examples see
+        <link xlink:href="https://wiki.archlinux.org/index.php/X_KeyBoard_extension#Basic_examples"></link>
+      '';
+    };
+
+  };
+
+  ###### implementation
+
+  config = mkIf (layouts != { }) {
+
+    # We don't override xkeyboard_config directly to
+    # reduce the amount of packages to be recompiled.
+    # Only the following packages are necessary to set
+    # a custom layout anyway:
+    nixpkgs.overlays = lib.singleton (self: super: {
+
+      xkb_patched = self.xorg.xkeyboardconfig_custom {
+        layouts = config.services.xserver.extraLayouts;
+      };
+
+      xorg = super.xorg // {
+        xorgserver = super.xorg.xorgserver.overrideAttrs (old: {
+          configureFlags = old.configureFlags ++ [
+            "--with-xkb-bin-directory=${self.xorg.xkbcomp}/bin"
+            "--with-xkb-path=${self.xkb_patched}/share/X11/xkb"
+          ];
+        });
+
+        setxkbmap = super.xorg.setxkbmap.overrideAttrs (old: {
+          postInstall =
+            ''
+              mkdir -p $out/share
+              ln -sfn ${self.xkb_patched}/etc/X11 $out/share/X11
+            '';
+        });
+
+        xkbcomp = super.xorg.xkbcomp.overrideAttrs (old: {
+          configureFlags = "--with-xkb-config-root=${self.xkb_patched}/share/X11/xkb";
+        });
+
+      };
+
+      ckbcomp = super.ckbcomp.override {
+        xkeyboard_config = self.xkb_patched;
+      };
+
+      xkbvalidate = super.xkbvalidate.override {
+        libxkbcommon = self.libxkbcommon.override {
+          xkeyboard_config = self.xkb_patched;
+        };
+      };
+
+    });
+
+    services.xserver.xkbDir = "${pkgs.xkb_patched}/etc/X11/xkb";
+
+  };
+
+}
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix
index f7f07bad9522..ac06b6caee30 100644
--- a/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixos/modules/tasks/filesystems/zfs.nix
@@ -1,8 +1,6 @@
 { config, lib, pkgs, utils, ... }:
 #
-# todo:
-#   - crontab for scrubs, etc
-#   - zfs tunables
+# TODO: zfs tunables
 
 with utils;
 with lib;
@@ -13,6 +11,7 @@ let
   cfgSnapshots = config.services.zfs.autoSnapshot;
   cfgSnapFlags = cfgSnapshots.flags;
   cfgScrub = config.services.zfs.autoScrub;
+  cfgTrim = config.services.zfs.trim;
 
   inInitrd = any (fs: fs == "zfs") config.boot.initrd.supportedFilesystems;
   inSystem = any (fs: fs == "zfs") config.boot.supportedFilesystems;
@@ -268,14 +267,26 @@ in
       };
     };
 
-    services.zfs.autoScrub = {
-      enable = mkOption {
-        default = false;
-        type = types.bool;
+    services.zfs.trim = {
+      enable = mkEnableOption "Enables periodic TRIM on all ZFS pools.";
+
+      interval = mkOption {
+        default = "weekly";
+        type = types.str;
+        example = "daily";
         description = ''
-          Enables periodic scrubbing of ZFS pools.
+          How often we run trim. For most desktop and server systems
+          a sufficient trimming frequency is once a week.
+
+          The format is described in
+          <citerefentry><refentrytitle>systemd.time</refentrytitle>
+          <manvolnum>7</manvolnum></citerefentry>.
         '';
       };
+    };
+
+    services.zfs.autoScrub = {
+      enable = mkEnableOption "Enables periodic scrubbing of ZFS pools.";
 
       interval = mkOption {
         default = "Sun, 02:00";
@@ -535,5 +546,17 @@ in
         };
       };
     })
+
+    (mkIf cfgTrim.enable {
+      systemd.services.zpool-trim = {
+        description = "ZFS pools trim";
+        after = [ "zfs-import.target" ];
+        path = [ packages.zfsUser ];
+        startAt = cfgTrim.interval;
+        script = ''
+          zpool list -H -o name | xargs -n1 zpool trim
+        '';
+      };
+    })
   ];
 }
diff --git a/pkgs/applications/audio/ladspa-sdk/default.nix b/pkgs/applications/audio/ladspa-sdk/default.nix
index 296a4f86a848..72bb7010b627 100644
--- a/pkgs/applications/audio/ladspa-sdk/default.nix
+++ b/pkgs/applications/audio/ladspa-sdk/default.nix
@@ -1,16 +1,16 @@
 { stdenv, fetchurl }:
 stdenv.mkDerivation rec {
   name = "ladspa-sdk-${version}";
-  version = "1.13";
+  version = "1.15";
   src = fetchurl {
     url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
-    sha256 = "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm";
+    sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
   };
 
   patchPhase = ''
     cd src
-    sed -i 's@/usr/@$(out)/@g'  makefile
-    sed -i 's@-mkdirhier@mkdir -p@g'  makefile
+    sed -i 's@/usr/@$(out)/@g'  Makefile
+    sed -i 's@-mkdirhier@mkdir -p@g'  Makefile
   '';
 
   meta = {
diff --git a/pkgs/applications/audio/ladspa-sdk/ladspah.nix b/pkgs/applications/audio/ladspa-sdk/ladspah.nix
index 01acc0d01f7e..b57b7283b850 100644
--- a/pkgs/applications/audio/ladspa-sdk/ladspah.nix
+++ b/pkgs/applications/audio/ladspa-sdk/ladspah.nix
@@ -1,10 +1,10 @@
 { stdenv, fetchurl }:
 stdenv.mkDerivation rec {
   name = "ladspa.h-${version}";
-  version = "1.13";
+  version = "1.15";
   src = fetchurl {
     url = "https://www.ladspa.org/download/ladspa_sdk_${version}.tgz";
-    sha256 = "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm";
+    sha256 = "1vgx54cgsnc3ncl9qbgjbmq12c444xjafjkgr348h36j16draaa2";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/audio/synthv1/default.nix b/pkgs/applications/audio/synthv1/default.nix
index 837a08fa331d..d28329b01171 100644
--- a/pkgs/applications/audio/synthv1/default.nix
+++ b/pkgs/applications/audio/synthv1/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "synthv1-${version}";
-  version = "0.9.8";
+  version = "0.9.9";
 
   src = fetchurl {
     url = "mirror://sourceforge/synthv1/${name}.tar.gz";
-    sha256 = "15kabmxp38wqvavs5hr1dqasjjf1j977kzqggxfmzyi3y5fan3hj";
+    sha256 = "0cvamqzg74qfr7kzk3skimskmv0j3d1rmmpbpsmfcrg8srvyx9r2";
   };
 
   buildInputs = [ qt5.qtbase qt5.qttools libjack2 alsaLib liblo lv2 ];
diff --git a/pkgs/applications/audio/wolf-shaper/default.nix b/pkgs/applications/audio/wolf-shaper/default.nix
index 562fdc1be8b6..735e4eb632c2 100644
--- a/pkgs/applications/audio/wolf-shaper/default.nix
+++ b/pkgs/applications/audio/wolf-shaper/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "wolf-shaper-${version}";
-  version = "0.1.6";
+  version = "0.1.7";
 
   src = fetchFromGitHub {
     owner = "pdesaulniers";
     repo = "wolf-shaper";
     rev = "v${version}";
-    sha256 = "01h5dm1nrr0i54ancwznr7wn4vpw08dw0b69v3axy32r5j7plw6s";
+    sha256 = "0lllgcbnnh1m95bp29hh17x170hl7170zizjrvy892qfkn36830d";
     fetchSubmodules = true;
   };
 
diff --git a/pkgs/applications/misc/cool-retro-term/default.nix b/pkgs/applications/misc/cool-retro-term/default.nix
index f2372aa51e68..bd49323b03f1 100644
--- a/pkgs/applications/misc/cool-retro-term/default.nix
+++ b/pkgs/applications/misc/cool-retro-term/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchFromGitHub, qtbase, qtquick1, qmltermwidget
+{ stdenv, fetchFromGitHub, mkDerivation, qtbase, qtquick1, qmltermwidget
 , qtquickcontrols, qtgraphicaleffects, qmake }:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   version = "1.1.1";
   name = "cool-retro-term-${version}";
 
diff --git a/pkgs/applications/misc/dbeaver/default.nix b/pkgs/applications/misc/dbeaver/default.nix
index 77a25f2755f0..3e1a87a641b4 100644
--- a/pkgs/applications/misc/dbeaver/default.nix
+++ b/pkgs/applications/misc/dbeaver/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   name = "dbeaver-ce-${version}";
-  version = "6.1.0";
+  version = "6.1.3";
 
   desktopItem = makeDesktopItem {
     name = "dbeaver";
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dbeaver.io/files/${version}/dbeaver-ce-${version}-linux.gtk.x86_64.tar.gz";
-    sha256 = "0ngfv5pcj8hs7zcddwk0jw0l7hnm768wp76yrfyk38wkijk9f412";
+    sha256 = "1ngfypx0wbq98rv791zls07h46rnj69qixpslw0xn9bb3ky4snbf";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/misc/hubstaff/revision.json b/pkgs/applications/misc/hubstaff/revision.json
index f39860fac583..513e5bef442a 100644
--- a/pkgs/applications/misc/hubstaff/revision.json
+++ b/pkgs/applications/misc/hubstaff/revision.json
@@ -1,5 +1,5 @@
 {
-  "url": "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.4.6-4aba8ab5/Hubstaff-1.4.6-4aba8ab5.sh",
-  "version": "1.4.6-4aba8ab5",
-  "sha256": "14js4d7wazn5r5p9n3iic9kwqrinm079jj1k7r00v684jrgq62fc"
+  "url": "https://hubstaff-production.s3.amazonaws.com/downloads/HubstaffClient/Builds/Release/1.4.9-86828309/Hubstaff-1.4.9-86828309.sh",
+  "version": "1.4.9-86828309",
+  "sha256": "0p9b7s2damzxmbrm8m97bj06g0faslbjw51dmxq8icz6ldbqsspx"
 }
diff --git a/pkgs/applications/misc/termdown/default.nix b/pkgs/applications/misc/termdown/default.nix
index dc23443489ff..7edb8dd5d1ef 100644
--- a/pkgs/applications/misc/termdown/default.nix
+++ b/pkgs/applications/misc/termdown/default.nix
@@ -6,11 +6,11 @@ with stdenv.lib;
 buildPythonApplication rec {
 
   name    = "termdown-${version}";
-  version = "1.15.0";
+  version = "1.16.0";
 
   src = fetchFromGitHub {
     rev    = version;
-    sha256 = "08l03yk5jc1g0gps789q1s2knnaqzlidy4s5q5nhwg9g25la19nr";
+    sha256 = "0k429ss1xifm9vbgyzpp71r79byn9jclvr0rm77bai2r8nz3s2vf";
     repo   = "termdown";
     owner  = "trehn";
   };
diff --git a/pkgs/applications/misc/web-media-controller/default.nix b/pkgs/applications/misc/web-media-controller/default.nix
new file mode 100644
index 000000000000..6ed2ff10aaa7
--- /dev/null
+++ b/pkgs/applications/misc/web-media-controller/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, glib, pcre, json-glib }:
+
+stdenv.mkDerivation rec {
+  pname = "wmc-mpris";
+  version = "unstable-2019-07-24";
+
+  src = fetchFromGitHub {
+    owner = "f1u77y";
+    repo = pname;
+    rev = "3b92847c576662732984ad791d6c7899a39f7787";
+    sha256 = "0q19z0zx53pd237x529rif21kliklwzjrdddx8jfr9hgghjv9giq";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ glib pcre json-glib ];
+  cmakeFlags = [
+    "-DCHROMIUM_MANIFEST_DESTINATION=${placeholder ''out''}/etc/chromium/native-messaging-hosts"
+    "-DCHROME_MANIFEST_DESTINATION=${placeholder ''out''}/etc/opt/chrome/native-messaging-hosts"
+    "-DFIREFOX_MANIFEST_DESTINATION=${placeholder ''out''}/lib/mozilla/native-messaging-hosts"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/f1u77y/wmc-mpris";
+    description = "MPRIS proxy for usage with 'Web Media Controller' web extension";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/applications/networking/cluster/fluxctl/default.nix b/pkgs/applications/networking/cluster/fluxctl/default.nix
new file mode 100644
index 000000000000..29ec50ce3624
--- /dev/null
+++ b/pkgs/applications/networking/cluster/fluxctl/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "fluxctl";
+  version = "1.13.1";
+
+  src = fetchFromGitHub {
+    owner = "weaveworks";
+    repo = "flux";
+    rev = version;
+    sha256 = "0g8yfvwh6hjh70a0i4ssbb6hq3i9f75wj8yqy1aaafycq598zbdx";
+  };
+
+  modSha256 = "1q5g9hd0ansdc2acpysf6wi74q50w0psrpyhk4y6mm6kjvhlcn87";
+
+  subPackages = [ "cmd/fluxctl" ];
+
+  meta = with stdenv.lib; {
+    description = "CLI client for Flux, the GitOps Kubernetes operator";
+    homepage = https://github.com/weaveworks/flux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih ];
+  };
+}
diff --git a/pkgs/applications/networking/cluster/k9s/default.nix b/pkgs/applications/networking/cluster/k9s/default.nix
new file mode 100644
index 000000000000..5c0adbdc548a
--- /dev/null
+++ b/pkgs/applications/networking/cluster/k9s/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "k9s";
+  version = "0.7.13";
+
+  src = fetchFromGitHub {
+    owner = "derailed";
+    repo = "k9s";
+    rev = version;
+    sha256 = "0wsj6wc2qi5708cg47l2qblq1cg8fcwxdygpkayib9hapx6lc6f8";
+  };
+
+  modSha256 = "1ia9wx6yd9mdr981lcw58xv39iqzz25r03bmn1c6byxmq2xpcjq8";
+
+
+  meta = with stdenv.lib; {
+    description = "Kubernetes CLI To Manage Your Clusters In Style.";
+    homepage = https://github.com/derailed/k9s;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih ];
+  };
+}
diff --git a/pkgs/applications/networking/cluster/linkerd/default.nix b/pkgs/applications/networking/cluster/linkerd/default.nix
new file mode 100644
index 000000000000..256bce9b6ec2
--- /dev/null
+++ b/pkgs/applications/networking/cluster/linkerd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, buildGoModule }:
+
+buildGoModule rec {
+  pname = "linkerd-unstablle";
+  version = "2019-07-26";
+
+  src = fetchFromGitHub {
+    owner = "linkerd";
+    repo = "linkerd2";
+    rev = "065dd3ec9d4b84c90383b31be16ccadd34a8ab0d";
+    sha256 = "01m8g627sd126as0a74fy9svmymwd41sifd897nhn6kz78a21gq8";
+  };
+
+  modSha256 = "0gahhywpcj16ww4l8s3wjwvavq24fpy258snhyf94ipy6lb797sl";
+
+  subPackages = [ "cli/cmd" ];
+
+  meta = with stdenv.lib; {
+    description = "A service mesh for Kubernetes and beyond.";
+    homepage = https://linkerd.io/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ Gonzih ];
+  };
+}
diff --git a/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix b/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
new file mode 100644
index 000000000000..2b2c3caba862
--- /dev/null
+++ b/pkgs/applications/networking/cluster/terraform-providers/ansible/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  name = "terraform-provider-ansible-${version}";
+  version = "1.0.3";
+
+  goPackagePath = "github.com/nbering/terraform-provider-ansible";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "nbering";
+    repo = "terraform-provider-ansible";
+    rev = "v${version}";
+    sha256 = "0dqi9ym0xvnz3h73cmd1vf6k2qwfhxvj1mcakkpmsd4cpxq4l6pr";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-ansible{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "A Terraform provider serving as an interop layer for an Ansible dynamic inventory script.";
+    homepage = "https://github.com/nbering/terraform-provider-ansible";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ uskudnik ];
+  };
+}
diff --git a/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix b/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
new file mode 100644
index 000000000000..dc49f24afa59
--- /dev/null
+++ b/pkgs/applications/networking/cluster/terraform-providers/ansible/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "v0.12.5";
+      sha256 = "0p064rhaanwx4szs8hv6mdqad8d2bgfd94h2la11j58xbsxc7hap";
+    };
+  }
+]
diff --git a/pkgs/applications/networking/cluster/terraform-providers/data.nix b/pkgs/applications/networking/cluster/terraform-providers/data.nix
index b0a1d91ce6e0..a6749083c245 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/data.nix
+++ b/pkgs/applications/networking/cluster/terraform-providers/data.nix
@@ -11,8 +11,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-alicloud";
-      version = "1.47.0";
-      sha256  = "0w2shy850lp63y036xzhznr94dpyf5b369cddz7laycapknyzd39";
+      version = "1.52.2";
+      sha256  = "1s127p6rm3kmrxjk9kr02rgjk58rs864c0b46i8lmaj7x5yznaz5";
     };
   archive =
     {
@@ -39,29 +39,29 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-aws";
-      version = "2.15.0";
-      sha256  = "0ms4x6ri4zi25jnp47f5vg6xj9xmz7jya0y0gbc4kdmy0nwdw8f9";
+      version = "2.21.0";
+      sha256  = "18aw0fz3pzd7wci3z19nain499rfr9npb3sm0k34nkajjjryqngc";
     };
   azuread =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-azuread";
-      version = "0.4.0";
-      sha256  = "01s2qrabmydgnilkwis76ccx1sv8bkna3nbxn6ra75jvgh3q7d5d";
+      version = "0.5.1";
+      sha256  = "0bjy6wdfzsxchqclgp7c06b49b5h60nips69hcpwd45564iql5fh";
     };
   azurerm =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-azurerm";
-      version = "1.30.1";
-      sha256  = "0zxvj6k1xs151dik8yhjl31r563dsc7iykv32g10w5szyigvxqfd";
+      version = "1.32.0";
+      sha256  = "01287yknd2bp2yqzyn2221mkv2hz4xd5dghps5pzrkdv0m1w4p35";
     };
   azurestack =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-azurestack";
-      version = "0.7.0";
-      sha256  = "0vlppfnwl0r4xf2fl405d93s0kxanh52h1chz04a95x2dcclvx69";
+      version = "0.8.1";
+      sha256  = "1sbmjrqzzn8rf9xhaax2ykyg199sggx80apx0xvd4ab82c3ldyfw";
     };
   bigip =
     {
@@ -74,22 +74,22 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-bitbucket";
-      version = "1.0.0";
-      sha256  = "0gi8p1q0y8x5y8lqihijkpqs3v152h0q7icv7ixk33xsdcvb418y";
+      version = "1.1.0";
+      sha256  = "06bjagbgpgfphwym015wl00wx6qf7lsdig0fhpxqaykvlkn3sg49";
     };
   brightbox =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-brightbox";
-      version = "1.1.2";
-      sha256  = "0k9qs7kpjznascads5llajzx2xkm4hdil2n4wl0fqy43s6dkvbbf";
+      version = "1.2.0";
+      sha256  = "0s1b2k58r2kmjrdqrkw2dlfpby79i81gml9rpa10y372bwq314zd";
     };
   chef =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-chef";
-      version = "0.1.0";
-      sha256  = "17fppyhxi0rd5v8khw2psdn2hdv5j79hxhinwkzrq5s4iccqk5dw";
+      version = "0.2.0";
+      sha256  = "0ihn4706fflmf0585w22l7arzxsa9biq4cgh8nlhlp5y0zy934ns";
     };
   circonus =
     {
@@ -109,15 +109,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-cloudflare";
-      version = "1.15.0";
-      sha256  = "0mb771dw5fw2s6jd63sybwza49axyj9967fl454m3sznhpl96y8z";
+      version = "1.16.1";
+      sha256  = "0lxx7wkvmi6zpql7g33bg12gx67i4xm2v885j70b9vf8brj40h2j";
     };
   cloudscale =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-cloudscale";
-      version = "1.1.0";
-      sha256  = "09b1cq0vyyag8aaiwmhnwrgigmxvxk3qsk31h4hshm7ddk7db9qn";
+      version = "2.0.0";
+      sha256  = "145hj4pbi5zrkgamicy3m1n3380fpd2ndd6ym7mwd65d95g39vwb";
     };
   cloudstack =
     {
@@ -144,15 +144,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-datadog";
-      version = "1.9.0";
-      sha256  = "0c5s9ywd6p4qjd964y33rcqcgfqz225x5rp0jlsqxbv9i2r91fb0";
+      version = "2.1.0";
+      sha256  = "0k7apad2r07gw9kf0zzqc8wa2wcmxihi3x8sdssl32qjib20qwv1";
     };
   digitalocean =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-digitalocean";
-      version = "1.4.0";
-      sha256  = "0a01768ncgmk1vrh2ir86s9iab1s5x8ciaz3fysgcgp9snh8yz4w";
+      version = "1.5.0";
+      sha256  = "14kqyp4j4ld8gla8rn3an6wpjh942h5bn39d68nnf4y7nx3vvbfs";
     };
   dme =
     {
@@ -165,43 +165,43 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-dns";
-      version = "2.1.1";
-      sha256  = "1iyfsx1fbpvp3zjrkq8c46nr6d80z40mzkfc4axfpqyrp9xqiy8j";
+      version = "2.2.0";
+      sha256  = "11xdxj6hfclaq9glbh14nihmrsk220crm9ld8bdv77w0bppmrrch";
     };
   dnsimple =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-dnsimple";
-      version = "0.1.0";
-      sha256  = "0gkd5i69ldm5zn34p3k68aqk798g6g0d60gw7yp316l7mskvrx7h";
+      version = "0.2.0";
+      sha256  = "0jj82fffqaz7gramj5d4avx7vka6w190yz4r9q7628qh8ih2pfhz";
     };
   docker =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-docker";
-      version = "1.2.0";
-      sha256  = "1w69kjlrgy4397c9nz3llqsqcjzchwqw1ksw4wg34xnnq20pd4ql";
+      version = "2.1.0";
+      sha256  = "183pkjf6x8xk84sij2w2v3sms8pjv7hzwricamd2sf3n0fkqvjiq";
     };
   dyn =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-dyn";
-      version = "1.1.0";
-      sha256  = "0sx4h3drb230m69lsmafyfd2cfvwnb9gld8s6ky54115kd3nckml";
+      version = "1.2.0";
+      sha256  = "1a3kxmbib2y0nl7gnxknbhsflj5kfknxnm3gjxxrb2h5d2kvqy48";
     };
   external =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-external";
-      version = "1.1.2";
-      sha256  = "12wdzm3y0fd840bdf0dczvvmdmfwpfwfwnf0j4g6n9asdcvjaqlh";
+      version = "1.2.0";
+      sha256  = "1kx28bffhd1pg3m0cbldclc8l9zic16mqrk7gybcls9vyds5gbvc";
     };
   fastly =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-fastly";
-      version = "0.6.1";
-      sha256  = "1p4j1n2x2y0n1kslfx62fx60v8b1acqv78gns1a5i0vgnnmmqcaj";
+      version = "0.8.1";
+      sha256  = "1ghvf7nwj02r31zgnrnmhagqbbq696ll39b2wjzlimb6c3fw7ik0";
     };
   flexibleengine =
     {
@@ -214,8 +214,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-github";
-      version = "2.1.0";
-      sha256  = "05ca0vw6s7q40zcs50mr6k2swwx3a3njd4dxdz00qki58hgb87y6";
+      version = "2.2.0";
+      sha256  = "1h44v7428z3v3hv6ywi3n0yhnvgx9cr6vgqb1n2w1qf7k2f0jkzx";
     };
   gitlab =
     {
@@ -228,29 +228,29 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-google";
-      version = "2.8.0";
-      sha256  = "1r4x7l20w8wb6a356vx71lra466p7hfww1jyv0bg7z1f015qs91l";
+      version = "2.11.0";
+      sha256  = "16577pkp3m5pqqqhvxq1rvx99p1230pmqksm6wplh25ry5yp5v7w";
     };
   google-beta =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-google-beta";
-      version = "2.8.0";
-      sha256  = "16ml6sd3g4wzcgm5qaphfyq3lcy33p8nmcahxrhrcvwnwl0kw5bs";
+      version = "2.11.0";
+      sha256  = "0hj2c17kb6k4zy1630fvmyniln5m1ncpyys4wl8v1j0arb8vg2wz";
     };
   grafana =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-grafana";
-      version = "1.4.0";
-      sha256  = "1y41yhp82phgw83frkgrjzpymsys2abvdwa1n905rz7i15ybasqc";
+      version = "1.5.0";
+      sha256  = "0zy3bqgpxymp2zygaxzllk1ysdankwxa1sy1djfgr4fs2nlggkwi";
     };
   hcloud =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-hcloud";
-      version = "1.10.0";
-      sha256  = "18m2smpwcjp49wnylplrnlhfjrmim1qpvn1z70lwvb49liv8ldwf";
+      version = "1.11.0";
+      sha256  = "037hbwp10h57cj74ja6c4wjgfrfggbpd4glbc81xpp22rxij40j9";
     };
   hedvig =
     {
@@ -270,8 +270,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-heroku";
-      version = "2.0.0";
-      sha256  = "161pc6s4ifzi58cx32sdk9nan4kz6gn3mch1pnmp03f6390s2pcm";
+      version = "2.1.0";
+      sha256  = "17gb8lpcp7fwgv6mv3sw5was571pa0pp00izrrkyhbcddw5p84mc";
     };
   http =
     {
@@ -312,8 +312,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-kubernetes";
-      version = "1.7.0";
-      sha256  = "0chr6v47398a3cvff9lwx4ffahcwv7fmzs6kjjqaidb1cv60d039";
+      version = "1.8.1";
+      sha256  = "1c69p7rqijinzr0lqh4iwa0g89w2hjm2csadbxkfha0a8iqq73r1";
     };
   librato =
     {
@@ -326,15 +326,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-linode";
-      version = "1.6.0";
-      sha256  = "0i2x0jd26qanziihlc38s7rxiab66ld2s5gz18rrmrbwhcl95fwj";
+      version = "1.8.0";
+      sha256  = "1jgh2ij58a5mr6ns604cfpvfvr19qr0q51j57gvchz53iv683m9q";
     };
   local =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-local";
-      version = "1.2.2";
-      sha256  = "0azrw62clki002nlv7ws3kzfsbqkadm713534i4xgvix2m08d1cx";
+      version = "1.3.0";
+      sha256  = "1z6b52vdq7wzzipldys28z45glwgj9k15ighjix1dy78mzi0p99n";
     };
   logentries =
     {
@@ -347,8 +347,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-logicmonitor";
-      version = "1.2.0";
-      sha256  = "1zir35i8j5w7ra4i7f9k0ghac9b3bar0dy16sqy1kqwbh4ikmhb8";
+      version = "1.2.1";
+      sha256  = "1fcv5g92l6xr4x69h9rg48zazjr99wrz9mkmr122fyq9s7kdd98y";
     };
   mailgun =
     {
@@ -361,8 +361,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-mysql";
-      version = "1.6.0";
-      sha256  = "1kgldnrdz0mr99arxf85n8xbbxm96b5mg732c6zs38dgcq63mypx";
+      version = "1.7.0";
+      sha256  = "19l1ihp5jlaahm8zncjlrnfw8d8gcpnq3z6pn421j1x0d5v5vw9b";
     };
   netlify =
     {
@@ -375,8 +375,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-newrelic";
-      version = "1.5.0";
-      sha256  = "1if8i435v4nf18hdvwwz3nvlkaf8yjzcxi300blri2xfx95chsxw";
+      version = "1.5.1";
+      sha256  = "1xrwh9m1sig4hd2vvb7apy2gh8rz15wdrajggzmmpc1z1rlhf90p";
     };
   nomad =
     {
@@ -389,8 +389,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-ns1";
-      version = "1.4.0";
-      sha256  = "1zkmc6flmy48qawaf0l5r72xfwp46c842gd7kg35r06cihc9gavy";
+      version = "1.4.1";
+      sha256  = "1zcl7yda0rqj76d9slm92kvj5ry3v5va48l8i5vlxa1znnf8d89d";
     };
   nsxt =
     {
@@ -417,8 +417,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-oci";
-      version = "3.29.0-rc1";
-      sha256  = "1rz61qndrrgknkd7bjbgvy28znllipr1v92cn1im43rzsmnz64y3";
+      version = "3.35.0-rc1";
+      sha256  = "1728zap32iabsa2a6762caf9h7fgspi1z8gnq03269qhy7jsknv8";
     };
   oneandone =
     {
@@ -438,15 +438,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-openstack";
-      version = "1.19.0";
-      sha256  = "1y9b9h523zflq4z9cwjgfa0l92j4ac5pc1r6vja1aw3gg2ln80x9";
+      version = "1.20.0";
+      sha256  = "0hfcypz95aj1wwhybpkc74k8g2iqax724qdm11s2iyjmq5c7iz2z";
     };
   opentelekomcloud =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-opentelekomcloud";
-      version = "1.9.0";
-      sha256  = "1nq6h6ds2fvxrmyf2v7w8prprl7pp6va8568jf0f775sag51wpl8";
+      version = "1.10.0";
+      sha256  = "12c7qjlmvsxd4nv0k2vsvlnl1iq2k0b8xx29q5a6h98dnhrnpfic";
     };
   opsgenie =
     {
@@ -494,8 +494,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-postgresql";
-      version = "0.4.0";
-      sha256  = "0fywq1vzm8fcd0jcvzx1n3jilrk0r6ylqz9r4dwsyc64iqvmrpps";
+      version = "1.1.0";
+      sha256  = "1dxspqajfy8dmplasazi4s34f47n1qz7qg2dr9ypdvd3jp63072w";
     };
   powerdns =
     {
@@ -515,8 +515,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-rabbitmq";
-      version = "1.0.0";
-      sha256  = "1md928243r4c46ihjnavz2375nxnfyhknyc86r9853hwhhyhsx5d";
+      version = "1.1.0";
+      sha256  = "0xihc44923kx8c3v6wrvczzbhmbjkhy7dhgx3sy5sqhmm22y0gys";
     };
   rancher =
     {
@@ -536,8 +536,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-rightscale";
-      version = "1.3.0";
-      sha256  = "1brzxyd5hg99x75qh0p707lr9cvqpzx2az1swr624w3rzhjl2ygm";
+      version = "1.3.1";
+      sha256  = "0abwxaghrxpahpsk6kd02fjh0rhck4xsdrzcpv629yh8ip9rzcaj";
     };
   rundeck =
     {
@@ -550,8 +550,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-runscope";
-      version = "0.5.0";
-      sha256  = "0n0m39gaiwhqigjny51a7g36ldik33alimkqqbv6hqyzrhk0qs8h";
+      version = "0.6.0";
+      sha256  = "1fsph2cnyvzdwa5hwdjabfk4azmc3x8a7afpwpawxfdvqhgpr595";
     };
   scaleway =
     {
@@ -564,15 +564,15 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-selectel";
-      version = "2.2.0";
-      sha256  = "1vw49ckcavzq8igc3091mzsqv9garzh1npwdwsyqb9367z5ib39m";
+      version = "2.3.0";
+      sha256  = "0n0nqlajcx44zxbc2k58lv3jy2y6p9zqkby2vy5a2856kcksm7pf";
     };
   skytap =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-skytap";
-      version = "0.10.0";
-      sha256  = "1rfyaf8zhcr74mhcjdsm659rzlncyaxvqqqrc1630a3bk4h8p3i1";
+      version = "0.11.1";
+      sha256  = "1mlv6jp6lp47chcnsmx8dzy01bxpb9jx1wl122lxd88app9nxq1k";
     };
   softlayer =
     {
@@ -592,8 +592,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-statuscake";
-      version = "0.2.0";
-      sha256  = "065izach0hq04664hz7rc3gd0r3l06lzwcbj5800zjfv1inp6pxs";
+      version = "1.0.0";
+      sha256  = "1x295va6c72465cxps0kx3rrb7s9aip2cniy6icsg1b2yrsb9b26";
     };
   telefonicaopencloud =
     {
@@ -613,8 +613,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-tencentcloud";
-      version = "1.9.0";
-      sha256  = "0zgn3ndbcs6dgmz2y8qcns08rbwbfq633rbk6zgfck8pzqw2d2lr";
+      version = "1.13.0";
+      sha256  = "0mdgpkzv1gfyvpndvv195f6nxmvpv4wvssxlqvmccf8vvmb32nyn";
     };
   terraform =
     {
@@ -627,8 +627,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-tfe";
-      version = "0.9.1";
-      sha256  = "0ww3fm8mgpqmv0ra0zbv560avcla76dkj2qxz9bdwzg7iz8vsj4s";
+      version = "0.10.1";
+      sha256  = "09hrdschgydnziq1sv6ql7gc4qwx8j4dnmx4fdw8452qpszk17n2";
     };
   tls =
     {
@@ -648,8 +648,8 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-ucloud";
-      version = "1.10.1";
-      sha256  = "1c5w2816rf55khs534z780j0r8i6n8gqhkda21i32n9rj8y5clv1";
+      version = "1.11.1";
+      sha256  = "1la5kapdwpd2f6x00yc9j25rl8qkrndgqpzp2jp6mcbj5zif82ns";
     };
   ultradns =
     {
@@ -662,36 +662,36 @@
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-vault";
-      version = "1.8.0";
-      sha256  = "1g9cw14mzslb445yhj04dzs0s4cbhi4cxycd50vc3f9yyg6sz1rr";
+      version = "2.1.0";
+      sha256  = "1nbiz2mnknaimfvh1zmmsp1crrhcpy4q6maaakqybqzabkn9wibr";
     };
   vcd =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-vcd";
-      version = "2.1.0";
-      sha256  = "0azmjddysl38n58vk94zhm2g7s5aw71gvn83h4n7amf2j7p7ks9j";
+      version = "2.3.0";
+      sha256  = "1x9ydp6kscgj0m7vkf4ly0y80016qcfbshgmlydrvq7dbw44qlr9";
     };
   vsphere =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-vsphere";
-      version = "1.10.0";
-      sha256  = "039s95afqrcpf6jiprqsqnvlsnxbs5vcqrsgg6pbs52rlwp1ixgw";
+      version = "1.12.0";
+      sha256  = "0g3pnk2b4dmz5bkr7xjpp45dwy767k6a02rjva38xls185qs7i7c";
     };
   yandex =
     {
       owner   = "terraform-providers";
       repo    = "terraform-provider-yandex";
-      version = "0.5.2";
-      sha256  = "1fa1jicirww0zxg5kw4343ndzq86x0m7gkfj8yx7l6lb6gcrkbic";
+      version = "0.8.2";
+      sha256  = "07p88asjcjndpv36dhvfazb440k2f2v4j7rpvqqmfccwyyqkwwjr";
     };
   matchbox =
     {
-      owner   = "coreos";
+      owner   = "poseidon";
       repo    = "terraform-provider-matchbox";
-      version = "0.2.3";
-      sha256  = "12vf8krzx79yrsk3lk2k6vwwk1f18617ky7g2yf60bf2x836lg09";
+      version = "0.3.0";
+      sha256  = "1nq7k8qa7rv8xyryjigwpwcwvj1sw85c4j46rkfdv70b6js25jz3";
     };
   nixos =
     {
@@ -714,11 +714,4 @@
       version = "0.2.0";
       sha256  = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz";
     };
-  ansible =
-    {
-      owner   = "nbering";
-      repo    = "terraform-provider-ansible";
-      version = "0.0.4";
-      sha256  = "125a8vbpnahaxxrxj3mp0kj6ajssxnfb6l0spgnf118wg3bvlmw5";
-    };
 }
diff --git a/pkgs/applications/networking/cluster/terraform-providers/default.nix b/pkgs/applications/networking/cluster/terraform-providers/default.nix
index c542de912f34..fc6b71313856 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/default.nix
+++ b/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -28,4 +28,5 @@ in
     gandi = callPackage ./gandi {};
     ibm = callPackage ./ibm {};
     libvirt = callPackage ./libvirt {};
+    ansible = callPackage ./ansible {};
   } // lib.mapAttrs (n: v: toDrv v) list
diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.txt b/pkgs/applications/networking/cluster/terraform-providers/providers.txt
index c5d6fda16514..286e3d6efe04 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/providers.txt
+++ b/pkgs/applications/networking/cluster/terraform-providers/providers.txt
@@ -10,7 +10,7 @@
 terraform-providers terraform-provider- terraform-provider-\\(azure-classic\\|scaffolding\\)
 
 # include terraform-provider-matchbox
-coreos/terraform-provider-matchbox
+poseidon/terraform-provider-matchbox
 
 # include terraform-provider-nixos
 tweag/terraform-provider-nixos
@@ -20,6 +20,3 @@ tweag/terraform-provider-secret
 
 # include terraform-provider-segment
 ajbosco/terraform-provider-segment
-
-# include terraform-provider-ansible
-nbering/terraform-provider-ansible
diff --git a/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix b/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix
index 4e6028621976..d815f0aff2dd 100644
--- a/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix
+++ b/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix
@@ -1,9 +1,9 @@
 { stdenv, fetchurl }:
 
 let
-  rev = "5cdbb97898d727d2b35c25a3117e9a79e474d97b";
-  sha256 = "14qikp91l2aj8j9i0nh0nf9ibz65b8bpd3lbyarqshhrpvb5jp79";
-  version = "2019-06-04";
+  rev = "e2a6a9cd9da70175881ab991220c86aa87179509";
+  sha256 = "1gw0kpszgflk3vqjlm5igd2rznh36mb2j1iqrcqi6pzxlpccv1lg";
+  version = "2019-07-25";
 in stdenv.mkDerivation {
   inherit version;
 
diff --git a/pkgs/applications/networking/remote/x2goclient/default.nix b/pkgs/applications/networking/remote/x2goclient/default.nix
index 87fe60c7740c..2cfbfb1b201e 100644
--- a/pkgs/applications/networking/remote/x2goclient/default.nix
+++ b/pkgs/applications/networking/remote/x2goclient/default.nix
@@ -1,19 +1,18 @@
 { stdenv, fetchgit, cups, libssh, libXpm, nx-libs, openldap, openssh
-, makeWrapper, qtbase, qtsvg, qtx11extras, qttools, phonon, pkgconfig }:
+, mkDerivation, qtbase, qtsvg, qtx11extras, qttools, phonon, pkgconfig }:
 
-stdenv.mkDerivation rec {
+mkDerivation rec {
   pname = "x2goclient";
-  version = "unstable-2018-11-30";
+  version = "unstable-2019-07-24";
 
   src = fetchgit {
    url = "git://code.x2go.org/x2goclient.git";
-   rev = "659655675f11ffd361ab9fb48fa77a01a1536fe8";
-   sha256 = "05gfs11m259bchy3k0ihqpwg9wf8lp94rbca5dzla9fjzrb7pyy4";
+   rev = "704c4ab92d20070dd160824c9b66a6d1c56dcc49";
+   sha256 = "1pndp3lfzwifyxqq0gps3p1bwakw06clbk6n8viv020l4bsfmq5f";
   };
 
   buildInputs = [ cups libssh libXpm nx-libs openldap openssh
                   qtbase qtsvg qtx11extras qttools phonon pkgconfig ];
-  nativeBuildInputs = [ makeWrapper ];
 
   postPatch = ''
      substituteInPlace Makefile \
@@ -28,9 +27,8 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   installTargets = [ "install_client" "install_man" ];
-  postInstall = ''
-    wrapProgram "$out/bin/x2goclient" --suffix PATH : "${nx-libs}/bin:${openssh}/libexec";
-  '';
+
+  qtWrapperArgs = [ ''--suffix PATH : ${nx-libs}/bin:${openssh}/libexec'' ];
 
   meta = with stdenv.lib; {
     description = "Graphical NoMachine NX3 remote desktop client";
diff --git a/pkgs/applications/version-management/git-repo/default.nix b/pkgs/applications/version-management/git-repo/default.nix
index 04ae45f75b39..2c427bb18242 100644
--- a/pkgs/applications/version-management/git-repo/default.nix
+++ b/pkgs/applications/version-management/git-repo/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   name = "git-repo-${version}";
-  version = "1.13.3";
+  version = "1.13.4";
 
   src = fetchFromGitHub {
     owner = "android";
     repo = "tools_repo";
     rev = "v${version}";
-    sha256 = "0wyr6fyc9kzzw6y2cxvri35ib1sh156n6lnv119j5r1rzvc2lg6r";
+    sha256 = "0p55mx1ry0r3bb8nja09cfpiv1jjxf98r41vrqba1b5hm8hbzfhj";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/applications/video/ccextractor/default.nix b/pkgs/applications/video/ccextractor/default.nix
new file mode 100644
index 000000000000..91c47516521e
--- /dev/null
+++ b/pkgs/applications/video/ccextractor/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake
+, glew, glfw3, leptonica, libiconv, tesseract3, zlib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  pname = "ccextractor";
+  version = "0.88";
+
+  src = fetchFromGitHub {
+    owner = "CCExtractor";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1sya45hvv4d46bk7541yimmafgvgyhkpsvwfz9kv6pm4yi1lz6nb";
+  };
+
+  sourceRoot = "source/src";
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+
+  buildInputs = [ glew glfw3 leptonica tesseract3 zlib ] ++ stdenv.lib.optional (!stdenv.isLinux) libiconv;
+
+  meta = {
+    homepage = "https://www.ccextractor.org";
+    description = "Tool that produces subtitles from closed caption data in videos";
+    longDescription = ''
+      A tool that analyzes video files and produces independent subtitle files from
+      closed captions data. CCExtractor is portable, small, and very fast.
+      It works on Linux, Windows, and OSX.
+    '';
+    platforms = platforms.unix;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ titanous ];
+  };
+}
diff --git a/pkgs/applications/video/plex-media-player/default.nix b/pkgs/applications/video/plex-media-player/default.nix
index 9f5401fc69c3..4bd4d5fdaadd 100644
--- a/pkgs/applications/video/plex-media-player/default.nix
+++ b/pkgs/applications/video/plex-media-player/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, fetchurl, pkgconfig, cmake, python3
+{ stdenv, fetchFromGitHub, fetchurl, pkgconfig, cmake, python3, mkDerivation
 , libX11, libXrandr, qtbase, qtwebchannel, qtwebengine, qtx11extras
 , libvdpau, SDL2, mpv, libGL }:
 let
@@ -34,7 +34,7 @@ let
       sha256 = "0yssii01nx6ixg3mikqjn8hz34dalma0rfr8spj115xwr7aq8ixk";
     };
   };
-in stdenv.mkDerivation rec {
+in mkDerivation rec {
   name = "plex-media-player-${version}";
   version = "2.36.0.988";
   vsnHash = "0150ae52";
diff --git a/pkgs/applications/virtualization/docker/default.nix b/pkgs/applications/virtualization/docker/default.nix
index 384ab8f30473..a1125f25e816 100644
--- a/pkgs/applications/virtualization/docker/default.nix
+++ b/pkgs/applications/virtualization/docker/default.nix
@@ -201,9 +201,21 @@ rec {
   # https://github.com/docker/docker-ce/tree/v${version}/components/engine/hack/dockerfile/install/*
 
   docker_18_09 = makeOverridable dockerGen {
-    version = "18.09.7";
-    rev = "2d0083d657f82c47044c8d3948ba434b622fe2fd";
-    sha256 = "1f7q99pay7mmy925ap95p935y9xslxpmgha397db7x2w008rfl9k";
+    version = "18.09.8";
+    rev = "0dd43dd87fd530113bf44c9bba9ad8b20ce4637f";
+    sha256 = "07ljxdqylbfbq1939hqyaav966ga7ds5b38dn7af1h0aks86y2s3";
+    runcRev = "425e105d5a03fabd737a126ad93d62a9eeede87f";
+    runcSha256 = "05s4p12mgmdcy7gjralh41wlgds6m69zdgwbpdn1xjj2487dmhxf";
+    containerdRev = "894b81a4b802e4eb2a91d1ce216b8817763c29fb";
+    containerdSha256 = "0sp5mn5wd3xma4svm6hf67hyhiixzkzz6ijhyjkwdrc4alk81357";
+    tiniRev = "fec3683b971d9c3ef73f284f176672c44b448662";
+    tiniSha256 = "1h20i3wwlbd8x4jr2gz68hgklh0lb0jj7y5xk1wvr8y58fip1rdn";
+  };
+
+  docker_19_03 = makeOverridable dockerGen {
+    version = "19.03.1";
+    rev = "74b1e89e8ac68948be88fe0aa1e2767ae28659fe";
+    sha256 = "1m7bq7la29d8piwiq5whzcyrm7g3lv497wnri0lh6gxi10nwv06h";
     runcRev = "425e105d5a03fabd737a126ad93d62a9eeede87f";
     runcSha256 = "05s4p12mgmdcy7gjralh41wlgds6m69zdgwbpdn1xjj2487dmhxf";
     containerdRev = "894b81a4b802e4eb2a91d1ce216b8817763c29fb";
diff --git a/pkgs/applications/window-managers/orbment/bemenu.nix b/pkgs/applications/window-managers/orbment/bemenu.nix
deleted file mode 100644
index 065b81948c2d..000000000000
--- a/pkgs/applications/window-managers/orbment/bemenu.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ stdenv, fetchFromGitHub, cmake, pkgconfig
-, pango, wayland, libxkbcommon }:
-
-stdenv.mkDerivation rec {
-  name = "bemenu-2017-02-14";
-
-  src = fetchFromGitHub {
-    owner = "Cloudef";
-    repo = "bemenu";
-    rev = "d6261274cf0b3aa51ce8ea7418a79495b20ad558";
-    sha256 = "08bc623y5yjbz7q83lhl6rb0xs6ji17z79c260bx0fgin8sfj5x8";
-  };
-
-  nativeBuildInputs = [ cmake pkgconfig ];
-
-  buildInputs = [ pango wayland libxkbcommon ];
-
-  enableParallelBuilding = true;
-
-  meta = with stdenv.lib; {
-    description = "A dynamic menu library and client program inspired by dmenu";
-    homepage = src.meta.homepage;
-    license = with licenses; [ gpl3 lgpl3 ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/applications/window-managers/orbment/default.nix b/pkgs/applications/window-managers/orbment/default.nix
deleted file mode 100644
index 6bf6f44d4234..000000000000
--- a/pkgs/applications/window-managers/orbment/default.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ lib, stdenv, fetchgit, cmake, pkgconfig, makeWrapper, callPackage
-, wlc, dbus, wayland, libxkbcommon, pixman, libinput, udev, zlib, libpng
-, libdrm, libX11
-, westonLite
-}:
-
-let
-  bemenu = callPackage ./bemenu.nix {};
-in stdenv.mkDerivation rec {
-  name = "orbment-${version}";
-  version = "git-2016-08-13";
-
-  src = fetchgit {
-    url = "https://github.com/Cloudef/orbment";
-    rev = "01dcfff9719e20261a6d8c761c0cc2f8fa0d0de5";
-    sha256 = "04mv9nh847vijr01zrs47fzmnwfhdx09vi3ddv843mx10yx7lqdb";
-    fetchSubmodules = true;
-  };
-
-  nativeBuildInputs = [ cmake pkgconfig makeWrapper ];
-
-  buildInputs = [
-    wlc dbus wayland libxkbcommon pixman libinput udev zlib libpng libX11
-    libdrm
-  ];
-
-  postFixup = ''
-    wrapProgram $out/bin/orbment \
-      --prefix PATH : "${stdenv.lib.makeBinPath [ bemenu westonLite ]}"
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "Modular Wayland compositor";
-    homepage    = src.url;
-    license     = lib.licenses.mit;
-    platforms   = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/applications/window-managers/velox/default.nix b/pkgs/applications/window-managers/velox/default.nix
deleted file mode 100644
index f8cb6c266839..000000000000
--- a/pkgs/applications/window-managers/velox/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, pkgconfig, makeWrapper, newScope
-, libxkbcommon
-, wayland, pixman, fontconfig
-, stConf ? null, stPatches ? []
-}:
-
-let
-  callPackage = newScope self;
-  self = {
-    swc = callPackage ./swc.nix {};
-    wld = callPackage ./wld.nix {};
-    dmenu-velox = callPackage ./dmenu.nix {};
-    st-velox = callPackage ./st.nix {
-      conf = stConf;
-      patches = stPatches;
-    };
-  };
-in with self; stdenv.mkDerivation rec {
-  name = "velox-${version}";
-  version = "git-2017-07-04";
-
-  src = fetchFromGitHub {
-    owner = "michaelforney";
-    repo = "velox";
-    rev = "0b1d3d62861653d92d0a1056855a84fcef661bc0";
-    sha256 = "0p5ra5p5w21wl696rmv0vdnl7jnri5iwnxfs6nl6miwydhq2dmci";
-  };
-
-  nativeBuildInputs = [ pkgconfig makeWrapper ];
-
-  buildInputs = [ swc libxkbcommon wld wayland pixman fontconfig ];
-
-  propagatedUserEnvPkgs = [ swc ];
-
-  makeFlags = "PREFIX=$(out)";
-  preBuild = ''
-    substituteInPlace config.c \
-      --replace /etc/velox.conf $out/etc/velox.conf
-  '';
-  installPhase = ''
-    PREFIX=$out make install
-    mkdir -p $out/etc
-    cp velox.conf.sample $out/etc/velox.conf
-  '';
-  postFixup = ''
-    wrapProgram $out/bin/velox \
-      --prefix PATH : "${stdenv.lib.makeBinPath [ dmenu-velox st-velox ]}"
-  '';
-
-  enableParallelBuilding = false; # https://hydra.nixos.org/build/79799608
-
-  meta = {
-    description = "velox window manager";
-    homepage    = "https://github.com/michaelforney/velox";
-    license     = lib.licenses.mit;
-    platforms   = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/applications/window-managers/velox/dmenu.nix b/pkgs/applications/window-managers/velox/dmenu.nix
deleted file mode 100644
index 01360e5af0b3..000000000000
--- a/pkgs/applications/window-managers/velox/dmenu.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{stdenv, fetchFromGitHub #, libX11, libXinerama, enableXft, libXft, zlib
-, swc, wld, wayland, libxkbcommon, pixman, fontconfig
-}:
-
-with stdenv.lib;
-
-stdenv.mkDerivation rec {
-  name = "dmenu-velox-${version}";
-  version = "git-2017-04-07";
-
-  src = fetchFromGitHub {
-    owner = "michaelforney";
-    repo = "dmenu";
-    rev = "f385d9d18813071b4b4257bf8d4d572daeda0e70";
-    sha256 = "14j8jv0nlybinhzkgd6dplvng9zy8p292prlx39w0k4fm6x5nv6y";
-  };
-
-  buildInputs = [ swc wld wayland libxkbcommon pixman fontconfig ];
-
-  postPatch = ''
-    sed -ri -e 's!\<(dmenu|dmenu_path)\>!'"$out/bin"'/&!g' dmenu_run
-  '';
-
-  preConfigure = [
-    ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g; s@/usr/share/swc@${swc}/share/swc@g" config.mk''
-  ];
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "A generic, highly customizable, and efficient menu for the X Window System";
-    homepage = https://tools.suckless.org/dmenu;
-    license = stdenv.lib.licenses.mit;
-    maintainers = with stdenv.lib.maintainers; [ ];
-    platforms = with stdenv.lib.platforms; all;
-  };
-}
diff --git a/pkgs/applications/window-managers/velox/st.nix b/pkgs/applications/window-managers/velox/st.nix
deleted file mode 100644
index 2d73df650463..000000000000
--- a/pkgs/applications/window-managers/velox/st.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv, fetchFromGitHub, pkgconfig, writeText
-, ncurses, wayland, wayland-protocols, wld, libxkbcommon, fontconfig, pixman
-, conf, patches }:
-
-with stdenv.lib;
-
-stdenv.mkDerivation rec {
-  name = "st-velox-${version}";
-  version = "git-2016-12-22";
-
-  src = fetchFromGitHub {
-    owner = "michaelforney";
-    repo = "st";
-    rev = "b27f17da65f74b0a923952601873524e03b4d047";
-    sha256 = "17aa4bz5g14jvqghk2c8mw77hb8786s07pv814rmlk7nnsavmp3i";
-  };
-
-  inherit patches;
-
-  configFile = optionalString (conf!=null) (writeText "config.def.h" conf);
-  preBuild = optionalString (conf!=null) "cp ${configFile} config.def.h";
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ ncurses wayland wayland-protocols wld libxkbcommon fontconfig pixman ];
-
-  NIX_LDFLAGS = "-lfontconfig";
-
-  installPhase = ''
-    TERMINFO=$out/share/terminfo make install PREFIX=$out
-  '';
-
-  enableParallelBuilding = true;
-
-  meta = {
-    homepage = https://st.suckless.org/;
-    license = licenses.mit;
-    maintainers = with maintainers; [ ];
-    platforms = with platforms; linux;
-  };
-}
diff --git a/pkgs/applications/window-managers/velox/swc.nix b/pkgs/applications/window-managers/velox/swc.nix
deleted file mode 100644
index a2f98b8b65e7..000000000000
--- a/pkgs/applications/window-managers/velox/swc.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, pkgconfig
-, wld, wayland, wayland-protocols, fontconfig, pixman, libdrm, libinput, libevdev, libxkbcommon, libxcb, xcbutilwm
-}:
-
-stdenv.mkDerivation rec {
-  name = "swc-${version}";
-  version = "git-2017-06-28";
-
-  src = fetchFromGitHub {
-    owner = "michaelforney";
-    repo = "swc";
-    rev = "5b20050872f8ad29cfc97729f8af47b6b3df5393";
-    sha256 = "1lxpm17v5d8png6ixc0zn0w00xgrhz2n5b8by9vx6800b18246z8";
-  };
-
-  nativeBuildInputs = [ pkgconfig ];
-
-  buildInputs = [ wld wayland wayland-protocols fontconfig pixman libdrm libinput libevdev libxkbcommon libxcb xcbutilwm ];
-
-  prePatch = ''
-    substituteInPlace launch/local.mk --replace 4755 755
-  '';
-
-  makeFlags = "PREFIX=$(out)";
-  installPhase = "PREFIX=$out make install";
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "A library for making a simple Wayland compositor";
-    homepage    = src.meta.homepage;
-    license     = lib.licenses.mit;
-    platforms   = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/applications/window-managers/velox/wld.nix b/pkgs/applications/window-managers/velox/wld.nix
deleted file mode 100644
index d85f8212ec47..000000000000
--- a/pkgs/applications/window-managers/velox/wld.nix
+++ /dev/null
@@ -1,32 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, pkgconfig
-, wayland, fontconfig, pixman, freetype, libdrm
-}:
-
-stdenv.mkDerivation rec {
-  name = "wld-${version}";
-  version = "git-2017-10-31";
-
-  src = fetchFromGitHub {
-    owner = "michaelforney";
-    repo = "wld";
-    rev = "b4e902bbecb678c45485b52c3aa183cbc932c595";
-    sha256 = "0j2n776flnzyw3vhxl0r8h1c48wrihi4g6bs2z8j4hbw5pnwq1k6";
-  };
-
-  nativeBuildInputs = [ pkgconfig ];
-
-  buildInputs = [ wayland fontconfig pixman freetype libdrm ];
-
-  makeFlags = "PREFIX=$(out)";
-  installPhase = "PREFIX=$out make install";
-
-  enableParallelBuilding = true;
-
-  meta = {
-    description = "A primitive drawing library targeted at Wayland";
-    homepage    = src.meta.homepage;
-    license     = lib.licenses.mit;
-    platforms   = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ ];
-  };
-}
diff --git a/pkgs/applications/window-managers/way-cooler/default.nix b/pkgs/applications/window-managers/way-cooler/default.nix
index f06020143d78..160b872fd48d 100644
--- a/pkgs/applications/window-managers/way-cooler/default.nix
+++ b/pkgs/applications/window-managers/way-cooler/default.nix
@@ -3,6 +3,8 @@
 }:
 
 let
+  wlc = callPackage ./wlc.nix {};
+
   # refer to
   # https://github.com/way-cooler/way-cooler.github.io/blob/master/way-cooler-release-i3-default.sh
   # for version numbers
diff --git a/pkgs/development/libraries/wlc/default.nix b/pkgs/applications/window-managers/way-cooler/wlc.nix
index 3f2891ffd510..3f2891ffd510 100644
--- a/pkgs/development/libraries/wlc/default.nix
+++ b/pkgs/applications/window-managers/way-cooler/wlc.nix
diff --git a/pkgs/development/idris-modules/sdl2.nix b/pkgs/development/idris-modules/sdl2.nix
index b0306040d730..e4a1fbae562c 100644
--- a/pkgs/development/idris-modules/sdl2.nix
+++ b/pkgs/development/idris-modules/sdl2.nix
@@ -6,26 +6,33 @@
 , SDL2
 , SDL2_gfx
 }:
-build-idris-package  {
+build-idris-package rec {
   name = "sdl2";
-  version = "2018-01-19";
+  version = "0.1.1";
 
   idrisDeps = [ effects ];
 
-  extraBuildInputs = [ pkgconfig SDL2 SDL2_gfx ];
+  extraBuildInputs = [
+    pkgconfig
+    SDL2
+    SDL2_gfx
+  ];
+
+  prePatch = "patchShebangs .";
 
   src = fetchFromGitHub {
     owner = "steshaw";
     repo = "idris-sdl2";
-    rev = "ebc36a0efb3e8086f2999120e7a8a8ac4952c6f6";
-    sha256 = "060k0i1pjilrc4pcz7v70hbipaw2crz14yxjlyjlhn6qm03131q0";
+    rev = version;
+    sha256 = sha256:1jslnlzyw04dcvcd7xsdjqa7waxzkm5znddv76sv291jc94xhl4a;
   };
 
   meta = {
     description = "SDL2 binding for Idris";
     homepage = https://github.com/steshaw/idris-sdl2;
-    maintainers = [ lib.maintainers.brainrape ];
-    # Can't find file sdl2.o
-    broken = true;
+    maintainers = with lib.maintainers; [
+      brainrape
+      steshaw
+    ];
   };
 }
diff --git a/pkgs/development/interpreters/python/sitecustomize.py b/pkgs/development/interpreters/python/sitecustomize.py
index 7e43be561476..e03b244dbc04 100644
--- a/pkgs/development/interpreters/python/sitecustomize.py
+++ b/pkgs/development/interpreters/python/sitecustomize.py
@@ -8,11 +8,19 @@ The paths listed in `PYTHONPATH` are added to `sys.path` afterwards, but they
 will be added before the entries we add here and thus take precedence.
 
 Note the `NIX_PYTHONPATH` environment variable is unset in order to prevent leakage.
+
+Similarly, this module listens to the environment variable `NIX_PYTHONEXECUTABLE`
+and sets `sys.executable` to its value.
 """
 import site
+import sys
 import os
 import functools
 
 paths = os.environ.pop('NIX_PYTHONPATH', None)
 if paths:
     functools.reduce(lambda k, p: site.addsitedir(p, k), paths.split(':'), site._init_pathinfo())
+
+executable = os.environ.pop('NIX_PYTHONEXECUTABLE', None)
+if 'PYTHONEXECUTABLE' not in os.environ and executable:
+    sys.executable = executable
diff --git a/pkgs/development/interpreters/python/wrapper.nix b/pkgs/development/interpreters/python/wrapper.nix
index d97bef222a1e..b437584024fe 100644
--- a/pkgs/development/interpreters/python/wrapper.nix
+++ b/pkgs/development/interpreters/python/wrapper.nix
@@ -14,6 +14,7 @@ let
   env = let
     paths = requiredPythonModules (extraLibs ++ [ python ] ) ;
     pythonPath = "${placeholder "out"}/${python.sitePackages}";
+    pythonExecutable = "${placeholder "out"}/bin/${python.executable}";
   in buildEnv {
     name = "${python.name}-env";
 
@@ -36,7 +37,7 @@ let
             if [ -f "$prg" ]; then
               rm -f "$out/bin/$prg"
               if [ -x "$prg" ]; then
-                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --set NIX_PYTHONPATH ${pythonPath} ${if permitUserSite then "" else ''--set PYTHONNOUSERSITE "true"''} ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
+                makeWrapper "$path/bin/$prg" "$out/bin/$prg" --set NIX_PYTHONEXECUTABLE ${pythonExecutable} --set NIX_PYTHONPATH ${pythonPath} ${if permitUserSite then "" else ''--set PYTHONNOUSERSITE "true"''} ${stdenv.lib.concatStringsSep " " makeWrapperArgs}
               fi
             fi
           done
diff --git a/pkgs/development/libraries/liburing/default.nix b/pkgs/development/libraries/liburing/default.nix
index 95644e2682ed..ff88bdcaafd6 100644
--- a/pkgs/development/libraries/liburing/default.nix
+++ b/pkgs/development/libraries/liburing/default.nix
@@ -3,12 +3,12 @@
 
 stdenv.mkDerivation rec {
   name = "liburing-${version}";
-  version = "1.0.0pre150_${builtins.substring 0 7 src.rev}";
+  version = "1.0.0pre156_${builtins.substring 0 7 src.rev}";
 
   src = fetchgit {
     url    = "http://git.kernel.dk/liburing";
-    rev    = "93f3e8d511e53133a4367afe04b5f256073082a0";
-    sha256 = "14ndx3z0q6gynkmlwiah6775ss0p1xmjgn428gqgbsganiyhkwgp";
+    rev    = "c31c7ec4bcd7bb0d7b28897d730431c02b9d4ea1";
+    sha256 = "17d6s03fyajcrijca9d2d6llbf8cl8dyalpxnl39az3452p04s11";
   };
 
   separateDebugInfo = true;
diff --git a/pkgs/development/libraries/opencv/3.x.nix b/pkgs/development/libraries/opencv/3.x.nix
index 7055645fe89f..d5dc716c4a8f 100644
--- a/pkgs/development/libraries/opencv/3.x.nix
+++ b/pkgs/development/libraries/opencv/3.x.nix
@@ -35,20 +35,20 @@
 }:
 
 let
-  version = "3.4.6";
+  version = "3.4.7";
 
   src = fetchFromGitHub {
     owner  = "opencv";
     repo   = "opencv";
     rev    = version;
-    sha256 = "1gf0rbgd5s13q46bdna0bqn4yz9rxfhvlhbp5ds9hs326q8zprg8";
+    sha256 = "0r5rrcnqx2lsnr1ja5ij2chb7yk9kkamr4p0ik52sqxydwkv3z50";
   };
 
   contribSrc = fetchFromGitHub {
     owner  = "opencv";
     repo   = "opencv_contrib";
     rev    = version;
-    sha256 = "115qcq0k2wmvhxw5lyv14yrd8m6xq3qy0pdby90ml2yl1caymbfy";
+    sha256 = "1ik6acsmgrx66awf19r2y3ijqvv9xg43gaphwszbiyi0jq3r43yw";
   };
 
   # Contrib must be built in order to enable Tesseract support:
@@ -61,16 +61,16 @@ let
     src = fetchFromGitHub {
       owner  = "opencv";
       repo   = "opencv_3rdparty";
-      rev    = "bdb7bb85f34a8cb0d35e40a81f58da431aa1557a";
-      sha256 = "1ys9mshfpm8iy8h4ml792gnqrq959dsrcv26axx14niivxyjbji8";
+      rev    = "32e315a5b106a7b89dbed51c28f8120a48b368b4";
+      sha256 = "19w9f0r16072s59diqxsr5q6nmwyz9gnxjs49nglzhd66p3ddbkp";
     } + "/ippicv";
-    files = let name = platform : "ippicv_2017u3_${platform}_general_20180518.tgz"; in
+    files = let name = platform : "ippicv_2019_${platform}_general_20180723.tgz"; in
       if stdenv.hostPlatform.system == "x86_64-linux" then
-      { ${name "lnx_intel64"} = "b7cc351267db2d34b9efa1cd22ff0572"; }
+      { ${name "lnx_intel64"} = "c0bd78adb4156bbf552c1dfe90599607"; }
       else if stdenv.hostPlatform.system == "i686-linux" then
-      { ${name "lnx_ia32"}    = "ea72de74dae3c604eb6348395366e78e"; }
+      { ${name "lnx_ia32"}    = "4f38432c30bfd6423164b7a24bbc98a0"; }
       else if stdenv.hostPlatform.system == "x86_64-darwin" then
-      { ${name "mac_intel64"} = "3ae52b9be0fe73dd45bc5e9429cd3732"; }
+      { ${name "mac_intel64"} = "fe6b2bb75ae0e3f19ad3ae1a31dfa4a2"; }
       else
       throw "ICV is not available for this platform (or not yet supported by this package)";
     dst = ".cache/ippicv";
@@ -147,12 +147,6 @@ stdenv.mkDerivation rec {
     cp --no-preserve=mode -r "${contribSrc}/modules" "$NIX_BUILD_TOP/opencv_contrib"
   '';
 
-  patches = lib.optional stdenv.isDarwin
-    (fetchpatch {
-      url = "https://github.com/opencv/opencv/commit/7621b91769098359e893e68ad474040ca7940fa1.patch";
-      sha256 = "12qb14yd5934ig61lzs4pg29gak9wjyhnj7nmfx5r213jj1a4m21";
-    });
-
   # This prevents cmake from using libraries in impure paths (which
   # causes build failure on non NixOS)
   # Also, work around https://github.com/NixOS/nixpkgs/issues/26304 with
@@ -246,6 +240,9 @@ stdenv.mkDerivation rec {
     "-DBUILD_opencv_videoio=OFF"
   ] ++ lib.optionals enablePython [
     "-DOPENCV_SKIP_PYTHON_LOADER=ON"
+  ] ++ lib.optional enableEigen [
+    # Autodetection broken by https://github.com/opencv/opencv/pull/13337
+    "-DEIGEN_INCLUDE_PATH=${eigen}/include/eigen3"
   ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/openjpeg/1.x.nix b/pkgs/development/libraries/openjpeg/1.x.nix
index dfa5605dec8b..2a625f32e7ff 100644
--- a/pkgs/development/libraries/openjpeg/1.x.nix
+++ b/pkgs/development/libraries/openjpeg/1.x.nix
@@ -5,4 +5,5 @@ callPackage ./generic.nix (args // rec {
   branch = "1.5";
   revision = "version.1.5.2";
   sha256 = "1dvvpvb597i5z8srz2v4c5dsbxb966h125jx3m2z0r2gd2wvpfkp";
+  testsSupport = false;
 })
diff --git a/pkgs/development/libraries/openscenegraph/default.nix b/pkgs/development/libraries/openscenegraph/default.nix
index 9f5ef3ff68c8..1398e829dd5c 100644
--- a/pkgs/development/libraries/openscenegraph/default.nix
+++ b/pkgs/development/libraries/openscenegraph/default.nix
@@ -26,14 +26,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "openscenegraph-${version}";
-  version = "3.6.3";
+  pname = "openscenegraph";
+  version = "3.6.4";
 
   src = fetchFromGitHub {
     owner = "openscenegraph";
     repo = "OpenSceneGraph";
-    rev = "d011ca4e8d83549a3688bf6bb8cd468dd9684822";
-    sha256 = "0h32z15sa8sbq276j0iib0n707m8bs4p5ji9z2ah411446paad9q";
+    rev = "OpenSceneGraph-${version}";
+    sha256 = "0x8hdbzw0b71j91fzp9cwmy9a7ava8v8wwyj8nxijq942vdx1785";
   };
 
   nativeBuildInputs = [ pkgconfig cmake doxygen ];
@@ -64,14 +64,12 @@ stdenv.mkDerivation rec {
     ++ lib.optionals withExamples [ fltk wxGTK ]
   ;
 
-  enableParallelBuilding = true;
-
   cmakeFlags = lib.optional (!withApps) "-DBUILD_OSG_APPLICATIONS=OFF" ++ lib.optional withExamples "-DBUILD_OSG_EXAMPLES=ON";
 
   meta = with stdenv.lib; {
     description = "A 3D graphics toolkit";
     homepage = http://www.openscenegraph.org/;
-    maintainers = [ maintainers.raskin ];
+    maintainers = with maintainers; [ aanderse raskin ];
     platforms = platforms.linux;
     license = "OpenSceneGraph Public License - free LGPL-based license";
   };
diff --git a/pkgs/development/python-modules/aplpy/default.nix b/pkgs/development/python-modules/aplpy/default.nix
index a173a58032d9..9710dc9f9a65 100644
--- a/pkgs/development/python-modules/aplpy/default.nix
+++ b/pkgs/development/python-modules/aplpy/default.nix
@@ -11,14 +11,14 @@
 , pillow
 , scikitimage
 , shapely
+, pytest
+, pytest-astropy
 }:
 
 buildPythonPackage rec {
   pname = "aplpy";
   version = "2.0.3";
 
-  doCheck = false; # tests require pytest-astropy
-
   src = fetchPypi {
     pname = "APLpy";
     inherit version;
@@ -28,7 +28,6 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     numpy
     astropy
-    astropy-helpers
     matplotlib
     reproject
     pyavm
@@ -38,11 +37,21 @@ buildPythonPackage rec {
     shapely
   ];
 
+  nativeBuildInputs = [ astropy-helpers ];
+
+  checkInputs = [ pytest pytest-astropy ];
+
   # Disable automatic update of the astropy-helper module
   postPatch = ''
     substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
   '';
 
+  # Tests must be run in the build directory
+  checkPhase = ''
+    cd build/lib
+    pytest
+  '';
+
   meta = with lib; {
     description = "The Astronomical Plotting Library in Python";
     homepage = http://aplpy.github.io;
diff --git a/pkgs/development/python-modules/astropy/default.nix b/pkgs/development/python-modules/astropy/default.nix
index 06716929575a..f46ca274f2e1 100644
--- a/pkgs/development/python-modules/astropy/default.nix
+++ b/pkgs/development/python-modules/astropy/default.nix
@@ -3,7 +3,10 @@
 , buildPythonPackage
 , isPy3k
 , numpy
-, pytest }:
+, pytest
+, pytest-astropy
+, astropy-helpers
+}:
 
 buildPythonPackage rec {
   pname = "astropy";
@@ -11,14 +14,30 @@ buildPythonPackage rec {
 
   disabled = !isPy3k; # according to setup.py
 
-  doCheck = false; #Some tests are failing. More importantly setup.py hangs on completion. Needs fixing with a proper shellhook.
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "706c0457789c78285e5464a5a336f5f0b058d646d60f4e5f5ba1f7d5bf424b28";
   };
 
-  propagatedBuildInputs = [ pytest numpy ]; # yes it really has pytest in install_requires
+  nativeBuildInputs = [ astropy-helpers ];
+
+  propagatedBuildInputs = [ numpy pytest ]; # yes it really has pytest in install_requires
+
+  checkInputs = [ pytest pytest-astropy ];
+
+  # Disable automatic update of the astropy-helper module
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+  '';
+
+  # Tests must be run from the build directory.  astropy/samp tests
+  # require a network connection, so we ignore them. For some reason
+  # pytest --ignore does not work, so we delete the tests instead.
+  checkPhase = ''
+    cd build/lib.*
+    rm -f astropy/samp/tests/*
+    pytest
+  '';
 
   meta = {
     description = "Astronomy/Astrophysics library for Python";
diff --git a/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch b/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch
new file mode 100644
index 000000000000..0b1c7973b59b
--- /dev/null
+++ b/pkgs/development/python-modules/astroquery/conftest-astropy-3-fix.patch
@@ -0,0 +1,54 @@
+diff -ruN astroquery-0.3.9.orig/astroquery/conftest.py astroquery-0.3.9/astroquery/conftest.py
+--- astroquery-0.3.9.orig/astroquery/conftest.py	2018-11-27 14:51:16.000000000 +0100
++++ astroquery-0.3.9/astroquery/conftest.py	2019-07-23 18:19:17.000000000 +0200
+@@ -5,15 +5,20 @@
+ # by importing them here in conftest.py they are discoverable by py.test
+ # no matter how it is invoked within the source tree.
+ 
+-from astropy.tests.pytest_plugins import (PYTEST_HEADER_MODULES,
+-                                          enable_deprecations_as_exceptions,
+-                                          TESTED_VERSIONS)
++from astropy.version import version as astropy_version
+ 
+-try:
+-    packagename = os.path.basename(os.path.dirname(__file__))
+-    TESTED_VERSIONS[packagename] = version.version
+-except NameError:
+-    pass
++if astropy_version < '3.0':
++    # With older versions of Astropy, we actually need to import the pytest
++    # plugins themselves in order to make them discoverable by pytest.
++    from astropy.tests.pytest_plugins import *
++else:
++    # As of Astropy 3.0, the pytest plugins provided by Astropy are
++    # automatically made available when Astropy is installed. This means it's
++    # not necessary to import them here, but we still need to import global
++    # variables that are used for configuration.
++    from astropy.tests.plugins.display import PYTEST_HEADER_MODULES, TESTED_VERSIONS
++
++from astropy.tests.helper import enable_deprecations_as_exceptions
+ 
+ # Add astropy to test header information and remove unused packages.
+ # Pytest header customisation was introduced in astropy 1.0.
+@@ -36,12 +41,17 @@
+     # The warnings_to_ignore_by_pyver parameter was added in astropy 2.0
+     enable_deprecations_as_exceptions(modules_to_ignore_on_import=['requests'])
+ 
++# add '_testrun' to the version name so that the user-agent indicates that
++# it's being run in a test
++from . import version
++version.version += '_testrun'
++
++
+ # This is to figure out the affiliated package version, rather than
+ # using Astropy's
+-try:
+-    from .version import version
+-except ImportError:
+-    version = 'dev'
++from .version import version, astropy_helpers_version
++
+ 
+ packagename = os.path.basename(os.path.dirname(__file__))
+ TESTED_VERSIONS[packagename] = version
++TESTED_VERSIONS['astropy_helpers'] = astropy_helpers_version
diff --git a/pkgs/development/python-modules/astroquery/default.nix b/pkgs/development/python-modules/astroquery/default.nix
index b2771505a663..7245b5662080 100644
--- a/pkgs/development/python-modules/astroquery/default.nix
+++ b/pkgs/development/python-modules/astroquery/default.nix
@@ -6,21 +6,42 @@
 , keyring
 , beautifulsoup4
 , html5lib
+, pytest
+, pytest-astropy
+, astropy-helpers
 }:
 
 buildPythonPackage rec {
   pname = "astroquery";
   version = "0.3.9";
 
-  doCheck = false; # Tests require the pytest-astropy package
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "0zw3xp2rfc6h2v569iqsyvzhfnzp7bfjb7jrj61is1hrqw1cqjrb";
   };
 
+  # Fix tests using conftest.py from HEAD in the upstream GitHub
+  # repository.
+  patches = [ ./conftest-astropy-3-fix.patch ];
+
   propagatedBuildInputs = [ astropy requests keyring beautifulsoup4 html5lib ];
 
+  nativeBuildInputs = [ astropy-helpers ];
+
+  checkInputs = [ pytest pytest-astropy ];
+
+  # Disable automatic update of the astropy-helper module
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+  '';
+
+  # Tests must be run in the build directory. The tests create files
+  # in $HOME/.astropy so we need to set HOME to $TMPDIR.
+  checkPhase = ''
+    cd build/lib
+    HOME=$TMPDIR pytest
+  '';
+
   meta = with pkgs.lib; {
     description = "Functions and classes to access online data resources";
     homepage = "https://astroquery.readthedocs.io/";
diff --git a/pkgs/development/python-modules/fastapi/default.nix b/pkgs/development/python-modules/fastapi/default.nix
new file mode 100644
index 000000000000..89431d8b52f8
--- /dev/null
+++ b/pkgs/development/python-modules/fastapi/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, uvicorn
+, starlette
+, pydantic
+, python
+, isPy3k
+, which
+}:
+
+buildPythonPackage rec {
+  pname = "fastapi";
+  version = "0.33.0";
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1mc8ljfk6xyn2cq725s8hgapp62z5mylzw9akvkhwwz3bh8m5a7f";
+  };
+
+  propagatedBuildInputs = [
+    uvicorn
+    starlette
+    pydantic
+  ];
+
+  patches = [ ./setup.py.patch ];
+
+  checkPhase = ''
+    ${python.interpreter} -c "from fastapi import FastAPI; app = FastAPI()"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/tiangolo/fastapi";
+    description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production";
+    license = licenses.mit;
+    maintainers = with maintainers; [ wd15 ];
+  };
+}
diff --git a/pkgs/development/python-modules/fastapi/setup.py.patch b/pkgs/development/python-modules/fastapi/setup.py.patch
new file mode 100644
index 000000000000..43661343d744
--- /dev/null
+++ b/pkgs/development/python-modules/fastapi/setup.py.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index ccc3d2b..77ce446 100644
+--- a/setup.py
++++ b/setup.py
+@@ -10,7 +10,7 @@ package_data = \
+ {'': ['*']}
+ 
+ install_requires = \
+-['starlette >=0.11.1,<=0.12.0', 'pydantic >=0.30,<=0.30.0']
++['starlette >=0.11.1', 'pydantic >=0.30']
+ 
+ extras_require = \
+ {'all': ['requests',
diff --git a/pkgs/development/python-modules/pydantic/default.nix b/pkgs/development/python-modules/pydantic/default.nix
new file mode 100644
index 000000000000..9b713827199b
--- /dev/null
+++ b/pkgs/development/python-modules/pydantic/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ujson
+, email_validator
+, typing-extensions
+, python
+, isPy3k
+}:
+
+buildPythonPackage rec {
+  pname = "pydantic";
+  version = "0.31";
+  disabled = !isPy3k;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0x9xc5hpyrlf05dc4bx9f7v51fahxcahkvh0ij8ibay15nwli53d";
+  };
+
+  propagatedBuildInputs = [
+    ujson
+    email_validator
+    typing-extensions
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} -c """
+from datetime import datetime
+from typing import List
+from pydantic import BaseModel
+
+class User(BaseModel):
+    id: int
+    name = 'John Doe'
+    signup_ts: datetime = None
+    friends: List[int] = []
+
+external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']}
+user = User(**external_data)
+assert user.id is "123"
+"""
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/samuelcolvin/pydantic";
+    description = "Data validation and settings management using Python type hinting";
+    license = licenses.mit;
+    maintainers = with maintainers; [ wd15 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyregion/default.nix b/pkgs/development/python-modules/pyregion/default.nix
index dda3a3cd161a..a2b0423e5584 100644
--- a/pkgs/development/python-modules/pyregion/default.nix
+++ b/pkgs/development/python-modules/pyregion/default.nix
@@ -1,18 +1,20 @@
 { lib
 , buildPythonPackage
 , fetchPypi
+, fetchpatch
 , pyparsing
 , numpy
 , cython
 , astropy
+, astropy-helpers
+, pytest
+, pytest-astropy
 }:
 
 buildPythonPackage rec {
   pname = "pyregion";
   version = "2.0";
 
-  doCheck = false; # tests require pytest-astropy
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "a8ac5f764b53ec332f6bc43f6f2193ca13e8b7d5a3fb2e20ced6b2ea42a9d094";
@@ -25,6 +27,30 @@ buildPythonPackage rec {
     astropy
   ];
 
+  # Upstream patch needed for the test to pass
+  patches = [
+    (fetchpatch {
+      name = "conftest-astropy-3-fix.patch";
+      url = "https://github.com/astropy/pyregion/pull/136.patch";
+      sha256 = "13yxjxiqnhjy9gh24hvv6pnwx7qic2mcx3ccr1igjrc3f881d59m";
+	  })
+	];
+
+  nativeBuildInputs = [ astropy-helpers ];
+
+  checkInputs = [ pytest pytest-astropy ];
+
+  # Disable automatic update of the astropy-helper module
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+  '';
+
+  # Tests must be run in the build directory
+  checkPhase = ''
+    cd build/lib.*
+    pytest
+  '';
+
   meta = with lib; {
     description = "Python parser for ds9 region files";
     homepage = https://github.com/astropy/pyregion;
diff --git a/pkgs/development/python-modules/pytest-arraydiff/default.nix b/pkgs/development/python-modules/pytest-arraydiff/default.nix
index 4a59e22d1365..e01d26b530ec 100644
--- a/pkgs/development/python-modules/pytest-arraydiff/default.nix
+++ b/pkgs/development/python-modules/pytest-arraydiff/default.nix
@@ -22,14 +22,10 @@ buildPythonPackage rec {
     pytest
   ];
 
-  checkInputs = [
-    pytest
-    astropy
-  ];
-
-  checkPhase = ''
-    pytest
-  '';
+  # The tests requires astropy, which itself requires
+  # pytest-arraydiff. This causes an infinite recursion if the tests
+  # are enabled.
+  doCheck = false;
 
   meta = with lib; {
     description = "Pytest plugin to help with comparing array output from tests";
diff --git a/pkgs/development/python-modules/radio_beam/default.nix b/pkgs/development/python-modules/radio_beam/default.nix
index 8b2fdc90f049..09d815134ef4 100644
--- a/pkgs/development/python-modules/radio_beam/default.nix
+++ b/pkgs/development/python-modules/radio_beam/default.nix
@@ -1,14 +1,17 @@
 { lib
 , fetchPypi
 , buildPythonPackage
-, astropy }:
+, astropy
+, pytest
+, pytest-astropy
+, astropy-helpers
+, scipy
+}:
 
 buildPythonPackage rec {
   pname = "radio_beam";
   version = "0.3.1";
 
-  doCheck = false; # the tests requires several pytest plugins that are not in nixpkgs
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "1wgd9dyz3pcc9ighkclb6qfyshwbg35s57lz6k62jhcxpvp8r5zb";
@@ -16,6 +19,21 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ astropy ];
 
+  nativeBuildInputs = [ astropy-helpers ];
+
+  # Disable automatic update of the astropy-helper module
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+  '';
+
+  checkInputs = [ pytest pytest-astropy scipy ];
+
+  # Tests must be run in the build directory
+  checkPhase = ''
+    cd build/lib
+    pytest
+  '';
+
   meta = {
     description = "Tools for Beam IO and Manipulation";
     homepage = http://radio-astro-tools.github.io;
diff --git a/pkgs/development/python-modules/rq/default.nix b/pkgs/development/python-modules/rq/default.nix
new file mode 100644
index 000000000000..8c91579d241a
--- /dev/null
+++ b/pkgs/development/python-modules/rq/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchPypi, buildPythonPackage, click, redis }:
+
+buildPythonPackage rec {
+  pname = "rq";
+  version = "1.1.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1fs03g1n1l8k03zwhkhckhsrnnsm3645sqby2nwh5gfij2kcc9sg";
+  };
+
+  # test require a running redis rerver, which is something we can't do yet
+  doCheck = false;
+
+  propagatedBuildInputs = [ click redis ];
+
+  meta = with stdenv.lib; {
+    description = "A simple, lightweight library for creating background jobs, and processing them";
+    homepage = "https://github.com/nvie/rq/";
+    maintainers = with maintainers; [ mrmebelman ];
+    license = licenses.bsd2;
+  };
+}
+
diff --git a/pkgs/development/python-modules/simple-salesforce/default.nix b/pkgs/development/python-modules/simple-salesforce/default.nix
new file mode 100644
index 000000000000..1eacd25beded
--- /dev/null
+++ b/pkgs/development/python-modules/simple-salesforce/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, fetchFromGitHub
+, buildPythonPackage
+, requests
+, pyopenssl
+, cryptography
+, idna
+, mock
+, isPy27
+, nose
+, pytz
+, responses
+}:
+
+buildPythonPackage rec {
+  pname = "simple-salesforce";
+  version = "0.74.3";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1n960xgrnmv20l31nm0im7pb4nfa83bmx4x4clqrh2jkpzq3ric0";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    pyopenssl
+    cryptography
+    idna
+  ];
+
+  checkInputs = [
+    nose
+    pytz
+    responses
+  ] ++ lib.optionals isPy27 [ mock ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "mock==1.0.1" "mock"
+  '';
+
+  meta = with lib; {
+    description = "A very simple Salesforce.com REST API client for Python";
+    homepage = https://github.com/simple-salesforce/simple-salesforce;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ costrouc ];
+  };
+
+}
diff --git a/pkgs/development/python-modules/spectral-cube/default.nix b/pkgs/development/python-modules/spectral-cube/default.nix
index 661bc6363f4f..c28b249d192c 100644
--- a/pkgs/development/python-modules/spectral-cube/default.nix
+++ b/pkgs/development/python-modules/spectral-cube/default.nix
@@ -3,20 +3,36 @@
 , buildPythonPackage
 , astropy
 , radio_beam
-, pytest }:
+, pytest
+, pytest-astropy
+, astropy-helpers
+}:
 
 buildPythonPackage rec {
   pname = "spectral-cube";
   version = "0.4.4";
 
-  doCheck = false; # the tests requires several pytest plugins that are not in nixpkgs
-
   src = fetchPypi {
     inherit pname version;
     sha256 = "9051ede204b1e25b6358b5e0e573b624ec0e208c24eb03a7ed4925b745c93b5e";
   };
 
-  propagatedBuildInputs = [ astropy radio_beam pytest ];
+  propagatedBuildInputs = [ astropy radio_beam ];
+
+  nativeBuildInputs = [ astropy-helpers ];
+
+  checkInputs = [ pytest pytest-astropy ];
+
+  # Disable automatic update of the astropy-helper module
+  postPatch = ''
+    substituteInPlace setup.cfg --replace "auto_use = True" "auto_use = False"
+  '';
+
+  # Tests must be run in the build directory
+  checkPhase = ''
+    cd build/lib
+    pytest
+  '';
 
   meta = {
     description = "Library for reading and analyzing astrophysical spectral data cubes";
diff --git a/pkgs/development/python-modules/starlette/default.nix b/pkgs/development/python-modules/starlette/default.nix
new file mode 100644
index 000000000000..6e2bd8250b66
--- /dev/null
+++ b/pkgs/development/python-modules/starlette/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, aiofiles
+, graphene
+, itsdangerous
+, jinja2
+, pyyaml
+, requests
+, ujson
+, pytest
+, python
+, uvicorn
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "starlette";
+  version = "0.12.4";
+  disabled = isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1m7qf4g5dn7n36406zbqsag71nmwp2dz91yxpplm7h7wiw2xxw93";
+  };
+
+  propagatedBuildInputs = [
+    aiofiles
+    graphene
+    itsdangerous
+    jinja2
+    pyyaml
+    requests
+    ujson
+    uvicorn
+  ];
+
+  checkPhase = ''
+    ${python.interpreter} -c """
+from starlette.applications import Starlette
+app = Starlette(debug=True)
+"""
+  '';
+
+  meta = with lib; {
+    homepage = https://www.starlette.io/;
+    description = "The little ASGI framework that shines";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ wd15 ];
+  };
+}
diff --git a/pkgs/development/python-modules/uvicorn/default.nix b/pkgs/development/python-modules/uvicorn/default.nix
new file mode 100644
index 000000000000..1bf0d1c54f06
--- /dev/null
+++ b/pkgs/development/python-modules/uvicorn/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, click
+, h11
+, httptools
+, uvloop
+, websockets
+, wsproto
+, isPy27
+}:
+
+buildPythonPackage rec {
+  pname = "uvicorn";
+  version = "0.8.4";
+  disabled = isPy27;
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1l8rfm30inx9pma893i7sby9h7y910k58841zqaajksn563b882k";
+  };
+
+  propagatedBuildInputs = [
+    click
+    h11
+    httptools
+    uvloop
+    websockets
+    wsproto
+  ];
+
+  checkPhase = ''
+    $out/bin/uvicorn --help
+  '';
+
+  patches = [ ./setup.patch ];
+
+  meta = with lib; {
+    homepage = https://www.uvicorn.org/;
+    description = "The lightning-fast ASGI server";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ wd15 ];
+  };
+}
diff --git a/pkgs/development/python-modules/uvicorn/setup.patch b/pkgs/development/python-modules/uvicorn/setup.patch
new file mode 100644
index 000000000000..f1d974b42d93
--- /dev/null
+++ b/pkgs/development/python-modules/uvicorn/setup.patch
@@ -0,0 +1,13 @@
+diff --git a/setup.py b/setup.py
+index 802cda4..561abf4 100755
+--- a/setup.py
++++ b/setup.py
+@@ -42,7 +42,7 @@ env_marker = (
+ 
+ requirements = [
+     "click==7.*",
+-    "h11==0.8.*",
++    "h11",
+     "websockets==7.*",
+     "httptools==0.0.13 ;" + env_marker,
+     "uvloop==0.12.* ;" + env_marker,
diff --git a/pkgs/development/tools/misc/linuxkit/default.nix b/pkgs/development/tools/misc/linuxkit/default.nix
index 27f49ebcf38c..5dd6f422713b 100644
--- a/pkgs/development/tools/misc/linuxkit/default.nix
+++ b/pkgs/development/tools/misc/linuxkit/default.nix
@@ -1,29 +1,29 @@
 { lib, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
-  name = "linuxkit-${version}";
-  version = "2017-07-08";
-  rev = "8ca19a84d5281b1b15c7a48c21e5786943b47f1c";
+  pname   = "linuxkit";
+  version = "0.7";
 
   goPackagePath = "github.com/linuxkit/linuxkit";
 
   src = fetchFromGitHub {
     owner = "linuxkit";
     repo = "linuxkit";
-    inherit rev;
-    sha256 = "150y7hnjhi81iik7np27y5466ldaackq72mpi7vmybbl7vr1wgw4";
+    rev = "v${version}";
+    sha256 = "1mnaqzd4r0fdgjhjvbi4p0wwvz69i82b33iizz81wvkr1mkakgl2";
   };
 
   subPackages = [ "src/cmd/linuxkit" ];
 
   preBuild = ''
-    buildFlagsArray+=("-ldflags" "-X main.GitCommit=${builtins.substring 0 7 rev} -X main.Version=0.0.0")
+    buildFlagsArray+=("-ldflags" "-X github.com/linuxkit/linuxkit/src/cmd/linuxkit/version.Version=${src.rev}")
   '';
 
-  meta = {
+  meta = with lib; {
     description = "A toolkit for building secure, portable and lean operating systems for containers";
-    license = lib.licenses.asl20;
+    license = licenses.asl20;
     homepage = https://github.com/linuxkit/linuxkit;
-    platforms = lib.platforms.unix;
+    maintainers = [ maintainers.nicknovitski ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/tools/rust/bindgen/default.nix b/pkgs/development/tools/rust/bindgen/default.nix
index 2f23cbba6950..df782d935157 100644
--- a/pkgs/development/tools/rust/bindgen/default.nix
+++ b/pkgs/development/tools/rust/bindgen/default.nix
@@ -3,13 +3,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-bindgen";
-  version = "0.50.0";
+  version = "0.51.0";
 
   src = fetchFromGitHub {
     owner = "rust-lang";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1vm7g7z15kmk7jkhhkb3477snwcww5dgdy349b52fgjjzp75h7z7";
+    sha256 = "1hlak8b57pndmdfkpfl17xxc91a6b239698bcm4yzlvliyscjgz1";
   };
 
   cargoSha256 = "1311d0wjjj99m59zd2n6r4aq6lwbbpyj54ha2z9g4yd1hn344r91";
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index 7b47cf0aa089..324e22d491e2 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -68,6 +68,9 @@ in buildRubyGem rec {
 
     mkdir -p "$out/vagrant-plugins/plugins.d"
     echo '{}' > "$out/vagrant-plugins/plugins.json"
+
+    mkdir -p $out/share/bash-completion/completions/
+    cp -av contrib/bash/completion.sh $out/share/bash-completion/completions/vagrant
   '' +
   lib.optionalString withLibvirt ''
     substitute ${./vagrant-libvirt.json.in} $out/vagrant-plugins/plugins.d/vagrant-libvirt.json \
diff --git a/pkgs/games/harmonist/default.nix b/pkgs/games/harmonist/default.nix
index cca17ceee5af..a391a73069a6 100644
--- a/pkgs/games/harmonist/default.nix
+++ b/pkgs/games/harmonist/default.nix
@@ -3,13 +3,13 @@
 buildGoPackage rec {
 
   pname = "harmonist";
-  version = "0.1";
+  version = "0.2";
 
   goPackagePath = "git.tuxfamily.org/harmonist/harmonist.git";
 
   src = fetchurl {
     url = "https://download.tuxfamily.org/harmonist/releases/${pname}-${version}.tar.gz";
-    sha256 = "1cvhfvscd80qz95pqkblnyjhz1l87k7y6vmzyzap893mpjk9a3pm";
+    sha256 = "1r78v312x2k1v9rkxkxffs5vxn9sc0dcszm66yw10p7qy9lyvicd";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/games/harmonist/deps.nix b/pkgs/games/harmonist/deps.nix
index a785567adddf..c65c0e339984 100644
--- a/pkgs/games/harmonist/deps.nix
+++ b/pkgs/games/harmonist/deps.nix
@@ -4,8 +4,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/nsf/termbox-go";
-      rev = "288510b9734e30e7966ec2f22b87c5f8e67345e3";
-      sha256 = "0hdyisfaf8yb55h3p03p4sbq19546mp9fy28f2kn659mycmhxqk4";
+      rev = "eeb6cd0a176293eeb2c69270d83835972e3567bc";
+      sha256 = "14695dk07dj41s5f74l3wdf3xjj2flq4fq016i98f5xijh5f64i3";
     };
   }
   {
diff --git a/pkgs/os-specific/linux/kernel/linux-4.19.nix b/pkgs/os-specific/linux/kernel/linux-4.19.nix
index 6891b6ce2c25..9ab4de7bf85b 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.19.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.19.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "4.19.60";
+  version = "4.19.61";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "0ibayrvrnw2lw7si78vdqnr20mm1d3z0g6a0ykndvgn5vdax5x9a";
+    sha256 = "1scwb6ynr93k4a1vzpw2x1hzafhfs06ckf9v6fk1zvkh8jw1rc5c";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.1.nix b/pkgs/os-specific/linux/kernel/linux-5.1.nix
index 1f4663452dd5..6ff9f5163d30 100644
--- a/pkgs/os-specific/linux/kernel/linux-5.1.nix
+++ b/pkgs/os-specific/linux/kernel/linux-5.1.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "5.1.19";
+  version = "5.1.20";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
-    sha256 = "1hk8dhp402vr74wq22j66yqr7iik0mcrahpmmq3dcl657vw1n8qf";
+    sha256 = "039i5b41dv930kmq8jwskcwjc6r26h9xy7jgbi6aggn0ycyig21d";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/os-specific/linux/kernel/linux-5.2.nix b/pkgs/os-specific/linux/kernel/linux-5.2.nix
index 0b44c6adfe91..3585a5231198 100644
--- a/pkgs/os-specific/linux/kernel/linux-5.2.nix
+++ b/pkgs/os-specific/linux/kernel/linux-5.2.nix
@@ -3,7 +3,7 @@
 with stdenv.lib;
 
 buildLinux (args // rec {
-  version = "5.2.2";
+  version = "5.2.3";
 
   # modDirVersion needs to be x.y.z, will automatically add .0 if needed
   modDirVersion = if (modDirVersionArg == null) then concatStrings (intersperse "." (take 3 (splitString "." "${version}.0"))) else modDirVersionArg;
@@ -13,6 +13,6 @@ buildLinux (args // rec {
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz";
-    sha256 = "173da67d51qcjwrczqsfd6g9phzazqzr11xfxwlf54ckd6117ng5";
+    sha256 = "018fiz8bycglh5b031b710zllv2s5w017ylq0j30923p744n0g3m";
   };
 } // (args.argsOverride or {}))
diff --git a/pkgs/servers/blockbook/default.nix b/pkgs/servers/blockbook/default.nix
index 6a1d8a75cc1a..b95c3d41b396 100644
--- a/pkgs/servers/blockbook/default.nix
+++ b/pkgs/servers/blockbook/default.nix
@@ -1,4 +1,5 @@
-{ buildGoPackage
+{ stdenv
+, buildGoPackage
 , lib
 , fetchFromGitHub
 , rocksdb
@@ -30,7 +31,9 @@ buildGoPackage rec {
 
   nativeBuildInputs = [ pkg-config packr ];
 
-  preBuild = ''
+  preBuild = lib.optionalString stdenv.isDarwin ''
+    ulimit -n 8192
+  '' + ''
     export CGO_CFLAGS="-I${rocksdb}/include"
     export CGO_LDFLAGS="-L${rocksdb}/lib -lrocksdb -lstdc++ -lm -lz -lbz2 -lsnappy -llz4"
     packr clean && packr
diff --git a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
index 1914933c558c..422bfad92e6a 100644
--- a/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
+++ b/pkgs/servers/mail/dovecot/2.2.x-module_dir.patch
@@ -1,8 +1,8 @@
 diff --git a/src/auth/main.c b/src/auth/main.c
-index 5a87c57..74bff52 100644
+index 2dbf9e1..b1e778a 100644
 --- a/src/auth/main.c
 +++ b/src/auth/main.c
-@@ -194,7 +194,7 @@ static void main_preinit(void)
+@@ -192,7 +192,7 @@ static void main_preinit(void)
  	mod_set.debug = global_auth_settings->debug;
  	mod_set.filter_callback = auth_module_filter;
  
@@ -11,7 +11,7 @@ index 5a87c57..74bff52 100644
  	module_dir_init(modules);
  
  	if (!worker)
-@@ -225,7 +225,7 @@ void auth_module_load(const char *names)
+@@ -223,7 +223,7 @@ void auth_module_load(const char *names)
  	mod_set.debug = global_auth_settings->debug;
  	mod_set.ignore_missing = TRUE;
  
@@ -21,19 +21,19 @@ index 5a87c57..74bff52 100644
  	module_dir_init(modules);
  }
 diff --git a/src/config/all-settings.c b/src/config/all-settings.c
-index de223a5..2df2d21 100644
+index 4a2ab53..5057d63 100644
 --- a/src/config/all-settings.c
 +++ b/src/config/all-settings.c
-@@ -836,7 +836,7 @@ static const struct mail_user_settings mail_user_default_settings = {
+@@ -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): ",
+ 	.mail_log_prefix = "%s(%u)<%{pid}><%{session}>: ",
  
-@@ -3545,7 +3545,7 @@ const struct doveadm_settings doveadm_default_settings = {
+@@ -4723,7 +4723,7 @@ const struct doveadm_settings doveadm_default_settings = {
  	.base_dir = PKG_RUNDIR,
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
@@ -43,12 +43,12 @@ index de223a5..2df2d21 100644
  	.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 2a5009a..134f92b 100644
+index 6894123..07e9fec 100644
 --- a/src/config/config-parser.c
 +++ b/src/config/config-parser.c
-@@ -1047,7 +1047,7 @@ void config_parse_load_modules(void)
+@@ -1077,7 +1077,7 @@ void config_parse_load_modules(void)
  
- 	memset(&mod_set, 0, sizeof(mod_set));
+ 	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);
@@ -56,10 +56,10 @@ index 2a5009a..134f92b 100644
  
  	i_array_init(&new_roots, 64);
 diff --git a/src/dict/main.c b/src/dict/main.c
-index e6c945e..06ad6c5 100644
+index 722ed02..4ed12ae 100644
 --- a/src/dict/main.c
 +++ b/src/dict/main.c
-@@ -62,7 +62,7 @@ static void main_init(void)
+@@ -104,7 +104,7 @@ static void main_init(void)
  	mod_set.abi_version = DOVECOT_ABI_VERSION;
  	mod_set.require_init_funcs = TRUE;
  
@@ -69,10 +69,10 @@ index e6c945e..06ad6c5 100644
  
  	/* 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 df12284..19c18da 100644
+index 88da40c..141ed05 100644
 --- a/src/doveadm/doveadm-settings.c
 +++ b/src/doveadm/doveadm-settings.c
-@@ -81,7 +81,7 @@ const struct doveadm_settings doveadm_default_settings = {
+@@ -86,7 +86,7 @@ const struct doveadm_settings doveadm_default_settings = {
  	.base_dir = PKG_RUNDIR,
  	.libexec_dir = PKG_LIBEXECDIR,
  	.mail_plugins = "",
@@ -82,7 +82,7 @@ index df12284..19c18da 100644
  	.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 b50fbe0..ace3aff 100644
+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)
@@ -95,10 +95,10 @@ index b50fbe0..ace3aff 100644
  	module_dir_init(fs_modules);
  
 diff --git a/src/lib-ssl-iostream/iostream-ssl.c b/src/lib-ssl-iostream/iostream-ssl.c
-index a0659ab..dba3729 100644
+index f857ec9..0d1023b 100644
 --- a/src/lib-ssl-iostream/iostream-ssl.c
 +++ b/src/lib-ssl-iostream/iostream-ssl.c
-@@ -34,7 +34,7 @@ static int ssl_module_load(const char **error_r)
+@@ -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;
@@ -108,15 +108,28 @@ index a0659ab..dba3729 100644
  					&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 e2233bf..bbf981e 100644
+index b314b52..7055094 100644
 --- a/src/lib-storage/mail-storage-settings.c
 +++ b/src/lib-storage/mail-storage-settings.c
-@@ -274,7 +274,7 @@ static const struct mail_user_settings mail_user_default_settings = {
+@@ -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): ",
+ 	.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/default.nix b/pkgs/servers/mail/dovecot/default.nix
index 17286f8ec241..69c1a85760bc 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.7";
+  name = "dovecot-2.3.7.1";
 
   nativeBuildInputs = [ perl pkgconfig ];
   buildInputs =
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://dovecot.org/releases/2.3/${name}.tar.gz";
-    sha256 = "1al382ykm94if5agasb9h2442a8s7wn43hlwh292ir1rhnp5dq8i";
+    sha256 = "1hq333vj4px4xa9djl8c1v3c8rac98v2mrb9vx1wisg6frpiv9f5";
   };
 
   enableParallelBuilding = true;
diff --git a/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix b/pkgs/servers/mail/dovecot/plugins/pigeonhole/default.nix
index 6a812863f052..30c6f2f44dd5 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 {
   name = "dovecot-pigeonhole-${version}";
-  version = "0.5.6";
+  version = "0.5.7.1";
 
   src = fetchurl {
     url = "https://pigeonhole.dovecot.org/releases/2.3/dovecot-2.3-pigeonhole-${version}.tar.gz";
-    sha256 = "1f7m2213w4hvqr3lvr03bv4lh92k35gxl01c2x8q8akk7viffbvw";
+    sha256 = "0a10mam68pmdh3fw8fnv5jff6xj1k770hvadym2c39vm3x6b4w1j";
   };
 
   buildInputs = [ dovecot openssl ];
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index 41357f665507..07c7f5207171 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -23,11 +23,11 @@ let
 
 in buildPythonApplication rec {
   pname = "matrix-synapse";
-  version = "1.1.0";
+  version = "1.2.1";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0bmcpk3b6hlix2dzkwzlqy97ypljipr4bw8rnxm8rlihpd6scrjq";
+    sha256 = "0pr17n52vdq490q6c282nqnn51j5k0lf7mzaazpxjy4q86pxdfy5";
   };
 
   patches = [
diff --git a/pkgs/servers/serviio/default.nix b/pkgs/servers/serviio/default.nix
index 5c4a35431436..2ab3bf666857 100644
--- a/pkgs/servers/serviio/default.nix
+++ b/pkgs/servers/serviio/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "serviio-${version}";
-  version = "1.10.1";
+  version = "2.0";
 
   src = fetchurl {
     url = "http://download.serviio.org/releases/${name}-linux.tar.gz";
-    sha256 = "0gxa29mzwvr0xvvi2qizyvf68ma5s3405q58f1pcgadbb68jwx6q";
+    sha256 = "1zq1ax0pdxfn0nw0vm7s23ik47w8nwh1n83a7yka8dnknxjf5nng";
   };
 
   phases = ["unpackPhase" "installPhase"];
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index 1da5c31c25f6..80b0addd6ec8 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -1,7 +1,7 @@
 { abiCompat ? null,
   stdenv, makeWrapper, fetchurl, fetchpatch, buildPackages,
   automake, autoconf, gettext, libiconv, libtool, intltool,
-  freetype, tradcpp, fontconfig, meson, ninja,
+  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,
@@ -423,6 +423,85 @@ self: super:
     '';
   });
 
+  # xkeyboardconfig variant extensible with custom layouts.
+  # See nixos/modules/services/x11/extra-layouts.nix
+  xkeyboardconfig_custom = { layouts ? { } }:
+  let
+    patchIn = name: layout:
+    with layout;
+    with lib;
+    ''
+        # install layout files
+        ${optionalString (compatFile   != null) "cp '${compatFile}'   'compat/${name}'"}
+        ${optionalString (geometryFile != null) "cp '${geometryFile}' 'geometry/${name}'"}
+        ${optionalString (keycodesFile != null) "cp '${keycodesFile}' 'keycodes/${name}'"}
+        ${optionalString (symbolsFile  != null) "cp '${symbolsFile}'  'symbols/${name}'"}
+        ${optionalString (typesFile    != null) "cp '${typesFile}'    'types/${name}'"}
+
+        # patch makefiles
+        for type in compat geometry keycodes symbols types; do
+          if ! test -f "$type/${name}"; then
+            continue
+          fi
+          test "$type" = geometry && type_name=geom || type_name=$type
+          ${ed}/bin/ed -v $type/Makefile.am <<EOF
+        /''${type_name}_DATA =
+        a
+        ${name} \\
+        .
+        w
+        EOF
+          ${ed}/bin/ed -v $type/Makefile.in <<EOF
+        /''${type_name}_DATA =
+        a
+        ${name} \\
+        .
+        w
+        EOF
+        done
+
+        # add model description
+        ${ed}/bin/ed -v rules/base.xml <<EOF
+        /<\/modelList>
+        -
+        a
+        <model>
+          <configItem>
+            <name>${name}</name>
+            <_description>${layout.description}</_description>
+            <vendor>${layout.description}</vendor>
+          </configItem>
+        </model>
+        .
+        w
+        EOF
+
+        # add layout description
+        ${ed}/bin/ed -v rules/base.xml <<EOF
+        /<\/layoutList>
+        -
+        a
+        <layout>
+          <configItem>
+            <name>${name}</name>
+            <_shortDescription>${name}</_shortDescription>
+            <_description>${layout.description}</_description>
+            <languageList>
+              ${concatMapStrings (lang: "<iso639Id>${lang}</iso639Id>\n") layout.languages}
+            </languageList>
+          </configItem>
+          <variantList/>
+        </layout>
+        .
+        w
+        EOF
+    '';
+  in
+    self.xkeyboardconfig.overrideAttrs (old: {
+      buildInputs = old.buildInputs ++ [ automake ];
+      postPatch   = with lib; concatStrings (mapAttrsToList patchIn layouts);
+    });
+
   xload = super.xload.overrideAttrs (attrs: {
     nativeBuildInputs = attrs.nativeBuildInputs ++ [ gettext ];
   });
diff --git a/pkgs/tools/X11/dragon-drop/default.nix b/pkgs/tools/X11/dragon-drop/default.nix
index 232c4a636fb8..28f7edcfd043 100644
--- a/pkgs/tools/X11/dragon-drop/default.nix
+++ b/pkgs/tools/X11/dragon-drop/default.nix
@@ -1,15 +1,14 @@
-
 { stdenv, gtk, pkgconfig, fetchFromGitHub }:
 
 stdenv.mkDerivation rec {
   name = "dragon-drop-${version}";
-  version = "git-2014-08-14";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "mwh";
     repo = "dragon";
-    rev = "a49d775dd9d43bd22cee4c1fd3e32ede0dc2e9c2";
-    sha256 = "03vdbmqlbmk3j2ay1wy6snrm2y27faxz7qv81vyzjzngj345095a";
+    rev = "v${version}";
+    sha256 = "0iwlrcqvbjshpwvg0gsqdqcjv48q1ary59pm74zzjnr8v9470smr";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -23,7 +22,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Simple drag-and-drop source/sink for X";
     homepage = https://github.com/mwh/dragon;
-    maintainers = with maintainers; [ jb55 ];
+    maintainers = with maintainers; [ jb55 markus1189 ];
     license = licenses.gpl3;
     platforms = with platforms; unix;
   };
diff --git a/pkgs/tools/audio/mpd-mpris/default.nix b/pkgs/tools/audio/mpd-mpris/default.nix
new file mode 100644
index 000000000000..a4cea2b07ed6
--- /dev/null
+++ b/pkgs/tools/audio/mpd-mpris/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "mpd-mpris";
+  version = "0.2.3";
+
+  src = fetchFromGitHub {
+    owner = "natsukagami";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "19sz1ykdzradhpdwdvvxh9scp5sv2i072qircs0q4374cdgccfbb";
+  };
+
+  modSha256 = "1a95kfy8w952269x4llbl0afyxr5fjkg30mxsn81zdh5wr8gabwh";
+
+  subPackages = [ "cmd/${pname}" ];
+
+  postInstall = ''
+    substituteInPlace mpd-mpris.service \
+      --replace /usr/bin $out/bin
+    mkdir -p $out/lib/systemd/user
+    cp mpd-mpris.service $out/lib/systemd/user
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An implementation of the MPRIS protocol for MPD";
+    homepage = "https://github.com/natsukagami/mpd-mpris";
+    license = licenses.mit;
+    maintainers = with maintainers; [ doronbehar ];
+    platforms = platforms.linux;
+  };
+}
+
diff --git a/pkgs/tools/misc/ethtool/default.nix b/pkgs/tools/misc/ethtool/default.nix
index 963086b717a8..a6afa03a3f15 100644
--- a/pkgs/tools/misc/ethtool/default.nix
+++ b/pkgs/tools/misc/ethtool/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "ethtool-${version}";
-  version = "5.1";
+  version = "5.2";
 
   src = fetchurl {
     url = "mirror://kernel/software/network/ethtool/${name}.tar.xz";
-    sha256 = "11rkvb1nga9hdiycw0hjn6lh1sfy4p4yzcl4fw5jjrb5xhgsrzk5";
+    sha256 = "01bq2g7amycfp4syzcswz52pgphdgswklziqfjwnq3c6844dfpv6";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/networking/amass/default.nix b/pkgs/tools/networking/amass/default.nix
index bd9cae162244..73f54f7dbff7 100644
--- a/pkgs/tools/networking/amass/default.nix
+++ b/pkgs/tools/networking/amass/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "amass";
-  version = "2.9.11";
+  version = "3.0.25";
 
   src = fetchFromGitHub {
     owner = "OWASP";
     repo = "Amass";
-    rev = version;
-    sha256 = "1mbxxj7cjypxdn80svgmq9yvzaj2x0y1lcbglzzmlqj3r0j265mr";
+    rev = "v${version}";
+    sha256 = "04vsahqmbs9rysdwyjq0zgwcn6dgdvkyz8lsp1g1p9d3amrgbqjy";
   };
 
-  modSha256 = "028ln760xaxlsk074x1i5fqi1334rw2bpz7fg520q6m13d9w86hw";
+  modSha256 = "0kwi4pys08kszrh5kz64gs68k20y00v2zqh5hyrgpy9nivqrlj62";
 
   outputs = [ "out" "wordlists" ];
 
@@ -37,9 +37,8 @@ buildGoModule rec {
       Amass ships with a set of wordlist (to be used with the amass -w flag)
       that are found under the wordlists output.
       '';
-    homepage = https://www.owasp.org/index.php/OWASP_Amass_Project;
+    homepage = "https://www.owasp.org/index.php/OWASP_Amass_Project";
     license = licenses.asl20;
     maintainers = with maintainers; [ kalbasit ];
-    platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/tools/security/gopass/default.nix b/pkgs/tools/security/gopass/default.nix
index b8be17e49967..a0b1f28854b9 100644
--- a/pkgs/tools/security/gopass/default.nix
+++ b/pkgs/tools/security/gopass/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildGoPackage, fetchFromGitHub, git, gnupg, xclip, makeWrapper }:
+{ stdenv, buildGoPackage, fetchFromGitHub, git, gnupg, xclip, wl-clipboard, makeWrapper }:
 
 buildGoPackage rec {
   pname = "gopass";
-  version = "1.8.5";
+  version = "1.8.6";
 
   goPackagePath = "github.com/gopasspw/gopass";
 
@@ -12,13 +12,14 @@ buildGoPackage rec {
     owner = "gopasspw";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1mgc77j5b9pjf2ayd5c09ym6d8n1yia8yg87zw0b8fsh5wac41sl";
+    sha256 = "0v3sx9hb03bdn4rvsv2r0jzif6p1rx47hrkpsbnwva31k396mck2";
   };
 
   wrapperPath = with stdenv.lib; makeBinPath ([
     git
     gnupg
     xclip
+    wl-clipboard
   ]);
 
   postInstall = ''
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 562600143b43..d9932678a981 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -736,6 +736,8 @@ in
 
   container-linux-config-transpiler = callPackage ../development/tools/container-linux-config-transpiler { };
 
+  ccextractor = callPackage ../applications/video/ccextractor { };
+
   cconv = callPackage ../tools/text/cconv { };
 
   go-check = callPackage ../development/tools/check { };
@@ -1760,6 +1762,8 @@ in
 
   mpdris2 = callPackage ../tools/audio/mpdris2 { };
 
+  mpd-mpris = callPackage ../tools/audio/mpd-mpris { };
+
   mq-cli = callPackage ../tools/system/mq-cli { };
 
   nfdump = callPackage ../tools/networking/nfdump { };
@@ -6882,6 +6886,8 @@ in
 
   wml = callPackage ../development/web/wml { };
 
+  wmc-mpris = callPackage ../applications/misc/web-media-controller { };
+
   wol = callPackage ../tools/networking/wol { };
 
   wolf-shaper = callPackage ../applications/audio/wolf-shaper { };
@@ -17517,10 +17523,11 @@ in
   };
 
   inherit (callPackage ../applications/virtualization/docker {})
-    docker_18_09;
+    docker_18_09
+    docker_19_03;
 
-  docker = docker_18_09;
-  docker-edge = docker_18_09;
+  docker = docker_19_03;
+  docker-edge = docker_19_03;
 
   docker-proxy = callPackage ../applications/virtualization/docker/proxy.nix { };
 
@@ -18574,11 +18581,8 @@ in
 
   super-productivity = callPackage ../applications/networking/super-productivity { };
 
-  wlc = callPackage ../development/libraries/wlc { };
   wlroots = callPackage ../development/libraries/wlroots { };
 
-  orbment = callPackage ../applications/window-managers/orbment { };
-
   sway = callPackage ../applications/window-managers/sway { };
   swaybg = callPackage ../applications/window-managers/sway/bg.nix { };
   swayidle = callPackage ../applications/window-managers/sway/idle.nix { };
@@ -18588,11 +18592,6 @@ in
     pulseSupport = config.pulseaudio or false;
   };
 
-  velox = callPackage ../applications/window-managers/velox {
-    stConf = config.st.conf or null;
-    stPatches = config.st.patches or null;
-  };
-
   i3 = callPackage ../applications/window-managers/i3 {
     xcb-util-cursor = if stdenv.isDarwin then xcb-util-cursor-HEAD else xcb-util-cursor;
   };
@@ -18924,6 +18923,12 @@ in
 
   kubectl = callPackage ../applications/networking/cluster/kubectl { };
 
+  k9s = callPackage ../applications/networking/cluster/k9s { };
+
+  fluxctl = callPackage ../applications/networking/cluster/fluxctl { };
+
+  linkerd = callPackage ../applications/networking/cluster/linkerd { };
+
   kubernetes-helm = callPackage ../applications/networking/cluster/helm { };
 
   kubetail = callPackage ../applications/networking/cluster/kubetail { } ;
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index d34aae045293..9bb23598232a 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1079,6 +1079,8 @@ in {
 
   rlp = callPackage ../development/python-modules/rlp { };
 
+  rq = callPackage ../development/python-modules/rq { };
+
   rx = callPackage ../development/python-modules/rx { };
 
   sabyenc = callPackage ../development/python-modules/sabyenc { };
@@ -1101,6 +1103,8 @@ in {
 
   simpleeval = callPackage ../development/python-modules/simpleeval { };
 
+  simple-salesforce = callPackage ../development/python-modules/simple-salesforce { };
+
   singledispatch = callPackage ../development/python-modules/singledispatch { };
 
   sip = callPackage ../development/python-modules/sip { };
@@ -6047,6 +6051,14 @@ in {
   aioesphomeapi = callPackage ../development/python-modules/aioesphomeapi { };
 
   mwparserfromhell = callPackage ../development/python-modules/mwparserfromhell { };
+
+  starlette = callPackage ../development/python-modules/starlette { };
+
+  uvicorn = callPackage ../development/python-modules/uvicorn { };
+
+  pydantic = callPackage ../development/python-modules/pydantic { };
+
+  fastapi = callPackage ../development/python-modules/fastapi { };
 });
 
 in fix' (extends overrides packages)