about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/languages-frameworks/android.section.md2
-rw-r--r--lib/modules.nix17
-rwxr-xr-xlib/tests/modules.sh13
-rw-r--r--lib/tests/modules/declare-option-set.nix3
-rw-r--r--lib/tests/modules/define-option-dependently.nix16
-rw-r--r--maintainers/maintainer-list.nix12
-rw-r--r--nixos/doc/manual/release-notes/rl-2003.xml9
-rw-r--r--nixos/doc/manual/release-notes/rl-2009.xml10
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/networking/firewall.nix10
-rw-r--r--nixos/modules/services/networking/iodine.nix163
-rw-r--r--nixos/modules/services/networking/supybot.nix109
-rw-r--r--nixos/modules/services/networking/tailscale.nix46
-rw-r--r--nixos/modules/system/boot/kernel.nix265
-rw-r--r--nixos/modules/system/boot/stage-1.nix13
-rw-r--r--nixos/tests/all-tests.nix1
-rw-r--r--nixos/tests/iodine.nix63
-rw-r--r--pkgs/applications/audio/aucatctl/default.nix37
-rw-r--r--pkgs/applications/audio/cmt/default.nix33
-rw-r--r--pkgs/applications/audio/mopidy/iris.nix4
-rw-r--r--pkgs/applications/audio/vorbis-tools/default.nix4
-rw-r--r--pkgs/applications/blockchains/zcash/default.nix16
-rw-r--r--pkgs/applications/blockchains/zcash/librustzcash/default.nix16
-rw-r--r--pkgs/applications/gis/saga/default.nix8
-rw-r--r--pkgs/applications/graphics/jbrout/default.nix42
-rw-r--r--pkgs/applications/misc/toggldesktop/default.nix16
-rw-r--r--pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/docker-machine/hyperkit.nix22
-rw-r--r--pkgs/applications/networking/cluster/docker-machine/kvm2.nix22
-rw-r--r--pkgs/applications/networking/cluster/kubeval/default.nix25
-rw-r--r--pkgs/applications/networking/cluster/kubeval/schema.nix15
-rw-r--r--pkgs/applications/networking/cluster/minikube/default.nix59
-rw-r--r--pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/riot/riot-web.nix4
-rw-r--r--pkgs/applications/radio/gnss-sdr/default.nix6
-rw-r--r--pkgs/applications/science/electronics/kicad/default.nix4
-rw-r--r--pkgs/applications/science/electronics/kicad/libraries.nix17
-rw-r--r--pkgs/applications/science/logic/abc/default.nix39
-rw-r--r--pkgs/applications/science/logic/mcy/default.nix17
-rw-r--r--pkgs/applications/science/logic/symbiyosys/default.nix12
-rw-r--r--pkgs/applications/virtualization/conmon/default.nix4
-rw-r--r--pkgs/applications/virtualization/virtualbox/extpack.nix7
-rw-r--r--pkgs/data/misc/unicode-character-database/default.nix4
-rw-r--r--pkgs/data/themes/ant-theme/ant-bloody.nix40
-rw-r--r--pkgs/data/themes/ant-theme/ant-dracula.nix40
-rw-r--r--pkgs/data/themes/ant-theme/ant-nebula.nix40
-rw-r--r--pkgs/data/themes/ant-theme/ant.nix (renamed from pkgs/data/themes/ant-theme/default.nix)17
-rw-r--r--pkgs/data/themes/matcha/default.nix4
-rw-r--r--pkgs/development/compilers/elm/default.nix40
-rw-r--r--pkgs/development/compilers/elm/packages/elm-instrument.nix34
-rw-r--r--pkgs/development/compilers/elm/packages/elmi-to-json.nix8
-rw-r--r--pkgs/development/compilers/elm/packages/node-composition.nix2
-rw-r--r--pkgs/development/compilers/elm/packages/node-packages.json13
-rw-r--r--pkgs/development/compilers/elm/packages/node-packages.nix1310
-rw-r--r--pkgs/development/compilers/yosys/default.nix41
-rw-r--r--pkgs/development/interpreters/groovy/default.nix4
-rw-r--r--pkgs/development/libraries/intel-media-driver/default.nix6
-rw-r--r--pkgs/development/libraries/libgpiod/default.nix6
-rw-r--r--pkgs/development/libraries/libite/default.nix4
-rw-r--r--pkgs/development/libraries/libkml/default.nix53
-rw-r--r--pkgs/development/libraries/science/math/brial/default.nix6
-rw-r--r--pkgs/development/libraries/spice-protocol/default.nix6
-rw-r--r--pkgs/development/mobile/androidenv/convertpackages.xsl2
-rw-r--r--pkgs/development/mobile/androidenv/convertsystemimages.xsl69
-rwxr-xr-x[-rw-r--r--]pkgs/development/mobile/androidenv/generate.sh28
-rw-r--r--pkgs/development/ocaml-modules/lacaml/default.nix4
-rw-r--r--pkgs/development/python-modules/buildout/default.nix6
-rw-r--r--pkgs/development/python-modules/imapclient/default.nix33
-rw-r--r--pkgs/development/python-modules/matrix-nio/default.nix4
-rw-r--r--pkgs/development/python-modules/rpy2/default.nix13
-rw-r--r--pkgs/development/python-modules/rq/default.nix4
-rw-r--r--pkgs/development/python-modules/uamqp/default.nix6
-rw-r--r--pkgs/development/python-modules/wsgitools/default.nix28
-rw-r--r--pkgs/development/python-modules/z3c-checkversions/default.nix1
-rw-r--r--pkgs/development/tools/literate-programming/nuweb/default.nix6
-rw-r--r--pkgs/development/tools/renderizer/default.nix6
-rw-r--r--pkgs/development/tools/rust/cbindgen/default.nix5
-rw-r--r--pkgs/games/super-tux-kart/default.nix8
-rw-r--r--pkgs/games/tintin/default.nix4
-rw-r--r--pkgs/misc/tpm2-pkcs11/default.nix6
-rw-r--r--pkgs/misc/vim-plugins/overrides.nix15
-rw-r--r--pkgs/servers/http/tomcat/default.nix18
-rw-r--r--pkgs/servers/monitoring/mtail/default.nix22
-rw-r--r--pkgs/servers/monitoring/mtail/deps.nix56
-rw-r--r--pkgs/servers/monitoring/mtail/fix-gopath.patch13
-rw-r--r--pkgs/servers/monitoring/sensu-go/default.nix8
-rw-r--r--pkgs/servers/nosql/redis/default.nix6
-rw-r--r--pkgs/servers/tailscale/default.nix35
-rw-r--r--pkgs/stdenv/linux/bootstrap-files/armv5tel.nix16
-rw-r--r--pkgs/stdenv/linux/bootstrap-files/armv6l.nix16
-rw-r--r--pkgs/stdenv/linux/bootstrap-files/armv7l.nix16
-rw-r--r--pkgs/tools/admin/berglas/default.nix15
-rw-r--r--pkgs/tools/admin/lego/default.nix6
-rw-r--r--pkgs/tools/filesystems/fuse-overlayfs/default.nix8
-rw-r--r--pkgs/tools/filesystems/simg2img/default.nix4
-rw-r--r--pkgs/tools/misc/blsd/default.nix1
-rw-r--r--pkgs/tools/misc/peep/0001-Add-Cargo.lock-by-running-cargo-vendor.patch570
-rw-r--r--pkgs/tools/misc/peep/default.nix23
-rw-r--r--pkgs/tools/misc/zabbix-cli/default.nix4
-rw-r--r--pkgs/tools/networking/frp/default.nix6
-rw-r--r--pkgs/tools/networking/http2tcp/default.nix47
-rw-r--r--pkgs/tools/networking/inadyn/default.nix6
-rw-r--r--pkgs/tools/networking/iodine/default.nix17
-rw-r--r--pkgs/tools/networking/network-manager/iodine/default.nix16
-rw-r--r--pkgs/tools/networking/openapi-generator-cli/unstable.nix34
-rw-r--r--pkgs/tools/networking/zerotierone/default.nix12
-rw-r--r--pkgs/tools/security/bitwarden_rs/default.nix6
-rw-r--r--pkgs/tools/security/jwt-cli/default.nix6
-rw-r--r--pkgs/tools/security/keybase/default.nix4
-rw-r--r--pkgs/tools/security/keybase/gui.nix6
-rw-r--r--pkgs/tools/system/inxi/default.nix7
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix30
-rw-r--r--pkgs/top-level/python-packages.nix4
114 files changed, 3015 insertions, 1142 deletions
diff --git a/doc/languages-frameworks/android.section.md b/doc/languages-frameworks/android.section.md
index 9a5df2523a25..d76b590ede30 100644
--- a/doc/languages-frameworks/android.section.md
+++ b/doc/languages-frameworks/android.section.md
@@ -235,5 +235,5 @@ package manager uses. To update the expressions run the `generate.sh` script
 that is stored in the `pkgs/development/mobile/androidenv/` sub directory:
 
 ```bash
-sh ./generate.sh
+./generate.sh
 ```
diff --git a/lib/modules.nix b/lib/modules.nix
index 6cbef5632bd7..518f4047cc60 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -93,7 +93,11 @@ rec {
             res set._definedNames
         else
           res;
-      result = { inherit options config; };
+      result = {
+        inherit options;
+        config = removeAttrs config [ "_module" ];
+        inherit (config) _module;
+      };
     in result;
 
   # collectModules :: (modulesPath: String) -> (modules: [ Module ]) -> (args: Attrs) -> [ Module ]
@@ -295,7 +299,9 @@ rec {
             in
               throw "The option `${showOption loc}' in `${firstOption._file}' is a prefix of options in `${firstNonOption._file}'."
           else
-            mergeModules' loc decls defns
+            if all (def: isAttrs def.value) defns' then mergeModules' loc decls defns
+            else let firstInvalid = findFirst (def: ! isAttrs def.value) null defns';
+            in throw "The option path `${showOption loc}' is an attribute set of options, but it is defined to not be an attribute set in `${firstInvalid.file}'. Did you define its value at the correct and complete path?"
       ))
     // { _definedNames = map (m: { inherit (m) file; names = attrNames m.config; }) configs; };
 
@@ -410,10 +416,9 @@ rec {
     # Type-check the remaining definitions, and merge them. Or throw if no definitions.
     mergedValue =
       if isDefined then
-        foldl' (res: def:
-          if type.check def.value then res
-          else throw "The option value `${showOption loc}' in `${def.file}' is not of type `${type.description}'."
-        ) (type.merge loc defsFinal) defsFinal
+        if all (def: type.check def.value) defsFinal then type.merge loc defsFinal
+        else let firstInvalid = findFirst (def: ! type.check def.value) null defsFinal;
+        in throw "The option value `${showOption loc}' in `${firstInvalid.file}' is not of type `${type.description}'."
       else
         # (nixos-option detects this specific error message and gives it special
         # handling.  If changed here, please change it there too.)
diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh
index 8cd632a439cd..1b3d01646d84 100755
--- a/lib/tests/modules.sh
+++ b/lib/tests/modules.sh
@@ -185,6 +185,11 @@ checkConfigError 'The option .* defined in .* does not exist' config.enable ./di
 # Check that imports can depend on derivations
 checkConfigOutput "true" config.enable ./import-from-store.nix
 
+# Check that configs can be conditional on option existence
+checkConfigOutput true config.enable ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
+checkConfigOutput 360 config.value ./define-option-dependently.nix ./declare-enable.nix ./declare-int-positive-value.nix
+checkConfigOutput 7 config.value ./define-option-dependently.nix ./declare-int-positive-value.nix
+
 # Check attrsOf and lazyAttrsOf. Only lazyAttrsOf should be lazy, and only
 # attrsOf should work with conditional definitions
 # In addition, lazyAttrsOf should honor an options emptyValue
@@ -194,6 +199,14 @@ checkConfigOutput "true" config.conditionalWorks ./declare-attrsOf.nix ./attrsOf
 checkConfigOutput "false" config.conditionalWorks ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
 checkConfigOutput "empty" config.value.foo ./declare-lazyAttrsOf.nix ./attrsOf-conditional-check.nix
 
+# Check error for when an option set is defined to be a non-attribute set value
+checkConfigError 'The option path .* is an attribute set of options, but it is defined to not be an attribute set in' \
+  config.value ./declare-option-set.nix ./define-value-int-zero.nix
+
+# Even with multiple assignments, a type error should be thrown if any of them aren't valid
+checkConfigError 'The option value .* in .* is not of type .*' \
+  config.value ./declare-int-unsigned-value.nix ./define-value-list.nix ./define-value-int-positive.nix
+
 cat <<EOF
 ====== module tests ======
 $pass Pass
diff --git a/lib/tests/modules/declare-option-set.nix b/lib/tests/modules/declare-option-set.nix
new file mode 100644
index 000000000000..fddc650ffa90
--- /dev/null
+++ b/lib/tests/modules/declare-option-set.nix
@@ -0,0 +1,3 @@
+{
+  options.value = {};
+}
diff --git a/lib/tests/modules/define-option-dependently.nix b/lib/tests/modules/define-option-dependently.nix
new file mode 100644
index 000000000000..6abce29366ae
--- /dev/null
+++ b/lib/tests/modules/define-option-dependently.nix
@@ -0,0 +1,16 @@
+{ lib, options, ... }:
+
+# Some modules may be distributed separately and need to adapt to other modules
+# that are distributed and versioned separately.
+{
+
+  # Always defined, but the value depends on the presence of an option.
+  config = {
+    value = if options ? enable then 360 else 7;
+  } 
+  # Only define if possible.
+  // lib.optionalAttrs (options ? enable) {
+    enable = true;
+  };
+
+}
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index a38dccb27e1b..336ee7a88306 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -711,6 +711,12 @@
     githubId = 55833;
     name = "Troels Henriksen";
   };
+  atkinschang = {
+    email = "atkinschang+nixpkgs@gmail.com";
+    github = "AtkinsChang";
+    githubId = 5193600;
+    name = "Atkins Chang";
+  };
   atnnn = {
     email = "etienne@atnnn.com";
     github = "atnnn";
@@ -4613,6 +4619,12 @@
     githubId = 1269099;
     name = "Marius Bakke";
   };
+  mbaillie = {
+    email = "martin@baillie.email";
+    github = "martinbaillie";
+    githubId = 613740;
+    name = "Martin Baillie";
+  };
   mbbx6spp = {
     email = "me@susanpotter.net";
     github = "mbbx6spp";
diff --git a/nixos/doc/manual/release-notes/rl-2003.xml b/nixos/doc/manual/release-notes/rl-2003.xml
index 20f232c9110e..0996791944f0 100644
--- a/nixos/doc/manual/release-notes/rl-2003.xml
+++ b/nixos/doc/manual/release-notes/rl-2003.xml
@@ -235,7 +235,7 @@ services.xserver.displayManager.defaultSession = "xfce+icewm";
    <listitem>
     <para>
       The <literal>buildRustCrate</literal> infrastructure now produces <literal>lib</literal> outputs in addition to the <literal>out</literal> output.
-      This has led to drastically reduced closed sizes for some rust crates since development dependencies are now in the <literal>lib</literal> output.
+      This has led to drastically reduced closure sizes for some rust crates since development dependencies are now in the <literal>lib</literal> output.
     </para>
     </listitem>
    <listitem>
@@ -641,6 +641,13 @@ auth required pam_succeed_if.so uid >= 1000 quiet
      The previous behavior can be restored by setting <literal>config.riot-web.conf = { disable_guests = false; piwik = true; }</literal>.
     </para>
    </listitem>
+   <listitem>
+     <para>
+       Stand-alone usage of <literal>Upower</literal> now requires
+       <option>services.upower.enable</option> instead of just installing into
+       <xref linkend="opt-environment.systemPackages"/>.
+     </para>
+   </listitem>
   </itemizedlist>
  </section>
 
diff --git a/nixos/doc/manual/release-notes/rl-2009.xml b/nixos/doc/manual/release-notes/rl-2009.xml
index 72474e5dbd4a..2f61ee5ae2ed 100644
--- a/nixos/doc/manual/release-notes/rl-2009.xml
+++ b/nixos/doc/manual/release-notes/rl-2009.xml
@@ -86,6 +86,16 @@
 }</programlisting>
     </para>
    </listitem>
+   <listitem>
+    <para>
+      The <link linkend="opt-services.supybot.enable">supybot</link> module now uses <literal>/var/lib/supybot</literal>
+      as its default <link linkend="opt-services.supybot.stateDir">stateDir</link> path if <literal>stateVersion</literal>
+      is 20.09 or higher. It also enables number of
+      <link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.exec.html#Sandboxing">systemd sandboxing options</link>
+      which may possibly interfere with some plugins. If this is the case you can disable the options through attributes in
+      <option>systemd.services.supybot.serviceConfig</option>.
+    </para>
+   </listitem>
   </itemizedlist>
  </section>
 
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 8c6e8766cd9c..1ff5f5ff0c25 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -728,6 +728,7 @@
   ./services/networking/syncthing.nix
   ./services/networking/syncthing-relay.nix
   ./services/networking/syncplay.nix
+  ./services/networking/tailscale.nix
   ./services/networking/tcpcrypt.nix
   ./services/networking/teamspeak3.nix
   ./services/networking/tedicross.nix
diff --git a/nixos/modules/services/networking/firewall.nix b/nixos/modules/services/networking/firewall.nix
index b0045ff795e3..cdc3a172ea70 100644
--- a/nixos/modules/services/networking/firewall.nix
+++ b/nixos/modules/services/networking/firewall.nix
@@ -546,9 +546,13 @@ in
       options nf_conntrack nf_conntrack_helper=1
     '';
 
-    assertions = [ { assertion = cfg.checkReversePath -> kernelHasRPFilter;
-                     message = "This kernel does not support rpfilter"; }
-                 ];
+    assertions = [
+      # This is approximately "checkReversePath -> kernelHasRPFilter",
+      # but the checkReversePath option can include non-boolean
+      # values.
+      { assertion = cfg.checkReversePath == false || kernelHasRPFilter;
+        message = "This kernel does not support rpfilter"; }
+    ];
 
     systemd.services.firewall = {
       description = "Firewall";
diff --git a/nixos/modules/services/networking/iodine.nix b/nixos/modules/services/networking/iodine.nix
index f9ca26c27960..46051d7044b5 100644
--- a/nixos/modules/services/networking/iodine.nix
+++ b/nixos/modules/services/networking/iodine.nix
@@ -9,6 +9,8 @@ let
 
   iodinedUser = "iodined";
 
+  /* is this path made unreadable by ProtectHome = true ? */
+  isProtected = x: hasPrefix "/root" x || hasPrefix "/home" x;
 in
 {
   imports = [
@@ -35,45 +37,48 @@ in
           corresponding attribute name.
         '';
         example = literalExample ''
-        {
-          foo = {
-            server = "tunnel.mdomain.com";
-            relay = "8.8.8.8";
-            extraConfig = "-v";
+          {
+            foo = {
+              server = "tunnel.mdomain.com";
+              relay = "8.8.8.8";
+              extraConfig = "-v";
+            }
           }
-        }
         '';
-        type = types.attrsOf (types.submodule (
-        {
-          options = {
-            server = mkOption {
-              type = types.str;
-              default = "";
-              description = "Domain or Subdomain of server running iodined";
-              example = "tunnel.mydomain.com";
-            };
-
-            relay = mkOption {
-              type = types.str;
-              default = "";
-              description = "DNS server to use as a intermediate relay to the iodined server";
-              example = "8.8.8.8";
-            };
-
-            extraConfig = mkOption {
-              type = types.str;
-              default = "";
-              description = "Additional command line parameters";
-              example = "-l 192.168.1.10 -p 23";
-            };
-
-            passwordFile = mkOption {
-              type = types.str;
-              default = "";
-              description = "File that contains password";
-            };
-          };
-        }));
+        type = types.attrsOf (
+          types.submodule (
+            {
+              options = {
+                server = mkOption {
+                  type = types.str;
+                  default = "";
+                  description = "Hostname of server running iodined";
+                  example = "tunnel.mydomain.com";
+                };
+
+                relay = mkOption {
+                  type = types.str;
+                  default = "";
+                  description = "DNS server to use as an intermediate relay to the iodined server";
+                  example = "8.8.8.8";
+                };
+
+                extraConfig = mkOption {
+                  type = types.str;
+                  default = "";
+                  description = "Additional command line parameters";
+                  example = "-l 192.168.1.10 -p 23";
+                };
+
+                passwordFile = mkOption {
+                  type = types.str;
+                  default = "";
+                  description = "Path to a file containing the password.";
+                };
+              };
+            }
+          )
+        );
       };
 
       server = {
@@ -121,31 +126,67 @@ in
     boot.kernelModules = [ "tun" ];
 
     systemd.services =
-    let
-      createIodineClientService = name: cfg:
-      {
-        description = "iodine client - ${name}";
-        after = [ "network.target" ];
-        wantedBy = [ "multi-user.target" ];
-        script = "exec ${pkgs.iodine}/bin/iodine -f -u ${iodinedUser} ${cfg.extraConfig} ${optionalString (cfg.passwordFile != "") "< \"${cfg.passwordFile}\""} ${cfg.relay} ${cfg.server}";
-        serviceConfig = {
-          RestartSec = "30s";
-          Restart = "always";
+      let
+        createIodineClientService = name: cfg:
+          {
+            description = "iodine client - ${name}";
+            after = [ "network.target" ];
+            wantedBy = [ "multi-user.target" ];
+            script = "exec ${pkgs.iodine}/bin/iodine -f -u ${iodinedUser} ${cfg.extraConfig} ${optionalString (cfg.passwordFile != "") "< \"${builtins.toString cfg.passwordFile}\""} ${cfg.relay} ${cfg.server}";
+            serviceConfig = {
+              RestartSec = "30s";
+              Restart = "always";
+
+              # hardening :
+              # Filesystem access
+              ProtectSystem = "strict";
+              ProtectHome = if isProtected cfg.passwordFile then "read-only" else "true" ;
+              PrivateTmp = true;
+              ReadWritePaths = "/dev/net/tun";
+              PrivateDevices = false;
+              ProtectKernelTunables = true;
+              ProtectKernelModules = true;
+              ProtectControlGroups = true;
+              # Caps
+              NoNewPrivileges = true;
+              # Misc.
+              LockPersonality = true;
+              RestrictRealtime = true;
+              PrivateMounts = true;
+              MemoryDenyWriteExecute = true;
+            };
+          };
+      in
+        listToAttrs (
+          mapAttrsToList
+            (name: value: nameValuePair "iodine-${name}" (createIodineClientService name value))
+            cfg.clients
+        ) // {
+          iodined = mkIf (cfg.server.enable) {
+            description = "iodine, ip over dns server daemon";
+            after = [ "network.target" ];
+            wantedBy = [ "multi-user.target" ];
+            script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${builtins.toString cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}";
+            serviceConfig = {
+              # Filesystem access
+              ProtectSystem = "strict";
+              ProtectHome = if isProtected cfg.server.passwordFile then "read-only" else "true" ;
+              PrivateTmp = true;
+              ReadWritePaths = "/dev/net/tun";
+              PrivateDevices = false;
+              ProtectKernelTunables = true;
+              ProtectKernelModules = true;
+              ProtectControlGroups = true;
+              # Caps
+              NoNewPrivileges = true;
+              # Misc.
+              LockPersonality = true;
+              RestrictRealtime = true;
+              PrivateMounts = true;
+              MemoryDenyWriteExecute = true;
+            };
+          };
         };
-      };
-    in
-    listToAttrs (
-      mapAttrsToList
-        (name: value: nameValuePair "iodine-${name}" (createIodineClientService name value))
-        cfg.clients
-    ) // {
-      iodined = mkIf (cfg.server.enable) {
-        description = "iodine, ip over dns server daemon";
-        after = [ "network.target" ];
-        wantedBy = [ "multi-user.target" ];
-        script = "exec ${pkgs.iodine}/bin/iodined -f -u ${iodinedUser} ${cfg.server.extraConfig} ${optionalString (cfg.server.passwordFile != "") "< \"${cfg.server.passwordFile}\""} ${cfg.server.ip} ${cfg.server.domain}";
-      };
-    };
 
     users.users.${iodinedUser} = {
       uid = config.ids.uids.iodined;
diff --git a/nixos/modules/services/networking/supybot.nix b/nixos/modules/services/networking/supybot.nix
index d5b9a97a1c1a..dc9fb31ffd0b 100644
--- a/nixos/modules/services/networking/supybot.nix
+++ b/nixos/modules/services/networking/supybot.nix
@@ -3,32 +3,35 @@
 with lib;
 
 let
-
   cfg  = config.services.supybot;
-
+  isStateDirHome = hasPrefix "/home/" cfg.stateDir;
+  isStateDirVar = cfg.stateDir == "/var/lib/supybot";
+  pyEnv = pkgs.python3.withPackages (p: [ p.limnoria ] ++ (cfg.extraPackages p));
 in
-
 {
-
   options = {
 
     services.supybot = {
 
       enable = mkOption {
+        type = types.bool;
         default = false;
-        description = "Enable Supybot, an IRC bot";
+        description = "Enable Supybot, an IRC bot (also known as Limnoria).";
       };
 
       stateDir = mkOption {
-        # Setting this to /var/lib/supybot caused useradd to fail
-        default = "/home/supybot";
+        type = types.path;
+        default = if versionAtLeast config.system.stateVersion "20.09"
+          then "/var/lib/supybot"
+          else "/home/supybot";
+        defaultText = "/var/lib/supybot";
         description = "The root directory, logs and plugins are stored here";
       };
 
       configFile = mkOption {
         type = types.path;
         description = ''
-          Path to a supybot config file. This can be generated by
+          Path to initial supybot config file. This can be generated by
           running supybot-wizard.
 
           Note: all paths should include the full path to the stateDir
@@ -36,21 +39,54 @@ in
         '';
       };
 
+      plugins = mkOption {
+        type = types.attrsOf types.path;
+        default = {};
+        description = ''
+          Attribute set of additional plugins that will be symlinked to the
+          <filename>plugin</filename> subdirectory.
+
+          Please note that you still need to add the plugins to the config
+          file (or with <literal>!load</literal>) using their attribute name.
+        '';
+        example = literalExample ''
+          let
+            plugins = pkgs.fetchzip {
+              url = "https://github.com/ProgVal/Supybot-plugins/archive/57c2450c.zip";
+              sha256 = "077snf84ibnva3sbpzdfpfma6hcdw7dflwnhg6pw7mgnf0nd84qd";
+            };
+          in
+          {
+            Wikipedia = "''${plugins}/Wikipedia";
+            Decide = ./supy-decide;
+          }
+        '';
+      };
+
+      extraPackages = mkOption {
+        default = p: [];
+        description = ''
+          Extra Python packages available to supybot plugins. The
+          value must be a function which receives the attrset defined
+          in <varname>python3Packages</varname> as the sole argument.
+        '';
+        example = literalExample ''p: [ p.lxml p.requests ]'';
+      };
+
     };
 
   };
 
-
   config = mkIf cfg.enable {
 
-    environment.systemPackages = [ pkgs.pythonPackages.limnoria ];
+    environment.systemPackages = [ pkgs.python3Packages.limnoria ];
 
     users.users.supybot = {
       uid = config.ids.uids.supybot;
       group = "supybot";
       description = "Supybot IRC bot user";
       home = cfg.stateDir;
-      createHome = true;
+      isSystemUser = true;
     };
 
     users.groups.supybot = {
@@ -59,19 +95,16 @@ in
 
     systemd.services.supybot = {
       description = "Supybot, an IRC bot";
+      documentation = [ "https://limnoria.readthedocs.io/" ];
       after = [ "network.target" ];
       wantedBy = [ "multi-user.target" ];
-      path = [ pkgs.pythonPackages.limnoria ];
       preStart = ''
-        cd ${cfg.stateDir}
-        mkdir -p backup conf data plugins logs/plugins tmp web
-        ln -sf ${cfg.configFile} supybot.cfg
         # This needs to be created afresh every time
-        rm -f supybot.cfg.bak
+        rm -f '${cfg.stateDir}/supybot.cfg.bak'
       '';
 
       serviceConfig = {
-        ExecStart = "${pkgs.pythonPackages.limnoria}/bin/supybot ${cfg.stateDir}/supybot.cfg";
+        ExecStart = "${pyEnv}/bin/supybot ${cfg.stateDir}/supybot.cfg";
         PIDFile = "/run/supybot.pid";
         User = "supybot";
         Group = "supybot";
@@ -79,8 +112,50 @@ in
         Restart = "on-abort";
         StartLimitInterval = "5m";
         StartLimitBurst = "1";
+
+        NoNewPrivileges = true;
+        PrivateDevices = true;
+        PrivateMounts = true;
+        PrivateTmp = true;
+        ProtectControlGroups = true;
+        ProtectKernelModules = true;
+        ProtectKernelTunables = true;
+        RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
+        RestrictSUIDSGID = true;
+        SystemCallArchitectures = "native";
+        RestrictNamespaces = true;
+        RestrictRealtime = true;
+        LockPersonality = true;
+        MemoryDenyWriteExecute = true;
+        RemoveIPC = true;
+        ProtectHostname = true;
+        CapabilityBoundingSet = "";
+        ProtectSystem = "full";
+      }
+      // optionalAttrs isStateDirVar {
+        StateDirectory = "supybot";
+        ProtectSystem = "strict";
+      }
+      // optionalAttrs (!isStateDirHome) {
+        ProtectHome = true;
       };
     };
 
+    systemd.tmpfiles.rules = [
+      "d '${cfg.stateDir}'              0700 supybot supybot - -"
+      "d '${cfg.stateDir}/backup'       0750 supybot supybot - -"
+      "d '${cfg.stateDir}/conf'         0750 supybot supybot - -"
+      "d '${cfg.stateDir}/data'         0750 supybot supybot - -"
+      "d '${cfg.stateDir}/plugins'      0750 supybot supybot - -"
+      "d '${cfg.stateDir}/logs'         0750 supybot supybot - -"
+      "d '${cfg.stateDir}/logs/plugins' 0750 supybot supybot - -"
+      "d '${cfg.stateDir}/tmp'          0750 supybot supybot - -"
+      "d '${cfg.stateDir}/web'          0750 supybot supybot - -"
+      "L '${cfg.stateDir}/supybot.cfg'  -    -       -       - ${cfg.configFile}"
+    ]
+    ++ (flip mapAttrsToList cfg.plugins (name: dest:
+      "L+ '${cfg.stateDir}/plugins/${name}' - - - - ${dest}"
+    ));
+
   };
 }
diff --git a/nixos/modules/services/networking/tailscale.nix b/nixos/modules/services/networking/tailscale.nix
new file mode 100644
index 000000000000..513c42b40117
--- /dev/null
+++ b/nixos/modules/services/networking/tailscale.nix
@@ -0,0 +1,46 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.services.tailscale;
+in {
+  meta.maintainers = with maintainers; [ danderson mbaillie ];
+
+  options.services.tailscale = {
+    enable = mkEnableOption "Tailscale client daemon";
+
+    port = mkOption {
+      type = types.port;
+      default = 41641;
+      description = "The port to listen on for tunnel traffic (0=autoselect).";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.tailscale = {
+      description = "Tailscale client daemon";
+
+      after = [ "network-pre.target" ];
+      wants = [ "network-pre.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      unitConfig = {
+        StartLimitIntervalSec = 0;
+        StartLimitBurst = 0;
+      };
+
+      serviceConfig = {
+        ExecStart =
+          "${pkgs.tailscale}/bin/tailscaled --port ${toString cfg.port}";
+
+        RuntimeDirectory = "tailscale";
+        RuntimeDirectoryMode = 755;
+
+        StateDirectory = "tailscale";
+        StateDirectoryMode = 700;
+
+        Restart = "on-failure";
+      };
+    };
+  };
+}
diff --git a/nixos/modules/system/boot/kernel.nix b/nixos/modules/system/boot/kernel.nix
index c247f334c23d..43871f439f7f 100644
--- a/nixos/modules/system/boot/kernel.nix
+++ b/nixos/modules/system/boot/kernel.nix
@@ -192,139 +192,144 @@ in
 
   ###### implementation
 
-  config = mkIf (!config.boot.isContainer) {
-
-    system.build = { inherit kernel; };
-
-    system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages;
-
-    # Implement consoleLogLevel both in early boot and using sysctl
-    # (so you don't need to reboot to have changes take effect).
-    boot.kernelParams =
-      [ "loglevel=${toString config.boot.consoleLogLevel}" ] ++
-      optionals config.boot.vesa [ "vga=0x317" "nomodeset" ];
-
-    boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel;
-
-    boot.kernelModules = [ "loop" "atkbd" ];
-
-    boot.initrd.availableKernelModules =
-      [ # Note: most of these (especially the SATA/PATA modules)
-        # shouldn't be included by default since nixos-generate-config
-        # detects them, but I'm keeping them for now for backwards
-        # compatibility.
-
-        # Some SATA/PATA stuff.
-        "ahci"
-        "sata_nv"
-        "sata_via"
-        "sata_sis"
-        "sata_uli"
-        "ata_piix"
-        "pata_marvell"
-
-        # Standard SCSI stuff.
-        "sd_mod"
-        "sr_mod"
-
-        # SD cards and internal eMMC drives.
-        "mmc_block"
-
-        # Support USB keyboards, in case the boot fails and we only have
-        # a USB keyboard, or for LUKS passphrase prompt.
-        "uhci_hcd"
-        "ehci_hcd"
-        "ehci_pci"
-        "ohci_hcd"
-        "ohci_pci"
-        "xhci_hcd"
-        "xhci_pci"
-        "usbhid"
-        "hid_generic" "hid_lenovo" "hid_apple" "hid_roccat"
-        "hid_logitech_hidpp" "hid_logitech_dj"
-
-      ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [
-        # Misc. x86 keyboard stuff.
-        "pcips2" "atkbd" "i8042"
-
-        # x86 RTC needed by the stage 2 init script.
-        "rtc_cmos"
-      ];
-
-    boot.initrd.kernelModules =
-      [ # For LVM.
-        "dm_mod"
-      ];
-
-    # The Linux kernel >= 2.6.27 provides firmware.
-    hardware.firmware = [ kernel ];
-
-    # Create /etc/modules-load.d/nixos.conf, which is read by
-    # systemd-modules-load.service to load required kernel modules.
-    environment.etc =
-      { "modules-load.d/nixos.conf".source = kernelModulesConf;
-      };
-
-    systemd.services.systemd-modules-load =
-      { wantedBy = [ "multi-user.target" ];
-        restartTriggers = [ kernelModulesConf ];
-        serviceConfig =
-          { # Ignore failed module loads.  Typically some of the
-            # modules in ‘boot.kernelModules’ are "nice to have but
-            # not required" (e.g. acpi-cpufreq), so we don't want to
-            # barf on those.
-            SuccessExitStatus = "0 1";
+  config = mkMerge
+    [ (mkIf config.boot.initrd.enable {
+        boot.initrd.availableKernelModules =
+          [ # Note: most of these (especially the SATA/PATA modules)
+            # shouldn't be included by default since nixos-generate-config
+            # detects them, but I'm keeping them for now for backwards
+            # compatibility.
+
+            # Some SATA/PATA stuff.
+            "ahci"
+            "sata_nv"
+            "sata_via"
+            "sata_sis"
+            "sata_uli"
+            "ata_piix"
+            "pata_marvell"
+
+            # Standard SCSI stuff.
+            "sd_mod"
+            "sr_mod"
+
+            # SD cards and internal eMMC drives.
+            "mmc_block"
+
+            # Support USB keyboards, in case the boot fails and we only have
+            # a USB keyboard, or for LUKS passphrase prompt.
+            "uhci_hcd"
+            "ehci_hcd"
+            "ehci_pci"
+            "ohci_hcd"
+            "ohci_pci"
+            "xhci_hcd"
+            "xhci_pci"
+            "usbhid"
+            "hid_generic" "hid_lenovo" "hid_apple" "hid_roccat"
+            "hid_logitech_hidpp" "hid_logitech_dj"
+
+          ] ++ optionals (pkgs.stdenv.isi686 || pkgs.stdenv.isx86_64) [
+            # Misc. x86 keyboard stuff.
+            "pcips2" "atkbd" "i8042"
+
+            # x86 RTC needed by the stage 2 init script.
+            "rtc_cmos"
+          ];
+
+        boot.initrd.kernelModules =
+          [ # For LVM.
+            "dm_mod"
+          ];
+      })
+
+      (mkIf (!config.boot.isContainer) {
+        system.build = { inherit kernel; };
+
+        system.modulesTree = [ kernel ] ++ config.boot.extraModulePackages;
+
+        # Implement consoleLogLevel both in early boot and using sysctl
+        # (so you don't need to reboot to have changes take effect).
+        boot.kernelParams =
+          [ "loglevel=${toString config.boot.consoleLogLevel}" ] ++
+          optionals config.boot.vesa [ "vga=0x317" "nomodeset" ];
+
+        boot.kernel.sysctl."kernel.printk" = mkDefault config.boot.consoleLogLevel;
+
+        boot.kernelModules = [ "loop" "atkbd" ];
+
+        # The Linux kernel >= 2.6.27 provides firmware.
+        hardware.firmware = [ kernel ];
+
+        # Create /etc/modules-load.d/nixos.conf, which is read by
+        # systemd-modules-load.service to load required kernel modules.
+        environment.etc =
+          { "modules-load.d/nixos.conf".source = kernelModulesConf;
           };
-      };
-
-    lib.kernelConfig = {
-      isYes = option: {
-        assertion = config: config.isYes option;
-        message = "CONFIG_${option} is not yes!";
-        configLine = "CONFIG_${option}=y";
-      };
-
-      isNo = option: {
-        assertion = config: config.isNo option;
-        message = "CONFIG_${option} is not no!";
-        configLine = "CONFIG_${option}=n";
-      };
-
-      isModule = option: {
-        assertion = config: config.isModule option;
-        message = "CONFIG_${option} is not built as a module!";
-        configLine = "CONFIG_${option}=m";
-      };
-
-      ### Usually you will just want to use these two
-      # True if yes or module
-      isEnabled = option: {
-        assertion = config: config.isEnabled option;
-        message = "CONFIG_${option} is not enabled!";
-        configLine = "CONFIG_${option}=y";
-      };
-
-      # True if no or omitted
-      isDisabled = option: {
-        assertion = config: config.isDisabled option;
-        message = "CONFIG_${option} is not disabled!";
-        configLine = "CONFIG_${option}=n";
-      };
-    };
 
-    # The config options that all modules can depend upon
-    system.requiredKernelConfig = with config.lib.kernelConfig; [
-      # !!! Should this really be needed?
-      (isYes "MODULES")
-      (isYes "BINFMT_ELF")
-    ] ++ (optional (randstructSeed != "") (isYes "GCC_PLUGIN_RANDSTRUCT"));
+        systemd.services.systemd-modules-load =
+          { wantedBy = [ "multi-user.target" ];
+            restartTriggers = [ kernelModulesConf ];
+            serviceConfig =
+              { # Ignore failed module loads.  Typically some of the
+                # modules in ‘boot.kernelModules’ are "nice to have but
+                # not required" (e.g. acpi-cpufreq), so we don't want to
+                # barf on those.
+                SuccessExitStatus = "0 1";
+              };
+          };
 
-    # nixpkgs kernels are assumed to have all required features
-    assertions = if config.boot.kernelPackages.kernel ? features then [] else
-      let cfg = config.boot.kernelPackages.kernel.config; in map (attrs:
-        { assertion = attrs.assertion cfg; inherit (attrs) message; }
-      ) config.system.requiredKernelConfig;
+        lib.kernelConfig = {
+          isYes = option: {
+            assertion = config: config.isYes option;
+            message = "CONFIG_${option} is not yes!";
+            configLine = "CONFIG_${option}=y";
+          };
 
-  };
+          isNo = option: {
+            assertion = config: config.isNo option;
+            message = "CONFIG_${option} is not no!";
+            configLine = "CONFIG_${option}=n";
+          };
+
+          isModule = option: {
+            assertion = config: config.isModule option;
+            message = "CONFIG_${option} is not built as a module!";
+            configLine = "CONFIG_${option}=m";
+          };
+
+          ### Usually you will just want to use these two
+          # True if yes or module
+          isEnabled = option: {
+            assertion = config: config.isEnabled option;
+            message = "CONFIG_${option} is not enabled!";
+            configLine = "CONFIG_${option}=y";
+          };
+
+          # True if no or omitted
+          isDisabled = option: {
+            assertion = config: config.isDisabled option;
+            message = "CONFIG_${option} is not disabled!";
+            configLine = "CONFIG_${option}=n";
+          };
+        };
+
+        # The config options that all modules can depend upon
+        system.requiredKernelConfig = with config.lib.kernelConfig;
+          [
+            # !!! Should this really be needed?
+            (isYes "MODULES")
+            (isYes "BINFMT_ELF")
+          ] ++ (optional (randstructSeed != "") (isYes "GCC_PLUGIN_RANDSTRUCT"));
+
+        # nixpkgs kernels are assumed to have all required features
+        assertions = if config.boot.kernelPackages.kernel ? features then [] else
+          let cfg = config.boot.kernelPackages.kernel.config; in map (attrs:
+            { assertion = attrs.assertion cfg; inherit (attrs) message; }
+          ) config.system.requiredKernelConfig;
+
+      })
+
+    ];
 
 }
diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix
index 26117cffeda2..93cd801ef803 100644
--- a/nixos/modules/system/boot/stage-1.nix
+++ b/nixos/modules/system/boot/stage-1.nix
@@ -390,6 +390,17 @@ in
       '';
     };
 
+    boot.initrd.enable = mkOption {
+      type = types.bool;
+      default = !config.boot.isContainer;
+      defaultText = "!config.boot.isContainer";
+      description = ''
+        Whether to enable the NixOS initial RAM disk (initrd). This may be
+        needed to perform some initialisation tasks (like mounting
+        network/encrypted file systems) before continuing the boot process.
+      '';
+    };
+
     boot.initrd.prepend = mkOption {
       default = [ ];
       type = types.listOf types.str;
@@ -555,7 +566,7 @@ in
 
   };
 
-  config = mkIf (!config.boot.isContainer) {
+  config = mkIf config.boot.initrd.enable {
     assertions = [
       { assertion = any (fs: fs.mountPoint == "/") fileSystems;
         message = "The ‘fileSystems’ option does not specify your root file system.";
diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix
index 7dd0f23df658..51b463747b0e 100644
--- a/nixos/tests/all-tests.nix
+++ b/nixos/tests/all-tests.nix
@@ -135,6 +135,7 @@ in
   initrd-network-ssh = handleTest ./initrd-network-ssh {};
   initrdNetwork = handleTest ./initrd-network.nix {};
   installer = handleTest ./installer.nix {};
+  iodine = handleTest ./iodine.nix {};
   ipv6 = handleTest ./ipv6.nix {};
   jackett = handleTest ./jackett.nix {};
   jellyfin = handleTest ./jellyfin.nix {};
diff --git a/nixos/tests/iodine.nix b/nixos/tests/iodine.nix
new file mode 100644
index 000000000000..8bd9603a6d6c
--- /dev/null
+++ b/nixos/tests/iodine.nix
@@ -0,0 +1,63 @@
+import ./make-test-python.nix (
+  { pkgs, ... }: let
+    domain = "whatever.example.com";
+  in
+    {
+      name = "iodine";
+      nodes = {
+        server =
+          { ... }:
+
+            {
+              networking.firewall = {
+                allowedUDPPorts = [ 53 ];
+                trustedInterfaces = [ "dns0" ];
+              };
+              boot.kernel.sysctl = {
+                "net.ipv4.ip_forward" = 1;
+                "net.ipv6.ip_forward" = 1;
+              };
+
+              services.iodine.server = {
+                enable = true;
+                ip = "10.53.53.1/24";
+                passwordFile = "${builtins.toFile "password" "foo"}";
+                inherit domain;
+              };
+
+              # test resource: accessible only via tunnel
+              services.openssh = {
+                enable = true;
+                openFirewall = false;
+              };
+            };
+
+        client =
+          { ... }: {
+            services.iodine.clients.testClient = {
+              # test that ProtectHome is "read-only"
+              passwordFile = "/root/pw";
+              relay = "server";
+              server = domain;
+            };
+            systemd.tmpfiles.rules = [
+              "f /root/pw 0666 root root - foo"
+            ];
+            environment.systemPackages = [
+              pkgs.nagiosPluginsOfficial
+            ];
+          };
+
+      };
+
+      testScript = ''
+        start_all()
+
+        server.wait_for_unit("sshd")
+        server.wait_for_unit("iodined")
+        client.wait_for_unit("iodine-testClient")
+
+        client.succeed("check_ssh -H 10.53.53.1")
+      '';
+    }
+)
diff --git a/pkgs/applications/audio/aucatctl/default.nix b/pkgs/applications/audio/aucatctl/default.nix
new file mode 100644
index 000000000000..4aff3e1f7bfb
--- /dev/null
+++ b/pkgs/applications/audio/aucatctl/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, sndio, libbsd }:
+
+stdenv.mkDerivation rec {
+  pname = "aucatctl";
+  version = "0.1";
+
+  src = fetchurl {
+    url = "http://www.sndio.org/${pname}-${version}.tar.gz";
+    sha256 = "524f2fae47db785234f166551520d9605b9a27551ca438bd807e3509ce246cf0";
+  };
+
+  buildInputs = [ sndio ]
+    ++ stdenv.lib.optional (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD)
+    libbsd;
+
+  outputs = [ "out" "man" ];
+
+  preBuild = ''
+    makeFlagsArray+=("PREFIX=$out")
+  '' + stdenv.lib.optionalString
+    (!stdenv.isDarwin && !stdenv.targetPlatform.isBSD) ''
+      makeFlagsArray+=(LDADD="-lsndio -lbsd")
+
+      # Fix warning about implicit declaration of function 'strlcpy'
+      substituteInPlace aucatctl.c \
+        --replace '#include <string.h>' '#include <bsd/string.h>'
+    '';
+
+  meta = with stdenv.lib; {
+    description =
+      "The aucatctl utility sends MIDI messages to control sndiod and/or aucat volumes";
+    homepage = "http://www.sndio.org";
+    license = licenses.isc;
+    maintainers = with maintainers; [ sna ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/audio/cmt/default.nix b/pkgs/applications/audio/cmt/default.nix
new file mode 100644
index 000000000000..96cc3c573198
--- /dev/null
+++ b/pkgs/applications/audio/cmt/default.nix
@@ -0,0 +1,33 @@
+{ stdenv
+, fetchurl
+, ladspaH
+}:
+
+stdenv.mkDerivation rec {
+  name = "cmt";
+  version = "1.17";
+
+  src = fetchurl {
+    url = "http://www.ladspa.org/download/${name}_${version}.tgz";
+    sha256 = "07xd0xmwpa0j12813jpf87fr9hwzihii5l35mp8ady7xxfmxfmpb";
+  };
+
+  buildInputs = [ ladspaH ];
+
+  preBuild = ''
+    cd src
+  '';
+
+  installFlags = [ "INSTALL_PLUGINS_DIR=${placeholder "out"}/lib/ladspa" ];
+  preInstall = ''
+    mkdir -p $out/lib/ladspa
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Computer Music Toolkit";
+    homepage = "https://www.ladspa.org/cmt";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sjfloat ];
+  };
+}
diff --git a/pkgs/applications/audio/mopidy/iris.nix b/pkgs/applications/audio/mopidy/iris.nix
index 2f3e5f64767d..000a0bc0bfe3 100644
--- a/pkgs/applications/audio/mopidy/iris.nix
+++ b/pkgs/applications/audio/mopidy/iris.nix
@@ -2,11 +2,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "Mopidy-Iris";
-  version = "3.45.1";
+  version = "3.46.0";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "02jmylz76wlwxlv8drndprb7r9l8kqqgjkp17mjx5ngnl545pc2w";
+    sha256 = "0c7b6zbcj4bq5qsxvhjwqclrl1k2hs3wb50pfjbw7gs7m3gm2b7d";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/applications/audio/vorbis-tools/default.nix b/pkgs/applications/audio/vorbis-tools/default.nix
index f815ac02e6e5..44d322069fc2 100644
--- a/pkgs/applications/audio/vorbis-tools/default.nix
+++ b/pkgs/applications/audio/vorbis-tools/default.nix
@@ -3,8 +3,8 @@
 
 let
   debPatch = fetchzip {
-    url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-6.debian.tar.xz";
-    sha256 = "1xmmpdvxyr84lazlg23c6ck5ic97ga2rkiqabb1d98ix2zdzyqz5";
+    url = "mirror://debian/pool/main/v/vorbis-tools/vorbis-tools_1.4.0-11.debian.tar.xz";
+    sha256 = "0kvmd5nslyqplkdb7pnmqj47ir3y5lmaxd12wmrnqh679a8jhcyi";
   };
 in
 stdenv.mkDerivation {
diff --git a/pkgs/applications/blockchains/zcash/default.nix b/pkgs/applications/blockchains/zcash/default.nix
index f6114b3c2134..e2c57d514cda 100644
--- a/pkgs/applications/blockchains/zcash/default.nix
+++ b/pkgs/applications/blockchains/zcash/default.nix
@@ -7,15 +7,19 @@ with stdenv.lib;
 stdenv.mkDerivation rec {
 
   pname = "zcash";
-  version = "2.1.0-1";
+  version = "2.1.1-1";
 
   src = fetchFromGitHub {
     owner = "zcash";
     repo  = "zcash";
     rev = "v${version}";
-    sha256 = "05bnn4lxrrcv1ha3jdfrgwg4ar576161n3j9d4gpc14ww3zgf9vz";
+    sha256 = "1g5zlfzfp31my8w8nlg5fncpr2y95iv9fm04x57sjb93rgmjdh5n";
   };
 
+  patchPhase = ''
+    sed -i"" 's,-fvisibility=hidden,,g'            src/Makefile.am
+  '';
+
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
   buildInputs = [ gtest gmock gmp openssl wget db62 boost17x zlib
                   protobuf libevent libsodium librustzcash ]
@@ -23,17 +27,15 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--with-boost-libdir=${boost17x.out}/lib" ];
 
-  patchPhase = ''
-    sed -i"" 's,-fvisibility=hidden,,g'            src/Makefile.am
-  '';
-
   postInstall = ''
     cp zcutil/fetch-params.sh $out/bin/zcash-fetch-params
   '';
 
+  enableParallelBuilding = true;
+
   meta = {
     description = "Peer-to-peer, anonymous electronic cash system";
-    homepage = https://z.cash/;
+    homepage = "https://z.cash/";
     maintainers = with maintainers; [ rht tkerber ];
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/blockchains/zcash/librustzcash/default.nix b/pkgs/applications/blockchains/zcash/librustzcash/default.nix
index 5032594468e7..6cd2ae018fb6 100644
--- a/pkgs/applications/blockchains/zcash/librustzcash/default.nix
+++ b/pkgs/applications/blockchains/zcash/librustzcash/default.nix
@@ -1,20 +1,17 @@
 { stdenv, fetchFromGitHub, rustPlatform }:
 
 rustPlatform.buildRustPackage rec {
-  pname = "librustzcash-unstable";
-  version = "2018-10-27";
+  pname = "librustzcash";
+  version = "0.1.0";
 
   src = fetchFromGitHub {
     owner = "zcash";
     repo = "librustzcash";
-    rev = "06da3b9ac8f278e5d4ae13088cf0a4c03d2c13f5";
-    sha256 = "0md0pp3k97iv7kfjpfkg14pjanhrql4vafa8ggbxpkajv1j4xldv";
+    rev = version;
+    sha256 = "0d28k29sgzrg9clynz29kpw50kbkp0a4dfdayqhmpjmsh05y6261";
   };
 
-  # Delete this on next update; see #79975 for details
-  legacyCargoFetcher = true;
-
-  cargoSha256 = "166v8cxlpfslbs5gljbh7wp0lxqakayw47ikxm9r9a39n7j36mq1";
+  cargoSha256 = "1wzyrcmcbrna6rjzw19c4lq30didzk4w6fs6wmvxp0xfg4qqdlax";
 
   installPhase = ''
     mkdir -p $out/lib
@@ -23,11 +20,12 @@ rustPlatform.buildRustPackage rec {
     cp librustzcash/include/librustzcash.h $out/include/
   '';
 
+  # The tests do pass, but they take an extremely long time to run.
   doCheck = false;
 
   meta = with stdenv.lib; {
     description = "Rust-language assets for Zcash";
-    homepage = https://github.com/zcash/librustzcash;
+    homepage = "https://github.com/zcash/librustzcash";
     maintainers = with maintainers; [ rht tkerber ];
     license = with licenses; [ mit asl20 ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/gis/saga/default.nix b/pkgs/applications/gis/saga/default.nix
index 747777c75af2..30ae92f58aee 100644
--- a/pkgs/applications/gis/saga/default.nix
+++ b/pkgs/applications/gis/saga/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation {
   pname = "saga";
-  version = "7.5.0";
+  version = "7.6.1";
 
   # See https://groups.google.com/forum/#!topic/nix-devel/h_vSzEJAPXs
   # for why the have additional buildInputs on darwin
@@ -18,13 +18,13 @@ stdenv.mkDerivation {
   CXXFLAGS = stdenv.lib.optionalString stdenv.cc.isClang "-std=c++11 -Wno-narrowing";
 
   src = fetchurl {
-    url = "https://sourceforge.net/projects/saga-gis/files/SAGA%20-%207/SAGA%20-%207.5.0/saga-7.5.0.tar.gz";
-    sha256 = "0s5195802xwlkb2w4i4vd9ys95d7fnzn5cnnixh1csaqc2x1qp6r";
+    url = "https://sourceforge.net/projects/saga-gis/files/SAGA%20-%207/SAGA%20-%207.6.1/saga-7.6.1.tar.gz";
+    sha256 = "1i0cp1lms6cmjl7f5vgr9pl3qc02fmappn4kq21y0dn2gy7j2mkn";
   };
 
   meta = with stdenv.lib; {
     description = "System for Automated Geoscientific Analyses";
-    homepage = http://www.saga-gis.org;
+    homepage = "http://www.saga-gis.org";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ michelk mpickering ];
     platforms = with platforms; unix;
diff --git a/pkgs/applications/graphics/jbrout/default.nix b/pkgs/applications/graphics/jbrout/default.nix
deleted file mode 100644
index 4eb7518cc102..000000000000
--- a/pkgs/applications/graphics/jbrout/default.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, fetchsvn, pythonPackages, makeWrapper, fbida, which }:
-
-let
-  inherit (pythonPackages) python;
-in pythonPackages.buildPythonApplication rec {
-  pname = "jbrout";
-  version = "338";
-
-  src = fetchsvn {
-    url = "http://jbrout.googlecode.com/svn/trunk";
-    rev = version;
-    sha256 = "0257ni4vkxgd0qhs73fw5ppw1qpf11j8fgwsqc03b1k1yv3hk4hf";
-  };
-
-  doCheck = false;
-
-  # XXX: patchPhase to avoid this
-  #  File "/nix/store/vnyjxn6h3rbrn49m25yyw7i1chlxglhw-python-2.7.1/lib/python2.7/zipfile.py", line 348, in FileHeader
-  #    len(filename), len(extra))
-  #struct.error: ushort format requires 0 <= number <= USHRT_MAX
-  patchPhase = ''
-    find | xargs touch
-
-    substituteInPlace setup.py --replace "version=__version__" "version=baseVersion"
-  '';
-
-  postInstall = ''
-    mkdir $out/bin
-    echo "python $out/${python.sitePackages}/jbrout/jbrout.py" > $out/bin/jbrout
-    chmod +x $out/bin/jbrout
-  '';
-
-  buildInputs = [ python makeWrapper which ];
-  propagatedBuildInputs = with pythonPackages; [ pillow lxml pyGtkGlade pyexiv2 fbida ];
-
-  meta = {
-    homepage = https://manatlan.com/jbrout/;
-    description = "Photo manager";
-    platforms = stdenv.lib.platforms.linux;
-    license = stdenv.lib.licenses.gpl2Plus;
-  };
-}
diff --git a/pkgs/applications/misc/toggldesktop/default.nix b/pkgs/applications/misc/toggldesktop/default.nix
index bf22cb0181da..a0d663efb3cc 100644
--- a/pkgs/applications/misc/toggldesktop/default.nix
+++ b/pkgs/applications/misc/toggldesktop/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig
+{ mkDerivation, lib, fetchzip, buildEnv, makeDesktopItem, runCommand, writeText, pkgconfig
 , cmake, qmake, cacert, jsoncpp, libX11, libXScrnSaver, lua, openssl, poco
 , qtbase, qtwebengine, qtx11extras, sqlite }:
 
@@ -11,7 +11,7 @@ let
     sha256 = "01hqkx9dljnhwnyqi6mmzfp02hnbi2j50rsfiasniqrkbi99x9v1";
   };
 
-  bugsnag-qt = stdenv.mkDerivation rec {
+  bugsnag-qt = mkDerivation rec {
     pname = "bugsnag-qt";
     version = "20180522.005732";
 
@@ -24,7 +24,7 @@ let
     buildInputs = [ qtbase ];
   };
 
-  qxtglobalshortcut = stdenv.mkDerivation rec {
+  qxtglobalshortcut = mkDerivation rec {
     pname = "qxtglobalshortcut";
     version = "f584471dada2099ba06c574bdfdd8b078c2e3550";
 
@@ -37,7 +37,7 @@ let
     buildInputs = [ qtbase qtx11extras ];
   };
 
-  qt-oauth-lib = stdenv.mkDerivation rec {
+  qt-oauth-lib = mkDerivation rec {
     pname = "qt-oauth-lib";
     version = "20190125.190943";
 
@@ -62,7 +62,7 @@ let
     mkdir -p $out/lib/pkgconfig && ln -s ${poco-pc} $_/poco.pc
   '';
 
-  libtoggl = stdenv.mkDerivation {
+  libtoggl = mkDerivation {
     name = "libtoggl-${version}";
     inherit src version;
 
@@ -77,7 +77,7 @@ let
     '';
   };
 
-  toggldesktop = stdenv.mkDerivation {
+  toggldesktop = mkDerivation {
     name = "${name}-unwrapped";
     inherit src version;
 
@@ -108,7 +108,7 @@ let
     ];
   };
 
-  toggldesktop-icons = stdenv.mkDerivation {
+  toggldesktop-icons = mkDerivation {
     name = "${name}-icons";
     inherit (toggldesktop) src sourceRoot;
 
@@ -138,7 +138,7 @@ buildEnv {
   inherit name;
   paths = [ desktopItem toggldesktop-icons toggldesktop-wrapped ];
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Client for Toggl time tracking service";
     homepage = https://github.com/toggl/toggldesktop;
     license = licenses.bsd3;
diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
index 4fafe19b3792..a8a426b61626 100644
--- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
+++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
@@ -90,19 +90,19 @@ let
   fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
 
   # Upstream source
-  version = "9.0.5";
+  version = "9.0.6";
 
   lang = "en-US";
 
   srcs = {
     x86_64-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
-      sha256 = "1d4c3mrvqd6v086mwn3rnv776y2j3y45agnd0k5njqnmr53ybn2s";
+      sha256 = "1vk1pww8zmpjd5snyfz0if9v17g140ymlp6navxp28snzlffahss";
     };
 
     i686-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
-      sha256 = "040nh79hjkg5afvzshzhp7588dbi1pcpjsyk8phfqaapds74ma8y";
+      sha256 = "0bhikdilfz31iilgb48mayy9f4lilycq24pqsrq7w3dqdjg4v55v";
     };
   };
 in
diff --git a/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix b/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix
new file mode 100644
index 000000000000..716e9da8b7e5
--- /dev/null
+++ b/pkgs/applications/networking/cluster/docker-machine/hyperkit.nix
@@ -0,0 +1,22 @@
+{ lib, buildGoModule, minikube }:
+
+buildGoModule rec {
+  inherit (minikube) version src nativeBuildInputs buildInputs goPackagePath preBuild;
+
+  pname = "docker-machine-hyperkit";
+  subPackages = [ "cmd/drivers/hyperkit" ];
+
+  modSha256   = minikube.go-modules.outputHash;
+
+  postInstall = ''
+    mv $out/bin/hyperkit $out/bin/docker-machine-driver-hyperkit
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/kubernetes/minikube/blob/master/docs/drivers.md;
+    description = "HyperKit driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ atkinschang ];
+    platforms = platforms.darwin;
+  };
+}
diff --git a/pkgs/applications/networking/cluster/docker-machine/kvm2.nix b/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
index eb2946cec771..609b7b02cbb4 100644
--- a/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
+++ b/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
@@ -1,32 +1,22 @@
-{ stdenv, buildGoModule, libvirt, pkgconfig, minikube }:
+{ lib, buildGoModule, minikube }:
 
 buildGoModule rec {
-  pname = "docker-machine-kvm2";
-  version = minikube.version;
+  inherit (minikube) version src nativeBuildInputs buildInputs goPackagePath preBuild;
 
-  goPackagePath = "k8s.io/minikube";
+  pname = "docker-machine-kvm2";
   subPackages = [ "cmd/drivers/kvm" ];
 
-  src = minikube.src;
-
-  modSha256 = minikube.go-modules.outputHash;
-
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ libvirt ];
-
-  preBuild = ''
-    export buildFlagsArray=(-ldflags="-X k8s.io/minikube/pkg/drivers/kvm/version.VERSION=v${version}")
-  '';
+  modSha256   = minikube.go-modules.outputHash;
 
   postInstall = ''
     mv $out/bin/kvm $out/bin/docker-machine-driver-kvm2
   '';
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     homepage = https://github.com/kubernetes/minikube/blob/master/docs/drivers.md;
     description = "KVM2 driver for docker-machine.";
     license = licenses.asl20;
-    maintainers = with maintainers; [ tadfisher ];
+    maintainers = with maintainers; [ tadfisher atkinschang ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/networking/cluster/kubeval/default.nix b/pkgs/applications/networking/cluster/kubeval/default.nix
index 84e9b8899431..54be5956040c 100644
--- a/pkgs/applications/networking/cluster/kubeval/default.nix
+++ b/pkgs/applications/networking/cluster/kubeval/default.nix
@@ -1,26 +1,5 @@
 { stdenv, lib, fetchFromGitHub, buildGoModule, makeWrapper }:
 
-let
-
-  # Cache schema as a package so network calls are not
-  # necessary at runtime, allowing use in package builds
-  schema = stdenv.mkDerivation {
-    name = "kubeval-schema";
-    src = fetchFromGitHub {
-      owner = "instrumenta";
-      repo = "kubernetes-json-schema";
-      rev = "6a498a60dc68c5f6a1cc248f94b5cd1e7241d699";
-      sha256 = "1y9m2ma3n4h7sf2lg788vjw6pkfyi0fa7gzc870faqv326n6x2jr";
-    };
-
-    installPhase = ''
-      mkdir -p $out/kubernetes-json-schema/master
-      cp -R . $out/kubernetes-json-schema/master
-    '';
-   };
-
-in
-
 buildGoModule rec {
   pname = "kubeval";
   version = "0.14.0";
@@ -32,12 +11,8 @@ buildGoModule rec {
     sha256 = "0kpwk7bv36m3i8vavm1pqc8l611c6l9qbagcc64v6r85qig4w5xv";
   };
 
-  buildInputs = [ makeWrapper ];
-
   modSha256 = "0y9x44y3bchi8xg0a6jmp2rmi8dybkl6qlywb6nj1viab1s8dd4y";
 
-  postFixup = "wrapProgram $out/bin/kubeval --set KUBEVAL_SCHEMA_LOCATION file:///${schema}/kubernetes-json-schema/master";
-
   meta = with lib; {
     description = "Validate your Kubernetes configuration files";
     homepage = https://github.com/instrumenta/kubeval;
diff --git a/pkgs/applications/networking/cluster/kubeval/schema.nix b/pkgs/applications/networking/cluster/kubeval/schema.nix
new file mode 100644
index 000000000000..370fe9a1cd82
--- /dev/null
+++ b/pkgs/applications/networking/cluster/kubeval/schema.nix
@@ -0,0 +1,15 @@
+{ fetchFromGitHub }:
+# To cache schema as a package so network calls are not
+# necessary at runtime, allowing use in package builds you can use the following:
+
+#   KUBEVAL_SCHEMA_LOCATION="file:///${kubeval-schema}";
+(fetchFromGitHub {
+  name = "kubeval-schema";
+  owner = "instrumenta";
+  repo = "kubernetes-json-schema";
+  rev = "6a498a60dc68c5f6a1cc248f94b5cd1e7241d699";
+  sha256 = "1y9m2ma3n4h7sf2lg788vjw6pkfyi0fa7gzc870faqv326n6x2jr";
+}) // {
+  # the schema is huge (> 7GB), we don't get any benefit from building int on hydra
+  meta.hydraPlatforms = [];
+}
diff --git a/pkgs/applications/networking/cluster/minikube/default.nix b/pkgs/applications/networking/cluster/minikube/default.nix
index 5637e486ef11..f49f1768ced4 100644
--- a/pkgs/applications/networking/cluster/minikube/default.nix
+++ b/pkgs/applications/networking/cluster/minikube/default.nix
@@ -1,68 +1,67 @@
-{ stdenv, buildGoModule, fetchFromGitHub, go-bindata, libvirt, qemu
-, gpgme, makeWrapper, vmnet
-, docker-machine-kvm, docker-machine-kvm2
-, extraDrivers ? []
+{ stdenv
+, buildGoModule
+, fetchFromGitHub
+, pkgconfig
+, makeWrapper
+, go-bindata
+, libvirt
+, vmnet
 }:
 
-let
-  drivers = stdenv.lib.filter (d: d != null) (extraDrivers
-            ++ stdenv.lib.optionals stdenv.isLinux [ docker-machine-kvm docker-machine-kvm2 ]);
-
-  binPath = drivers
-            ++ stdenv.lib.optionals stdenv.isLinux ([ libvirt qemu ]);
-
-in buildGoModule rec {
+buildGoModule rec {
   pname   = "minikube";
-  version = "1.2.0";
-
-  kubernetesVersion = "1.15.0";
+  version = "1.8.1";
+  # for -ldflags
+  commit  = "cbda04cf6bbe65e987ae52bb393c10099ab62014";
 
   goPackagePath = "k8s.io/minikube";
+  subPackages   = [ "cmd/minikube" ];
+  modSha256     = "1wyz8aq291lx614ilqrcgzdc8rjxbd6v3rv1fy6r2m6snyysycfn";
 
   src = fetchFromGitHub {
     owner  = "kubernetes";
     repo   = "minikube";
     rev    = "v${version}";
-    sha256 = "0l9znrp49877cp1bkwx84c8lv282ga5a946rjbxi8gznkf3kwaw7";
+    sha256 = "1nf0n701rw3anp8j7k3f553ipqwpzzxci41zsi0il4l35dpln5g0";
   };
 
-  modSha256 = "1cp63n0x2lgbqvvymx9byx48r42qw6w224x5x4iiarc2nryfdhn0";
-
-  buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet;
-  subPackages = [ "cmd/minikube" ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin "cmd/drivers/hyperkit";
+  nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ];
+  buildInputs = stdenv.lib.optionals stdenv.isLinux [ libvirt ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ vmnet ];
 
   preBuild = ''
     go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets deploy/addons/...
+    go-bindata -nomemcopy -o pkg/minikube/translate/translations.go -pkg translate translations/...
 
     VERSION_MAJOR=$(grep "^VERSION_MAJOR" Makefile | sed "s/^.*\s//")
     VERSION_MINOR=$(grep "^VERSION_MINOR" Makefile | sed "s/^.*\s//")
     ISO_VERSION=v$VERSION_MAJOR.$VERSION_MINOR.0
     ISO_BUCKET=$(grep "^ISO_BUCKET" Makefile | sed "s/^.*\s//")
-    KUBERNETES_VERSION=${kubernetesVersion}
 
     export buildFlagsArray="-ldflags=\
-      -X k8s.io/minikube/pkg/version.version=v${version} \
-      -X k8s.io/minikube/pkg/version.isoVersion=$ISO_VERSION \
-      -X k8s.io/minikube/pkg/version.isoPath=$ISO_BUCKET \
-      -X k8s.io/minikube/vendor/k8s.io/client-go/pkg/version.gitVersion=$KUBERNETES_VERSION \
-      -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitVersion=$KUBERNETES_VERSION"
+      -X ${goPackagePath}/pkg/version.version=v${version} \
+      -X ${goPackagePath}/pkg/version.isoVersion=$ISO_VERSION \
+      -X ${goPackagePath}/pkg/version.isoPath=$ISO_BUCKET \
+      -X ${goPackagePath}/pkg/version.gitCommitID=${commit} \
+      -X ${goPackagePath}/pkg/drivers/kvm.version=v${version} \
+      -X ${goPackagePath}/pkg/drivers/kvm.gitCommitID=${commit} \
+      -X ${goPackagePath}/pkg/drivers/hyperkit.version=v${version} \
+      -X ${goPackagePath}/pkg/drivers/hyperkit.gitCommitID=${commit}"
   '';
 
   postInstall = ''
-    wrapProgram $out/bin/${pname} --prefix PATH : $out/bin:${stdenv.lib.makeBinPath binPath}
     mkdir -p $out/share/bash-completion/completions/
     MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $out/bin/minikube completion bash > $out/share/bash-completion/completions/minikube
+
     mkdir -p $out/share/zsh/site-functions/
     MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $out/bin/minikube completion zsh > $out/share/zsh/site-functions/_minikube
-  ''+ stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
-    mv $out/bin/hyperkit $out/bin/docker-machine-driver-hyperkit
   '';
 
   meta = with stdenv.lib; {
     homepage    = https://github.com/kubernetes/minikube;
     description = "A tool that makes it easy to run Kubernetes locally";
     license     = licenses.asl20;
-    maintainers = with maintainers; [ ebzzry copumpkin vdemeester ];
+    maintainers = with maintainers; [ ebzzry copumpkin vdemeester atkinschang ];
     platforms   = with platforms; unix;
   };
 }
diff --git a/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix b/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
index 122a7e74f863..87342115e1e4 100644
--- a/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
+++ b/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
@@ -6,12 +6,12 @@
 
 let
   executableName = "riot-desktop";
-  version = "1.5.12";
+  version = "1.5.13";
   riot-web-src = fetchFromGitHub {
     owner = "vector-im";
     repo = "riot-web";
     rev = "v${version}";
-    sha256 = "1qz3n2dlklhbi6rbhv2v769xbr4rcp9s6pm2cc9r33ak6axn4aym";
+    sha256 = "1p2bdqq8yziv3l7kjkwqvi27a8djav7rk3lsipl7dvdjk1926941";
   };
   electron = electron_7;
 
diff --git a/pkgs/applications/networking/instant-messengers/riot/riot-web.nix b/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
index e633f60d9770..1ff55fbb1cb0 100644
--- a/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
+++ b/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
@@ -12,11 +12,11 @@ let
 
 in stdenv.mkDerivation rec {
   pname = "riot-web";
-  version = "1.5.12";
+  version = "1.5.13";
 
   src = fetchurl {
     url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
-    sha256 = "064zghrsl348ydzngwxhwjn0d0gkkf3nkzq03v5gad2f11qwnwb6";
+    sha256 = "0xghpf9rv7ns5aipc6n517qd9dp50rr93arvx6r36kqhkdyzbfad";
   };
 
   installPhase = ''
diff --git a/pkgs/applications/radio/gnss-sdr/default.nix b/pkgs/applications/radio/gnss-sdr/default.nix
index ba37b7ecad22..005f83e0f54e 100644
--- a/pkgs/applications/radio/gnss-sdr/default.nix
+++ b/pkgs/applications/radio/gnss-sdr/default.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gnss-sdr";
-  version = "0.0.11";
+  version = "0.0.12";
 
   src = fetchFromGitHub {
     owner = "gnss-sdr";
     repo = "gnss-sdr";
     rev = "v${version}";
-    sha256 = "0ajj0wx68yyzigppxxa1wag3hzkrjj8dqq8k28rj0jhp8a6bw2q7";
+    sha256 = "0i9cz85jc2m758pzy3bq4dk4vj9wv7k2z118lasb09xldx01dwsq";
   };
 
   buildInputs = [
@@ -73,7 +73,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "An open source Global Navigation Satellite Systems software-defined receiver";
-    homepage = https://gnss-sdr.org/;
+    homepage = "https://gnss-sdr.org/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/science/electronics/kicad/default.nix b/pkgs/applications/science/electronics/kicad/default.nix
index a60f8db388a5..f03a0a0cceff 100644
--- a/pkgs/applications/science/electronics/kicad/default.nix
+++ b/pkgs/applications/science/electronics/kicad/default.nix
@@ -137,5 +137,9 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ evils kiwi berce ];
     # kicad's cross-platform, not sure what to fill in here
     platforms = with platforms; linux;
+  } // optionalAttrs with3d {
+    # We can't download the 3d models on Hydra - they are a ~1 GiB download and
+    # they occupy ~5 GiB in store.
+    hydraPlatforms = [];
   };
 }
diff --git a/pkgs/applications/science/electronics/kicad/libraries.nix b/pkgs/applications/science/electronics/kicad/libraries.nix
index 53e190d2749b..7cdf9373e087 100644
--- a/pkgs/applications/science/electronics/kicad/libraries.nix
+++ b/pkgs/applications/science/electronics/kicad/libraries.nix
@@ -12,8 +12,8 @@
 # };
 with lib;
 let
-  mkLib = name: attrs:
-    stdenv.mkDerivation (
+  mkLib = name:
+    stdenv.mkDerivation
       {
         pname = "kicad-${name}";
         version = "${version}";
@@ -27,16 +27,13 @@ let
         );
         nativeBuildInputs = [ cmake ];
         meta.license = licenses.cc-by-sa-40;
-      } // attrs
-    );
+      };
 in
 {
-  symbols = mkLib "symbols" { };
-  templates = mkLib "templates" { };
-  footprints = mkLib "footprints" { };
-  packages3d = mkLib "packages3d" {
-    hydraPlatforms = []; # this is a ~1 GiB download, occupies ~5 GiB in store
-  };
+  symbols = mkLib "symbols";
+  templates = mkLib "templates";
+  footprints = mkLib "footprints";
+  packages3d = mkLib "packages3d";
 
   # i18n is a special case, not actually a library
   # more a part of kicad proper, but also optional and separate
diff --git a/pkgs/applications/science/logic/abc/default.nix b/pkgs/applications/science/logic/abc/default.nix
index 8551a3ee4ca3..a33cc92c7ce7 100644
--- a/pkgs/applications/science/logic/abc/default.nix
+++ b/pkgs/applications/science/logic/abc/default.nix
@@ -1,35 +1,32 @@
-{ fetchFromGitHub, stdenv, readline, cmake }:
+{ stdenv, fetchFromGitHub
+, readline, cmake
+}:
 
-let
-  rev = "71f2b40320127561175ad60f6f2428f3438e5243";
-in stdenv.mkDerivation {
-  pname = "abc-verifier";
-  version = "2020-01-11";
+stdenv.mkDerivation rec {
+  pname   = "abc-verifier";
+  version = "2020.03.05";
 
   src = fetchFromGitHub {
-    inherit rev;
-    owner = "berkeley-abc";
-    repo = "abc";
-    sha256 = "15sn146ajxql7l1h8rsag5lhn4spwvgjhwzqawfr78snzadw8by3";
+    owner  = "berkeley-abc";
+    repo   = "abc";
+    rev    = "ed90ce20df9c7c4d6e1db5d3f786f9b52e06bab1";
+    sha256 = "01sw67pkrb6wzflkxbkxzwsnli3nvp0yxwp3j1ngb3c0j86ri437";
   };
 
-  passthru.rev = rev;
-
   nativeBuildInputs = [ cmake ];
   buildInputs = [ readline ];
 
   enableParallelBuilding = true;
+  installPhase = "mkdir -p $out/bin && mv abc $out/bin";
 
-  installPhase = ''
-    mkdir -p $out/bin
-    mv abc $out/bin
-  '';
+  # needed by yosys
+  passthru.rev = src.rev;
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A tool for squential logic synthesis and formal verification";
-    homepage    = https://people.eecs.berkeley.edu/~alanmi/abc;
-    license     = stdenv.lib.licenses.mit;
-    platforms   = stdenv.lib.platforms.unix;
-    maintainers = [ stdenv.lib.maintainers.thoughtpolice ];
+    homepage    = "https://people.eecs.berkeley.edu/~alanmi/abc";
+    license     = licenses.mit;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/applications/science/logic/mcy/default.nix b/pkgs/applications/science/logic/mcy/default.nix
index 9f239f221b18..ec9af1926318 100644
--- a/pkgs/applications/science/logic/mcy/default.nix
+++ b/pkgs/applications/science/logic/mcy/default.nix
@@ -7,28 +7,31 @@ let
 in
 stdenv.mkDerivation {
   pname = "mcy";
-  version = "2020.02.05";
+  version = "2020.03.16";
 
   src = fetchFromGitHub {
     owner  = "YosysHQ";
     repo   = "mcy";
-    rev    = "83deeddd12d583a89ad4aa1d2147efa4d6adc33c";
-    sha256 = "1i0cabiqr68zflwzc6z894i4n7k6m3hbfck58vzh8zb9jwxwizav";
+    rev    = "562c02375067428bb657f57faa5131ee1ab44051";
+    sha256 = "0q77v2hxnmv61zx5bl4lrqiavgvsiyb5qxdp9hnihimj1m30bc5h";
   };
 
   buildInputs = [ python ];
   patchPhase = ''
     substituteInPlace mcy.py \
       --replace yosys '${yosys}/bin/yosys' \
-      --replace 'os.execvp("mcy-dash"' "os.execvp(\"$out/libexec/mcy/mcy-dash.py\""
+      --replace 'os.execvp("mcy-dash"' "os.execvp(\"$out/bin/mcy-dash\""
+    substituteInPlace mcy-dash.py \
+      --replace 'app.run(debug=True)' 'app.run(host="0.0.0.0",debug=True)'
   '';
 
   # the build needs a bit of work...
   buildPhase = "true";
   installPhase = ''
-    mkdir -p $out/bin $out/libexec/mcy
-    install mcy.py $out/bin/mcy && chmod +x $out/bin/mcy
-    install mcy-dash.py $out/libexec/mcy/mcy-dash.py
+    mkdir -p $out/bin $out/share/mcy/dash
+    install mcy.py      $out/bin/mcy      && chmod +x $out/bin/mcy
+    install mcy-dash.py $out/bin/mcy-dash && chmod +x $out/bin/mcy-dash
+    cp -r dash/. $out/share/mcy/dash/.
   '';
 
   meta = {
diff --git a/pkgs/applications/science/logic/symbiyosys/default.nix b/pkgs/applications/science/logic/symbiyosys/default.nix
index 6b41a44a3583..48c48836b06d 100644
--- a/pkgs/applications/science/logic/symbiyosys/default.nix
+++ b/pkgs/applications/science/logic/symbiyosys/default.nix
@@ -1,17 +1,17 @@
 { stdenv, fetchFromGitHub
 , bash, python3, yosys
-, yices, boolector, aiger, abc-verifier
+, yices, boolector, aiger
 }:
 
 stdenv.mkDerivation {
   pname = "symbiyosys";
-  version = "2020.02.08";
+  version = "2020.02.11";
 
   src = fetchFromGitHub {
     owner  = "YosysHQ";
     repo   = "SymbiYosys";
-    rev    = "500b526131f434b9679732fc89515dbed67c8d7d";
-    sha256 = "1pwbirszc80r288x81nx032snniqgmc80i09bbha2i3zd0c3pj5h";
+    rev    = "0a7013017f9d583ef6cc8d10712f4bf11cf6e024";
+    sha256 = "08xz8sgvs1qy7jxp8ma5yl49i6nl7k6bkhry4afdvwg3fvwis39c";
   };
 
   buildInputs = [ python3 ];
@@ -29,8 +29,8 @@ stdenv.mkDerivation {
       --replace ': "btormc"'       ': "${boolector}/bin/btormc"' \
       --replace ': "yosys"'        ': "${yosys}/bin/yosys"' \
       --replace ': "yosys-smtbmc"' ': "${yosys}/bin/yosys-smtbmc"' \
-      --replace ': "yosys-abc"' ': "${abc-verifier}/bin/abc"' \
-      --replace ': "aigbmc"' ': "${aiger}/bin/aigbmc"' \
+      --replace ': "yosys-abc"'    ': "${yosys}/bin/yosys-abc"' \
+      --replace ': "aigbmc"'       ': "${aiger}/bin/aigbmc"' \
   '';
 
   buildPhase = "true";
diff --git a/pkgs/applications/virtualization/conmon/default.nix b/pkgs/applications/virtualization/conmon/default.nix
index 53a31c656346..37223b5cb425 100644
--- a/pkgs/applications/virtualization/conmon/default.nix
+++ b/pkgs/applications/virtualization/conmon/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation rec {
   pname = "conmon";
-  version = "2.0.11";
+  version = "2.0.13";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1mdnfkbbv41g590a1ja4rfw69z6kp03znyhikdmg6zqp4qsv32ib";
+    sha256 = "1cp9hhanndr6c71g4hdxfgwk348vnnlgijkr12f7qmd5acwfl7jc";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/applications/virtualization/virtualbox/extpack.nix b/pkgs/applications/virtualization/virtualbox/extpack.nix
index c935a40c5400..ba8407e4a736 100644
--- a/pkgs/applications/virtualization/virtualbox/extpack.nix
+++ b/pkgs/applications/virtualization/virtualbox/extpack.nix
@@ -1,8 +1,9 @@
-{fetchurl, lib}:
+{fetchurl, lib, virtualbox}:
 
 with lib;
 
-let version = "6.0.14";
+let
+  inherit (virtualbox) version;
 in
 fetchurl rec {
   name = "Oracle_VM_VirtualBox_Extension_Pack-${version}.vbox-extpack";
@@ -11,7 +12,7 @@ fetchurl rec {
     # Manually sha256sum the extensionPack file, must be hex!
     # Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
     # Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
-    let value = "c8a5cc980c9c94cdac3d94e23cf159c2433aae76b416dbfb5b1a918758f21e63";
+    let value = "3b73798d776ff223ea8025b1a45001762f8d4e5bcd1ea61449773c1249935800";
     in assert (builtins.stringLength value) == 64; value;
 
   meta = {
diff --git a/pkgs/data/misc/unicode-character-database/default.nix b/pkgs/data/misc/unicode-character-database/default.nix
index 5f50049856f3..1eda25fbe2b1 100644
--- a/pkgs/data/misc/unicode-character-database/default.nix
+++ b/pkgs/data/misc/unicode-character-database/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "unicode-character-database";
-  version = "12.1.0";
+  version = "13.0.0";
 
   src = fetchurl {
     url = "https://www.unicode.org/Public/zipped/${version}/UCD.zip";
-    sha256 = "19m06iw0jl7lhlggcmghi12p6jld0qrmfpksgc243yn6sjh53fi5";
+    sha256 = "0ld97ppkb5f8d5b3mlkxfwnr6f3inijyqias9xc4bbin9lxrfxig";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/data/themes/ant-theme/ant-bloody.nix b/pkgs/data/themes/ant-theme/ant-bloody.nix
new file mode 100644
index 000000000000..4ec1c3281d55
--- /dev/null
+++ b/pkgs/data/themes/ant-theme/ant-bloody.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant-Bloody";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-bloody-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "0rrz50kmzjmqj17hvrw67pbaclwxv85i5m08s7842iky6dnn5z8s";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0v5pdhysa2460sh400cpq11smcfsi9g1lbfzx8nj1w5a21d811cz";
+
+  meta = with stdenv.lib; {
+    description = "Bloody variant of the Ant theme";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/pkgs/data/themes/ant-theme/ant-dracula.nix b/pkgs/data/themes/ant-theme/ant-dracula.nix
new file mode 100644
index 000000000000..baeafb255275
--- /dev/null
+++ b/pkgs/data/themes/ant-theme/ant-dracula.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant-Dracula";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-dracula-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "00b8w69xapqy8kc7zqwlfz1xpld6hibbh35djvhcnd905gzzymkd";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1a9mkxfb0zixx8s05h15lhnnzygh2qzc8k2q10i0khx90bf72x14";
+
+  meta = with stdenv.lib; {
+    description = "Dracula variant of the Ant theme";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/pkgs/data/themes/ant-theme/ant-nebula.nix b/pkgs/data/themes/ant-theme/ant-nebula.nix
new file mode 100644
index 000000000000..75aeb91f9022
--- /dev/null
+++ b/pkgs/data/themes/ant-theme/ant-nebula.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, gtk-engine-murrine }:
+
+let
+  themeName = "Ant-Nebula";
+in
+stdenv.mkDerivation rec {
+  pname = "ant-nebula-theme";
+  version = "1.3.0";
+
+  src = fetchurl {
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
+    sha256 = "1xpgw577nmgjk547mg2vvv0gdai60srgncykm5pb1w8dnlk69jbz";
+  };
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    runHook postInstall
+  '';
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "1lmlc4fvjnp05gshc0arfysh8r1xxzpzdv3j0bk40mjf3d59814c";
+
+  meta = with stdenv.lib; {
+    description = "Nebula variant of the Ant theme";
+    homepage = "https://github.com/EliverLara/${themeName}";
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ alexarice ];
+  };
+}
diff --git a/pkgs/data/themes/ant-theme/default.nix b/pkgs/data/themes/ant-theme/ant.nix
index c60fb4d33558..0908883e20ec 100644
--- a/pkgs/data/themes/ant-theme/default.nix
+++ b/pkgs/data/themes/ant-theme/ant.nix
@@ -1,11 +1,14 @@
 { stdenv, fetchurl, gtk-engine-murrine }:
 
+let
+  themeName = "Ant";
+in
 stdenv.mkDerivation rec {
   pname = "ant-theme";
   version = "1.3.0";
 
   src = fetchurl {
-    url = "https://github.com/EliverLara/Ant/releases/download/v${version}/Ant.tar";
+    url = "https://github.com/EliverLara/${themeName}/releases/download/v${version}/${themeName}.tar";
     sha256 = "1r795v96ywzcb4dq08q2fdbmfia32g36cc512mhy41s8fb1a47dz";
   };
 
@@ -17,21 +20,21 @@ stdenv.mkDerivation rec {
 
   installPhase = ''
     runHook preInstall
-    mkdir -p $out/share/themes/Ant
-    cp -a * $out/share/themes/Ant
-    rm -r $out/share/themes/Ant/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
+    mkdir -p $out/share/themes/${themeName}
+    cp -a * $out/share/themes/${themeName}
+    rm -r $out/share/themes/${themeName}/{Art,LICENSE,README.md,gtk-2.0/render-assets.sh}
     runHook postInstall
   '';
 
   outputHashAlgo = "sha256";
   outputHashMode = "recursive";
-  outputHash = "1gpacrmi5y87shp39jgy78n0ca2xdpvbqfh0mgldlxx99ca9rvvy";
+  outputHash = "07iv4jangqnzrvjr749vl3x31z7dxds51bq1bhz5acbjbwf25wjf";
 
   meta = with stdenv.lib; {
     description = "A flat and light theme with a modern look";
-    homepage = https://github.com/EliverLara/Ant;
+    homepage = "https://github.com/EliverLara/${themeName}";
     license = licenses.gpl3;
     platforms = platforms.all;
-    maintainers = [ ];
+    maintainers = with maintainers; [ alexarice ];
   };
 }
diff --git a/pkgs/data/themes/matcha/default.nix b/pkgs/data/themes/matcha/default.nix
index 05292e97772f..c2274c57bbf4 100644
--- a/pkgs/data/themes/matcha/default.nix
+++ b/pkgs/data/themes/matcha/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "matcha";
-  version = "2020-03-11";
+  version = "2020-03-15";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    sha256 = "1np2964g5f0vwdvfmi8gidsk9jj7v43nkshiqnfdbvmwa85ldpfl";
+    sha256 = "0hj1hpg9p46hyfcssd5ac7m599zkq7nrbwdwfbp98g5rw4fq8jaw";
   };
 
   buildInputs = [ gdk-pixbuf librsvg ];
diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix
index 1d61b8331493..ea84edd5e1db 100644
--- a/pkgs/development/compilers/elm/default.nix
+++ b/pkgs/development/compilers/elm/default.nix
@@ -42,6 +42,7 @@ let
               doCheck = false;
               jailbreak = true;
             }));
+
             elmi-to-json = justStaticExecutables (overrideCabal (self.callPackage ./packages/elmi-to-json.nix {}) (drv: {
               prePatch = ''
                 substituteInPlace package.yaml --replace "- -Werror" ""
@@ -50,6 +51,23 @@ let
               jailbreak = true;
             }));
 
+            elm-instrument = justStaticExecutables (overrideCabal (self.callPackage ./packages/elm-instrument.nix {}) (drv: {
+              patches = [(
+                # GHC 8.8.1 and Cabal >= 1.25.0 support
+                # https://github.com/zwilias/elm-instrument/pull/3
+                fetchpatch {
+                  url = "https://github.com/turboMaCk/elm-instrument/commit/4272db2aea742c8b54509e536fa4f35d04f95da5.patch";
+                  sha256 = "1d1lc43lp3x5jfhlyb1b7na7nj1g1i1vc1np26pcisg9c2s7gjz6";
+                }
+              )];
+              prePatch = ''
+                sed "s/desc <-.*/let desc = \"${drv.version}\"/g" Setup.hs --in-place
+              '';
+              jailbreak = true;
+              # Tests are failing because of missing instances for Eq and Show type classes
+              doCheck = false;
+            }));
+
             inherit fetchElmDeps;
             elmVersion = elmPkgs.elm.version;
           };
@@ -73,9 +91,29 @@ let
           inherit nodejs pkgs;
           inherit (stdenv.hostPlatform) system;
         };
-    in with hsPkgs.elmPkgs; {
+    in with hsPkgs.elmPkgs; rec {
       elm-test = patchBinwrap [elmi-to-json] nodePkgs.elm-test;
       elm-verify-examples = patchBinwrap [elmi-to-json] nodePkgs.elm-verify-examples;
+      elm-coverage =
+        let patched = patchBinwrap [elm elmi-to-json] nodePkgs.elm-coverage;
+        in patched.override {
+          preRebuild = ''
+            sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json
+
+            # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
+            # in case of just this package
+            sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
+
+            rm node_modules/elm/install.js
+            echo "console.log('no-op');" > node_modules/elm/install.js
+          '';
+
+          # Link Elm instrument binary
+          postInstall = patched.postInstall + ''
+            mkdir -p unpacked_bin
+            ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument
+          '';
+        };
       elm-language-server = nodePkgs."@elm-tooling/elm-language-server";
 
       inherit (nodePkgs) elm-doc-preview elm-live elm-upgrade elm-xref elm-analyse;
diff --git a/pkgs/development/compilers/elm/packages/elm-instrument.nix b/pkgs/development/compilers/elm/packages/elm-instrument.nix
new file mode 100644
index 000000000000..bd7690162277
--- /dev/null
+++ b/pkgs/development/compilers/elm/packages/elm-instrument.nix
@@ -0,0 +1,34 @@
+{ mkDerivation, ansi-terminal, ansi-wl-pprint, base, binary
+, bytestring, Cabal, cmark, containers, directory, elm-format
+, fetchgit, filepath, free, HUnit, indents, json, mtl
+, optparse-applicative, parsec, process, QuickCheck, quickcheck-io
+, split, stdenv, tasty, tasty-golden, tasty-hunit, tasty-quickcheck
+, text, elm
+}:
+mkDerivation {
+  pname = "elm-instrument";
+  version = "0.0.7";
+  src = fetchgit {
+    url = "https://github.com/zwilias/elm-instrument.git";
+    sha256 = "14yfzwsyvgc6rzn19sdmwk2mc1vma9hcljnmjnmlig8mp0271v56";
+    rev = "31b527e405a6afdb25bb87ad7bd14f979e65cff7";
+    fetchSubmodules = true;
+  };
+  isLibrary = true;
+  isExecutable = true;
+  setupHaskellDepends = [ base Cabal directory filepath process ];
+  libraryHaskellDepends = [
+    ansi-terminal ansi-wl-pprint base binary bytestring containers
+    directory filepath free indents json mtl optparse-applicative
+    parsec process split text
+  ];
+  executableHaskellDepends = [ base ];
+  testHaskellDepends = [
+    base cmark containers elm-format HUnit mtl parsec QuickCheck
+    quickcheck-io split tasty tasty-golden tasty-hunit tasty-quickcheck
+    text
+  ];
+  homepage = "http://elm-lang.org";
+  description = "Instrumentation library for Elm";
+  license = stdenv.lib.licenses.bsd3;
+}
diff --git a/pkgs/development/compilers/elm/packages/elmi-to-json.nix b/pkgs/development/compilers/elm/packages/elmi-to-json.nix
index 87b02f013f85..eaed18c5297b 100644
--- a/pkgs/development/compilers/elm/packages/elmi-to-json.nix
+++ b/pkgs/development/compilers/elm/packages/elmi-to-json.nix
@@ -5,11 +5,11 @@
 }:
 mkDerivation {
   pname = "elmi-to-json";
-  version = "1.2.0";
+  version = "1.3.0";
   src = fetchgit {
-    url = "https://github.com/stoeffel/elmi-to-json.git";
-    sha256 = "1kxai87h2g0749yq0fkxwk3xaavydraaivhnavbwr62q2hw4wrj7";
-    rev = "af08ceafe742a252f1f1f3c229b0ce3b3e00084d";
+    url = "https://github.com/stoeffel/elmi-to-json";
+    sha256 = "11j56vcyhijkwi9hzggkwwmxlhzhgm67ab2m7kxkhcbbqgpasa8n";
+    rev = "ae40d1aa1e3d6878f2af514e611d44890e7abc1e";
     fetchSubmodules = true;
   };
   isLibrary = true;
diff --git a/pkgs/development/compilers/elm/packages/node-composition.nix b/pkgs/development/compilers/elm/packages/node-composition.nix
index 4add754b5999..1ffd758ac82e 100644
--- a/pkgs/development/compilers/elm/packages/node-composition.nix
+++ b/pkgs/development/compilers/elm/packages/node-composition.nix
@@ -1,4 +1,4 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.7.0. Do not edit!
 
 {pkgs ? import <nixpkgs> {
     inherit system;
diff --git a/pkgs/development/compilers/elm/packages/node-packages.json b/pkgs/development/compilers/elm/packages/node-packages.json
index e129a0ffaec4..643aad746fa2 100644
--- a/pkgs/development/compilers/elm/packages/node-packages.json
+++ b/pkgs/development/compilers/elm/packages/node-packages.json
@@ -1,10 +1,11 @@
 [
-    "elm-test",
-    "elm-verify-examples",
-    "elm-doc-preview",
-    "elm-upgrade",
     "elm-analyse",
+    "elm-coverage",
+    "elm-doc-preview",
+    "@elm-tooling/elm-language-server",
     "elm-live",
-    "elm-xref",
-    "@elm-tooling/elm-language-server"
+    "elm-test",
+    "elm-upgrade",
+    "elm-verify-examples",
+    "elm-xref"
 ]
diff --git a/pkgs/development/compilers/elm/packages/node-packages.nix b/pkgs/development/compilers/elm/packages/node-packages.nix
index 70aa04987c68..46920bf62b74 100644
--- a/pkgs/development/compilers/elm/packages/node-packages.nix
+++ b/pkgs/development/compilers/elm/packages/node-packages.nix
@@ -1,4 +1,4 @@
-# This file has been generated by node2nix 1.8.0. Do not edit!
+# This file has been generated by node2nix 1.7.0. Do not edit!
 
 {nodeEnv, fetchurl, fetchgit, globalBuildInputs ? []}:
 
@@ -121,6 +121,15 @@ let
         sha512 = "85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==";
       };
     };
+    "abbrev-1.1.1" = {
+      name = "abbrev";
+      packageName = "abbrev";
+      version = "1.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz";
+        sha512 = "nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==";
+      };
+    };
     "accepts-1.3.7" = {
       name = "accepts";
       packageName = "accepts";
@@ -157,6 +166,15 @@ let
         sha512 = "1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==";
       };
     };
+    "ansi-regex-5.0.0" = {
+      name = "ansi-regex";
+      packageName = "ansi-regex";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz";
+        sha512 = "bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==";
+      };
+    };
     "ansi-styles-2.2.1" = {
       name = "ansi-styles";
       packageName = "ansi-styles";
@@ -283,6 +301,15 @@ let
         sha1 = "59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367";
       };
     };
+    "astral-regex-1.0.0" = {
+      name = "astral-regex";
+      packageName = "astral-regex";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz";
+        sha512 = "+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==";
+      };
+    };
     "async-limiter-1.0.1" = {
       name = "async-limiter";
       packageName = "async-limiter";
@@ -661,6 +688,15 @@ let
         sha512 = "PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==";
       };
     };
+    "cliui-6.0.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz";
+        sha512 = "t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==";
+      };
+    };
     "clone-response-1.0.2" = {
       name = "clone-response";
       packageName = "clone-response";
@@ -895,6 +931,15 @@ let
         sha1 = "a3bbb302db2297cbea3c04edf36941f4613aa399";
       };
     };
+    "cross-spawn-5.1.0" = {
+      name = "cross-spawn";
+      packageName = "cross-spawn";
+      version = "5.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz";
+        sha1 = "e8bd0efee58fcff6f8f94510a0a554bbfa235449";
+      };
+    };
     "cross-spawn-6.0.5" = {
       name = "cross-spawn";
       packageName = "cross-spawn";
@@ -1129,6 +1174,15 @@ let
         sha1 = "590c61156b0ae2f4f0255732a158b266bc56b21d";
       };
     };
+    "elm-0.19.1" = {
+      name = "elm";
+      packageName = "elm";
+      version = "0.19.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/elm/-/elm-0.19.1.tgz";
+        sha512 = "rehOtJKZvoYDddlrd7AX5NAf0H+LUllnBg3AHaeaIOKWzw4W316d7Bkhlbo7aSG+hVUVWP2ihKwyYkDi589TfA==";
+      };
+    };
     "elm-analyse-git://github.com/elm-tooling/elm-analyse#1a665a6e540d7d11b29b3c5e3c52089704325d9c" = {
       name = "elm-analyse";
       packageName = "elm-analyse";
@@ -1184,6 +1238,15 @@ let
         sha512 = "CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==";
       };
     };
+    "emoji-regex-8.0.0" = {
+      name = "emoji-regex";
+      packageName = "emoji-regex";
+      version = "8.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz";
+        sha512 = "MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==";
+      };
+    };
     "encodeurl-1.0.2" = {
       name = "encodeurl";
       packageName = "encodeurl";
@@ -1220,13 +1283,13 @@ let
         sha512 = "QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==";
       };
     };
-    "es6-promisify-6.0.2" = {
+    "es6-promisify-6.1.0" = {
       name = "es6-promisify";
       packageName = "es6-promisify";
-      version = "6.0.2";
+      version = "6.1.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.2.tgz";
-        sha512 = "eO6vFm0JvqGzjWIQA6QVKjxpmELfhWbDUWHm1rPfIbn55mhKPiAa5xpLmQWJrNa629ZIeQ8ZvMAi13kvrjK6Mg==";
+        url = "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.0.tgz";
+        sha512 = "jCsk2fpfEFusVv1MDkF4Uf0hAzIKNDMgR6LyOIw6a3jwkN1sCgWzuwgnsHY9YSQ8n8P31HoncvE0LC44cpWTrw==";
       };
     };
     "escape-html-1.0.3" = {
@@ -1481,6 +1544,15 @@ let
         sha1 = "7afbd00f8f08c5b622f97cda6f714173d547bb3f";
       };
     };
+    "find-0.2.9" = {
+      name = "find";
+      packageName = "find";
+      version = "0.2.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find/-/find-0.2.9.tgz";
+        sha1 = "4b73f1ff9e56ad91b76e716407fe5ffe6554bb8c";
+      };
+    };
     "find-elm-dependencies-2.0.2" = {
       name = "find-elm-dependencies";
       packageName = "find-elm-dependencies";
@@ -1508,6 +1580,15 @@ let
         sha512 = "1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==";
       };
     };
+    "find-up-4.1.0" = {
+      name = "find-up";
+      packageName = "find-up";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz";
+        sha512 = "PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==";
+      };
+    };
     "firstline-1.2.0" = {
       name = "firstline";
       packageName = "firstline";
@@ -1607,6 +1688,15 @@ let
         sha1 = "337352bded4a0b714f3eb84de8cea765e9d37600";
       };
     };
+    "fs-extra-4.0.3" = {
+      name = "fs-extra";
+      packageName = "fs-extra";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz";
+        sha512 = "q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==";
+      };
+    };
     "fs-extra-5.0.0" = {
       name = "fs-extra";
       packageName = "fs-extra";
@@ -2219,6 +2309,15 @@ let
         sha1 = "a3b30a5c4f199183167aaab93beefae3ddfb654f";
       };
     };
+    "is-fullwidth-code-point-3.0.0" = {
+      name = "is-fullwidth-code-point";
+      packageName = "is-fullwidth-code-point";
+      version = "3.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz";
+        sha512 = "zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==";
+      };
+    };
     "is-glob-4.0.1" = {
       name = "is-glob";
       packageName = "is-glob";
@@ -2561,6 +2660,15 @@ let
         sha512 = "7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==";
       };
     };
+    "locate-path-5.0.0" = {
+      name = "locate-path";
+      packageName = "locate-path";
+      version = "5.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz";
+        sha512 = "t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==";
+      };
+    };
     "lodash-4.17.15" = {
       name = "lodash";
       packageName = "lodash";
@@ -2849,6 +2957,15 @@ let
         sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
       };
     };
+    "moment-2.24.0" = {
+      name = "moment";
+      packageName = "moment";
+      version = "2.24.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz";
+        sha512 = "bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==";
+      };
+    };
     "ms-2.0.0" = {
       name = "ms";
       packageName = "ms";
@@ -2948,6 +3065,15 @@ let
         sha512 = "z9xN2ibI6P0UylFadN7oMcIMsoTeCENC0rZyRM5MVK9AqzSPx+uGqKG6KMPeC/laOV4wOGZq/GH0PTstRNSqOA==";
       };
     };
+    "nopt-1.0.10" = {
+      name = "nopt";
+      packageName = "nopt";
+      version = "1.0.10";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz";
+        sha1 = "6ddd21bd2a31417b92727dd585f8a6f37608ebee";
+      };
+    };
     "normalize-path-2.1.1" = {
       name = "normalize-path";
       packageName = "normalize-path";
@@ -3236,6 +3362,15 @@ let
         sha512 = "x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==";
       };
     };
+    "p-locate-4.1.0" = {
+      name = "p-locate";
+      packageName = "p-locate";
+      version = "4.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz";
+        sha512 = "R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==";
+      };
+    };
     "p-timeout-2.0.1" = {
       name = "p-timeout";
       packageName = "p-timeout";
@@ -3290,6 +3425,15 @@ let
         sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
       };
     };
+    "path-exists-4.0.0" = {
+      name = "path-exists";
+      packageName = "path-exists";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz";
+        sha512 = "ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==";
+      };
+    };
     "path-is-absolute-1.0.1" = {
       name = "path-is-absolute";
       packageName = "path-is-absolute";
@@ -4064,6 +4208,15 @@ let
         sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==";
       };
     };
+    "slice-ansi-2.1.0" = {
+      name = "slice-ansi";
+      packageName = "slice-ansi";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz";
+        sha512 = "Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==";
+      };
+    };
     "snapdragon-0.8.2" = {
       name = "snapdragon";
       packageName = "snapdragon";
@@ -4208,6 +4361,15 @@ let
         sha512 = "vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==";
       };
     };
+    "string-width-4.2.0" = {
+      name = "string-width";
+      packageName = "string-width";
+      version = "4.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz";
+        sha512 = "zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==";
+      };
+    };
     "string.prototype.trimleft-2.1.1" = {
       name = "string.prototype.trimleft";
       packageName = "string.prototype.trimleft";
@@ -4262,6 +4424,15 @@ let
         sha512 = "DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==";
       };
     };
+    "strip-ansi-6.0.0" = {
+      name = "strip-ansi";
+      packageName = "strip-ansi";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz";
+        sha512 = "AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==";
+      };
+    };
     "strip-eof-1.0.0" = {
       name = "strip-eof";
       packageName = "strip-eof";
@@ -4325,6 +4496,15 @@ let
         sha512 = "oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==";
       };
     };
+    "table-5.4.6" = {
+      name = "table";
+      packageName = "table";
+      version = "5.4.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/table/-/table-5.4.6.tgz";
+        sha512 = "wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==";
+      };
+    };
     "tar-4.4.13" = {
       name = "tar";
       packageName = "tar";
@@ -4397,6 +4577,15 @@ let
         sha1 = "8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7";
       };
     };
+    "tmp-0.0.33" = {
+      name = "tmp";
+      packageName = "tmp";
+      version = "0.0.33";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz";
+        sha512 = "jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==";
+      };
+    };
     "tmp-0.1.0" = {
       name = "tmp";
       packageName = "tmp";
@@ -4469,6 +4658,15 @@ let
         sha512 = "yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==";
       };
     };
+    "touch-3.1.0" = {
+      name = "touch";
+      packageName = "touch";
+      version = "3.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz";
+        sha512 = "WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==";
+      };
+    };
     "tough-cookie-2.4.3" = {
       name = "tough-cookie";
       packageName = "tough-cookie";
@@ -4622,6 +4820,15 @@ let
         sha512 = "NG1h/MdGIX3HzyqMjyj1laBCmlPYhcO4xEy7gEqqzGiSLw7XqDQCnY4nYSn5XSaH8mQ6TFkaujrO8d/PIZN85A==";
       };
     };
+    "upgrade-1.1.0" = {
+      name = "upgrade";
+      packageName = "upgrade";
+      version = "1.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/upgrade/-/upgrade-1.1.0.tgz";
+        sha1 = "4a50875ec5c715d19379799f0590a0e796958f61";
+      };
+    };
     "uri-js-4.2.2" = {
       name = "uri-js";
       packageName = "uri-js";
@@ -4838,6 +5045,15 @@ let
         sha512 = "QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==";
       };
     };
+    "wrap-ansi-6.2.0" = {
+      name = "wrap-ansi";
+      packageName = "wrap-ansi";
+      version = "6.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz";
+        sha512 = "r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==";
+      };
+    };
     "wrappy-1.0.2" = {
       name = "wrappy";
       packageName = "wrappy";
@@ -4946,6 +5162,15 @@ let
         sha512 = "AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==";
       };
     };
+    "yargs-15.3.1" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "15.3.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz";
+        sha512 = "92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==";
+      };
+    };
     "yargs-parser-13.1.2" = {
       name = "yargs-parser";
       packageName = "yargs-parser";
@@ -4955,6 +5180,15 @@ let
         sha512 = "3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==";
       };
     };
+    "yargs-parser-18.1.1" = {
+      name = "yargs-parser";
+      packageName = "yargs-parser";
+      version = "18.1.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz";
+        sha512 = "KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==";
+      };
+    };
     "yn-4.0.0" = {
       name = "yn";
       packageName = "yn";
@@ -4967,180 +5201,210 @@ let
   };
 in
 {
-  elm-test = nodeEnv.buildNodePackage {
-    name = "elm-test";
-    packageName = "elm-test";
-    version = "0.19.1-revision2";
+  elm-analyse = nodeEnv.buildNodePackage {
+    name = "elm-analyse";
+    packageName = "elm-analyse";
+    version = "0.16.5";
     src = fetchurl {
-      url = "https://registry.npmjs.org/elm-test/-/elm-test-0.19.1-revision2.tgz";
-      sha512 = "zVs2mVeyIE+K9y7/8b333h5xRMDWAoqbBDm7ThLDhyTi7ICxeL3t5uOS4KZCrRk9+4sP6+voSbcBlgr46Q+GiQ==";
+      url = "https://registry.npmjs.org/elm-analyse/-/elm-analyse-0.16.5.tgz";
+      sha512 = "I7dgGFOc+mYDcDuyo1/HcIn3E5MiMbocStNzivsPSjCUviuEieHdDKZmJJ9uM3IdCu0fdBmRNWQBSOXtXrgzKg==";
     };
     dependencies = [
-      sources."@types/color-name-1.1.1"
+      sources."accepts-1.3.7"
       sources."ajv-6.12.0"
-      sources."ansi-styles-4.2.1"
-      sources."anymatch-3.1.1"
+      sources."array-flatten-1.1.1"
       sources."asn1-0.2.4"
       sources."assert-plus-1.0.0"
+      sources."async-limiter-1.0.1"
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
       sources."aws4-1.9.1"
-      sources."balanced-match-1.0.0"
+      sources."babel-runtime-6.18.0"
       sources."bcrypt-pbkdf-1.0.2"
-      sources."binary-0.3.0"
-      sources."binary-extensions-2.0.0"
-      sources."binwrap-0.2.2"
-      sources."bluebird-3.7.2"
-      sources."brace-expansion-1.1.11"
-      sources."braces-3.0.2"
-      sources."buffers-0.1.1"
+      sources."body-parser-1.19.0"
+      sources."bytes-3.1.0"
       sources."caseless-0.12.0"
-      sources."chainsaw-0.1.0"
-      sources."chalk-3.0.0"
-      sources."chokidar-3.3.0"
-      sources."chownr-1.1.4"
-      sources."color-convert-2.0.1"
-      sources."color-name-1.1.4"
       sources."combined-stream-1.0.8"
-      sources."concat-map-0.0.1"
+      sources."concat-stream-1.5.2"
+      sources."content-disposition-0.5.2"
+      sources."content-type-1.0.4"
+      sources."cookie-0.3.1"
+      sources."cookie-signature-1.0.6"
+      sources."core-js-2.6.11"
       sources."core-util-is-1.0.2"
-      sources."cross-spawn-7.0.1"
       sources."dashdash-1.14.1"
+      sources."debug-2.6.9"
       sources."delayed-stream-1.0.0"
+      sources."depd-1.1.2"
+      sources."destroy-1.0.4"
       sources."ecc-jsbn-0.1.2"
-      sources."elmi-to-json-1.3.0"
+      sources."ee-first-1.1.1"
+      sources."encodeurl-1.0.2"
+      sources."escape-html-1.0.3"
+      sources."etag-1.8.1"
+      (sources."express-4.16.3" // {
+        dependencies = [
+          sources."body-parser-1.18.2"
+          sources."bytes-3.0.0"
+          sources."http-errors-1.6.3"
+          sources."iconv-lite-0.4.19"
+          sources."qs-6.5.1"
+          (sources."raw-body-2.3.2" // {
+            dependencies = [
+              sources."depd-1.1.1"
+              sources."http-errors-1.6.2"
+              sources."setprototypeof-1.0.3"
+            ];
+          })
+          sources."setprototypeof-1.1.0"
+          sources."statuses-1.4.0"
+        ];
+      })
+      (sources."express-ws-2.0.0" // {
+        dependencies = [
+          sources."ws-1.1.5"
+        ];
+      })
       sources."extend-3.0.2"
       sources."extsprintf-1.3.0"
       sources."fast-deep-equal-3.1.1"
       sources."fast-json-stable-stringify-2.1.0"
-      sources."fill-range-7.0.1"
-      (sources."find-elm-dependencies-2.0.2" // {
+      (sources."finalhandler-1.1.1" // {
         dependencies = [
-          sources."firstline-1.2.0"
+          sources."statuses-1.4.0"
         ];
       })
-      sources."find-parent-dir-0.3.0"
-      sources."firstline-2.0.2"
+      sources."find-0.2.7"
       sources."forever-agent-0.6.1"
       sources."form-data-2.3.3"
-      sources."fs-extra-8.1.0"
-      sources."fs-minipass-1.2.7"
-      sources."fs.realpath-1.0.0"
-      sources."fsevents-2.1.2"
+      sources."forwarded-0.1.2"
+      sources."fresh-0.5.2"
+      sources."fs-extra-2.0.0"
       sources."getpass-0.1.7"
-      sources."glob-7.1.6"
-      sources."glob-parent-5.1.0"
       sources."graceful-fs-4.2.3"
       sources."har-schema-2.0.0"
       sources."har-validator-5.1.3"
-      sources."has-flag-4.0.0"
+      sources."http-errors-1.7.2"
       sources."http-signature-1.2.0"
-      sources."inflight-1.0.6"
-      sources."inherits-2.0.4"
-      sources."is-binary-path-2.1.0"
-      sources."is-extglob-2.1.1"
-      sources."is-glob-4.0.1"
-      sources."is-number-7.0.0"
+      sources."iconv-lite-0.4.24"
+      sources."inherits-2.0.3"
+      sources."ipaddr.js-1.9.1"
+      sources."is-stream-1.1.0"
       sources."is-typedarray-1.0.0"
-      sources."isexe-2.0.0"
+      sources."is-wsl-1.1.0"
+      sources."isarray-1.0.0"
       sources."isstream-0.1.2"
       sources."jsbn-0.1.1"
       sources."json-schema-0.2.3"
       sources."json-schema-traverse-0.4.1"
       sources."json-stringify-safe-5.0.1"
-      sources."jsonfile-4.0.0"
+      sources."jsonfile-2.4.0"
       sources."jsprim-1.4.1"
       sources."lodash-4.17.15"
+      sources."media-typer-0.3.0"
+      sources."merge-descriptors-1.0.1"
+      sources."methods-1.1.2"
+      sources."mime-1.4.1"
       sources."mime-db-1.43.0"
       sources."mime-types-2.1.26"
-      sources."minimatch-3.0.4"
-      sources."minimist-1.2.5"
-      sources."minipass-2.9.0"
-      sources."minizlib-1.3.3"
-      (sources."mkdirp-0.5.1" // {
+      sources."minimist-1.2.0"
+      sources."ms-2.0.0"
+      sources."negotiator-0.6.2"
+      sources."node-watch-0.5.5"
+      sources."oauth-sign-0.9.0"
+      sources."on-finished-2.3.0"
+      sources."opn-5.4.0"
+      sources."options-0.0.6"
+      sources."os-homedir-1.0.2"
+      sources."os-tmpdir-1.0.2"
+      sources."parseurl-1.3.3"
+      sources."path-to-regexp-0.1.7"
+      sources."performance-now-2.1.0"
+      sources."process-nextick-args-1.0.7"
+      sources."proxy-addr-2.0.6"
+      sources."psl-1.7.0"
+      sources."punycode-2.1.1"
+      sources."qs-6.7.0"
+      sources."range-parser-1.2.1"
+      sources."raw-body-2.4.0"
+      sources."readable-stream-2.0.6"
+      sources."regenerator-runtime-0.9.6"
+      (sources."request-2.88.0" // {
         dependencies = [
-          sources."minimist-0.0.8"
+          sources."qs-6.5.2"
+          sources."safe-buffer-5.2.0"
         ];
       })
-      sources."murmur-hash-js-1.0.0"
-      sources."mustache-3.2.1"
-      sources."nice-try-1.0.5"
-      (sources."node-elm-compiler-5.0.4" // {
+      sources."safe-buffer-5.1.1"
+      sources."safer-buffer-2.1.2"
+      (sources."send-0.16.2" // {
         dependencies = [
-          sources."cross-spawn-6.0.5"
-          sources."path-key-2.0.1"
-          sources."shebang-command-1.2.0"
-          sources."shebang-regex-1.0.0"
-          sources."which-1.3.1"
+          sources."http-errors-1.6.3"
+          sources."setprototypeof-1.1.0"
+          sources."statuses-1.4.0"
         ];
       })
-      sources."normalize-path-3.0.0"
-      sources."oauth-sign-0.9.0"
-      sources."once-1.4.0"
-      sources."path-is-absolute-1.0.1"
-      sources."path-key-3.1.1"
-      sources."performance-now-2.1.0"
-      sources."picomatch-2.2.1"
-      sources."psl-1.7.0"
-      sources."punycode-2.1.1"
-      sources."qs-6.5.2"
-      sources."readdirp-3.2.0"
-      sources."request-2.88.2"
-      sources."request-promise-4.2.5"
-      sources."request-promise-core-1.1.3"
-      sources."rimraf-2.6.3"
-      sources."safe-buffer-5.2.0"
-      sources."safer-buffer-2.1.2"
-      sources."semver-5.7.1"
-      sources."shebang-command-2.0.0"
-      sources."shebang-regex-3.0.0"
-      sources."split-1.0.1"
+      sources."serve-static-1.13.2"
+      sources."setprototypeof-1.1.1"
       sources."sshpk-1.16.1"
-      sources."stealthy-require-1.1.1"
-      sources."supports-color-7.1.0"
-      sources."tar-4.4.13"
-      sources."temp-0.9.1"
-      sources."through-2.3.8"
-      sources."to-regex-range-5.0.1"
-      sources."tough-cookie-2.5.0"
-      sources."traverse-0.3.9"
+      sources."statuses-1.5.0"
+      sources."string_decoder-0.10.31"
+      sources."sums-0.2.4"
+      sources."through2-2.0.1"
+      sources."tmp-0.0.31"
+      sources."toidentifier-1.0.0"
+      (sources."tough-cookie-2.4.3" // {
+        dependencies = [
+          sources."punycode-1.4.1"
+        ];
+      })
+      sources."traverse-chain-0.1.0"
       sources."tunnel-agent-0.6.0"
       sources."tweetnacl-0.14.5"
-      sources."universalify-0.1.2"
-      sources."unzip-stream-0.3.0"
+      sources."type-is-1.6.18"
+      sources."typedarray-0.0.6"
+      sources."ultron-1.0.2"
+      sources."unpipe-1.0.0"
       sources."uri-js-4.2.2"
+      sources."util-deprecate-1.0.2"
+      sources."utils-merge-1.0.1"
       sources."uuid-3.4.0"
+      sources."vary-1.1.2"
       sources."verror-1.10.0"
-      sources."which-2.0.1"
-      sources."wrappy-1.0.2"
-      sources."xmlbuilder-13.0.2"
-      sources."yallist-3.1.1"
+      (sources."ws-3.3.1" // {
+        dependencies = [
+          sources."ultron-1.1.1"
+        ];
+      })
+      sources."xtend-4.0.2"
     ];
     buildInputs = globalBuildInputs;
     meta = {
-      description = "Run elm-test suites.";
-      homepage = "https://github.com/rtfeldman/node-test-runner#readme";
-      license = "BSD-3-Clause";
+      description = "A tool that allows you analyse your Elm code and identifies deficiencies and best practices.";
+      license = "MIT";
     };
     production = true;
     bypassCache = true;
     reconstructLock = true;
   };
-  elm-verify-examples = nodeEnv.buildNodePackage {
-    name = "elm-verify-examples";
-    packageName = "elm-verify-examples";
-    version = "5.0.0";
+  elm-coverage = nodeEnv.buildNodePackage {
+    name = "elm-coverage";
+    packageName = "elm-coverage";
+    version = "0.3.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/elm-verify-examples/-/elm-verify-examples-5.0.0.tgz";
-      sha512 = "dAOv+U9hXZ0IRGx19mkpCAdf5rUwoJWlzFmcR2gvOzE/QjZUSlPh3e0IIDAfGUuEF8DjfE5CTe31fNtIkkd2rQ==";
+      url = "https://registry.npmjs.org/elm-coverage/-/elm-coverage-0.3.0.tgz";
+      sha512 = "WHlO9LCu6DLzlIPR28GqcCgtyy6ZjRKBR+c6yYwy7m2o0D0buuLsr3wsZxJBjZYmwregmWRseUOM3DzHmoiIzg==";
     };
     dependencies = [
+      sources."@types/color-name-1.1.1"
+      sources."abbrev-1.1.1"
       sources."ajv-6.12.0"
       sources."ansi-regex-4.1.0"
       sources."ansi-styles-3.2.1"
       sources."anymatch-3.1.1"
       sources."asn1-0.2.4"
       sources."assert-plus-1.0.0"
+      sources."astral-regex-1.0.0"
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
       sources."aws4-1.9.1"
@@ -5156,29 +5420,43 @@ in
       sources."camelcase-5.3.1"
       sources."caseless-0.12.0"
       sources."chainsaw-0.1.0"
-      sources."chalk-2.4.2"
+      (sources."chalk-2.4.2" // {
+        dependencies = [
+          sources."supports-color-5.5.0"
+        ];
+      })
       sources."chokidar-3.2.1"
       sources."chownr-1.1.4"
-      sources."cliui-5.0.0"
+      (sources."cliui-6.0.0" // {
+        dependencies = [
+          sources."ansi-regex-5.0.0"
+          sources."emoji-regex-8.0.0"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.0"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
       sources."color-convert-1.9.3"
       sources."color-name-1.1.3"
       sources."combined-stream-1.0.8"
       sources."concat-map-0.0.1"
       sources."core-util-is-1.0.2"
-      (sources."cross-spawn-7.0.0" // {
-        dependencies = [
-          sources."which-1.3.1"
-        ];
-      })
+      sources."cross-spawn-5.1.0"
       sources."dashdash-1.14.1"
       sources."decamelize-1.2.0"
       sources."delayed-stream-1.0.0"
       sources."ecc-jsbn-0.1.2"
+      sources."elm-0.19.1"
       (sources."elm-test-0.19.1" // {
         dependencies = [
+          (sources."cross-spawn-7.0.0" // {
+            dependencies = [
+              sources."which-1.3.1"
+            ];
+          })
           sources."fs-extra-8.1.0"
-          sources."has-flag-4.0.0"
-          sources."supports-color-7.1.0"
+          sources."minimist-1.2.5"
+          sources."which-2.0.1"
         ];
       })
       sources."elmi-to-json-1.2.0"
@@ -5189,17 +5467,18 @@ in
       sources."fast-deep-equal-3.1.1"
       sources."fast-json-stable-stringify-2.1.0"
       sources."fill-range-7.0.1"
+      sources."find-0.2.9"
       (sources."find-elm-dependencies-2.0.2" // {
         dependencies = [
           sources."firstline-1.2.0"
         ];
       })
       sources."find-parent-dir-0.3.0"
-      sources."find-up-3.0.0"
+      sources."find-up-4.1.0"
       sources."firstline-2.0.2"
       sources."forever-agent-0.6.1"
       sources."form-data-2.3.3"
-      sources."fs-extra-5.0.0"
+      sources."fs-extra-4.0.3"
       sources."fs-minipass-1.2.7"
       sources."fs.realpath-1.0.0"
       sources."fsevents-2.1.2"
@@ -5220,6 +5499,7 @@ in
       sources."is-glob-4.0.1"
       sources."is-number-7.0.0"
       sources."is-typedarray-1.0.0"
+      sources."is-wsl-1.1.0"
       sources."isexe-2.0.0"
       sources."isstream-0.1.2"
       sources."jsbn-0.1.1"
@@ -5228,19 +5508,21 @@ in
       sources."json-stringify-safe-5.0.1"
       sources."jsonfile-4.0.0"
       sources."jsprim-1.4.1"
-      sources."locate-path-3.0.0"
+      sources."locate-path-5.0.0"
       sources."lodash-4.17.15"
+      (sources."lru-cache-4.1.5" // {
+        dependencies = [
+          sources."yallist-2.1.2"
+        ];
+      })
       sources."mime-db-1.43.0"
       sources."mime-types-2.1.26"
       sources."minimatch-3.0.4"
-      sources."minimist-1.2.5"
+      sources."minimist-0.0.8"
       sources."minipass-2.9.0"
       sources."minizlib-1.3.3"
-      (sources."mkdirp-0.5.1" // {
-        dependencies = [
-          sources."minimist-0.0.8"
-        ];
-      })
+      sources."mkdirp-0.5.1"
+      sources."moment-2.24.0"
       sources."murmur-hash-js-1.0.0"
       sources."mustache-3.2.1"
       sources."nice-try-1.0.5"
@@ -5248,20 +5530,23 @@ in
         dependencies = [
           sources."cross-spawn-6.0.5"
           sources."path-key-2.0.1"
-          sources."which-1.3.1"
         ];
       })
+      sources."nopt-1.0.10"
       sources."normalize-path-3.0.0"
       sources."oauth-sign-0.9.0"
       sources."once-1.4.0"
+      sources."opn-5.5.0"
+      sources."os-tmpdir-1.0.2"
       sources."p-limit-2.2.2"
-      sources."p-locate-3.0.0"
+      sources."p-locate-4.1.0"
       sources."p-try-2.2.0"
-      sources."path-exists-3.0.0"
+      sources."path-exists-4.0.0"
       sources."path-is-absolute-1.0.1"
       sources."path-key-3.1.1"
       sources."performance-now-2.1.0"
       sources."picomatch-2.2.1"
+      sources."pseudomap-1.0.2"
       sources."psl-1.7.0"
       sources."punycode-2.1.1"
       sources."qs-6.5.2"
@@ -5271,49 +5556,75 @@ in
       sources."request-promise-core-1.1.3"
       sources."require-directory-2.1.1"
       sources."require-main-filename-2.0.0"
-      sources."rimraf-2.7.1"
+      sources."rimraf-2.6.3"
       sources."safe-buffer-5.2.0"
       sources."safer-buffer-2.1.2"
       sources."semver-5.7.1"
       sources."set-blocking-2.0.0"
       sources."shebang-command-1.2.0"
       sources."shebang-regex-1.0.0"
+      sources."slice-ansi-2.1.0"
       sources."split-1.0.1"
       sources."sshpk-1.16.1"
       sources."stealthy-require-1.1.1"
       sources."string-width-3.1.0"
       sources."strip-ansi-5.2.0"
-      sources."supports-color-5.5.0"
-      sources."tar-4.4.13"
-      (sources."temp-0.9.0" // {
+      (sources."supports-color-7.1.0" // {
         dependencies = [
-          sources."rimraf-2.6.3"
+          sources."has-flag-4.0.0"
         ];
       })
+      sources."table-5.4.6"
+      sources."tar-4.4.13"
+      sources."temp-0.9.0"
       sources."through-2.3.8"
+      sources."tmp-0.0.33"
       sources."to-regex-range-5.0.1"
+      sources."touch-3.1.0"
       sources."tough-cookie-2.5.0"
       sources."traverse-0.3.9"
+      sources."traverse-chain-0.1.0"
       sources."tunnel-agent-0.6.0"
       sources."tweetnacl-0.14.5"
       sources."universalify-0.1.2"
       sources."unzip-stream-0.3.0"
+      sources."upgrade-1.1.0"
       sources."uri-js-4.2.2"
       sources."uuid-3.4.0"
       sources."verror-1.10.0"
-      sources."which-2.0.1"
+      sources."which-1.3.1"
       sources."which-module-2.0.0"
-      sources."wrap-ansi-5.1.0"
+      (sources."wrap-ansi-6.2.0" // {
+        dependencies = [
+          sources."ansi-regex-5.0.0"
+          sources."ansi-styles-4.2.1"
+          sources."color-convert-2.0.1"
+          sources."color-name-1.1.4"
+          sources."emoji-regex-8.0.0"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.0"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
       sources."wrappy-1.0.2"
       sources."xmlbuilder-13.0.2"
       sources."y18n-4.0.0"
       sources."yallist-3.1.1"
-      sources."yargs-13.3.2"
-      sources."yargs-parser-13.1.2"
+      (sources."yargs-15.3.1" // {
+        dependencies = [
+          sources."ansi-regex-5.0.0"
+          sources."emoji-regex-8.0.0"
+          sources."is-fullwidth-code-point-3.0.0"
+          sources."string-width-4.2.0"
+          sources."strip-ansi-6.0.0"
+        ];
+      })
+      sources."yargs-parser-18.1.1"
     ];
     buildInputs = globalBuildInputs;
     meta = {
-      description = "Verify examples in Elm doc-comments";
+      description = "> Work in progress - Code coverage tooling for Elm";
+      homepage = "https://github.com/zwilias/elm-coverage#readme";
       license = "BSD-3-Clause";
     };
     production = true;
@@ -5736,97 +6047,22 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  elm-upgrade = nodeEnv.buildNodePackage {
-    name = "elm-upgrade";
-    packageName = "elm-upgrade";
-    version = "0.19.8";
-    src = fetchurl {
-      url = "https://registry.npmjs.org/elm-upgrade/-/elm-upgrade-0.19.8.tgz";
-      sha512 = "SwNzV40wu9IEe35TWR9b7F8WctIRUkpl6F3lzF0AqmYnCcKjbzrxbW6G7DYfA9ICUYjuSLcyYJKm5c86oMiH8w==";
-    };
-    dependencies = [
-      sources."@sindresorhus/is-2.1.0"
-      sources."@szmarczak/http-timer-4.0.5"
-      sources."@types/cacheable-request-6.0.1"
-      sources."@types/http-cache-semantics-4.0.0"
-      sources."@types/keyv-3.1.1"
-      sources."@types/node-13.9.1"
-      sources."@types/responselike-1.0.0"
-      sources."cacheable-lookup-2.0.0"
-      sources."cacheable-request-7.0.1"
-      sources."caw-2.0.1"
-      (sources."clone-response-1.0.2" // {
-        dependencies = [
-          sources."mimic-response-1.0.1"
-        ];
-      })
-      sources."config-chain-1.1.12"
-      sources."decompress-response-5.0.0"
-      sources."defer-to-connect-2.0.0"
-      sources."duplexer3-0.1.4"
-      sources."end-of-stream-1.4.4"
-      sources."fs-extra-8.1.0"
-      sources."get-proxy-2.1.0"
-      sources."get-stream-5.1.0"
-      sources."got-10.6.0"
-      sources."graceful-fs-4.2.3"
-      sources."has-symbol-support-x-1.4.2"
-      sources."has-to-string-tag-x-1.4.1"
-      sources."http-cache-semantics-4.1.0"
-      sources."ini-1.3.5"
-      sources."is-object-1.0.1"
-      sources."isexe-2.0.0"
-      sources."isurl-1.0.0"
-      sources."json-buffer-3.0.1"
-      sources."jsonfile-4.0.0"
-      sources."keyv-4.0.0"
-      sources."lowercase-keys-2.0.0"
-      sources."mimic-response-2.1.0"
-      sources."normalize-url-4.5.0"
-      sources."npm-conf-1.1.3"
-      sources."once-1.4.0"
-      sources."p-cancelable-2.0.0"
-      sources."p-event-4.1.0"
-      sources."p-finally-1.0.0"
-      sources."p-timeout-2.0.1"
-      sources."pify-3.0.0"
-      sources."proto-list-1.2.4"
-      sources."pump-3.0.0"
-      sources."responselike-2.0.0"
-      sources."safe-buffer-5.2.0"
-      sources."safename-1.0.2"
-      sources."semver-7.1.3"
-      sources."to-readable-stream-2.1.0"
-      sources."tunnel-agent-0.6.0"
-      sources."type-fest-0.10.0"
-      sources."universalify-0.1.2"
-      sources."url-to-options-1.0.1"
-      sources."which-2.0.2"
-      sources."wrappy-1.0.2"
-      sources."yn-4.0.0"
-    ];
-    buildInputs = globalBuildInputs;
-    meta = {
-      description = "Upgrade Elm projects";
-      homepage = "https://github.com/avh4/elm-upgrade#readme";
-      license = "MIT";
-    };
-    production = true;
-    bypassCache = true;
-    reconstructLock = true;
-  };
-  elm-analyse = nodeEnv.buildNodePackage {
-    name = "elm-analyse";
-    packageName = "elm-analyse";
-    version = "0.16.5";
+  "@elm-tooling/elm-language-server" = nodeEnv.buildNodePackage {
+    name = "_at_elm-tooling_slash_elm-language-server";
+    packageName = "@elm-tooling/elm-language-server";
+    version = "1.6.3";
     src = fetchurl {
-      url = "https://registry.npmjs.org/elm-analyse/-/elm-analyse-0.16.5.tgz";
-      sha512 = "I7dgGFOc+mYDcDuyo1/HcIn3E5MiMbocStNzivsPSjCUviuEieHdDKZmJJ9uM3IdCu0fdBmRNWQBSOXtXrgzKg==";
+      url = "https://registry.npmjs.org/@elm-tooling/elm-language-server/-/elm-language-server-1.6.3.tgz";
+      sha512 = "8liKU5tfKrldgNtE8GNGEUlZM+o7Qfjycn3gnyzzKqWEBCjkxeuU6VwWaIozw5k/xfJqHcIDb5nFPsqEadO5Ig==";
     };
     dependencies = [
+      sources."@nodelib/fs.scandir-2.1.3"
+      sources."@nodelib/fs.stat-2.0.3"
+      sources."@nodelib/fs.walk-1.2.4"
       sources."accepts-1.3.7"
       sources."ajv-6.12.0"
       sources."array-flatten-1.1.1"
+      sources."array-union-2.1.0"
       sources."asn1-0.2.4"
       sources."assert-plus-1.0.0"
       sources."async-limiter-1.0.1"
@@ -5836,6 +6072,7 @@ in
       sources."babel-runtime-6.18.0"
       sources."bcrypt-pbkdf-1.0.2"
       sources."body-parser-1.19.0"
+      sources."braces-3.0.2"
       sources."bytes-3.1.0"
       sources."caseless-0.12.0"
       sources."combined-stream-1.0.8"
@@ -5846,16 +6083,25 @@ in
       sources."cookie-signature-1.0.6"
       sources."core-js-2.6.11"
       sources."core-util-is-1.0.2"
+      sources."cross-spawn-7.0.1"
       sources."dashdash-1.14.1"
       sources."debug-2.6.9"
       sources."delayed-stream-1.0.0"
       sources."depd-1.1.2"
       sources."destroy-1.0.4"
+      sources."dir-glob-3.0.1"
       sources."ecc-jsbn-0.1.2"
       sources."ee-first-1.1.1"
+      sources."elm-analyse-git://github.com/elm-tooling/elm-analyse#1a665a6e540d7d11b29b3c5e3c52089704325d9c"
       sources."encodeurl-1.0.2"
+      sources."end-of-stream-1.4.4"
       sources."escape-html-1.0.3"
       sources."etag-1.8.1"
+      (sources."execa-4.0.0" // {
+        dependencies = [
+          sources."is-stream-2.0.0"
+        ];
+      })
       (sources."express-4.16.3" // {
         dependencies = [
           sources."body-parser-1.18.2"
@@ -5882,7 +6128,11 @@ in
       sources."extend-3.0.2"
       sources."extsprintf-1.3.0"
       sources."fast-deep-equal-3.1.1"
+      sources."fast-diff-1.2.0"
+      sources."fast-glob-3.2.2"
       sources."fast-json-stable-stringify-2.1.0"
+      sources."fastq-1.6.1"
+      sources."fill-range-7.0.1"
       (sources."finalhandler-1.1.1" // {
         dependencies = [
           sources."statuses-1.4.0"
@@ -5894,19 +6144,28 @@ in
       sources."forwarded-0.1.2"
       sources."fresh-0.5.2"
       sources."fs-extra-2.0.0"
+      sources."get-stream-5.1.0"
       sources."getpass-0.1.7"
+      sources."glob-parent-5.1.0"
+      sources."globby-11.0.0"
       sources."graceful-fs-4.2.3"
       sources."har-schema-2.0.0"
       sources."har-validator-5.1.3"
       sources."http-errors-1.7.2"
       sources."http-signature-1.2.0"
+      sources."human-signals-1.1.1"
       sources."iconv-lite-0.4.24"
+      sources."ignore-5.1.4"
       sources."inherits-2.0.3"
       sources."ipaddr.js-1.9.1"
+      sources."is-extglob-2.1.1"
+      sources."is-glob-4.0.1"
+      sources."is-number-7.0.0"
       sources."is-stream-1.1.0"
       sources."is-typedarray-1.0.0"
       sources."is-wsl-1.1.0"
       sources."isarray-1.0.0"
+      sources."isexe-2.0.0"
       sources."isstream-0.1.2"
       sources."jsbn-0.1.1"
       sources."json-schema-0.2.3"
@@ -5917,26 +6176,38 @@ in
       sources."lodash-4.17.15"
       sources."media-typer-0.3.0"
       sources."merge-descriptors-1.0.1"
+      sources."merge-stream-2.0.0"
+      sources."merge2-1.3.0"
       sources."methods-1.1.2"
+      sources."micromatch-4.0.2"
       sources."mime-1.4.1"
       sources."mime-db-1.43.0"
       sources."mime-types-2.1.26"
+      sources."mimic-fn-2.1.0"
       sources."minimist-1.2.0"
       sources."ms-2.0.0"
       sources."negotiator-0.6.2"
       sources."node-watch-0.5.5"
+      sources."npm-run-path-4.0.1"
       sources."oauth-sign-0.9.0"
       sources."on-finished-2.3.0"
+      sources."once-1.4.0"
+      sources."onetime-5.1.0"
       sources."opn-5.4.0"
       sources."options-0.0.6"
       sources."os-homedir-1.0.2"
       sources."os-tmpdir-1.0.2"
       sources."parseurl-1.3.3"
+      sources."path-key-3.1.1"
       sources."path-to-regexp-0.1.7"
+      sources."path-type-4.0.0"
       sources."performance-now-2.1.0"
+      sources."picomatch-2.2.1"
+      sources."pjson-1.0.9"
       sources."process-nextick-args-1.0.7"
       sources."proxy-addr-2.0.6"
       sources."psl-1.7.0"
+      sources."pump-3.0.0"
       sources."punycode-2.1.1"
       sources."qs-6.7.0"
       sources."range-parser-1.2.1"
@@ -5949,6 +6220,9 @@ in
           sources."safe-buffer-5.2.0"
         ];
       })
+      sources."reusify-1.0.4"
+      sources."run-parallel-1.1.9"
+      sources."rxjs-6.5.4"
       sources."safe-buffer-5.1.1"
       sources."safer-buffer-2.1.2"
       (sources."send-0.16.2" // {
@@ -5960,12 +6234,18 @@ in
       })
       sources."serve-static-1.13.2"
       sources."setprototypeof-1.1.1"
+      sources."shebang-command-2.0.0"
+      sources."shebang-regex-3.0.0"
+      sources."signal-exit-3.0.2"
+      sources."slash-3.0.0"
       sources."sshpk-1.16.1"
       sources."statuses-1.5.0"
       sources."string_decoder-0.10.31"
+      sources."strip-final-newline-2.0.0"
       sources."sums-0.2.4"
       sources."through2-2.0.1"
       sources."tmp-0.0.31"
+      sources."to-regex-range-5.0.1"
       sources."toidentifier-1.0.0"
       (sources."tough-cookie-2.4.3" // {
         dependencies = [
@@ -5973,6 +6253,7 @@ in
         ];
       })
       sources."traverse-chain-0.1.0"
+      sources."tslib-1.11.1"
       sources."tunnel-agent-0.6.0"
       sources."tweetnacl-0.14.5"
       sources."type-is-1.6.18"
@@ -5985,6 +6266,15 @@ in
       sources."uuid-3.4.0"
       sources."vary-1.1.2"
       sources."verror-1.10.0"
+      sources."vscode-jsonrpc-5.0.1"
+      sources."vscode-languageserver-6.1.1"
+      sources."vscode-languageserver-protocol-3.15.3"
+      sources."vscode-languageserver-textdocument-1.0.1"
+      sources."vscode-languageserver-types-3.15.1"
+      sources."vscode-uri-2.1.1"
+      sources."web-tree-sitter-0.16.2"
+      sources."which-2.0.2"
+      sources."wrappy-1.0.2"
       (sources."ws-3.3.1" // {
         dependencies = [
           sources."ultron-1.1.1"
@@ -5994,7 +6284,8 @@ in
     ];
     buildInputs = globalBuildInputs;
     meta = {
-      description = "A tool that allows you analyse your Elm code and identifies deficiencies and best practices.";
+      description = "Implementation of an elm language server in node.";
+      homepage = "https://github.com/elm-tooling/elm-language-server#readme";
       license = "MIT";
     };
     production = true;
@@ -6031,7 +6322,7 @@ in
       sources."elm-hot-1.1.4"
       sources."encodeurl-1.0.2"
       sources."end-of-stream-1.4.4"
-      sources."es6-promisify-6.0.2"
+      sources."es6-promisify-6.1.0"
       sources."escape-html-1.0.3"
       sources."escape-string-regexp-1.0.5"
       sources."etag-1.8.1"
@@ -6123,291 +6414,478 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
-  elm-xref = nodeEnv.buildNodePackage {
-    name = "elm-xref";
-    packageName = "elm-xref";
-    version = "4.1.0";
+  elm-test = nodeEnv.buildNodePackage {
+    name = "elm-test";
+    packageName = "elm-test";
+    version = "0.19.1-revision2";
     src = fetchurl {
-      url = "https://registry.npmjs.org/elm-xref/-/elm-xref-4.1.0.tgz";
-      sha512 = "23nVGYsArS2DZ0RnFq6cKYO49pCjuLULhM+fvBcfA7ZIbKSw5WkDyK9c5hlQEm+JZAPZ43PNcI0yLzTEqaajiA==";
+      url = "https://registry.npmjs.org/elm-test/-/elm-test-0.19.1-revision2.tgz";
+      sha512 = "zVs2mVeyIE+K9y7/8b333h5xRMDWAoqbBDm7ThLDhyTi7ICxeL3t5uOS4KZCrRk9+4sP6+voSbcBlgr46Q+GiQ==";
     };
     dependencies = [
+      sources."@types/color-name-1.1.1"
+      sources."ajv-6.12.0"
+      sources."ansi-styles-4.2.1"
+      sources."anymatch-3.1.1"
+      sources."asn1-0.2.4"
+      sources."assert-plus-1.0.0"
+      sources."asynckit-0.4.0"
+      sources."aws-sign2-0.7.0"
+      sources."aws4-1.9.1"
+      sources."balanced-match-1.0.0"
+      sources."bcrypt-pbkdf-1.0.2"
+      sources."binary-0.3.0"
+      sources."binary-extensions-2.0.0"
+      sources."binwrap-0.2.2"
       sources."bluebird-3.7.2"
-      sources."compare-versions-3.6.0"
+      sources."brace-expansion-1.1.11"
+      sources."braces-3.0.2"
+      sources."buffers-0.1.1"
+      sources."caseless-0.12.0"
+      sources."chainsaw-0.1.0"
+      sources."chalk-3.0.0"
+      sources."chokidar-3.3.0"
+      sources."chownr-1.1.4"
+      sources."color-convert-2.0.1"
+      sources."color-name-1.1.4"
+      sources."combined-stream-1.0.8"
+      sources."concat-map-0.0.1"
       sources."core-util-is-1.0.2"
-      sources."fs-extra-6.0.1"
+      sources."cross-spawn-7.0.1"
+      sources."dashdash-1.14.1"
+      sources."delayed-stream-1.0.0"
+      sources."ecc-jsbn-0.1.2"
+      sources."elmi-to-json-1.3.0"
+      sources."extend-3.0.2"
+      sources."extsprintf-1.3.0"
+      sources."fast-deep-equal-3.1.1"
+      sources."fast-json-stable-stringify-2.1.0"
+      sources."fill-range-7.0.1"
+      (sources."find-elm-dependencies-2.0.2" // {
+        dependencies = [
+          sources."firstline-1.2.0"
+        ];
+      })
+      sources."find-parent-dir-0.3.0"
+      sources."firstline-2.0.2"
+      sources."forever-agent-0.6.1"
+      sources."form-data-2.3.3"
+      sources."fs-extra-8.1.0"
+      sources."fs-minipass-1.2.7"
+      sources."fs.realpath-1.0.0"
+      sources."fsevents-2.1.2"
+      sources."getpass-0.1.7"
+      sources."glob-7.1.6"
+      sources."glob-parent-5.1.0"
       sources."graceful-fs-4.2.3"
+      sources."har-schema-2.0.0"
+      sources."har-validator-5.1.3"
+      sources."has-flag-4.0.0"
+      sources."http-signature-1.2.0"
+      sources."inflight-1.0.6"
       sources."inherits-2.0.4"
-      sources."isarray-1.0.0"
+      sources."is-binary-path-2.1.0"
+      sources."is-extglob-2.1.1"
+      sources."is-glob-4.0.1"
+      sources."is-number-7.0.0"
+      sources."is-typedarray-1.0.0"
+      sources."isexe-2.0.0"
+      sources."isstream-0.1.2"
+      sources."jsbn-0.1.1"
+      sources."json-schema-0.2.3"
+      sources."json-schema-traverse-0.4.1"
+      sources."json-stringify-safe-5.0.1"
       sources."jsonfile-4.0.0"
-      sources."klaw-2.1.1"
+      sources."jsprim-1.4.1"
+      sources."lodash-4.17.15"
+      sources."mime-db-1.43.0"
+      sources."mime-types-2.1.26"
+      sources."minimatch-3.0.4"
       sources."minimist-1.2.5"
-      sources."process-nextick-args-2.0.1"
-      sources."readable-stream-2.3.7"
-      sources."safe-buffer-5.1.2"
-      sources."semver-6.3.0"
-      sources."semver-regex-1.0.0"
-      (sources."semver-sort-0.0.4" // {
+      sources."minipass-2.9.0"
+      sources."minizlib-1.3.3"
+      (sources."mkdirp-0.5.1" // {
         dependencies = [
-          sources."semver-5.7.1"
+          sources."minimist-0.0.8"
         ];
       })
-      sources."string_decoder-1.1.1"
-      sources."through2-2.0.5"
+      sources."murmur-hash-js-1.0.0"
+      sources."mustache-3.2.1"
+      sources."nice-try-1.0.5"
+      (sources."node-elm-compiler-5.0.4" // {
+        dependencies = [
+          sources."cross-spawn-6.0.5"
+          sources."path-key-2.0.1"
+          sources."shebang-command-1.2.0"
+          sources."shebang-regex-1.0.0"
+          sources."which-1.3.1"
+        ];
+      })
+      sources."normalize-path-3.0.0"
+      sources."oauth-sign-0.9.0"
+      sources."once-1.4.0"
+      sources."path-is-absolute-1.0.1"
+      sources."path-key-3.1.1"
+      sources."performance-now-2.1.0"
+      sources."picomatch-2.2.1"
+      sources."psl-1.7.0"
+      sources."punycode-2.1.1"
+      sources."qs-6.5.2"
+      sources."readdirp-3.2.0"
+      sources."request-2.88.2"
+      sources."request-promise-4.2.5"
+      sources."request-promise-core-1.1.3"
+      sources."rimraf-2.6.3"
+      sources."safe-buffer-5.2.0"
+      sources."safer-buffer-2.1.2"
+      sources."semver-5.7.1"
+      sources."shebang-command-2.0.0"
+      sources."shebang-regex-3.0.0"
+      sources."split-1.0.1"
+      sources."sshpk-1.16.1"
+      sources."stealthy-require-1.1.1"
+      sources."supports-color-7.1.0"
+      sources."tar-4.4.13"
+      sources."temp-0.9.1"
+      sources."through-2.3.8"
+      sources."to-regex-range-5.0.1"
+      sources."tough-cookie-2.5.0"
+      sources."traverse-0.3.9"
+      sources."tunnel-agent-0.6.0"
+      sources."tweetnacl-0.14.5"
       sources."universalify-0.1.2"
-      sources."util-deprecate-1.0.2"
-      sources."xtend-4.0.2"
+      sources."unzip-stream-0.3.0"
+      sources."uri-js-4.2.2"
+      sources."uuid-3.4.0"
+      sources."verror-1.10.0"
+      sources."which-2.0.1"
+      sources."wrappy-1.0.2"
+      sources."xmlbuilder-13.0.2"
+      sources."yallist-3.1.1"
     ];
     buildInputs = globalBuildInputs;
     meta = {
-      description = "Cross referencing tool for Elm - find usages and unused code";
-      homepage = "https://github.com/zwilias/elm-xref#readme";
+      description = "Run elm-test suites.";
+      homepage = "https://github.com/rtfeldman/node-test-runner#readme";
       license = "BSD-3-Clause";
     };
     production = true;
     bypassCache = true;
     reconstructLock = true;
   };
-  "@elm-tooling/elm-language-server" = nodeEnv.buildNodePackage {
-    name = "_at_elm-tooling_slash_elm-language-server";
-    packageName = "@elm-tooling/elm-language-server";
-    version = "1.6.3";
+  elm-upgrade = nodeEnv.buildNodePackage {
+    name = "elm-upgrade";
+    packageName = "elm-upgrade";
+    version = "0.19.8";
     src = fetchurl {
-      url = "https://registry.npmjs.org/@elm-tooling/elm-language-server/-/elm-language-server-1.6.3.tgz";
-      sha512 = "8liKU5tfKrldgNtE8GNGEUlZM+o7Qfjycn3gnyzzKqWEBCjkxeuU6VwWaIozw5k/xfJqHcIDb5nFPsqEadO5Ig==";
+      url = "https://registry.npmjs.org/elm-upgrade/-/elm-upgrade-0.19.8.tgz";
+      sha512 = "SwNzV40wu9IEe35TWR9b7F8WctIRUkpl6F3lzF0AqmYnCcKjbzrxbW6G7DYfA9ICUYjuSLcyYJKm5c86oMiH8w==";
+    };
+    dependencies = [
+      sources."@sindresorhus/is-2.1.0"
+      sources."@szmarczak/http-timer-4.0.5"
+      sources."@types/cacheable-request-6.0.1"
+      sources."@types/http-cache-semantics-4.0.0"
+      sources."@types/keyv-3.1.1"
+      sources."@types/node-13.9.1"
+      sources."@types/responselike-1.0.0"
+      sources."cacheable-lookup-2.0.0"
+      sources."cacheable-request-7.0.1"
+      sources."caw-2.0.1"
+      (sources."clone-response-1.0.2" // {
+        dependencies = [
+          sources."mimic-response-1.0.1"
+        ];
+      })
+      sources."config-chain-1.1.12"
+      sources."decompress-response-5.0.0"
+      sources."defer-to-connect-2.0.0"
+      sources."duplexer3-0.1.4"
+      sources."end-of-stream-1.4.4"
+      sources."fs-extra-8.1.0"
+      sources."get-proxy-2.1.0"
+      sources."get-stream-5.1.0"
+      sources."got-10.6.0"
+      sources."graceful-fs-4.2.3"
+      sources."has-symbol-support-x-1.4.2"
+      sources."has-to-string-tag-x-1.4.1"
+      sources."http-cache-semantics-4.1.0"
+      sources."ini-1.3.5"
+      sources."is-object-1.0.1"
+      sources."isexe-2.0.0"
+      sources."isurl-1.0.0"
+      sources."json-buffer-3.0.1"
+      sources."jsonfile-4.0.0"
+      sources."keyv-4.0.0"
+      sources."lowercase-keys-2.0.0"
+      sources."mimic-response-2.1.0"
+      sources."normalize-url-4.5.0"
+      sources."npm-conf-1.1.3"
+      sources."once-1.4.0"
+      sources."p-cancelable-2.0.0"
+      sources."p-event-4.1.0"
+      sources."p-finally-1.0.0"
+      sources."p-timeout-2.0.1"
+      sources."pify-3.0.0"
+      sources."proto-list-1.2.4"
+      sources."pump-3.0.0"
+      sources."responselike-2.0.0"
+      sources."safe-buffer-5.2.0"
+      sources."safename-1.0.2"
+      sources."semver-7.1.3"
+      sources."to-readable-stream-2.1.0"
+      sources."tunnel-agent-0.6.0"
+      sources."type-fest-0.10.0"
+      sources."universalify-0.1.2"
+      sources."url-to-options-1.0.1"
+      sources."which-2.0.2"
+      sources."wrappy-1.0.2"
+      sources."yn-4.0.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Upgrade Elm projects";
+      homepage = "https://github.com/avh4/elm-upgrade#readme";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+  elm-verify-examples = nodeEnv.buildNodePackage {
+    name = "elm-verify-examples";
+    packageName = "elm-verify-examples";
+    version = "5.0.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/elm-verify-examples/-/elm-verify-examples-5.0.0.tgz";
+      sha512 = "dAOv+U9hXZ0IRGx19mkpCAdf5rUwoJWlzFmcR2gvOzE/QjZUSlPh3e0IIDAfGUuEF8DjfE5CTe31fNtIkkd2rQ==";
     };
     dependencies = [
-      sources."@nodelib/fs.scandir-2.1.3"
-      sources."@nodelib/fs.stat-2.0.3"
-      sources."@nodelib/fs.walk-1.2.4"
-      sources."accepts-1.3.7"
       sources."ajv-6.12.0"
-      sources."array-flatten-1.1.1"
-      sources."array-union-2.1.0"
+      sources."ansi-regex-4.1.0"
+      sources."ansi-styles-3.2.1"
+      sources."anymatch-3.1.1"
       sources."asn1-0.2.4"
       sources."assert-plus-1.0.0"
-      sources."async-limiter-1.0.1"
       sources."asynckit-0.4.0"
       sources."aws-sign2-0.7.0"
       sources."aws4-1.9.1"
-      sources."babel-runtime-6.18.0"
+      sources."balanced-match-1.0.0"
       sources."bcrypt-pbkdf-1.0.2"
-      sources."body-parser-1.19.0"
+      sources."binary-0.3.0"
+      sources."binary-extensions-2.0.0"
+      sources."binwrap-0.2.2"
+      sources."bluebird-3.7.2"
+      sources."brace-expansion-1.1.11"
       sources."braces-3.0.2"
-      sources."bytes-3.1.0"
+      sources."buffers-0.1.1"
+      sources."camelcase-5.3.1"
       sources."caseless-0.12.0"
+      sources."chainsaw-0.1.0"
+      sources."chalk-2.4.2"
+      sources."chokidar-3.2.1"
+      sources."chownr-1.1.4"
+      sources."cliui-5.0.0"
+      sources."color-convert-1.9.3"
+      sources."color-name-1.1.3"
       sources."combined-stream-1.0.8"
-      sources."concat-stream-1.5.2"
-      sources."content-disposition-0.5.2"
-      sources."content-type-1.0.4"
-      sources."cookie-0.3.1"
-      sources."cookie-signature-1.0.6"
-      sources."core-js-2.6.11"
+      sources."concat-map-0.0.1"
       sources."core-util-is-1.0.2"
-      sources."cross-spawn-7.0.1"
-      sources."dashdash-1.14.1"
-      sources."debug-2.6.9"
-      sources."delayed-stream-1.0.0"
-      sources."depd-1.1.2"
-      sources."destroy-1.0.4"
-      sources."dir-glob-3.0.1"
-      sources."ecc-jsbn-0.1.2"
-      sources."ee-first-1.1.1"
-      sources."elm-analyse-git://github.com/elm-tooling/elm-analyse#1a665a6e540d7d11b29b3c5e3c52089704325d9c"
-      sources."encodeurl-1.0.2"
-      sources."end-of-stream-1.4.4"
-      sources."escape-html-1.0.3"
-      sources."etag-1.8.1"
-      (sources."execa-4.0.0" // {
-        dependencies = [
-          sources."is-stream-2.0.0"
-        ];
-      })
-      (sources."express-4.16.3" // {
+      (sources."cross-spawn-7.0.0" // {
         dependencies = [
-          sources."body-parser-1.18.2"
-          sources."bytes-3.0.0"
-          sources."http-errors-1.6.3"
-          sources."iconv-lite-0.4.19"
-          sources."qs-6.5.1"
-          (sources."raw-body-2.3.2" // {
-            dependencies = [
-              sources."depd-1.1.1"
-              sources."http-errors-1.6.2"
-              sources."setprototypeof-1.0.3"
-            ];
-          })
-          sources."setprototypeof-1.1.0"
-          sources."statuses-1.4.0"
+          sources."which-1.3.1"
         ];
       })
-      (sources."express-ws-2.0.0" // {
+      sources."dashdash-1.14.1"
+      sources."decamelize-1.2.0"
+      sources."delayed-stream-1.0.0"
+      sources."ecc-jsbn-0.1.2"
+      (sources."elm-test-0.19.1" // {
         dependencies = [
-          sources."ws-1.1.5"
+          sources."fs-extra-8.1.0"
+          sources."has-flag-4.0.0"
+          sources."supports-color-7.1.0"
         ];
       })
+      sources."elmi-to-json-1.2.0"
+      sources."emoji-regex-7.0.3"
+      sources."escape-string-regexp-1.0.5"
       sources."extend-3.0.2"
       sources."extsprintf-1.3.0"
       sources."fast-deep-equal-3.1.1"
-      sources."fast-diff-1.2.0"
-      sources."fast-glob-3.2.2"
       sources."fast-json-stable-stringify-2.1.0"
-      sources."fastq-1.6.1"
       sources."fill-range-7.0.1"
-      (sources."finalhandler-1.1.1" // {
+      (sources."find-elm-dependencies-2.0.2" // {
         dependencies = [
-          sources."statuses-1.4.0"
+          sources."firstline-1.2.0"
         ];
       })
-      sources."find-0.2.7"
+      sources."find-parent-dir-0.3.0"
+      sources."find-up-3.0.0"
+      sources."firstline-2.0.2"
       sources."forever-agent-0.6.1"
       sources."form-data-2.3.3"
-      sources."forwarded-0.1.2"
-      sources."fresh-0.5.2"
-      sources."fs-extra-2.0.0"
-      sources."get-stream-5.1.0"
+      sources."fs-extra-5.0.0"
+      sources."fs-minipass-1.2.7"
+      sources."fs.realpath-1.0.0"
+      sources."fsevents-2.1.2"
+      sources."get-caller-file-2.0.5"
       sources."getpass-0.1.7"
+      sources."glob-7.1.4"
       sources."glob-parent-5.1.0"
-      sources."globby-11.0.0"
       sources."graceful-fs-4.2.3"
       sources."har-schema-2.0.0"
       sources."har-validator-5.1.3"
-      sources."http-errors-1.7.2"
+      sources."has-flag-3.0.0"
       sources."http-signature-1.2.0"
-      sources."human-signals-1.1.1"
-      sources."iconv-lite-0.4.24"
-      sources."ignore-5.1.4"
-      sources."inherits-2.0.3"
-      sources."ipaddr.js-1.9.1"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."is-binary-path-2.1.0"
       sources."is-extglob-2.1.1"
+      sources."is-fullwidth-code-point-2.0.0"
       sources."is-glob-4.0.1"
       sources."is-number-7.0.0"
-      sources."is-stream-1.1.0"
       sources."is-typedarray-1.0.0"
-      sources."is-wsl-1.1.0"
-      sources."isarray-1.0.0"
       sources."isexe-2.0.0"
       sources."isstream-0.1.2"
       sources."jsbn-0.1.1"
       sources."json-schema-0.2.3"
       sources."json-schema-traverse-0.4.1"
       sources."json-stringify-safe-5.0.1"
-      sources."jsonfile-2.4.0"
+      sources."jsonfile-4.0.0"
       sources."jsprim-1.4.1"
+      sources."locate-path-3.0.0"
       sources."lodash-4.17.15"
-      sources."media-typer-0.3.0"
-      sources."merge-descriptors-1.0.1"
-      sources."merge-stream-2.0.0"
-      sources."merge2-1.3.0"
-      sources."methods-1.1.2"
-      sources."micromatch-4.0.2"
-      sources."mime-1.4.1"
       sources."mime-db-1.43.0"
       sources."mime-types-2.1.26"
-      sources."mimic-fn-2.1.0"
-      sources."minimist-1.2.0"
-      sources."ms-2.0.0"
-      sources."negotiator-0.6.2"
-      sources."node-watch-0.5.5"
-      sources."npm-run-path-4.0.1"
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      sources."minipass-2.9.0"
+      sources."minizlib-1.3.3"
+      (sources."mkdirp-0.5.1" // {
+        dependencies = [
+          sources."minimist-0.0.8"
+        ];
+      })
+      sources."murmur-hash-js-1.0.0"
+      sources."mustache-3.2.1"
+      sources."nice-try-1.0.5"
+      (sources."node-elm-compiler-5.0.4" // {
+        dependencies = [
+          sources."cross-spawn-6.0.5"
+          sources."path-key-2.0.1"
+          sources."which-1.3.1"
+        ];
+      })
+      sources."normalize-path-3.0.0"
       sources."oauth-sign-0.9.0"
-      sources."on-finished-2.3.0"
       sources."once-1.4.0"
-      sources."onetime-5.1.0"
-      sources."opn-5.4.0"
-      sources."options-0.0.6"
-      sources."os-homedir-1.0.2"
-      sources."os-tmpdir-1.0.2"
-      sources."parseurl-1.3.3"
+      sources."p-limit-2.2.2"
+      sources."p-locate-3.0.0"
+      sources."p-try-2.2.0"
+      sources."path-exists-3.0.0"
+      sources."path-is-absolute-1.0.1"
       sources."path-key-3.1.1"
-      sources."path-to-regexp-0.1.7"
-      sources."path-type-4.0.0"
       sources."performance-now-2.1.0"
       sources."picomatch-2.2.1"
-      sources."pjson-1.0.9"
-      sources."process-nextick-args-1.0.7"
-      sources."proxy-addr-2.0.6"
       sources."psl-1.7.0"
-      sources."pump-3.0.0"
       sources."punycode-2.1.1"
-      sources."qs-6.7.0"
-      sources."range-parser-1.2.1"
-      sources."raw-body-2.4.0"
-      sources."readable-stream-2.0.6"
-      sources."regenerator-runtime-0.9.6"
-      (sources."request-2.88.0" // {
-        dependencies = [
-          sources."qs-6.5.2"
-          sources."safe-buffer-5.2.0"
-        ];
-      })
-      sources."reusify-1.0.4"
-      sources."run-parallel-1.1.9"
-      sources."rxjs-6.5.4"
-      sources."safe-buffer-5.1.1"
+      sources."qs-6.5.2"
+      sources."readdirp-3.1.3"
+      sources."request-2.88.2"
+      sources."request-promise-4.2.5"
+      sources."request-promise-core-1.1.3"
+      sources."require-directory-2.1.1"
+      sources."require-main-filename-2.0.0"
+      sources."rimraf-2.7.1"
+      sources."safe-buffer-5.2.0"
       sources."safer-buffer-2.1.2"
-      (sources."send-0.16.2" // {
-        dependencies = [
-          sources."http-errors-1.6.3"
-          sources."setprototypeof-1.1.0"
-          sources."statuses-1.4.0"
-        ];
-      })
-      sources."serve-static-1.13.2"
-      sources."setprototypeof-1.1.1"
-      sources."shebang-command-2.0.0"
-      sources."shebang-regex-3.0.0"
-      sources."signal-exit-3.0.2"
-      sources."slash-3.0.0"
+      sources."semver-5.7.1"
+      sources."set-blocking-2.0.0"
+      sources."shebang-command-1.2.0"
+      sources."shebang-regex-1.0.0"
+      sources."split-1.0.1"
       sources."sshpk-1.16.1"
-      sources."statuses-1.5.0"
-      sources."string_decoder-0.10.31"
-      sources."strip-final-newline-2.0.0"
-      sources."sums-0.2.4"
-      sources."through2-2.0.1"
-      sources."tmp-0.0.31"
-      sources."to-regex-range-5.0.1"
-      sources."toidentifier-1.0.0"
-      (sources."tough-cookie-2.4.3" // {
+      sources."stealthy-require-1.1.1"
+      sources."string-width-3.1.0"
+      sources."strip-ansi-5.2.0"
+      sources."supports-color-5.5.0"
+      sources."tar-4.4.13"
+      (sources."temp-0.9.0" // {
         dependencies = [
-          sources."punycode-1.4.1"
+          sources."rimraf-2.6.3"
         ];
       })
-      sources."traverse-chain-0.1.0"
-      sources."tslib-1.11.1"
+      sources."through-2.3.8"
+      sources."to-regex-range-5.0.1"
+      sources."tough-cookie-2.5.0"
+      sources."traverse-0.3.9"
       sources."tunnel-agent-0.6.0"
       sources."tweetnacl-0.14.5"
-      sources."type-is-1.6.18"
-      sources."typedarray-0.0.6"
-      sources."ultron-1.0.2"
-      sources."unpipe-1.0.0"
+      sources."universalify-0.1.2"
+      sources."unzip-stream-0.3.0"
       sources."uri-js-4.2.2"
-      sources."util-deprecate-1.0.2"
-      sources."utils-merge-1.0.1"
       sources."uuid-3.4.0"
-      sources."vary-1.1.2"
       sources."verror-1.10.0"
-      sources."vscode-jsonrpc-5.0.1"
-      sources."vscode-languageserver-6.1.1"
-      sources."vscode-languageserver-protocol-3.15.3"
-      sources."vscode-languageserver-textdocument-1.0.1"
-      sources."vscode-languageserver-types-3.15.1"
-      sources."vscode-uri-2.1.1"
-      sources."web-tree-sitter-0.16.2"
-      sources."which-2.0.2"
+      sources."which-2.0.1"
+      sources."which-module-2.0.0"
+      sources."wrap-ansi-5.1.0"
       sources."wrappy-1.0.2"
-      (sources."ws-3.3.1" // {
+      sources."xmlbuilder-13.0.2"
+      sources."y18n-4.0.0"
+      sources."yallist-3.1.1"
+      sources."yargs-13.3.2"
+      sources."yargs-parser-13.1.2"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Verify examples in Elm doc-comments";
+      license = "BSD-3-Clause";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+  elm-xref = nodeEnv.buildNodePackage {
+    name = "elm-xref";
+    packageName = "elm-xref";
+    version = "4.1.0";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/elm-xref/-/elm-xref-4.1.0.tgz";
+      sha512 = "23nVGYsArS2DZ0RnFq6cKYO49pCjuLULhM+fvBcfA7ZIbKSw5WkDyK9c5hlQEm+JZAPZ43PNcI0yLzTEqaajiA==";
+    };
+    dependencies = [
+      sources."bluebird-3.7.2"
+      sources."compare-versions-3.6.0"
+      sources."core-util-is-1.0.2"
+      sources."fs-extra-6.0.1"
+      sources."graceful-fs-4.2.3"
+      sources."inherits-2.0.4"
+      sources."isarray-1.0.0"
+      sources."jsonfile-4.0.0"
+      sources."klaw-2.1.1"
+      sources."minimist-1.2.5"
+      sources."process-nextick-args-2.0.1"
+      sources."readable-stream-2.3.7"
+      sources."safe-buffer-5.1.2"
+      sources."semver-6.3.0"
+      sources."semver-regex-1.0.0"
+      (sources."semver-sort-0.0.4" // {
         dependencies = [
-          sources."ultron-1.1.1"
+          sources."semver-5.7.1"
         ];
       })
+      sources."string_decoder-1.1.1"
+      sources."through2-2.0.5"
+      sources."universalify-0.1.2"
+      sources."util-deprecate-1.0.2"
       sources."xtend-4.0.2"
     ];
     buildInputs = globalBuildInputs;
     meta = {
-      description = "Implementation of an elm language server in node.";
-      homepage = "https://github.com/elm-tooling/elm-language-server#readme";
-      license = "MIT";
+      description = "Cross referencing tool for Elm - find usages and unused code";
+      homepage = "https://github.com/zwilias/elm-xref#readme";
+      license = "BSD-3-Clause";
     };
     production = true;
     bypassCache = true;
diff --git a/pkgs/development/compilers/yosys/default.nix b/pkgs/development/compilers/yosys/default.nix
index de90a0c0695a..5e26e37b4438 100644
--- a/pkgs/development/compilers/yosys/default.nix
+++ b/pkgs/development/compilers/yosys/default.nix
@@ -14,14 +14,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  pname = "yosys";
-  version = "2020.02.25";
+  pname   = "yosys";
+  version = "2020.03.16";
 
   src = fetchFromGitHub {
     owner  = "YosysHQ";
     repo   = "yosys";
-    rev    = "6edca05793197a846bbfb0329e836c87fa5aabb6";
-    sha256 = "1cwps3nsld80bh2b66l8fx3fa2zsx174mw72kqxyihpfdm0m0z1s";
+    rev    = "ed4fa19ba2812c286562baf26bbbcb49afad83bc";
+    sha256 = "1sza5ng0q8dy6p4hks9b2db129xjcid9n6l8aglf2cj5ks82k5nv";
   };
 
   enableParallelBuilding = true;
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
     # we have to do this ourselves for some reason...
     (cd misc && ${protobuf}/bin/protoc --cpp_out ../backends/protobuf/ ./yosys.proto)
 
-    if ! grep -q "ABCREV = ${shortAbcRev}" Makefile;then
+    if ! grep -q "ABCREV = ${shortAbcRev}" Makefile; then
       echo "yosys isn't compatible with the provided abc (${shortAbcRev}), failing."
       exit 1
     fi
@@ -60,20 +60,21 @@ stdenv.mkDerivation rec {
   doCheck = true;
   checkInputs = [ verilog ];
 
-  meta = {
-    description = "Framework for RTL synthesis tools";
-    longDescription = ''
-      Yosys is a framework for RTL synthesis tools. It currently has
-      extensive Verilog-2005 support and provides a basic set of
-      synthesis algorithms for various application domains.
-      Yosys can be adapted to perform any synthesis job by combining
-      the existing passes (algorithms) using synthesis scripts and
-      adding additional passes as needed by extending the yosys C++
-      code base.
-    '';
-    homepage    = http://www.clifford.at/yosys/;
-    license     = stdenv.lib.licenses.isc;
-    maintainers = with stdenv.lib.maintainers; [ shell thoughtpolice emily ];
-    platforms   = stdenv.lib.platforms.all;
+  # Internally, yosys knows to use the specified hardcoded ABCEXTERNAL binary.
+  # But other tools (like mcy or symbiyosys) can't know how yosys was built, so
+  # they just assume that 'yosys-abc' is available -- but it's not installed
+  # when using ABCEXTERNAL
+  #
+  # add a symlink to fake things so that both variants work the same way.
+  postInstall = ''
+    ln -sfv ${abc-verifier}/bin/abc $out/bin/yosys-abc
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open RTL synthesis framework and tools";
+    homepage    = "http://www.clifford.at/yosys/";
+    license     = licenses.isc;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ shell thoughtpolice emily ];
   };
 }
diff --git a/pkgs/development/interpreters/groovy/default.nix b/pkgs/development/interpreters/groovy/default.nix
index 67d9ecf9c61f..e1d404a6b15d 100644
--- a/pkgs/development/interpreters/groovy/default.nix
+++ b/pkgs/development/interpreters/groovy/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "groovy";
-  version = "2.5.9";
+  version = "3.0.0";
 
   src = fetchurl {
     url = "http://dl.bintray.com/groovy/maven/apache-groovy-binary-${version}.zip";
-    sha256 = "16xq8mz7270kmiq4xb0g52y7ik1bbl2nb8aaz9zw8a9h38rdr9zy";
+    sha256 = "10nn04hfky4x75nss33vvslw958pjvhw35lcfb3lxvaifqg23cpl";
   };
 
   buildInputs = [ unzip makeWrapper ];
diff --git a/pkgs/development/libraries/intel-media-driver/default.nix b/pkgs/development/libraries/intel-media-driver/default.nix
index 176f28093048..ac4bdb4b14c9 100644
--- a/pkgs/development/libraries/intel-media-driver/default.nix
+++ b/pkgs/development/libraries/intel-media-driver/default.nix
@@ -5,13 +5,13 @@
 
 stdenv.mkDerivation rec {
   pname = "intel-media-driver";
-  version = "19.3.0";
+  version = "19.4.0r";
 
   src = fetchFromGitHub {
     owner  = "intel";
     repo   = "media-driver";
     rev    = "intel-media-${version}";
-    sha256 = "1vzh11qr7dwmi3d10nq46k754h3q1yya71nk2jgicaj2mm0ylzx6";
+    sha256 = "0gnd82z0wgiw5my1hnqlk9hcjjqpsgasqq5xcdrbkfa40wpb132a";
   };
 
   cmakeFlags = [
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ libva libpciaccess intel-gmmlib libX11 ];
 
   meta = with stdenv.lib; {
-    homepage = https://github.com/intel/media-driver;
+    homepage = "https://github.com/intel/media-driver";
     license = with licenses; [ bsd3 mit ];
     description = "Intel Media Driver for VAAPI — Broadwell+ iGPUs";
     platforms = platforms.linux;
diff --git a/pkgs/development/libraries/libgpiod/default.nix b/pkgs/development/libraries/libgpiod/default.nix
index 772027de0fb3..7bb2785dbcf2 100644
--- a/pkgs/development/libraries/libgpiod/default.nix
+++ b/pkgs/development/libraries/libgpiod/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "libgpiod";
-  version = "1.4.2";
+  version = "1.5";
 
   src = fetchurl {
     url = "https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-${version}.tar.gz";
-    sha256 = "0r0hdindy6pi1va3mhk2lg5dis0qbi535k790w76dxfx1hyavk70";
+    sha256 = "1r337ici2nvi9v2h33nf3b7nisirc4s8p31cpv1cg8jbzn3wi15g";
   };
 
   buildInputs = [ kmod ];
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
       the character device instead. This library encapsulates the ioctl calls and
       data structures behind a straightforward API.
     '';
-    homepage = https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/about/;
+    homepage = "https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/about/";
     license = licenses.lgpl2;
     maintainers = [ maintainers.expipiplus1 ];
     platforms = platforms.linux;
diff --git a/pkgs/development/libraries/libite/default.nix b/pkgs/development/libraries/libite/default.nix
index 26d7e1e961d4..240636d518c3 100644
--- a/pkgs/development/libraries/libite/default.nix
+++ b/pkgs/development/libraries/libite/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libite";
-  version = "2.1.2";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "troglobit";
     repo = "libite";
     rev = "v${version}";
-    sha256 = "0pvki6cm3ia27nsd6dljddjgz1bd6avf6c0ppj63fa3sz52lfmga";
+    sha256 = "0kad501mrvn0s0sw9pz5spjq7ymk117hnff249z6026gswrxv1mh";
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
diff --git a/pkgs/development/libraries/libkml/default.nix b/pkgs/development/libraries/libkml/default.nix
new file mode 100644
index 000000000000..eca412fda6cb
--- /dev/null
+++ b/pkgs/development/libraries/libkml/default.nix
@@ -0,0 +1,53 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, boost
+, expat
+, zlib
+, uriparser
+, minizip
+, gtest
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libkml";
+  version = "1.3.0";
+
+  src = fetchFromGitHub {
+    owner = "libkml";
+    repo = pname;
+    rev = version;
+    sha256 = "0gl4cqfps9mzx6hzf3dc10hy5y8smpyf1s31sqm7w343hgsllv0z";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  cmakeFlags = [
+    "-DBUILD_TESTING=ON"
+  ];
+
+  buildInputs = [
+    gtest
+    boost
+    expat
+    zlib
+    uriparser
+    minizip
+  ];
+
+  preCheck = ''
+    export LD_LIBRARY_PATH=$PWD/lib
+  '';
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Reference implementation of OGC KML 2.2";
+    homepage = https://github.com/libkml/libkml;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ costrouc ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/science/math/brial/default.nix b/pkgs/development/libraries/science/math/brial/default.nix
index 4ffe147b27f2..90d7357cc07e 100644
--- a/pkgs/development/libraries/science/math/brial/default.nix
+++ b/pkgs/development/libraries/science/math/brial/default.nix
@@ -8,14 +8,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "1.2.7";
+  version = "1.2.8";
   pname = "brial";
 
   src = fetchFromGitHub {
     owner = "BRiAl";
     repo = "BRiAl";
     rev = version;
-    sha256 = "1s0wmbb42sq6a5kxgzsz5srphclmfa4cvxdx2h9kzp0da2zcp3cm";
+    sha256 = "0qhgckd4fvbs40jw14mvw89rccv94d3df27kipd27hxd4cx7y80y";
   };
 
   # FIXME package boost-test and enable checks
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with stdenv.lib; {
-    homepage = https://github.com/BRiAl/BRiAl;
+    homepage = "https://github.com/BRiAl/BRiAl";
     description = "Legacy version of PolyBoRi maintained by sagemath developers";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ timokau ];
diff --git a/pkgs/development/libraries/spice-protocol/default.nix b/pkgs/development/libraries/spice-protocol/default.nix
index c32f336939cb..cae975b9a589 100644
--- a/pkgs/development/libraries/spice-protocol/default.nix
+++ b/pkgs/development/libraries/spice-protocol/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "spice-protocol";
-  version = "0.14.0";
+  version = "0.14.1";
 
   src = fetchurl {
     url = "https://www.spice-space.org/download/releases/${pname}-${version}.tar.bz2";
-    sha256 = "1b3f44c13pqsp7aabmcinfbmgl79038bp5548l5pjs16lcfam95n";
+    sha256 = "0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr";
   };
 
   postInstall = ''
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Protocol headers for the SPICE protocol";
-    homepage = https://www.spice-space.org/;
+    homepage = "https://www.spice-space.org/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ bluescreen303 ];
     platforms = platforms.linux;
diff --git a/pkgs/development/mobile/androidenv/convertpackages.xsl b/pkgs/development/mobile/androidenv/convertpackages.xsl
index 9623e01abcd7..5c36deb73c08 100644
--- a/pkgs/development/mobile/androidenv/convertpackages.xsl
+++ b/pkgs/development/mobile/androidenv/convertpackages.xsl
@@ -28,7 +28,7 @@
 
 {
   <!-- Convert all remote packages -->
-  <xsl:for-each select="remotePackage"><xsl:sort select="@path" />
+  <xsl:for-each select="remotePackage[not(contains(@path, ';') and substring-after(@path, ';') = 'latest')]"><xsl:sort select="@path" />
 
   <!-- Extract the package name from the path -->
   <xsl:variable name="name">
diff --git a/pkgs/development/mobile/androidenv/convertsystemimages.xsl b/pkgs/development/mobile/androidenv/convertsystemimages.xsl
index 42d19cb69651..de57041f1923 100644
--- a/pkgs/development/mobile/androidenv/convertsystemimages.xsl
+++ b/pkgs/development/mobile/androidenv/convertsystemimages.xsl
@@ -6,7 +6,7 @@
 
   <xsl:param name="imageType" />
 
-  <xsl:output omit-xml-declaration="yes" indent="no" />
+  <xsl:output method="text" omit-xml-declaration="yes" indent="no" />
 
   <xsl:template name="repository-url">
     <xsl:variable name="raw-url" select="complete/url"/>
@@ -15,33 +15,62 @@
         <xsl:value-of select="$raw-url"/>
       </xsl:when>
       <xsl:otherwise>
-        https://dl.google.com/android/repository/sys-img/<xsl:value-of select="$imageType" />/<xsl:value-of select="$raw-url"/>
+        <xsl:text>https://dl.google.com/android/repository/sys-img/</xsl:text><xsl:value-of select="$imageType" /><xsl:text>/</xsl:text><xsl:value-of select="$raw-url"/>
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>
 
+  <xsl:template mode="revision" match="type-details[codename]">
+    <xsl:value-of select="codename" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
+  </xsl:template>
+
+  <xsl:template mode="revision" match="type-details[not(codename)]">
+    <xsl:value-of select="api-level" />-<xsl:value-of select="tag/id" />-<xsl:value-of select="abi" />
+  </xsl:template>
+
+  <xsl:template mode="attrkey" match="type-details[codename]">
+    <xsl:text>"</xsl:text>
+    <xsl:value-of select="codename" />
+    <xsl:text>".</xsl:text>
+    <xsl:value-of select="tag/id" />
+    <xsl:text>."</xsl:text>
+    <xsl:value-of select="abi" />
+    <xsl:text>"</xsl:text>
+  </xsl:template>
+
+  <xsl:template mode="attrkey" match="type-details[not(codename)]">
+    <xsl:text>"</xsl:text>
+    <xsl:value-of select="api-level" />
+    <xsl:text>".</xsl:text>
+    <xsl:value-of select="tag/id" />
+    <xsl:text>."</xsl:text>
+    <xsl:value-of select="abi" />
+    <xsl:text>"</xsl:text>
+  </xsl:template>
+
   <xsl:template match="/sys-img:sdk-sys-img">
-{fetchurl}:
+<xsl:text>{fetchurl}:
 
 {
-  <xsl:for-each select="remotePackage[starts-with(@path, 'system-images;')]">
-    <xsl:variable name="revision">
-      <xsl:value-of select="type-details/api-level" />-<xsl:value-of select="type-details/tag/id" />-<xsl:value-of select="type-details/abi" />
-    </xsl:variable>
-
-    "<xsl:value-of select="type-details/api-level" />".<xsl:value-of select="type-details/tag/id" />."<xsl:value-of select="type-details/abi" />" = {
-      name = "system-image-<xsl:value-of select="$revision" />";
-      path = "<xsl:value-of select="translate(@path, ';', '/')" />";
-      revision = "<xsl:value-of select="$revision" />";
-      displayName = "<xsl:value-of select="display-name" />";
-      archives.all = fetchurl {
-      <xsl:for-each select="archives/archive">
-        url = <xsl:call-template name="repository-url"/>;
-        sha1 = "<xsl:value-of select="complete/checksum" />";
-      </xsl:for-each>
-      };
+</xsl:text><xsl:for-each select="remotePackage[starts-with(@path, 'system-images;')]">
+  <xsl:variable name="revision"><xsl:apply-templates mode="revision" select="type-details" /></xsl:variable>
+
+  <xsl:variable name="attrkey"><xsl:apply-templates mode="attrkey" select="type-details" /></xsl:variable>
+
+  <xsl:text>  </xsl:text><xsl:value-of select="$attrkey" /><xsl:text> = {
+    name = "system-image-</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
+    path = "</xsl:text><xsl:value-of select="translate(@path, ';', '/')" /><xsl:text>";
+    revision = "</xsl:text><xsl:value-of select="$revision" /><xsl:text>";
+    displayName = "</xsl:text><xsl:value-of select="display-name" /><xsl:text>";
+    archives.all = fetchurl {</xsl:text>
+    <xsl:for-each select="archives/archive"><xsl:text>
+      url = </xsl:text><xsl:call-template name="repository-url"/><xsl:text>;
+      sha1 = "</xsl:text><xsl:value-of select="complete/checksum" /><xsl:text>";</xsl:text>
+    </xsl:for-each><xsl:text>
+    };
   };
+</xsl:text>
   </xsl:for-each>
-}
+<xsl:text>}</xsl:text>
   </xsl:template>
 </xsl:stylesheet>
diff --git a/pkgs/development/mobile/androidenv/generate.sh b/pkgs/development/mobile/androidenv/generate.sh
index 1c55734f5f42..895a741adffe 100644..100755
--- a/pkgs/development/mobile/androidenv/generate.sh
+++ b/pkgs/development/mobile/androidenv/generate.sh
@@ -1,16 +1,36 @@
-#!/bin/sh -e
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl libxslt
+
+set -e
+
+die() {
+    echo "$1" >&2
+    exit 1
+}
+
+fetch() {
+    local url="https://dl.google.com/android/repository/$1"
+    echo "$url -> $2"
+    curl -s "$url" -o "$2" || die "Failed to fetch $url"
+}
+
+pushd "$(dirname "$0")" &>/dev/null || exit 1
+
+mkdir -p xml
 
 # Convert base packages
-curl https://dl.google.com/android/repository/repository2-1.xml -o xml/repository2-1.xml
+fetch repository2-1.xml xml/repository2-1.xml
 xsltproc convertpackages.xsl xml/repository2-1.xml > generated/packages.nix
 
 # Convert system images
 for img in android android-tv android-wear android-wear-cn google_apis google_apis_playstore
 do
-    curl https://dl.google.com/android/repository/sys-img/$img/sys-img2-1.xml -o xml/$img-sys-img2-1.xml
+    fetch sys-img/$img/sys-img2-1.xml xml/$img-sys-img2-1.xml
     xsltproc --stringparam imageType $img convertsystemimages.xsl xml/$img-sys-img2-1.xml > generated/system-images-$img.nix
 done
 
 # Convert system addons
-curl https://dl.google.com/android/repository/addon2-1.xml -o xml/addon2-1.xml
+fetch addon2-1.xml xml/addon2-1.xml
 xsltproc convertaddons.xsl xml/addon2-1.xml > generated/addons.nix
+
+popd &>/dev/null
diff --git a/pkgs/development/ocaml-modules/lacaml/default.nix b/pkgs/development/ocaml-modules/lacaml/default.nix
index 4b35ce25fde4..e576fa998c2e 100644
--- a/pkgs/development/ocaml-modules/lacaml/default.nix
+++ b/pkgs/development/ocaml-modules/lacaml/default.nix
@@ -4,13 +4,13 @@ assert stdenv.lib.versionAtLeast (stdenv.lib.getVersion ocaml) "4.05.0";
 
 stdenv.mkDerivation rec {
   pname = "ocaml${ocaml.version}-lacaml";
-  version = "11.0.3";
+  version = "11.0.6";
 
   src = fetchFromGitHub {
     owner = "mmottl";
     repo = "lacaml";
     rev = version;
-    sha256 = "1aflg07cc9ak9mg1cr0qr368c9s141glwlarl5nhalf6hhq7ibcb";
+    sha256 = "1vn5441fg45d0ni9x87dhz2x4jrmvg3w7qk3vvcrd436snvh07g0";
   };
 
   buildInputs = [ ocaml findlib dune base stdio ];
diff --git a/pkgs/development/python-modules/buildout/default.nix b/pkgs/development/python-modules/buildout/default.nix
index 419e8dce2126..20731e76c814 100644
--- a/pkgs/development/python-modules/buildout/default.nix
+++ b/pkgs/development/python-modules/buildout/default.nix
@@ -2,15 +2,15 @@
 
 buildPythonPackage rec {
   pname = "zc.buildout";
-  version = "2.13.2";
+  version = "2.13.3";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0a73s5q548l2vs2acqs3blkzd9sw6d7ci77fz1pc9156vn3dxm2x";
+    sha256 = "1dyc5g3yv7wm3hf3fcsh6y1wivzjj1bspafr5qqb653z9a31lsfn";
   };
 
   meta = with stdenv.lib; {
-    homepage = http://www.buildout.org;
+    homepage = "http://www.buildout.org";
     description = "A software build and configuration system";
     license = licenses.zpl21;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/python-modules/imapclient/default.nix b/pkgs/development/python-modules/imapclient/default.nix
index e45cdb3eab8a..ea9bc4844fad 100644
--- a/pkgs/development/python-modules/imapclient/default.nix
+++ b/pkgs/development/python-modules/imapclient/default.nix
@@ -1,32 +1,35 @@
 { stdenv
 , buildPythonPackage
-, fetchurl
-, isPy34
-, isPy35
+, fetchFromGitHub
 , mock
+, six
 }:
 
 buildPythonPackage rec {
   pname = "IMAPClient";
-  version = "0.13";
-  disabled = isPy34 || isPy35;
+  version = "2.1.0";
 
-  src = fetchurl {
-    url = "https://freshfoo.com/projects/IMAPClient/${pname}-${version}.tar.gz";
-    sha256 = "0v7kd1crdbff0rmh4ddm5qszkis6hpk9084qh94al8h7g4y9l3is";
+  src = fetchFromGitHub {
+    owner = "mjs";
+    repo = "imapclient";
+    rev = version;
+    sha256 = "1zc8qj8ify2zygbz255b6fcg7jhprswf008ccwjmbrnj08kh9l4x";
   };
 
-  buildInputs = [ mock ];
-
-  preConfigure = ''
-    sed -i '/distribute_setup/d' setup.py
-    substituteInPlace setup.py --replace "mock==0.8.0" "mock"
+  # fix test failing in python 36
+  postPatch = ''
+    substituteInPlace tests/test_imapclient.py \
+      --replace "if sys.version_info >= (3, 7):" "if sys.version_info >= (3, 6, 4):"
   '';
 
+  propagatedBuildInputs = [ six ];
+
+  checkInputs = [ mock ];
+
   meta = with stdenv.lib; {
-    homepage = https://imapclient.readthedocs.io/en/2.1.0/;
+    homepage = "https://imapclient.readthedocs.io";
     description = "Easy-to-use, Pythonic and complete IMAP client library";
     license = licenses.bsd3;
+    maintainers = [ maintainers.almac ];
   };
-
 }
diff --git a/pkgs/development/python-modules/matrix-nio/default.nix b/pkgs/development/python-modules/matrix-nio/default.nix
index f8c1222fb3ff..9320efc91a23 100644
--- a/pkgs/development/python-modules/matrix-nio/default.nix
+++ b/pkgs/development/python-modules/matrix-nio/default.nix
@@ -20,13 +20,13 @@
 
 buildPythonPackage rec {
   pname = "nio";
-  version = "0.8.0";
+  version = "0.9.0";
 
   src = fetchFromGitHub {
     owner = "poljar";
     repo = "matrix-nio";
     rev = version;
-    sha256 = "151c59a913y6kx99g7g3mhpgbgavwic1mh21nfrr9x0rm98ilay9";
+    sha256 = "0gqhk9d06w1in6dj7aqy45skzyg8018nmclqd5r0m5nnw8yns6gz";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/rpy2/default.nix b/pkgs/development/python-modules/rpy2/default.nix
index 851a58584c66..613e7af7d3a1 100644
--- a/pkgs/development/python-modules/rpy2/default.nix
+++ b/pkgs/development/python-modules/rpy2/default.nix
@@ -1,6 +1,7 @@
 { lib
 , python
 , buildPythonPackage
+, fetchpatch
 , fetchPypi
 , isPyPy
 , R
@@ -24,13 +25,13 @@
 }:
 
 buildPythonPackage rec {
-    version = "3.2.5";
+    version = "3.2.6";
     pname = "rpy2";
 
     disabled = isPyPy;
     src = fetchPypi {
       inherit version pname;
-      sha256 = "0pnk363klic4smb3jnkm4lnh984c2cpqzawrg2j52hgy8k1bgyrk";
+      sha256 = "1p990cqx3p2pd1rc9wn66m56wahaq8dlr88frz49vb7nv4zw4a8q";
     };
 
     buildInputs = [
@@ -68,6 +69,14 @@ buildPythonPackage rec {
       # R_LIBS_SITE is used by the nix r package to point to the installed R libraries.
       # This patch sets R_LIBS_SITE when rpy2 is imported.
       ./rpy2-3.x-r-libs-site.patch
+
+      # pandas 1.x compatibility, already merged upstream
+      # https://github.com/rpy2/rpy2/issues/636
+      (fetchpatch {
+        name = "pandas-1.x.patch";
+        url = "https://github.com/rpy2/rpy2/commit/fbd060e364b70012e8d26cc74df04ee53f769379.patch";
+        sha256 = "19rdqydwjmqg25ibmsbx7lggrr9fsyjn283zgvz1wj4iyfjwp1za";
+      })
     ];
     postPatch = ''
       substituteInPlace 'rpy2/rinterface_lib/embedded.py' --replace '@NIX_R_LIBS_SITE@' "$R_LIBS_SITE"
diff --git a/pkgs/development/python-modules/rq/default.nix b/pkgs/development/python-modules/rq/default.nix
index 0fe7a942245b..9f57fb486d91 100644
--- a/pkgs/development/python-modules/rq/default.nix
+++ b/pkgs/development/python-modules/rq/default.nix
@@ -2,11 +2,11 @@
 
 buildPythonPackage rec {
   pname = "rq";
-  version = "1.2.2";
+  version = "1.3.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0dk664lzjhj0rk4ffpv29mbcr7vh41ph1sx7ngszk3744gh1nshp";
+    sha256 = "0xr38j35iqmhx0f2l8ix34vjs9flpqv2y17k33crh7rhm6gi9ja9";
   };
 
   # test require a running redis rerver, which is something we can't do yet
diff --git a/pkgs/development/python-modules/uamqp/default.nix b/pkgs/development/python-modules/uamqp/default.nix
index 8e74c6460fe7..e11088048c34 100644
--- a/pkgs/development/python-modules/uamqp/default.nix
+++ b/pkgs/development/python-modules/uamqp/default.nix
@@ -11,11 +11,11 @@
 
 buildPythonPackage rec {
   pname = "uamqp";
-  version = "1.2.5";
+  version = "1.2.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "02d78242fcd0a58489aaf275964a6cf7581d7a2334ee240d2d547f8aca8607c6";
+    sha256 = "1pzgj85c6g8vr3dq215cd1y2pn8pxc6wa7mjd9m0zrglr1qwwhdz";
   };
 
   buildInputs = [
@@ -39,7 +39,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "An AMQP 1.0 client library for Python";
-    homepage = https://github.com/Azure/azure-uamqp-python;
+    homepage = "https://github.com/Azure/azure-uamqp-python";
     license = licenses.mit;
     maintainers = with maintainers; [ mwilsoninsight ];
   };
diff --git a/pkgs/development/python-modules/wsgitools/default.nix b/pkgs/development/python-modules/wsgitools/default.nix
new file mode 100644
index 000000000000..ab6f06abac65
--- /dev/null
+++ b/pkgs/development/python-modules/wsgitools/default.nix
@@ -0,0 +1,28 @@
+{lib
+,buildPythonPackage
+,fetchPypi
+}:
+
+buildPythonPackage rec {
+  pname = "wsgitools";
+  version = "0.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0q6kmrkqf02fgww7z1g9cw8f70fimdzs1bvv9inb7fsk0c3pcf1i";
+  };
+
+  meta = with lib; {
+    maintainers = with maintainers; [ clkamp ];
+    description = "A set of tools working with WSGI";
+    longDescription = ''
+      wsgitools is a set of tools working with WSGI (see PEP 333). It
+      includes classes for filtering content, middlewares for caching,
+      logging and tracebacks as well as two backends for SCGI. Goals
+      in writing it were portability and simplicity.
+    '';
+    homepage = "https://subdivi.de/~helmut/wsgitools/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/python-modules/z3c-checkversions/default.nix b/pkgs/development/python-modules/z3c-checkversions/default.nix
index 41b7fb5c5206..cf4f6f7dd146 100644
--- a/pkgs/development/python-modules/z3c-checkversions/default.nix
+++ b/pkgs/development/python-modules/z3c-checkversions/default.nix
@@ -18,6 +18,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [ zc_buildout ];
   checkInputs = [ zope_testrunner ];
+  doCheck = !python.pkgs.isPy27;
   checkPhase = ''
     ${python.interpreter} -m zope.testrunner --test-path=src []
   '';
diff --git a/pkgs/development/tools/literate-programming/nuweb/default.nix b/pkgs/development/tools/literate-programming/nuweb/default.nix
index 41c4b25c8b1b..30eb28fc698c 100644
--- a/pkgs/development/tools/literate-programming/nuweb/default.nix
+++ b/pkgs/development/tools/literate-programming/nuweb/default.nix
@@ -3,11 +3,11 @@
 stdenv.mkDerivation rec{
 
   pname = "nuweb";
-  version = "1.58";
+  version = "1.60";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/nuweb/${pname}-${version}.tar.gz";
-    sha256 = "0q51i3miy15fv4njjp82yws01qfjxvqx5ly3g3vh8z3h7iq9p47y";
+    sha256 = "08xmwq48biy2c1fr8wnyknyvqs9jfsj42cb7fw638xqv35f0xxvl";
   };
 
   buildInputs = [ tex ];
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec{
     homepage = http://nuweb.sourceforge.net;
     license = licenses.free;
     maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
 # TODO: nuweb.el Emacs integration
diff --git a/pkgs/development/tools/renderizer/default.nix b/pkgs/development/tools/renderizer/default.nix
index f33cad8da7a2..93634f935d1d 100644
--- a/pkgs/development/tools/renderizer/default.nix
+++ b/pkgs/development/tools/renderizer/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "renderizer";
-  version = "2.0.5";
+  version = "2.0.9";
 
   src = fetchFromGitHub {
     owner = "gomatic";
     repo = pname;
     rev = version;
-    sha256 = "186wcfzw60z6i59yl37rkppw8w88z5kikvsi65k4r9kwpll2z6z4";
+    sha256 = "1bip12pcn8bqgph7vd7bzzadwbyqh80fx7gqciv9fchycwsj04rf";
   };
 
-  modSha256 = "1sxg9skd5hjpg2f4wyxh5hwjrplw3b3v32gn61a9yixfk3wvi05x";
+  modSha256 = "0ss5l2n1sl1i2hvxsdzy6p61mnnxmm6h256jvv0p0ajynx8g538q";
 
   meta = with stdenv.lib; {
     description = "CLI to render Go template text files";
diff --git a/pkgs/development/tools/rust/cbindgen/default.nix b/pkgs/development/tools/rust/cbindgen/default.nix
index b97c9af088fd..34d744807463 100644
--- a/pkgs/development/tools/rust/cbindgen/default.nix
+++ b/pkgs/development/tools/rust/cbindgen/default.nix
@@ -11,10 +11,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "1x21g66gri6z9bnnfn7zmnf2lwdf5ing76pcmw0ilx4nzpvfhkg0";
   };
 
-  # Delete this on next update; see #79975 for details
-  legacyCargoFetcher = true;
-
-  cargoSha256 = "13fb8cdg6r0g5jb3vaznvv5aaywrnsl2yp00h4k8028vl8jwwr79";
+  cargoSha256 = "13fbahdih5whll09pfgyb1bjag1f0d0xfwgm2s342bs1krxsrbh3";
 
   buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
 
diff --git a/pkgs/games/super-tux-kart/default.nix b/pkgs/games/super-tux-kart/default.nix
index 2db49165c5fb..96444897cc94 100644
--- a/pkgs/games/super-tux-kart/default.nix
+++ b/pkgs/games/super-tux-kart/default.nix
@@ -1,20 +1,20 @@
 { stdenv, fetchFromGitHub, fetchsvn, cmake, pkgconfig
 , openal, freealut, libGLU, libGL, libvorbis, libogg, gettext, curl, freetype
-, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, enet }:
+, fribidi, libtool, bluez, libjpeg, libpng, zlib, libX11, libXrandr, enet, harfbuzz }:
 
 let
   dir = "stk-code";
 
 in stdenv.mkDerivation rec {
   pname = "supertuxkart";
-  version = "1.0";
+  version = "1.1";
 
   srcs = [
     (fetchFromGitHub {
       owner  = "supertuxkart";
       repo   = "stk-code";
       rev    = version;
-      sha256 = "03mrnzrvfdgjc687n718f5zsray6vbdlv4irzy2mfi78bz3bkjll";
+      sha256 = "01vxxl94583ixswzmi4caz8dk64r56pn3zxh7v63zml60yfvxbvp";
       name   = dir;
     })
     (fetchsvn {
@@ -30,7 +30,7 @@ in stdenv.mkDerivation rec {
   buildInputs = [
     libX11 libXrandr
     openal freealut libGLU libGL libvorbis libogg zlib freetype
-    curl fribidi bluez libjpeg libpng enet
+    curl fribidi bluez libjpeg libpng enet harfbuzz
   ];
 
   enableParallelBuilding = true;
diff --git a/pkgs/games/tintin/default.nix b/pkgs/games/tintin/default.nix
index 62fda890e84c..fbf4b1beecfd 100644
--- a/pkgs/games/tintin/default.nix
+++ b/pkgs/games/tintin/default.nix
@@ -6,11 +6,11 @@
 assert tlsSupport -> gnutls != null;
 
 stdenv.mkDerivation rec {
-  name = "tintin-2.02.01";
+  name = "tintin-2.02.02";
 
   src = fetchurl {
     url    = "mirror://sourceforge/tintin/${name}.tar.gz";
-    sha256 = "15ajs6d0rb3xchd46gyziciz9vv0ks75schk1s4hs7pr30yr7k6y";
+    sha256 = "11ylbp8ip7dwmh4gzb53z147pcfxkl3lwhyy8ngyn2zc634vdn65";
   };
 
   nativeBuildInputs = lib.optional tlsSupport gnutls.dev;
diff --git a/pkgs/misc/tpm2-pkcs11/default.nix b/pkgs/misc/tpm2-pkcs11/default.nix
index d34619d5b52d..9e3be1101a63 100644
--- a/pkgs/misc/tpm2-pkcs11/default.nix
+++ b/pkgs/misc/tpm2-pkcs11/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "tpm2-pkcs11";
-  version = "1.0.1";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "tpm2-software";
     repo = pname;
     rev = version;
-    sha256 = "sha256:06kpf730al50xv1q53ahycky3im23ysrqp40libls4k24zxs9ha2";
+    sha256 = "0gqbbxh1y2vcznxw96xn1wpcvg613zzzrbbfrqbw3p7spbn65yfq";
   };
 
   patches = lib.singleton (
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A PKCS#11 interface for TPM2 hardware";
-    homepage = https://github.com/tpm2-software/tpm2-pkcs11;
+    homepage = "https://github.com/tpm2-software/tpm2-pkcs11";
     license = licenses.bsd2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ lschuermann ];
diff --git a/pkgs/misc/vim-plugins/overrides.nix b/pkgs/misc/vim-plugins/overrides.nix
index e4710e27193c..a8bf2f56b2af 100644
--- a/pkgs/misc/vim-plugins/overrides.nix
+++ b/pkgs/misc/vim-plugins/overrides.nix
@@ -112,6 +112,21 @@ self: super: {
     '';
   });
 
+  vim-pandoc = super.vim-pandoc.overrideAttrs(old: {
+    patches = (super.patches or []) ++ [
+      # Fix a failure on startup, which breaks the rplugin manifest generation
+      # https://github.com/vim-pandoc/vim-pandoc/pull/363#issuecomment-599080366
+      (fetchpatch {
+        name = "fix-fdetect.patch";
+        url = "https://github.com/vim-pandoc/vim-pandoc/commit/da4c0b0325c1bfad20f7cfd15abb53943fe22fc4.patch";
+        revert = true;
+        # For some reason that part was already reverted upstream.
+        excludes = ["ftdetect/pandoc.vim"];
+        sha256 = "10nykgsqpxx5hlagk83khjl8p58zx7z3bcryzinv5vv52wlqkq5p";
+      })
+    ];
+  });
+
   clighter8 = super.clighter8.overrideAttrs(old: {
     preFixup = ''
       sed "/^let g:clighter8_libclang_path/s|')$|${llvmPackages.clang.cc.lib}/lib/libclang.so')|" \
diff --git a/pkgs/servers/http/tomcat/default.nix b/pkgs/servers/http/tomcat/default.nix
index 38b4974e1554..3908db5ea71c 100644
--- a/pkgs/servers/http/tomcat/default.nix
+++ b/pkgs/servers/http/tomcat/default.nix
@@ -32,25 +32,19 @@ let
 in {
   tomcat7 = common {
     versionMajor = "7";
-    versionMinor = "0.92";
-    sha256 = "0j015mf15drl92kvgyi1ppzjziw0k1rwvfnih8r20h92ylk8mznk";
+    versionMinor = "0.100";
+    sha256 = "0wjjnvxjz0xbnsfgyp0xc7nlij4z093v54hg59vww2nmkz5mg01v";
   };
 
   tomcat8 = common {
     versionMajor = "8";
-    versionMinor = "0.53";
-    sha256 = "1ymp5n6xjqzpqjjlwql195v8r5fsmry7nfax46bafkjw8b24g80r";
-  };
-
-  tomcat85 = common {
-    versionMajor = "8";
-    versionMinor = "5.42";
-    sha256 = "1d90abwwvl0ghr0g0drk48j37wr2zgw74vws9z2rshyzrwgbvgp3";
+    versionMinor = "5.51";
+    sha256 = "1zmg0hi4nw4y5sknd0jgq9lb3bncjjscay5fdiiq3qh5cs0wsvl3";
   };
 
   tomcat9 = common {
     versionMajor = "9";
-    versionMinor = "0.21";
-    sha256 = "0nsylbqvky4pf3wpsx3a29b85lvwk91ay37mljk9636qffjj1vjh";
+    versionMinor = "0.31";
+    sha256 = "0hybcy280qhhp9if58xw0rmyyqz1m1bzby7qnwz3y2wc1y4is48v";
   };
 }
diff --git a/pkgs/servers/monitoring/mtail/default.nix b/pkgs/servers/monitoring/mtail/default.nix
index 31a6501ea3a5..64966e183fea 100644
--- a/pkgs/servers/monitoring/mtail/default.nix
+++ b/pkgs/servers/monitoring/mtail/default.nix
@@ -1,22 +1,26 @@
-{ lib, fetchFromGitHub, gotools, buildGoPackage }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
-buildGoPackage rec {
+buildGoModule rec {
   pname = "mtail";
-  version = "3.0.0-rc4";
-  goPackagePath = "github.com/google/mtail";
+  version = "3.0.0-rc35";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "mtail";
     rev = "v${version}";
-    sha256 = "1n7pqvid48ayn15qfpgpbsx0iqg24x08wphzpc08mlfw47gq7jg3";
+    sha256 = "04hzr0cw0dq7hmqvp1lhm5wl239yrxmcpsl25sqk74wy06cgrrqd";
   };
 
-  buildInputs = [ gotools ];
-  goDeps = ./deps.nix;
-  patches = [ ./fix-gopath.patch ];
-  preBuild = "go generate -x ./go/src/github.com/google/mtail/vm/";
+  modSha256 = "0h3q1qd9a01wlfkk0yv74a4bk5nilpsppq522cv7kl8ysnrjh5yi";
+  subPackages = [ "cmd/mtail" ];
 
+  preBuild = ''
+    go generate -x ./internal/vm/
+  '';
+
+  buildFlagsArray = [
+    "-ldflags=-X main.Version=${version}"
+  ];
 
   meta = with lib; {
     license = licenses.asl20;
diff --git a/pkgs/servers/monitoring/mtail/deps.nix b/pkgs/servers/monitoring/mtail/deps.nix
deleted file mode 100644
index 6de3c8b6e139..000000000000
--- a/pkgs/servers/monitoring/mtail/deps.nix
+++ /dev/null
@@ -1,56 +0,0 @@
-[
-  rec {
-    goPackagePath = "github.com/golang/glog";
-    fetch = {
-      type = "git";
-      url = "https://${goPackagePath}.git";
-      rev = "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
-      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
-    };
-  }
-  rec {
-    goPackagePath = "github.com/spf13/afero";
-    fetch = {
-      type = "git";
-      url = "https://${goPackagePath}.git";
-      rev = "5660eeed305fe5f69c8fc6cf899132a459a97064";
-      sha256 = "0rpwvjp9xfmy2yvbmy810qamjhimr56zydvx7hb1gjn3b7jp4rhd";
-    };
-  }
-  rec {
-    goPackagePath = "github.com/fsnotify/fsnotify";
-    fetch = {
-      type = "git";
-      url = "https://${goPackagePath}.git";
-      rev = "v1.4.2";
-      sha256 = "06wfg1mmzjj04z7d0q1x2fai9k6hm957brngsaf02fa9a3qqanv3";
-    };
-  }
-  rec {
-    goPackagePath = "github.com/pkg/errors";
-    fetch = {
-      type = "git";
-      url = "https://${goPackagePath}.git";
-      rev = "v0.8.0";
-      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/sys";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/sys";
-      rev = "95c6576299259db960f6c5b9b69ea52422860fce";
-      sha256 = "1fhq8bianb9a1iccpr92mi2hix9zvm10n0f7syx6vfbxdw32i316";
-    };
-  }
-  {
-    goPackagePath = "golang.org/x/text";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/text";
-      rev = "3ba1a4dc141f5236b19ccbf2f67cb63d1a688d46";
-      sha256 = "07sbakmman41p5hmdbf4y2wak0gh7k1z88m0zb72acsypp4179h1";
-    };
-  }
-]
diff --git a/pkgs/servers/monitoring/mtail/fix-gopath.patch b/pkgs/servers/monitoring/mtail/fix-gopath.patch
deleted file mode 100644
index 9421d194a9e5..000000000000
--- a/pkgs/servers/monitoring/mtail/fix-gopath.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/vm/compiler.go b/vm/compiler.go
-index c55266b..a46417c 100644
---- a/vm/compiler.go
-+++ b/vm/compiler.go
-@@ -2,7 +2,7 @@
- // This file is available under the Apache license.
- 
- // Build the parser:
--//go:generate $GOPATH/bin/goyacc -v y.output -o parser.go -p mtail parser.y
-+//go:generate goyacc -v y.output -o parser.go -p mtail parser.y
- 
- package vm
- 
diff --git a/pkgs/servers/monitoring/sensu-go/default.nix b/pkgs/servers/monitoring/sensu-go/default.nix
index a4e2b1eb313c..f109b08d1a6f 100644
--- a/pkgs/servers/monitoring/sensu-go/default.nix
+++ b/pkgs/servers/monitoring/sensu-go/default.nix
@@ -4,7 +4,7 @@ let
   generic = { subPackages, pname, postInstall ? "" }:
     buildGoModule rec {
       inherit pname;
-      version = "5.14.1";
+      version = "5.18.1";
       shortRev = "1f6d16b"; # for internal version info
 
       goPackagePath = "github.com/sensu/sensu-go";
@@ -13,12 +13,12 @@ let
         owner = "sensu";
         repo = "sensu-go";
         rev = "v${version}";
-        sha256 = "1fhvw2hrn2zqpz3ypsx6i1zrn83pdifvsyzpbhzxmff6l9a290bq";
+        sha256 = "1iwlkm7ac7brap45r6ly0blywgq6f28r1nws3yf0ybydv30brfj4";
       };
 
       inherit subPackages postInstall;
 
-      modSha256 = "0c0cj0ylhifyb7l9kjmgdlfzcz8528fzw8kr3c5y7j5h6pih06sy";
+      modSha256 = "02h4cav6ivzs3z0qakwxzf5lfy6hzax5c0i2icp0qymqc2789npw";
 
       buildFlagsArray = let
         versionPkg = "github.com/sensu/sensu-go/version";
@@ -29,7 +29,7 @@ let
       '';
 
       meta = {
-        homepage = https://sensu.io;
+        homepage = "https://sensu.io";
         description = "Open source monitoring tool for ephemeral infrastructure & distributed applications";
         license = lib.licenses.mit;
         maintainers = with lib.maintainers; [ thefloweringash ];
diff --git a/pkgs/servers/nosql/redis/default.nix b/pkgs/servers/nosql/redis/default.nix
index 278ba8d13c57..8e75ee4fbde2 100644
--- a/pkgs/servers/nosql/redis/default.nix
+++ b/pkgs/servers/nosql/redis/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, lua, jemalloc, nixosTests }:
 
 stdenv.mkDerivation rec {
-  version = "5.0.7";
+  version = "5.0.8";
   pname = "redis";
 
   src = fetchurl {
     url = "http://download.redis.io/releases/${pname}-${version}.tar.gz";
-    sha256 = "0ax8sf3vw0yadr41kzc04917scrg5wir1d94zmbz00b8pzm79nv1";
+    sha256 = "1msfxr97aflk5zdgq8xvdbsgmzb906x0vdc1v6l2ccs35z2fmizk";
   };
 
   # Cross-compiling fixes
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   passthru.tests.redis = nixosTests.redis;
 
   meta = with stdenv.lib; {
-    homepage = https://redis.io;
+    homepage = "https://redis.io";
     description = "An open source, advanced key-value store";
     license = licenses.bsd3;
     platforms = platforms.unix;
diff --git a/pkgs/servers/tailscale/default.nix b/pkgs/servers/tailscale/default.nix
new file mode 100644
index 000000000000..2fc08e754b18
--- /dev/null
+++ b/pkgs/servers/tailscale/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoModule, fetchFromGitHub, makeWrapper, iptables, iproute }:
+
+buildGoModule rec {
+  pname = "tailscale";
+  version = "0.97-0";
+
+  src = fetchFromGitHub {
+    owner = "tailscale";
+    repo = "tailscale";
+    rev = "dd14b658a2f42a3b4d78682e4f4f82f730262c5c";
+    sha256 = "0ckjqhj99c25h8xgyfkrd19nw5w4a7972nvba9r5faw5micjs02n";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  CGO_ENABLED = 0;
+
+  goPackagePath = "tailscale.com";
+  modSha256 = "0anpakcqz4irwxnm0iwm7wqzh84kv3yxxdvyr38154pbd0ys5pa2";
+  subPackages = [ "cmd/tailscale" "cmd/tailscaled" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/tailscaled --prefix PATH : ${
+      lib.makeBinPath [ iproute iptables ]
+    }
+  '';
+
+  meta = with lib; {
+    homepage = "https://tailscale.com";
+    description = "The node agent for Tailscale, a mesh VPN built on WireGuard";
+    platforms = platforms.linux;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ danderson mbaillie ];
+  };
+}
diff --git a/pkgs/stdenv/linux/bootstrap-files/armv5tel.nix b/pkgs/stdenv/linux/bootstrap-files/armv5tel.nix
index c5426431b3ce..0ac818b9f223 100644
--- a/pkgs/stdenv/linux/bootstrap-files/armv5tel.nix
+++ b/pkgs/stdenv/linux/bootstrap-files/armv5tel.nix
@@ -1,12 +1,18 @@
 {
+  # Note: do not use Hydra as a source URL. Ask a member of the
+  # infrastructure team to mirror the job.
   busybox = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609163/download/2/busybox;
-    sha256 = "0dc5471dc6a5f69ad98eb7445f51a61e88aa5792d7a677025bf012bdb513b763";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv5tel.dist/latest
+    # from build: https://hydra.nixos.org/build/114203025
+    url = "http://tarballs.nixos.org/stdenv-linux/armv5tel/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/busybox";
+    # note: the following hash is different than the above hash, due to executable = true
+    sha256 = "0qxp2fsvs4phbc17g9npj9bsm20ylr8myi5pivcrmxm5qqflgi8d";
     executable = true;
   };
-
   bootstrapTools = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609163/download/1/bootstrap-tools.tar.xz;
-    sha256 = "ca0564eca4eb944649ce10ec70859640427bf2241243af62812b163176487e02";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv5tel.dist/latest
+    # from build: https://hydra.nixos.org/build/114203025
+    url = "http://tarballs.nixos.org/stdenv-linux/armv5tel/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/bootstrap-tools.tar.xz";
+    sha256 = "28327343db5ecc7f7811449ec69280d5867fa5d1d377cab0426beb9d4e059ed6";
   };
 }
diff --git a/pkgs/stdenv/linux/bootstrap-files/armv6l.nix b/pkgs/stdenv/linux/bootstrap-files/armv6l.nix
index caf7df66cef6..8bc99c64c681 100644
--- a/pkgs/stdenv/linux/bootstrap-files/armv6l.nix
+++ b/pkgs/stdenv/linux/bootstrap-files/armv6l.nix
@@ -1,12 +1,18 @@
 {
+  # Note: do not use Hydra as a source URL. Ask a member of the
+  # infrastructure team to mirror the job.
   busybox = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609441/download/2/busybox;
-    sha256 = "e6f6aecb675e924a96516f4379445dd2c0ba8b9c438fbfbaa2dc14ccce2802e0";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv6l.dist/latest
+    # from build: https://hydra.nixos.org/build/114202834
+    url = "http://tarballs.nixos.org/stdenv-linux/armv6l/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/busybox";
+    # note: the following hash is different than the above hash, due to executable = true
+    sha256 = "1q02537cq56wlaxbz3s3kj5vmh6jbm27jhvga6b4m4jycz5sxxp6";
     executable = true;
   };
-
   bootstrapTools = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609441/download/1/bootstrap-tools.tar.xz;
-    sha256 = "7a3f20def1a17ebf0edb5a92c403558429bcc2ac3d931b5e1bd88606cb217778";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv6l.dist/latest
+    # from build: https://hydra.nixos.org/build/114202834
+    url = "http://tarballs.nixos.org/stdenv-linux/armv6l/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/bootstrap-tools.tar.xz";
+    sha256 = "0810fe74f8cd09831f177d075bd451a66b71278d3cc8db55b07c5e38ef3fbf3f";
   };
 }
diff --git a/pkgs/stdenv/linux/bootstrap-files/armv7l.nix b/pkgs/stdenv/linux/bootstrap-files/armv7l.nix
index 67bca39eaf68..74d158452231 100644
--- a/pkgs/stdenv/linux/bootstrap-files/armv7l.nix
+++ b/pkgs/stdenv/linux/bootstrap-files/armv7l.nix
@@ -1,12 +1,18 @@
 {
+  # Note: do not use Hydra as a source URL. Ask a member of the
+  # infrastructure team to mirror the job.
   busybox = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609103/download/2/busybox;
-    sha256 = "566a469dac214b31e4abdb0a91d32550bab1be5858d329e1b6074eef05370ca3";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv7l.dist/latest
+    # from build: https://hydra.nixos.org/build/114203060
+    url = "http://tarballs.nixos.org/stdenv-linux/armv7l/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/busybox";
+    # note: the following hash is different than the above hash, due to executable = true
+    sha256 = "18qc6w2yykh7nvhjklsqb2zb3fjh4p9r22nvmgj32jr1mjflcsjn";
     executable = true;
   };
-
   bootstrapTools = import <nix/fetchurl.nix> {
-    url = https://hydra.nixos.org/build/112609103/download/1/bootstrap-tools.tar.xz;
-    sha256 = "79fa2d7722aeb856c7c9b62a3fd64b6d261fd6f6bcbac486f0a2a7d823210550";
+    # from job: https://hydra.nixos.org/job/nixpkgs/cross-trunk/bootstrapTools.armv7l.dist/latest
+    # from build: https://hydra.nixos.org/build/114203060
+    url = "http://tarballs.nixos.org/stdenv-linux/armv7l/0eb0ddc4dbe3cd5415c6b6e657538eb809fc3778/bootstrap-tools.tar.xz";
+    sha256 = "cf2968e8085cd3e6b3e9359624060ad24d253800ede48c5338179f6e0082c443";
   };
 }
diff --git a/pkgs/tools/admin/berglas/default.nix b/pkgs/tools/admin/berglas/default.nix
index aaca67baa165..c1c46da41b75 100644
--- a/pkgs/tools/admin/berglas/default.nix
+++ b/pkgs/tools/admin/berglas/default.nix
@@ -1,22 +1,21 @@
 { stdenv, buildGoModule, fetchFromGitHub }:
 
 buildGoModule rec {
-
-  name = "berglas-${version}";
-  version = "0.5.0";
+  pname = "berglas";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "GoogleCloudPlatform";
-    repo = "berglas";
-    rev = "v0.5.0";
-    sha256 = "1y5w2czipwj069w4zxnyb9xqv5mx0yjjramykf3vm3q478bk3rm7";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0y393g36h35zzqyf5b10j6qq2jhvz83j17cmasnv6wbyrb3vnn0n";
   };
 
-  modSha256 = "0y4ajii3pv25s4gjazf6fl0b9wax17cmwhbmiybqhp61annca7kr";
+  modSha256 = "0m2bqx102lf6nihdjbl8a08xcwi80rawvh91j1cav0njm9w5vmmm";
 
   meta = with stdenv.lib; {
     description = "A tool for managing secrets on Google Cloud";
-    homepage = https://github.com/GoogleCloudPlatform/berglas;
+    homepage = "https://github.com/GoogleCloudPlatform/berglas";
     license = licenses.asl20;
     platforms = platforms.unix;
   };
diff --git a/pkgs/tools/admin/lego/default.nix b/pkgs/tools/admin/lego/default.nix
index 3a0d9491d157..72c61ceecaf2 100644
--- a/pkgs/tools/admin/lego/default.nix
+++ b/pkgs/tools/admin/lego/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "lego";
-  version = "3.4.0";
+  version = "3.5.0";
 
   src = fetchFromGitHub {
     owner = "go-acme";
     repo = pname;
     rev = "v${version}";
-    sha256 = "198nc0rpkxyjms2lvv7g0rzy8cczzs662ncywzmcqsd1qs67zvif";
+    sha256 = "08mh2q426gmhcaz578lw08jbxfqb7qm37cd00ap937dymi1zs9qw";
   };
 
-  modSha256 = "09w2lsn1zbn750m77084x886k4lx264dgl80d9g7kxjnsqgsmzig";
+  modSha256 = "10n8pcbmzlnk63gzsjb1xnmjwxfhxsqx8ffpcbwdzq9fc5yvjiii";
   subPackages = [ "cmd/lego" ];
 
   buildFlagsArray = [
diff --git a/pkgs/tools/filesystems/fuse-overlayfs/default.nix b/pkgs/tools/filesystems/fuse-overlayfs/default.nix
index 6debd333c41c..00f893139427 100644
--- a/pkgs/tools/filesystems/fuse-overlayfs/default.nix
+++ b/pkgs/tools/filesystems/fuse-overlayfs/default.nix
@@ -1,17 +1,17 @@
-{ stdenv, lib, fetchFromGitHub, autoreconfHook, pkgconfig, fuse3 }:
+{ stdenv, lib, fetchFromGitHub, autoreconfHook, pkg-config, fuse3 }:
 
 stdenv.mkDerivation rec {
   pname = "fuse-overlayfs";
-  version = "0.7.7";
+  version = "0.7.8";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0fifqa4f79lhklajsf1aiipc4cyykscqlns9pzbcq5hdphi9fbsb";
+    sha256 = "10wsssf9mxgkgcqks3z02y9ya8xh4wd45lsb1jrvw31wmz9zpalc";
   };
 
-  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
 
   buildInputs = [ fuse3 ];
 
diff --git a/pkgs/tools/filesystems/simg2img/default.nix b/pkgs/tools/filesystems/simg2img/default.nix
index 78f80ecfa87a..6782987c027f 100644
--- a/pkgs/tools/filesystems/simg2img/default.nix
+++ b/pkgs/tools/filesystems/simg2img/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "simg2img";
-  version = "1.1.3";
+  version = "1.1.4";
 
   src = fetchFromGitHub {
     owner = "anestisb";
     repo = "android-simg2img";
     rev = version;
-    sha256 = "119gl9i61g2wr07hzv6mi1ihql6yd6pwq94ki2pgcpfbamv8f6si";
+    sha256 = "1xm9kaqs2w8c7a4psv78gv66gild88mpgjn5lj087d7jh1jxy7bf";
   };
 
   buildInputs = [ zlib ];
diff --git a/pkgs/tools/misc/blsd/default.nix b/pkgs/tools/misc/blsd/default.nix
index 23bd7ed172c4..1b860fc1b4d5 100644
--- a/pkgs/tools/misc/blsd/default.nix
+++ b/pkgs/tools/misc/blsd/default.nix
@@ -24,5 +24,6 @@ buildGoPackage {
     license = licenses.mit;
     maintainers = [ maintainers.magnetophon ];
     platforms = platforms.unix;
+    broken = true; # since 2020-02-08, libgit2 is incompatible upstream is dead.
   };
 }
diff --git a/pkgs/tools/misc/peep/0001-Add-Cargo.lock-by-running-cargo-vendor.patch b/pkgs/tools/misc/peep/0001-Add-Cargo.lock-by-running-cargo-vendor.patch
new file mode 100644
index 000000000000..f444d72c4648
--- /dev/null
+++ b/pkgs/tools/misc/peep/0001-Add-Cargo.lock-by-running-cargo-vendor.patch
@@ -0,0 +1,570 @@
+From 153e9acd6fb50c50db5ebdd03303a42f56ec05e0 Mon Sep 17 00:00:00 2001
+From: Maximilian Bosch <maximilian@mbosch.me>
+Date: Tue, 17 Mar 2020 23:14:36 +0100
+Subject: [PATCH] Add Cargo.lock by running `cargo vendor`
+
+---
+ Cargo.lock | 551 +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 551 insertions(+)
+ create mode 100644 Cargo.lock
+
+diff --git a/Cargo.lock b/Cargo.lock
+new file mode 100644
+index 0000000..91f9100
+--- /dev/null
++++ b/Cargo.lock
+@@ -0,0 +1,551 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++[[package]]
++name = "aho-corasick"
++version = "0.7.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8716408b8bc624ed7f65d223ddb9ac2d044c0547b6fa4b0d554f3a9540496ada"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
++
++[[package]]
++name = "bitflags"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
++
++[[package]]
++name = "byteorder"
++version = "1.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
++
++[[package]]
++name = "bytes"
++version = "0.4.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c"
++dependencies = [
++ "byteorder",
++ "iovec",
++]
++
++[[package]]
++name = "cc"
++version = "1.0.50"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
++
++[[package]]
++name = "cfg-if"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
++
++[[package]]
++name = "cloudabi"
++version = "0.0.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
++dependencies = [
++ "bitflags",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
++dependencies = [
++ "autocfg",
++ "cfg-if",
++ "lazy_static",
++]
++
++[[package]]
++name = "ctrlc"
++version = "3.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7a4ba686dff9fa4c1c9636ce1010b0cf98ceb421361b0bb3d6faeec43bd217a7"
++dependencies = [
++ "nix 0.17.0",
++ "winapi 0.3.8",
++]
++
++[[package]]
++name = "fnv"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
++
++[[package]]
++name = "fuchsia-zircon"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82"
++dependencies = [
++ "bitflags",
++ "fuchsia-zircon-sys",
++]
++
++[[package]]
++name = "fuchsia-zircon-sys"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
++
++[[package]]
++name = "futures"
++version = "0.1.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
++
++[[package]]
++name = "getopts"
++version = "0.2.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5"
++dependencies = [
++ "unicode-width",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "inotify"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
++dependencies = [
++ "bitflags",
++ "futures",
++ "inotify-sys",
++ "libc",
++ "mio",
++ "tokio-io",
++ "tokio-reactor",
++]
++
++[[package]]
++name = "inotify-sys"
++version = "0.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "iovec"
++version = "0.1.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "kernel32-sys"
++version = "0.2.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
++dependencies = [
++ "winapi 0.2.8",
++ "winapi-build",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.68"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "dea0c0405123bba743ee3f91f49b1c7cfb684eef0da0a50110f758ccf24cdff0"
++
++[[package]]
++name = "lock_api"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "79b2de95ecb4691949fea4716ca53cdbcfccb2c612e19644a8bad05edcf9f47b"
++dependencies = [
++ "scopeguard",
++]
++
++[[package]]
++name = "log"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "maybe-uninit"
++version = "2.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
++
++[[package]]
++name = "memchr"
++version = "2.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
++
++[[package]]
++name = "mio"
++version = "0.6.21"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
++dependencies = [
++ "cfg-if",
++ "fuchsia-zircon",
++ "fuchsia-zircon-sys",
++ "iovec",
++ "kernel32-sys",
++ "libc",
++ "log",
++ "miow",
++ "net2",
++ "slab",
++ "winapi 0.2.8",
++]
++
++[[package]]
++name = "miow"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
++dependencies = [
++ "kernel32-sys",
++ "net2",
++ "winapi 0.2.8",
++ "ws2_32-sys",
++]
++
++[[package]]
++name = "net2"
++version = "0.2.33"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "winapi 0.3.8",
++]
++
++[[package]]
++name = "nix"
++version = "0.11.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "becb657d662f1cd2ef38c7ad480ec6b8cf9e96b27adb543e594f9cf0f2e6065c"
++dependencies = [
++ "bitflags",
++ "cc",
++ "cfg-if",
++ "libc",
++ "void",
++]
++
++[[package]]
++name = "nix"
++version = "0.17.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
++dependencies = [
++ "bitflags",
++ "cc",
++ "cfg-if",
++ "libc",
++ "void",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
++dependencies = [
++ "hermit-abi",
++ "libc",
++]
++
++[[package]]
++name = "numtoa"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b8f8bdf33df195859076e54ab11ee78a1b208382d3a26ec40d142ffc1ecc49ef"
++
++[[package]]
++name = "parking_lot"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
++dependencies = [
++ "lock_api",
++ "parking_lot_core",
++ "rustc_version",
++]
++
++[[package]]
++name = "parking_lot_core"
++version = "0.6.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b"
++dependencies = [
++ "cfg-if",
++ "cloudabi",
++ "libc",
++ "redox_syscall",
++ "rustc_version",
++ "smallvec",
++ "winapi 0.3.8",
++]
++
++[[package]]
++name = "peep"
++version = "0.1.4"
++dependencies = [
++ "ctrlc",
++ "getopts",
++ "inotify",
++ "libc",
++ "mio",
++ "nix 0.11.1",
++ "regex",
++ "termion",
++ "termios",
++ "unicode-width",
++]
++
++[[package]]
++name = "redox_syscall"
++version = "0.1.56"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
++
++[[package]]
++name = "redox_termios"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"
++dependencies = [
++ "redox_syscall",
++]
++
++[[package]]
++name = "regex"
++version = "1.3.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8900ebc1363efa7ea1c399ccc32daed870b4002651e0bed86e72d501ebbe0048"
++dependencies = [
++ "aho-corasick",
++ "memchr",
++ "regex-syntax",
++ "thread_local",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae"
++
++[[package]]
++name = "rustc_version"
++version = "0.2.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
++dependencies = [
++ "semver",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "semver"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
++dependencies = [
++ "semver-parser",
++]
++
++[[package]]
++name = "semver-parser"
++version = "0.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
++
++[[package]]
++name = "slab"
++version = "0.4.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
++
++[[package]]
++name = "smallvec"
++version = "0.6.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
++dependencies = [
++ "maybe-uninit",
++]
++
++[[package]]
++name = "termion"
++version = "1.5.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c22cec9d8978d906be5ac94bceb5a010d885c626c4c8855721a4dbd20e3ac905"
++dependencies = [
++ "libc",
++ "numtoa",
++ "redox_syscall",
++ "redox_termios",
++]
++
++[[package]]
++name = "termios"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "72b620c5ea021d75a735c943269bb07d30c9b77d6ac6b236bc8b5c496ef05625"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "thread_local"
++version = "1.0.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
++dependencies = [
++ "lazy_static",
++]
++
++[[package]]
++name = "tokio-executor"
++version = "0.1.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671"
++dependencies = [
++ "crossbeam-utils",
++ "futures",
++]
++
++[[package]]
++name = "tokio-io"
++version = "0.1.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674"
++dependencies = [
++ "bytes",
++ "futures",
++ "log",
++]
++
++[[package]]
++name = "tokio-reactor"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351"
++dependencies = [
++ "crossbeam-utils",
++ "futures",
++ "lazy_static",
++ "log",
++ "mio",
++ "num_cpus",
++ "parking_lot",
++ "slab",
++ "tokio-executor",
++ "tokio-io",
++ "tokio-sync",
++]
++
++[[package]]
++name = "tokio-sync"
++version = "0.1.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee"
++dependencies = [
++ "fnv",
++ "futures",
++]
++
++[[package]]
++name = "unicode-width"
++version = "0.1.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
++
++[[package]]
++name = "void"
++version = "1.0.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
++
++[[package]]
++name = "winapi"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
++
++[[package]]
++name = "winapi"
++version = "0.3.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
++dependencies = [
++ "winapi-i686-pc-windows-gnu",
++ "winapi-x86_64-pc-windows-gnu",
++]
++
++[[package]]
++name = "winapi-build"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
++
++[[package]]
++name = "winapi-i686-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
++
++[[package]]
++name = "winapi-x86_64-pc-windows-gnu"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
++
++[[package]]
++name = "ws2_32-sys"
++version = "0.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
++dependencies = [
++ "winapi 0.2.8",
++ "winapi-build",
++]
+-- 
+2.25.0
+
diff --git a/pkgs/tools/misc/peep/default.nix b/pkgs/tools/misc/peep/default.nix
new file mode 100644
index 000000000000..161ea3f75e63
--- /dev/null
+++ b/pkgs/tools/misc/peep/default.nix
@@ -0,0 +1,23 @@
+{ lib, rustPlatform, fetchFromGitHub }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "peep";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "ryochack";
+    repo = "peep";
+    rev = "v${version}";
+    sha256 = "0c0fphnhq9vg9jjnkl35k56jbcnyz2ballsnkbm2xrh8vbyvk1av";
+  };
+
+  cargoPatches = [ ./0001-Add-Cargo.lock-by-running-cargo-vendor.patch ];
+  cargoSha256 = "15qc9a4zpnq7lbcaji1mkik93qkx366misczbi1mipiq5w7sgn0l";
+
+  meta = with lib; {
+    description = "The CLI text viewer tool that works like less command on small pane within the terminal window";
+    license = licenses.mit;
+    homepage = "https://github.com/ryochack/peep";
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/pkgs/tools/misc/zabbix-cli/default.nix b/pkgs/tools/misc/zabbix-cli/default.nix
index d21573885123..74e7e7223d14 100644
--- a/pkgs/tools/misc/zabbix-cli/default.nix
+++ b/pkgs/tools/misc/zabbix-cli/default.nix
@@ -4,7 +4,7 @@ let
 
 in pythonPackages.buildPythonApplication rec {
   pname = "zabbix-cli";
-  version = "2.1.1";
+  version = "2.2.1";
 
   propagatedBuildInputs = with pythonPackages; [ ipaddr requests ];
 
@@ -17,7 +17,7 @@ in pythonPackages.buildPythonApplication rec {
     owner = "usit-gd";
     repo = "zabbix-cli";
     rev = version;
-    sha256 = "10a1cvjqwlqqfz52ajv9i53h6v95w8y7xmgqr79q2c4v1nz5bfks";
+    sha256 = "0wzmrn8p09ksqhhgawr179c4az7p2liqr0l4q2dra62bxliawyqz";
   };
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/frp/default.nix b/pkgs/tools/networking/frp/default.nix
index 2ed70c9ef202..f44e2208646c 100644
--- a/pkgs/tools/networking/frp/default.nix
+++ b/pkgs/tools/networking/frp/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "frp";
-  version = "0.31.2";
+  version = "0.32.0";
 
   src = fetchFromGitHub {
     owner = "fatedier";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0947psq6qcr175xsgwr5k6idphs3s4vdv130ms738bcqf0h9snky";
+    sha256 = "1hj3xy7ihwl66hyxc1m8k3fwgz5jyx1bd32f80d7266klhjqf6nw";
   };
 
-  modSha256 = "1zbl0gfc99pbzdacxhfa1k3y6i7v13sb441wpbp9aygxhvwqrms9";
+  modSha256 = "1v90w5grc0vjpcp0m56d73zi0qnbswgz1rcvcwrjfa3rwqhigbal";
 
   subPackages = [ "cmd/frpc" "cmd/frps" ];
 
diff --git a/pkgs/tools/networking/http2tcp/default.nix b/pkgs/tools/networking/http2tcp/default.nix
new file mode 100644
index 000000000000..b1f3c704b1fa
--- /dev/null
+++ b/pkgs/tools/networking/http2tcp/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, python3
+, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation rec {
+  pname = "http2tcp";
+  version = "0.5";
+
+  src = fetchurl {
+    url = "https://www.linta.de/~aehlig/http2tcp/${pname}-${version}.tar.gz";
+    sha256 = "34fb83c091689dee398ca80db76487e0c39abb17cef390d845ffd888009a5caa";
+  };
+
+  buildInputs = [
+    (python3.withPackages (ps: [
+      ps.wsgitools
+    ]))
+  ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/${pname}}
+    cp http2tcp* $out/bin
+    cp Protocol $out/share/${pname}/
+  '';
+
+  meta = with lib; {
+    maintainers = with maintainers; [ clkamp ];
+    description = "A tool for tunneling TCP connections via HTTP GET requests";
+    longDescription = ''
+      The http2tcp tools allow to tunnel tcp connections (presumably
+      ssh) via syntactically correct http requests. It is designed to
+      work in the presence of so-called "transparent"
+      store-and-forward proxies disallowing POST requests.
+
+      It also turned out to be useful to stabilise connections where
+      the client's internet connection is unreliable (frequent long
+      network outages, rapidly changing IP address, etc).
+    '';
+    homepage = "https://www.linta.de/~aehlig/http2tcp/";
+    license = licenses.bsd3;
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/tools/networking/inadyn/default.nix b/pkgs/tools/networking/inadyn/default.nix
index 20169121cd9a..9f7d79bdd88c 100644
--- a/pkgs/tools/networking/inadyn/default.nix
+++ b/pkgs/tools/networking/inadyn/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "inadyn";
-  version = "2.5";
+  version = "2.6";
 
   src = fetchFromGitHub {
     owner = "troglobit";
     repo = "inadyn";
     rev = "v${version}";
-    sha256 = "0izhynqfj4xafsrc653wym8arwps0qim203w8l0g5z9vzfxfnvqw";
+    sha256 = "013kxlglxliajv3lrsix4w88w40g709rvycajb6ad6gbh8giqv47";
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
-    homepage = http://troglobit.com/project/inadyn/;
+    homepage = "http://troglobit.com/project/inadyn/";
     description = "Free dynamic DNS client";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/networking/iodine/default.nix b/pkgs/tools/networking/iodine/default.nix
index 44bf52c9933f..c978a330ceeb 100644
--- a/pkgs/tools/networking/iodine/default.nix
+++ b/pkgs/tools/networking/iodine/default.nix
@@ -1,11 +1,14 @@
-{ stdenv, fetchurl, zlib, nettools }:
+{ stdenv, fetchFromGitHub, zlib, nettools, nixosTests }:
 
 stdenv.mkDerivation rec {
-  name = "iodine-0.7.0";
+  pname = "iodine";
+  version = "unstable-2019-09-27";
 
-  src = fetchurl {
-    url = "https://code.kryo.se/iodine/${name}.tar.gz";
-    sha256 = "0gh17kcxxi37k65zm4gqsvbk3aw7yphcs3c02pn1c4s2y6n40axd";
+  src = fetchFromGitHub {
+    owner = "yarrick";
+    repo = "iodine";
+    rev = "8e14f18";
+    sha256 = "0k8m99qfjd5n6n56jnq85y7q8h2i2b8yw6ba0kxsz4jyx97lavg3";
   };
 
   buildInputs = [ zlib ];
@@ -16,6 +19,10 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "prefix=\${out}" ];
 
+  passthru.tests = {
+    inherit (nixosTests) iodine;
+  };
+
   meta = {
     homepage = http://code.kryo.se/iodine/;
     description = "Tool to tunnel IPv4 data through a DNS server";
diff --git a/pkgs/tools/networking/network-manager/iodine/default.nix b/pkgs/tools/networking/network-manager/iodine/default.nix
index 29c0d550fe2f..9042605caf17 100644
--- a/pkgs/tools/networking/network-manager/iodine/default.nix
+++ b/pkgs/tools/networking/network-manager/iodine/default.nix
@@ -1,15 +1,18 @@
-{ stdenv, fetchurl, substituteAll, iodine, intltool, pkgconfig, networkmanager, libsecret, gtk3
+{ stdenv, fetchFromGitLab, substituteAll, autoreconfHook, iodine, intltool, pkgconfig, networkmanager, libsecret, gtk3
 , withGnome ? true, gnome3, fetchpatch, networkmanagerapplet }:
 
 let
   pname = "NetworkManager-iodine";
-  version = "1.2.0";
+  version = "unstable-2019-11-05";
 in stdenv.mkDerivation {
   name = "${pname}${if withGnome then "-gnome" else ""}-${version}";
 
-  src = fetchurl {
-    url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0njdigakidji6mfmbsp8lfi8wl88z1dk8cljbva2w0xazyddbwyh";
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "network-manager-iodine";
+    rev = "2ef0abf089b00a0546f214dde0d45e63f2990b79";
+    sha256 = "1ps26fr9b1yyafj7lrzf2kmaxb0ipl0mhagch5kzrjdsc5xkajz7";
   };
 
   patches = [
@@ -27,11 +30,12 @@ in stdenv.mkDerivation {
   buildInputs = [ iodine networkmanager ]
     ++ stdenv.lib.optionals withGnome [ gtk3 libsecret networkmanagerapplet ];
 
-  nativeBuildInputs = [ intltool pkgconfig ];
+  nativeBuildInputs = [ intltool autoreconfHook pkgconfig ];
 
   # glib-2.62 deprecations
   NIX_CFLAGS_COMPILE = "-DGLIB_DISABLE_DEPRECATION_WARNINGS";
 
+  preConfigure = "intltoolize";
   configureFlags = [
     "--without-libnm-glib"
     "--with-gnome=${if withGnome then "yes" else "no"}"
diff --git a/pkgs/tools/networking/openapi-generator-cli/unstable.nix b/pkgs/tools/networking/openapi-generator-cli/unstable.nix
new file mode 100644
index 000000000000..01a0ef2242ed
--- /dev/null
+++ b/pkgs/tools/networking/openapi-generator-cli/unstable.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  version = "5.0.0-2020-02-04";
+  pname = "openapi-generator-cli";
+
+  jarfilename = "${pname}-${version}.jar";
+
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  src = fetchurl {
+    url = "https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/openapi-generator-cli-5.0.0-20200204.091421-37.jar";
+    sha256 = "0swv976fcr2z8g53avr0r706c31xacb2dlnl8b4c8mzmi49byy7k";
+  };
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    install -D "$src" "$out/share/java/${jarfilename}"
+
+    makeWrapper ${jre}/bin/java $out/bin/${pname} \
+      --add-flags "-jar $out/share/java/${jarfilename}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Allows generation of API client libraries (SDK generation), server stubs and documentation automatically given an OpenAPI Spec";
+    homepage = https://github.com/OpenAPITools/openapi-generator;
+    license = licenses.asl20;
+    maintainers = [ maintainers.shou ];
+  };
+}
+
diff --git a/pkgs/tools/networking/zerotierone/default.nix b/pkgs/tools/networking/zerotierone/default.nix
index da5b8837523d..2a3987f490ff 100644
--- a/pkgs/tools/networking/zerotierone/default.nix
+++ b/pkgs/tools/networking/zerotierone/default.nix
@@ -21,6 +21,9 @@ stdenv.mkDerivation rec {
       patchShebangs ./doc/build.sh
       substituteInPlace ./doc/build.sh \
         --replace '/usr/bin/ronn' '${buildPackages.ronn}/bin/ronn' \
+
+      substituteInPlace ./make-linux.mk \
+        --replace 'armv5' 'armv6'
   '';
 
 
@@ -29,6 +32,13 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  buildFlags = [ "all" "selftest" ];
+
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  checkPhase = ''
+    ./zerotier-selftest
+  '';
+
   installPhase = ''
     install -Dt "$out/bin/" zerotier-one
     ln -s $out/bin/zerotier-one $out/bin/zerotier-idtool
@@ -47,6 +57,6 @@ stdenv.mkDerivation rec {
     homepage = https://www.zerotier.com;
     license = licenses.bsl11;
     maintainers = with maintainers; [ sjmackenzie zimbatm ehmry obadz danielfullmer ];
-    platforms = with platforms; x86_64 ++ aarch64 ++ arm;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/security/bitwarden_rs/default.nix b/pkgs/tools/security/bitwarden_rs/default.nix
index ac8091a91045..cd71ea99fecb 100644
--- a/pkgs/tools/security/bitwarden_rs/default.nix
+++ b/pkgs/tools/security/bitwarden_rs/default.nix
@@ -8,13 +8,13 @@ let
 
 in rustPlatform.buildRustPackage rec {
   pname = "bitwarden_rs";
-  version = "1.13.1";
+  version = "1.14";
 
   src = fetchFromGitHub {
     owner = "dani-garcia";
     repo = pname;
     rev = version;
-    sha256 = "0af8cnpx86a096m59wmszcfyrfgf7adlqr39phbg647mgjfzwcrk";
+    sha256 = "1ck0l0167kw1i5fjn507g4d18x2krbpk2ks0lnw9vzg0bwnzzwwd";
   };
 
   nativeBuildInputs = [ pkgconfig ];
@@ -25,7 +25,7 @@ in rustPlatform.buildRustPackage rec {
 
   RUSTC_BOOTSTRAP = 1;
 
-  cargoSha256 = "1zzf71d2pr4mkc3xpm58z1apgskw2z8rklly7q23qxkzg5h4qasx";
+  cargoSha256 = "0cgk61dmc057p82g0apd4sx6a8vhvcipxikrdb0hds4frhqsr6i8";
   cargoBuildFlags = [ featuresFlag ];
 
   checkPhase = ''
diff --git a/pkgs/tools/security/jwt-cli/default.nix b/pkgs/tools/security/jwt-cli/default.nix
index fc40129f6caa..f2314d7a0e87 100644
--- a/pkgs/tools/security/jwt-cli/default.nix
+++ b/pkgs/tools/security/jwt-cli/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "jwt-cli";
-  version = "2.5.2";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "mike-engel";
     repo = pname;
     rev = version;
-    sha256 = "1q6dqh8z6mhiksjrhi602cvq31jgc18pfbwf6mlm9gi1grpgm5dl";
+    sha256 = "108pwk0h6zcbfmp0k8rhjxaa9yk8rhb78aaql22x48n11fnjl27i";
   };
 
-  cargoSha256 = "1krsr4a1f5rdba4l0i90yr5s8k8hg1np9n85ingx37gar9ahr1y3";
+  cargoSha256 = "1xh2ylx5fqblhlrs8yhl3zf8kvgrqnwdwmix6yzch9bi5mv5c11w";
 
   buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
 
diff --git a/pkgs/tools/security/keybase/default.nix b/pkgs/tools/security/keybase/default.nix
index 9a8a283d799d..da4b9c99e20b 100644
--- a/pkgs/tools/security/keybase/default.nix
+++ b/pkgs/tools/security/keybase/default.nix
@@ -6,7 +6,7 @@
 
 buildGoPackage rec {
   pname = "keybase";
-  version = "5.2.1";
+  version = "5.3.0";
 
   goPackagePath = "github.com/keybase/client";
   subPackages = [ "go/kbnm" "go/keybase" ];
@@ -17,7 +17,7 @@ buildGoPackage rec {
     owner = "keybase";
     repo = "client";
     rev = "v${version}";
-    sha256 = "1gq5s202zlf6z6fd4qwbgzmddrzj50js3kzyln63xh0svc3sgfvl";
+    sha256 = "0xqqzjlvq9sgjx1jzv0w2ls0365xzfh4iapzqkrqka635xfggwcn";
   };
 
   patches = [
diff --git a/pkgs/tools/security/keybase/gui.nix b/pkgs/tools/security/keybase/gui.nix
index e46da9ca9b6a..0573391139b8 100644
--- a/pkgs/tools/security/keybase/gui.nix
+++ b/pkgs/tools/security/keybase/gui.nix
@@ -4,16 +4,16 @@
 , runtimeShell, gsettings-desktop-schemas }:
 
 let
-  versionSuffix = "20200225210944.9845113a89";
+  versionSuffix = "20200310205642.4f2689009b";
 in
 
 stdenv.mkDerivation rec {
   pname = "keybase-gui";
-  version = "5.2.1"; # Find latest version from https://prerelease.keybase.io/deb/dists/stable/main/binary-amd64/Packages
+  version = "5.3.0"; # Find latest version from https://prerelease.keybase.io/deb/dists/stable/main/binary-amd64/Packages
 
   src = fetchurl {
     url = "https://s3.amazonaws.com/prerelease.keybase.io/linux_binaries/deb/keybase_${version + "-" + versionSuffix}_amd64.deb";
-    sha256 = "183vkwm12frdy50z6gyb1mffn3w8jvxxj472868af813r0n1akl5";
+    sha256 = "0zasw2dk33k6c6xqsjnyz3b3s1j27vza9alkp0hpvds88mnnmjv1";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/system/inxi/default.nix b/pkgs/tools/system/inxi/default.nix
index 7866bece0661..f5b5d4ef7a2a 100644
--- a/pkgs/tools/system/inxi/default.nix
+++ b/pkgs/tools/system/inxi/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "inxi";
-  version = "3.0.37-1";
+  version = "3.0.38-1";
 
   src = fetchFromGitHub {
     owner = "smxi";
     repo = "inxi";
     rev = version;
-    sha256 = "15wvj9w601ci3bavd1hk5qlm8dfm7a7cjglczk29yir5yw2jww3f";
+    sha256 = "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm";
   };
 
   buildInputs = [ perl makeWrapper ];
@@ -24,7 +24,8 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "A full featured CLI system information tool";
-    homepage = https://smxi.org/docs/inxi.htm;
+    homepage = "https://smxi.org/docs/inxi.htm";
+    changelog = "https://github.com/smxi/inxi/blob/${version}/inxi.changelog";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ primeos ];
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 2f29f9cc0173..af8cbed10613 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -488,6 +488,7 @@ mapAliases ({
   tex-gyre-schola-math = tex-gyre-math.schola; # added 2018-04-03
   tex-gyre-termes-math = tex-gyre-math.termes; # added 2018-04-03
   tftp_hpa = tftp-hpa; # added 2015-04-03
+  tomcat85 = tomcat8; # added 2020-03-11
   torbrowser = tor-browser-bundle-bin; # added 2017-04-05
   transporter = throw "transporter has been removed. It was archived upstream, so it's considered abandoned.";
   trang = jing-trang; # added 2018-04-25
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5ea8fb5d7b62..da01b5135e90 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -960,6 +960,8 @@ in
 
   hpe-ltfs = callPackage ../tools/backup/hpe-ltfs { };
 
+  http2tcp = callPackage ../tools/networking/http2tcp { };
+
   httperf = callPackage ../tools/networking/httperf { };
 
   ili2c = callPackage ../tools/misc/ili2c { };
@@ -2472,6 +2474,8 @@ in
 
   cmst = libsForQt5.callPackage ../tools/networking/cmst { };
 
+  cmt = callPackage ../applications/audio/cmt {};
+
   codimd = callPackage ../servers/web-apps/codimd {
     nodejs = nodejs-10_x;
   };
@@ -5533,6 +5537,7 @@ in
   onioncircuits = callPackage ../tools/security/onioncircuits { };
 
   openapi-generator-cli = callPackage ../tools/networking/openapi-generator-cli { };
+  openapi-generator-cli-unstable = callPackage ../tools/networking/openapi-generator-cli/unstable.nix { };
 
   opencc = callPackage ../tools/text/opencc { };
 
@@ -5716,6 +5721,8 @@ in
 
   pazi = callPackage ../tools/misc/pazi { };
 
+  peep = callPackage ../tools/misc/peep { };
+
   pell = callPackage ../applications/misc/pell { };
 
   pepper = callPackage ../tools/admin/salt/pepper { };
@@ -8992,7 +8999,6 @@ in
   swift = callPackage ../development/compilers/swift { };
 
   swiProlog = callPackage ../development/compilers/swi-prolog {
-    openssl = openssl_1_0_2;
     inherit (darwin.apple_sdk.frameworks) Security;
   };
   swiPrologWithGui = swiProlog.override { withGui = true; };
@@ -10500,7 +10506,7 @@ in
   # NOTE: Override and set icon-lang = null to use Awk instead of Icon.
   noweb = callPackage ../development/tools/literate-programming/noweb { };
 
-  nuweb = callPackage ../development/tools/literate-programming/nuweb { tex = texlive.combined.scheme-small; };
+  nuweb = callPackage ../development/tools/literate-programming/nuweb { tex = texlive.combined.scheme-medium; };
 
   nrfutil = callPackage ../development/tools/misc/nrfutil { };
 
@@ -12907,6 +12913,8 @@ in
 
   libkate = callPackage ../development/libraries/libkate { };
 
+  libkml = callPackage ../development/libraries/libkml { };
+
   libksba = callPackage ../development/libraries/libksba { };
 
   libksi = callPackage ../development/libraries/libksi { };
@@ -16018,12 +16026,13 @@ in
 
   syncserver = callPackage ../servers/syncserver { };
 
+  tailscale = callPackage ../servers/tailscale { };
+
   thanos = callPackage ../servers/monitoring/thanos { };
 
   inherit (callPackages ../servers/http/tomcat { })
     tomcat7
     tomcat8
-    tomcat85
     tomcat9;
 
   tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };
@@ -17475,7 +17484,13 @@ in
 
   anonymousPro = callPackage ../data/fonts/anonymous-pro { };
 
-  ant-theme = callPackage ../data/themes/ant-theme { };
+  ant-theme = callPackage ../data/themes/ant-theme/ant.nix { };
+
+  ant-bloody-theme = callPackage ../data/themes/ant-theme/ant-bloody.nix { };
+
+  ant-dracula-theme = callPackage ../data/themes/ant-theme/ant-dracula.nix { };
+
+  ant-nebula-theme = callPackage ../data/themes/ant-theme/ant-nebula.nix { };
 
   arc-icon-theme = callPackage ../data/icons/arc-icon-theme { };
 
@@ -18350,6 +18365,8 @@ in
 
   astroid = callPackage ../applications/networking/mailreaders/astroid { };
 
+  aucatctl = callPackage ../applications/audio/aucatctl { };
+
   audacious = callPackage ../applications/audio/audacious { };
   audaciousQt5 = libsForQt5.callPackage ../applications/audio/audacious/qt-5.nix { };
 
@@ -18830,6 +18847,7 @@ in
   docker-gc = callPackage ../applications/virtualization/docker/gc.nix { };
 
   docker-machine = callPackage ../applications/networking/cluster/docker-machine { };
+  docker-machine-hyperkit = callPackage ../applications/networking/cluster/docker-machine/hyperkit.nix { };
   docker-machine-kvm = callPackage ../applications/networking/cluster/docker-machine/kvm.nix { };
   docker-machine-kvm2 = callPackage ../applications/networking/cluster/docker-machine/kvm2.nix { };
   docker-machine-xhyve = callPackage ../applications/networking/cluster/docker-machine/xhyve.nix {
@@ -19999,8 +20017,6 @@ in
 
   josm = callPackage ../applications/misc/josm { };
 
-  jbrout = callPackage ../applications/graphics/jbrout { };
-
   jwm = callPackage ../applications/window-managers/jwm { };
 
   jwm-settings-manager = callPackage ../applications/window-managers/jwm/jwm-settings-manager.nix { };
@@ -20123,6 +20139,8 @@ in
 
   kubeval = callPackage ../applications/networking/cluster/kubeval { };
 
+  kubeval-schema = callPackage ../applications/networking/cluster/kubeval/schema.nix { };
+
   kubernetes = callPackage ../applications/networking/cluster/kubernetes {
     go = buildPackages.go_1_13;
   };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 0773a1984ab5..40b42fbca78c 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -4619,7 +4619,7 @@ in {
 
   offtrac = callPackage ../development/python-modules/offtrac { };
 
-  openpyxl = if isPy3k then
+  openpyxl = if pythonAtLeast "3.6" then
     callPackage ../development/python-modules/openpyxl { }
   else
     callPackage ../development/python-modules/openpyxl/2.nix { };
@@ -6245,6 +6245,8 @@ in {
 
   wsgiproxy2 = callPackage ../development/python-modules/wsgiproxy2 { };
 
+  wsgitools = callPackage ../development/python-modules/wsgitools { };
+
   wurlitzer = callPackage ../development/python-modules/wurlitzer { };
 
   xcaplib = callPackage ../development/python-modules/xcaplib { };