about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMalte Brandy <malte.brandy@maralorn.de>2021-08-10 22:01:47 +0200
committerMalte Brandy <malte.brandy@maralorn.de>2021-08-10 22:01:47 +0200
commitd86710ad1f0009fbbec410a5297ba7e11f791a42 (patch)
tree96d00773a6ece288b0b50e41eef21a7b93fa8cf3 /pkgs
parent844bb647fb7dca7c1495ff218c4c020cdef0c843 (diff)
parenta8ef3da92f24e3f93cb0b0d3228b44780f785df6 (diff)
Merge branch 'master' into haskell-updates
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/blockchains/bisq-desktop/default.nix12
-rw-r--r--pkgs/applications/blockchains/bitcoin-unlimited/default.nix4
-rw-r--r--pkgs/applications/blockchains/clightning/default.nix4
-rw-r--r--pkgs/applications/blockchains/ledger-live-desktop/default.nix4
-rw-r--r--pkgs/applications/graphics/paraview/default.nix68
-rw-r--r--pkgs/applications/misc/dasel/default.nix4
-rw-r--r--pkgs/applications/misc/fetchmail/default.nix18
-rw-r--r--pkgs/applications/networking/browsers/yandex-browser/default.nix4
-rw-r--r--pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix6
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/terraform-providers/default.nix6
-rw-r--r--pkgs/applications/networking/irc/catgirl/default.nix4
-rw-r--r--pkgs/applications/networking/zerobin/default.nix7
-rw-r--r--pkgs/applications/science/chemistry/jmol/default.nix4
-rw-r--r--pkgs/applications/science/programming/plm/default.nix18
-rw-r--r--pkgs/applications/version-management/gitea/default.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix4
-rw-r--r--pkgs/applications/virtualization/OVMF/default.nix4
-rw-r--r--pkgs/applications/virtualization/seabios/default.nix5
-rw-r--r--pkgs/applications/virtualization/virtualbox/default.nix14
-rw-r--r--pkgs/applications/virtualization/xen/generic.nix4
-rw-r--r--pkgs/build-support/docker/default.nix968
-rw-r--r--pkgs/data/themes/marwaita/default.nix4
-rw-r--r--pkgs/data/themes/vimix/default.nix24
-rw-r--r--pkgs/desktops/xfce/applications/catfish/default.nix7
-rw-r--r--pkgs/desktops/xfce/applications/mousepad/default.nix4
-rw-r--r--pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix4
-rw-r--r--pkgs/development/compilers/ecl/16.1.2.nix17
-rw-r--r--pkgs/development/compilers/edk2/default.nix1
-rw-r--r--pkgs/development/compilers/iasl/default.nix33
-rw-r--r--pkgs/development/compilers/scala-runners/default.nix2
-rw-r--r--pkgs/development/compilers/sdcc/default.nix6
-rw-r--r--pkgs/development/libraries/aften/default.nix13
-rw-r--r--pkgs/development/libraries/aften/simd-fallback.patch25
-rw-r--r--pkgs/development/libraries/gjs/default.nix5
-rw-r--r--pkgs/development/libraries/nspr/default.nix14
-rw-r--r--pkgs/development/libraries/nss/3.53.nix148
-rw-r--r--pkgs/development/libraries/nss/default.nix156
-rw-r--r--pkgs/development/libraries/nss_wrapper/default.nix5
-rw-r--r--pkgs/development/libraries/phonon/backends/vlc.nix16
-rw-r--r--pkgs/development/libraries/portmidi/default.nix48
-rw-r--r--pkgs/development/libraries/portmidi/remove-darwin-variables.diff52
-rw-r--r--pkgs/development/libraries/usbredir/default.nix45
-rw-r--r--pkgs/development/libraries/webkitgtk/default.nix14
-rw-r--r--pkgs/development/libraries/wxsqlite3/default.nix12
-rw-r--r--pkgs/development/node-packages/node-packages.json1
-rw-r--r--pkgs/development/node-packages/node-packages.nix1011
-rw-r--r--pkgs/development/python-modules/arcam-fmj/default.nix4
-rw-r--r--pkgs/development/python-modules/b2sdk/default.nix5
-rw-r--r--pkgs/development/python-modules/clevercsv/default.nix4
-rw-r--r--pkgs/development/python-modules/clize/default.nix10
-rw-r--r--pkgs/development/python-modules/coapthon3/default.nix4
-rw-r--r--pkgs/development/python-modules/dbutils/default.nix12
-rw-r--r--pkgs/development/python-modules/deemix/default.nix4
-rw-r--r--pkgs/development/python-modules/deezer-py/default.nix4
-rw-r--r--pkgs/development/python-modules/hass-nabucasa/default.nix4
-rw-r--r--pkgs/development/python-modules/hstspreload/default.nix4
-rw-r--r--pkgs/development/python-modules/mutesync/default.nix15
-rw-r--r--pkgs/development/python-modules/py-air-control-exporter/default.nix49
-rw-r--r--pkgs/development/python-modules/pymupdf/default.nix39
-rw-r--r--pkgs/development/python-modules/runway-python/default.nix4
-rw-r--r--pkgs/development/python-modules/scrapy/default.nix4
-rw-r--r--pkgs/development/python-modules/sopel/default.nix7
-rw-r--r--pkgs/development/python-modules/testfixtures/default.nix43
-rw-r--r--pkgs/development/python-modules/zeroconf/default.nix4
-rw-r--r--pkgs/development/ruby-modules/with-packages/Gemfile1
-rw-r--r--pkgs/development/tools/analysis/tfsec/default.nix4
-rw-r--r--pkgs/development/tools/backblaze-b2/default.nix4
-rw-r--r--pkgs/development/tools/electron/default.nix48
-rw-r--r--pkgs/development/tools/fnm/default.nix35
-rw-r--r--pkgs/development/tools/java/java-language-server/default.nix96
-rw-r--r--pkgs/development/tools/misc/terraform-ls/default.nix6
-rw-r--r--pkgs/development/tools/operator-sdk/default.nix6
-rw-r--r--pkgs/development/tools/rust/rust-analyzer/default.nix6
-rwxr-xr-xpkgs/development/tools/rust/rust-analyzer/update.sh24
-rw-r--r--pkgs/games/0ad/wrapper.nix5
-rw-r--r--pkgs/games/ecwolf/default.nix29
-rw-r--r--pkgs/misc/screensavers/betterlockscreen/default.nix49
-rw-r--r--pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch14
-rw-r--r--pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix4
-rw-r--r--pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json2
-rw-r--r--pkgs/misc/vscode-extensions/rust-analyzer/default.nix23
-rw-r--r--pkgs/os-specific/linux/fwts/default.nix6
-rw-r--r--pkgs/servers/dns/knot-dns/default.nix10
-rw-r--r--pkgs/servers/gpsd/default.nix80
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix2
-rw-r--r--pkgs/servers/home-assistant/default.nix4
-rw-r--r--pkgs/servers/home-assistant/frontend.nix4
-rw-r--r--pkgs/servers/isso/default.nix25
-rw-r--r--pkgs/servers/isso/node-env.nix573
-rw-r--r--pkgs/servers/isso/node-packages.nix558
-rw-r--r--pkgs/servers/isso/package.json15
-rw-r--r--pkgs/servers/tailscale/default.nix8
-rw-r--r--pkgs/shells/zsh/zsh-fzf-tab/default.nix6
-rw-r--r--pkgs/tools/X11/ckbcomp/default.nix4
-rw-r--r--pkgs/tools/backup/sanoid/default.nix10
-rw-r--r--pkgs/tools/cd-dvd/xorriso/default.nix4
-rw-r--r--pkgs/tools/filesystems/fuse-overlayfs/default.nix4
-rw-r--r--pkgs/tools/misc/coreboot-utils/default.nix22
-rw-r--r--pkgs/tools/misc/disfetch/default.nix8
-rw-r--r--pkgs/tools/misc/kepubify/default.nix6
-rw-r--r--pkgs/tools/misc/yt-dlp/default.nix62
-rw-r--r--pkgs/tools/networking/findomain/default.nix6
-rw-r--r--pkgs/tools/networking/minio-client/default.nix6
-rw-r--r--pkgs/tools/security/doas/default.nix1
-rw-r--r--pkgs/tools/security/nuclei/default.nix6
-rw-r--r--pkgs/tools/security/opensc/default.nix4
-rw-r--r--pkgs/tools/security/scorecard/default.nix6
-rw-r--r--pkgs/tools/system/acpica-tools/default.nix1
-rw-r--r--pkgs/tools/video/atomicparsley/default.nix21
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix36
-rw-r--r--pkgs/top-level/python-packages.nix7
-rw-r--r--pkgs/top-level/ruby-packages.nix485
114 files changed, 3809 insertions, 1597 deletions
diff --git a/pkgs/applications/blockchains/bisq-desktop/default.nix b/pkgs/applications/blockchains/bisq-desktop/default.nix
index ffc19765d4f6d..715de18a8fa38 100644
--- a/pkgs/applications/blockchains/bisq-desktop/default.nix
+++ b/pkgs/applications/blockchains/bisq-desktop/default.nix
@@ -13,6 +13,7 @@
 , tor
 , psmisc
 }:
+
 let
   bisq-launcher = writeScript "bisq-launcher" ''
     #! ${bash}/bin/bash
@@ -46,15 +47,16 @@ let
   '';
 in
 stdenv.mkDerivation rec {
-  version = "1.7.0";
   pname = "bisq-desktop";
-  nativeBuildInputs = [ makeWrapper copyDesktopItems dpkg ];
+  version = "1.7.0";
 
   src = fetchurl {
     url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb";
     sha256 = "0crry5k7crmrqn14wxiyrnhk09ac8a9ksqrwwky7jsnyah0bx5k4";
   };
 
+  nativeBuildInputs = [ makeWrapper copyDesktopItems dpkg ];
+
   desktopItems = [
     (makeDesktopItem {
       name = "Bisq";
@@ -71,6 +73,8 @@ stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/lib $out/bin
     cp opt/bisq/lib/app/desktop-${version}-all.jar $out/lib
 
@@ -80,13 +84,13 @@ stdenv.mkDerivation rec {
     makeWrapper ${bisq-launcher} $out/bin/bisq-desktop \
       --prefix PATH : $out/bin
 
-    copyDesktopItems
-
     for n in 16 24 32 48 64 96 128 256; do
       size=$n"x"$n
       ${imagemagick}/bin/convert opt/bisq/lib/Bisq.png -resize $size bisq.png
       install -Dm644 -t $out/share/icons/hicolor/$size/apps bisq.png
     done;
+
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/blockchains/bitcoin-unlimited/default.nix b/pkgs/applications/blockchains/bitcoin-unlimited/default.nix
index f1825b0cbda86..802a19167a977 100644
--- a/pkgs/applications/blockchains/bitcoin-unlimited/default.nix
+++ b/pkgs/applications/blockchains/bitcoin-unlimited/default.nix
@@ -7,13 +7,13 @@ with lib;
 
 stdenv.mkDerivation rec {
   name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version;
-  version = "1.9.1.1";
+  version = "1.9.2.0";
 
   src = fetchFromGitHub {
     owner = "bitcoinunlimited";
     repo = "bitcoinunlimited";
     rev = "BCHunlimited${version}";
-    sha256 = "sha256-K15SI1F/xI4SkX4a41QHLn89YaHCgrlv+wcbkpwGKhI=";
+    sha256 = "sha256-qUf/GWZHpI57ATTlvRhjDtAjRa8a4uvUb0G9Xcf0j7w=";
   };
 
   nativeBuildInputs = [ pkg-config autoreconfHook python3 ]
diff --git a/pkgs/applications/blockchains/clightning/default.nix b/pkgs/applications/blockchains/clightning/default.nix
index 44ed4d1541c09..0cec96b7a6ee5 100644
--- a/pkgs/applications/blockchains/clightning/default.nix
+++ b/pkgs/applications/blockchains/clightning/default.nix
@@ -20,11 +20,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "clightning";
-  version = "0.10.0";
+  version = "0.10.1";
 
   src = fetchurl {
     url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
-    sha256 = "5154e67780dddbf12f64c4b1994c3ee3834236f05b6462adf25e8a5f3fa407ea";
+    sha256 = "9271e9e89d60332b66afedbf8d6eab2a4a488782ab400ee1f60667d73c5a9a96";
   };
 
   nativeBuildInputs = [ autogen autoconf automake gettext libtool pkg-config py3 unzip which ];
diff --git a/pkgs/applications/blockchains/ledger-live-desktop/default.nix b/pkgs/applications/blockchains/ledger-live-desktop/default.nix
index 6e97c51afce43..4b3ba00fb9606 100644
--- a/pkgs/applications/blockchains/ledger-live-desktop/default.nix
+++ b/pkgs/applications/blockchains/ledger-live-desktop/default.nix
@@ -2,12 +2,12 @@
 
 let
   pname = "ledger-live-desktop";
-  version = "2.31.1";
+  version = "2.32.2";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
-    sha256 = "0cxf4i58l0kg9c13j7mf0w5ijrkkf9z1375vn6xghd0r8g5hvws5";
+    sha256 = "14agkl6xf0f9s5qldla6p6kzl8zlx61q5m8qy63lq215hrzh9d50";
   };
 
   appimageContents = appimageTools.extractType2 {
diff --git a/pkgs/applications/graphics/paraview/default.nix b/pkgs/applications/graphics/paraview/default.nix
index 79feab3ab7aed..1a761de6ec081 100644
--- a/pkgs/applications/graphics/paraview/default.nix
+++ b/pkgs/applications/graphics/paraview/default.nix
@@ -1,31 +1,46 @@
-{ boost, cmake, fetchFromGitHub, ffmpeg, qtbase, qtx11extras,
-  qttools, qtxmlpatterns, qtsvg, gdal, gfortran, libXt, makeWrapper,
-  mkDerivation, ninja, mpi, python3, lib, tbb, libGLU, libGL }:
+{ lib, stdenv, fetchFromGitLab, fetchurl
+, boost, cmake, ffmpeg, qtbase, qtx11extras
+, qttools, qtxmlpatterns, qtsvg, gdal, gfortran, libXt, makeWrapper
+, mkDerivation, ninja, mpi, python3, tbb, libGLU, libGL
+, withDocs ? true
+}:
 
-mkDerivation rec {
+let
+  version = "5.9.1";
+
+  docFiles = [
+    (fetchurl {
+      url = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${lib.versions.majorMinor version}&type=data&os=Sources&downloadFile=ParaViewTutorial-${version}.pdf";
+      name = "Tutorial.pdf";
+      sha256 = "1knpirjbz3rv8p8n03p39vv8vi5imvxakjsssqgly09g0cnsikkw";
+    })
+    (fetchurl {
+      url = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${lib.versions.majorMinor version}&type=data&os=Sources&downloadFile=ParaViewGettingStarted-${version}.pdf";
+      name = "GettingStarted.pdf";
+      sha256 = "14xhlvg7s7d5amqf4qfyamx2a6b66zf4cmlfm3s7iw3jq01x1lx6";
+    })
+    (fetchurl {
+      url = "https://www.paraview.org/paraview-downloads/download.php?submit=Download&version=v${lib.versions.majorMinor version}&type=data&os=Sources&downloadFile=ParaViewCatalystGuide-${version}.pdf";
+      name = "CatalystGuide.pdf";
+      sha256 = "133vcfrbg2nh15igl51ns6gnfn1is20vq6j0rg37wha697pmcr4a";
+    })
+  ];
+
+in mkDerivation rec {
   pname = "paraview";
-  version = "5.8.0";
+  inherit version;
 
-  src = fetchFromGitHub {
-    owner = "Kitware";
-    repo = "ParaView";
+  src = fetchFromGitLab {
+    domain = "gitlab.kitware.com";
+    owner = "paraview";
+    repo = "paraview";
     rev = "v${version}";
-    sha256 = "1mka6wwg9mbkqi3phs29mvxq6qbc44sspbm4awwamqhilh4grhrj";
+    sha256 = "0pzic95br0vr785jnpxqmfxcljw3wk7bhm2xy0jfmwm1dh2b7xac";
     fetchSubmodules = true;
   };
 
-  # Avoid error: format not a string literal and
-  # no format arguments [-Werror=format-security]
-  preConfigure = ''
-    substituteInPlace VTK/Common/Core/vtkLogger.h \
-      --replace 'vtkLogScopeF(verbosity_name, __func__)' 'vtkLogScopeF(verbosity_name, "%s", __func__)'
-
-    substituteInPlace VTK/Common/Core/vtkLogger.h \
-      --replace 'vtkVLogScopeF(level, __func__)' 'vtkVLogScopeF(level, "%s", __func__)'
-  '';
-
   # Find the Qt platform plugin "minimal"
-  patchPhase = ''
+  preConfigure = ''
     export QT_PLUGIN_PATH=${qtbase.bin}/${qtbase.qtPluginPrefix}
   '';
 
@@ -63,7 +78,8 @@ mkDerivation rec {
   ];
 
   buildInputs = [
-    libGLU libGL
+    libGLU
+    libGL
     libXt
     mpi
     tbb
@@ -77,6 +93,14 @@ mkDerivation rec {
     qtsvg
   ];
 
+  postInstall = let docDir = "$out/share/paraview-${lib.versions.majorMinor version}/doc"; in
+    lib.optionalString withDocs ''
+      mkdir -p ${docDir};
+      for docFile in ${lib.concatStringsSep " " docFiles}; do
+        cp $docFile ${docDir}/$(stripHash $docFile);
+      done;
+    '';
+
   propagatedBuildInputs = [
     (python3.withPackages (ps: with ps; [ numpy matplotlib mpi4py ]))
   ];
@@ -84,7 +108,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.paraview.org/";
     description = "3D Data analysis and visualization application";
-    license = licenses.free;
+    license = licenses.bsd3;
     maintainers = with maintainers; [ guibert ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/misc/dasel/default.nix b/pkgs/applications/misc/dasel/default.nix
index a6d7659531feb..afe7572cbf786 100644
--- a/pkgs/applications/misc/dasel/default.nix
+++ b/pkgs/applications/misc/dasel/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "dasel";
-  version = "1.16.1";
+  version = "1.17.0";
 
   src = fetchFromGitHub {
     owner = "TomWright";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-BrtTBy/Tb4xfs7UHk1acRzKZWNZJqhufHG1ItcM8TPs=";
+    sha256 = "sha256-VZsYwsYec6Q9T8xkb60F0CvPVFd2WJgyOfegm5GuN8c=";
   };
 
   vendorSha256 = "sha256-BdX4DO77mIf/+aBdkNVFUzClsIml1UMcgvikDbbdgcY=";
diff --git a/pkgs/applications/misc/fetchmail/default.nix b/pkgs/applications/misc/fetchmail/default.nix
index 18ed79c99d649..4baa3a094261d 100644
--- a/pkgs/applications/misc/fetchmail/default.nix
+++ b/pkgs/applications/misc/fetchmail/default.nix
@@ -1,22 +1,19 @@
 { lib, stdenv, fetchurl, openssl }:
 
-let
-  version = "6.4.20";
-in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "fetchmail";
-  inherit version;
+  version = "6.4.21";
 
   src = fetchurl {
     url = "mirror://sourceforge/fetchmail/fetchmail-${version}.tar.xz";
-    sha256 = "0xk171sbxcwjh1ibpipryw5sv4sy7jjfvhn5n373j04g5sp428f8";
+    sha256 = "sha256-akWcHK/XodqlzRNxQNpgwYyEtWmc2OckmnnDM0LJnR0=";
   };
 
   buildInputs = [ openssl ];
 
   configureFlags = [ "--with-ssl=${openssl.dev}" ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://www.fetchmail.info/";
     description = "A full-featured remote-mail retrieval and forwarding utility";
     longDescription = ''
@@ -27,9 +24,8 @@ stdenv.mkDerivation {
       all flavors of IMAP, ETRN, and ODMR. It can even support IPv6 and
       IPSEC.
     '';
-
-    platforms = lib.platforms.unix;
-    maintainers = [ lib.maintainers.peti ];
-    license = lib.licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.peti ];
+    license = licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/applications/networking/browsers/yandex-browser/default.nix b/pkgs/applications/networking/browsers/yandex-browser/default.nix
index 5c62dbb7e203c..7fa9fb5237a90 100644
--- a/pkgs/applications/networking/browsers/yandex-browser/default.nix
+++ b/pkgs/applications/networking/browsers/yandex-browser/default.nix
@@ -50,11 +50,11 @@
 
 stdenv.mkDerivation rec {
   pname = "yandex-browser";
-  version = "21.5.3.753-1";
+  version = "21.6.2.817-1";
 
   src = fetchurl {
     url = "http://repo.yandex.ru/yandex-browser/deb/pool/main/y/${pname}-beta/${pname}-beta_${version}_amd64.deb";
-    sha256 = "sha256-sI2p/fCaruUJ3qPMyy+12Bh5I1SH8m7sYX5yDex2rwg=";
+    sha256 = "sha256-xeZkQzVPPNABxa3/YBLoZl1obbFdzxdqIgLyoA4PN8U=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix b/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
index 5a4546b8cd8c7..7dc1a3c7d9cf4 100644
--- a/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
+++ b/pkgs/applications/networking/cluster/octant/plugins/starboard-octant-plugin.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "starboard-octant-plugin";
-  version = "0.10.3";
+  version = "0.11.0";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-9vl068ZTw6Czf+cWQ0k1lU0pqh7P0YZgLguHkk3M918=";
+    sha256 = "sha256-XHc/1rqTEVOjCm0kFniUmmjVeRsr9Npt0OpQ6Oy7Rxo=";
   };
 
-  vendorSha256 = "sha256-HOvZPDVKZEoL91yyaJRuKThHirY77xlKOtLKARthxn8=";
+  vendorSha256 = "sha256-EM0lPwwWJuLD+aqZWshz1ILaeEtUU4wJ0Puwv1Ikgf4=";
 
   preBuild = ''
     buildFlagsArray+=("-ldflags" "-s -w")
diff --git a/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix b/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
index 1ee986d203032..05d46c079f834 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
+++ b/pkgs/applications/networking/cluster/terraform-providers/cloudfoundry/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "terraform-provider-cloudfoundry";
-  version = "0.12.6";
+  version = "0.14.2";
 
   src = fetchFromGitHub {
     owner = "cloudfoundry-community";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0n5ybpzk6zkrnd9vpmbjlkm8fdp7nbfr046wih0jk72pmiyrcygi";
+    sha256 = "12mx87dip6vn10zvkf4rgrd27k708lnl149j9xj7bmb8v9m1082v";
   };
 
-  vendorSha256 = "01lfsd9aw9w3kr1a2a5b7ac6d8jaij83lhxl4y4qsnjlqk86fbxq";
+  vendorSha256 = "0kydjnwzj0fylizvk1vg42zyiy17qhz40z3iwa1r5bb20qkrlz93";
 
   # needs a running cloudfoundry
   doCheck = false;
diff --git a/pkgs/applications/networking/cluster/terraform-providers/default.nix b/pkgs/applications/networking/cluster/terraform-providers/default.nix
index 3091c957490cf..48923330afeec 100644
--- a/pkgs/applications/networking/cluster/terraform-providers/default.nix
+++ b/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -3,6 +3,7 @@
 , buildGoPackage
 , fetchFromGitHub
 , callPackage
+, config
 }:
 let
   list = lib.importJSON ./providers.json;
@@ -50,12 +51,13 @@ let
     cloudfoundry = callPackage ./cloudfoundry {};
     gandi = callPackage ./gandi {};
     hcloud = callPackage ./hcloud {};
-    kubernetes-alpha = throw "This has been merged as beta into the kubernetes provider. See https://www.hashicorp.com/blog/beta-support-for-crds-in-the-terraform-provider-for-kubernetes for details";
     libvirt = callPackage ./libvirt {};
     linuxbox = callPackage ./linuxbox {};
     lxd = callPackage ./lxd {};
     vpsadmin = callPackage ./vpsadmin {};
     vercel = callPackage ./vercel {};
-  };
+  } // (lib.optionalAttrs (config.allowAliases or false) {
+    kubernetes-alpha = throw "This has been merged as beta into the kubernetes provider. See https://www.hashicorp.com/blog/beta-support-for-crds-in-the-terraform-provider-for-kubernetes for details";
+  });
 in
   automated-providers // special-providers
diff --git a/pkgs/applications/networking/irc/catgirl/default.nix b/pkgs/applications/networking/irc/catgirl/default.nix
index d2e8e93d85347..1bc51def0cd2c 100644
--- a/pkgs/applications/networking/irc/catgirl/default.nix
+++ b/pkgs/applications/networking/irc/catgirl/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "catgirl";
-  version = "1.8";
+  version = "1.9";
 
   src = fetchurl {
     url = "https://git.causal.agency/catgirl/snapshot/${pname}-${version}.tar.gz";
-    sha256 = "0svpd2nqsr55ac98vczyhihs6pvgw7chspf6bdlwl98gch39dxif";
+    sha256 = "182l7yryqm1ffxqgz3i4lcnzwzpbpm2qvadddmj0xc8dh8513s0w";
   };
 
   nativeBuildInputs = [ ctags pkg-config ];
diff --git a/pkgs/applications/networking/zerobin/default.nix b/pkgs/applications/networking/zerobin/default.nix
index b86fe7cc6410f..16a52d6704501 100644
--- a/pkgs/applications/networking/zerobin/default.nix
+++ b/pkgs/applications/networking/zerobin/default.nix
@@ -7,6 +7,7 @@
 python3Packages.buildPythonApplication rec {
   pname = "zerobin";
   version = "1.0.5";
+
   src = fetchFromGitHub {
     owner = "Tygs";
     repo = "0bin";
@@ -21,6 +22,7 @@ python3Packages.buildPythonApplication rec {
     python3Packages.pyscss
     nodePackages.uglify-js
   ];
+
   propagatedBuildInputs = with python3Packages; [
     appdirs
     beaker
@@ -30,16 +32,19 @@ python3Packages.buildPythonApplication rec {
     lockfile
     paste
   ];
+
   prePatch = ''
     # replace /bin/bash in compress.sh
     patchShebangs .
 
     # relax version constraints of some dependencies
     substituteInPlace setup.cfg \
+      --replace "clize==4.1.1" "clize" \
       --replace "bleach==3.1.5" "bleach>=3.1.5,<4" \
       --replace "bottle==0.12.18" "bottle>=0.12.18,<1" \
       --replace "Paste==3.4.3" "Paste>=3.4.3,<4"
   '';
+
   buildPhase = ''
     runHook preBuild
     doit build
@@ -51,6 +56,8 @@ python3Packages.buildPythonApplication rec {
   # See https://github.com/NixOS/nixpkgs/pull/98734#discussion_r495823510
   doCheck = false;
 
+  pythonImportsCheck = [ "zerobin" ];
+
   meta = with lib; {
     description = "A client side encrypted pastebin";
     homepage = "https://0bin.net/";
diff --git a/pkgs/applications/science/chemistry/jmol/default.nix b/pkgs/applications/science/chemistry/jmol/default.nix
index efea166925453..a3add93c8f70d 100644
--- a/pkgs/applications/science/chemistry/jmol/default.nix
+++ b/pkgs/applications/science/chemistry/jmol/default.nix
@@ -17,14 +17,14 @@ let
   };
 in
 stdenv.mkDerivation rec {
-  version = "14.31.46";
+  version = "14.31.49";
   pname = "jmol";
 
   src = let
     baseVersion = "${lib.versions.major version}.${lib.versions.minor version}";
   in fetchurl {
     url = "mirror://sourceforge/jmol/Jmol/Version%20${baseVersion}/Jmol%20${version}/Jmol-${version}-binary.tar.gz";
-    sha256 = "sha256-U8k8xQws0vIJ3ZICzZXxSbtl7boCzRqG9mFSTXvmCvg=";
+    sha256 = "sha256-P+bzimBVammX5LxE6Yd6CmvmBeG8WdyA1T9bHXd+ifI=";
   };
 
   patchPhase = ''
diff --git a/pkgs/applications/science/programming/plm/default.nix b/pkgs/applications/science/programming/plm/default.nix
index e56282b68631b..ca8e87a05533b 100644
--- a/pkgs/applications/science/programming/plm/default.nix
+++ b/pkgs/applications/science/programming/plm/default.nix
@@ -1,37 +1,39 @@
-{lib, stdenv, fetchurl, makeWrapper, jre, gcc, valgrind}:
+{ lib, stdenv, fetchurl, makeWrapper, jre, gcc, valgrind }:
 # gcc and valgrind are not strict dependencies, they could be made
 # optional. They are here because plm can only help you learn C if you
 # have them installed.
 stdenv.mkDerivation rec {
-  major = "2";
-  minor = "5";
-  version = "${major}-${minor}";
   pname = "plm";
+  version = "2.9.3";
 
   src = fetchurl {
-    url = "http://webloria.loria.fr/~quinson/Teaching/PLM/plm-${major}_${minor}.jar";
-    sha256 = "0m17cxa3nxi2cbswqvlfzp0mlfi3wrkw8ry2xhkxy6aqzm2mlgcc";
+    url = "https://github.com/BuggleInc/PLM/releases/download/v${version}/plm-${version}.jar";
+    sha256 = "0i9ghx9pm3kpn9x9n1hl10zdr36v5mv3drx8lvhsqwhlsvz42p5i";
     name = "${pname}-${version}.jar";
   };
 
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ jre gcc valgrind ];
 
-  phases = [ "installPhase" ];
+  dontUnpack = true;
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p "$prefix/bin"
 
     makeWrapper ${jre}/bin/java $out/bin/plm \
       --add-flags "-jar $src" \
       --prefix PATH : "$PATH"
+
+    runHook postInstall
   '';
 
   meta = with lib; {
     description = "Free cross-platform programming exerciser";
+    homepage = "http://people.irisa.fr/Martin.Quinson/Teaching/PLM/";
     license = licenses.gpl3;
     maintainers = [ ];
     platforms = lib.platforms.all;
-    broken = true;
   };
 }
diff --git a/pkgs/applications/version-management/gitea/default.nix b/pkgs/applications/version-management/gitea/default.nix
index bd61d984c6208..65c85261cd4f3 100644
--- a/pkgs/applications/version-management/gitea/default.nix
+++ b/pkgs/applications/version-management/gitea/default.nix
@@ -16,12 +16,12 @@ with lib;
 
 buildGoPackage rec {
   pname = "gitea";
-  version = "1.14.5";
+  version = "1.14.6";
 
   # not fetching directly from the git repo, because that lacks several vendor files for the web UI
   src = fetchurl {
     url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
-    sha256 = "sha256-8nwLVpe/5IjXJqO179lN80B/3WGUL3LKM8OWdh/bYOE=";
+    sha256 = "sha256-IIoOJlafMD6Kg8Zde3LcoK97PKLmqOUMQN3nmIgqe1o=";
   };
 
   unpackPhase = ''
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix b/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
index 0122cba0f3d80..9985b7fd0f159 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-multi-rtmp.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "obs-multi-rtmp";
-  version = "0.2.6";
+  version = "0.2.6.1";
 
   src = fetchFromGitHub {
     owner = "sorayuki";
     repo = "obs-multi-rtmp";
     rev = version;
-    sha256 = "sha256-SMcVL54HwFIc7/wejEol2XiZhlZCMVCwHHtIKJ/CoYY=";
+    sha256 = "sha256-ZcvmiE9gbDUHAO36QAIaUdjV14ZfPabD9CW7Ogeqdro=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/applications/virtualization/OVMF/default.nix b/pkgs/applications/virtualization/OVMF/default.nix
index aed59e05a980d..d8b6dfc2efaa9 100644
--- a/pkgs/applications/virtualization/OVMF/default.nix
+++ b/pkgs/applications/virtualization/OVMF/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, edk2, util-linux, nasm, iasl
+{ stdenv, lib, edk2, util-linux, nasm, acpica-tools
 , csmSupport ? false, seabios ? null
 , secureBoot ? false
 , httpSupport ? false
@@ -25,7 +25,7 @@ edk2.mkDerivation projectDscPath {
 
   outputs = [ "out" "fd" ];
 
-  buildInputs = [ util-linux nasm iasl ];
+  buildInputs = [ util-linux nasm acpica-tools ];
 
   hardeningDisable = [ "format" "stackprotector" "pic" "fortify" ];
 
diff --git a/pkgs/applications/virtualization/seabios/default.nix b/pkgs/applications/virtualization/seabios/default.nix
index 42e1eaf56d4dc..a97c434957036 100644
--- a/pkgs/applications/virtualization/seabios/default.nix
+++ b/pkgs/applications/virtualization/seabios/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, iasl, python3 }:
+{ lib, stdenv, fetchurl, acpica-tools, python3 }:
 
 stdenv.mkDerivation rec {
 
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ python3 ];
 
-  buildInputs = [ iasl ];
+  buildInputs = [ acpica-tools ];
 
   strictDeps = true;
 
@@ -47,4 +47,3 @@ stdenv.mkDerivation rec {
     platforms = [ "i686-linux" "x86_64-linux" ];
   };
 }
-
diff --git a/pkgs/applications/virtualization/virtualbox/default.nix b/pkgs/applications/virtualization/virtualbox/default.nix
index 31f4857680317..c693fa8fdcf18 100644
--- a/pkgs/applications/virtualization/virtualbox/default.nix
+++ b/pkgs/applications/virtualization/virtualbox/default.nix
@@ -1,4 +1,4 @@
-{ config, stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, wrapQtAppsHook
+{ config, stdenv, fetchurl, lib, acpica-tools, dev86, pam, libxslt, libxml2, wrapQtAppsHook
 , libX11, xorgproto, libXext, libXcursor, libXmu, libIDL, SDL, libcap, libGL
 , libpng, glib, lvm2, libXrandr, libXinerama, libopus, qtbase, qtx11extras
 , qttools, qtsvg, qtwayland, pkg-config, which, docbook_xsl, docbook_xml_dtd_43
@@ -24,16 +24,6 @@ let
   # Use maintainers/scripts/update.nix to update the version and all related hashes or
   # change the hashes in extpack.nix and guest-additions/default.nix as well manually.
   version = "6.1.26";
-
-  iasl' = iasl.overrideAttrs (old: rec {
-    inherit (old) pname;
-    version = "20190108";
-    src = fetchurl {
-      url = "https://acpica.org/sites/acpica/files/acpica-unix-${version}.tar.gz";
-      sha256 = "0bqhr3ndchvfhxb31147z8gd81dysyz5dwkvmp56832d0js2564q";
-    };
-    NIX_CFLAGS_COMPILE = old.NIX_CFLAGS_COMPILE + " -Wno-error=stringop-truncation";
-  });
 in stdenv.mkDerivation {
   pname = "virtualbox";
   inherit version;
@@ -52,7 +42,7 @@ in stdenv.mkDerivation {
   dontWrapQtApps = true;
 
   buildInputs =
-    [ iasl' dev86 libxslt libxml2 xorgproto libX11 libXext libXcursor libIDL
+    [ acpica-tools dev86 libxslt libxml2 xorgproto libX11 libXext libXcursor libIDL
       libcap glib lvm2 alsa-lib curl libvpx pam makeself perl
       libXmu libpng libopus python ]
     ++ optional javaBindings jdk
diff --git a/pkgs/applications/virtualization/xen/generic.nix b/pkgs/applications/virtualization/xen/generic.nix
index 3d0ff3a6f336a..8299304045d05 100644
--- a/pkgs/applications/virtualization/xen/generic.nix
+++ b/pkgs/applications/virtualization/xen/generic.nix
@@ -3,7 +3,7 @@ config:
 
 # Xen
 , bison, bzip2, checkpolicy, dev86, figlet, flex, gettext, glib
-, iasl, libaio, libiconv, libuuid, ncurses, openssl, perl
+, acpica-tools, libaio, libiconv, libuuid, ncurses, openssl, perl
 , python2Packages
 # python2Packages.python
 , xz, yajl, zlib
@@ -71,7 +71,7 @@ stdenv.mkDerivation (rec {
     cmake which
 
     # Xen
-    bison bzip2 checkpolicy dev86 figlet flex gettext glib iasl libaio
+    bison bzip2 checkpolicy dev86 figlet flex gettext glib acpica-tools libaio
     libiconv libuuid ncurses openssl perl python2Packages.python xz yajl zlib
 
     # oxenstored
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix
index 221befadbc48f..091984585459f 100644
--- a/pkgs/build-support/docker/default.nix
+++ b/pkgs/build-support/docker/default.nix
@@ -1,65 +1,63 @@
-{
-  bashInteractive,
-  buildPackages,
-  cacert,
-  callPackage,
-  closureInfo,
-  coreutils,
-  e2fsprogs,
-  fakeroot,
-  findutils,
-  go,
-  jq,
-  jshon,
-  lib,
-  makeWrapper,
-  moreutils,
-  nix,
-  pigz,
-  pkgs,
-  rsync,
-  runCommand,
-  runtimeShell,
-  shadow,
-  skopeo,
-  storeDir ? builtins.storeDir,
-  substituteAll,
-  symlinkJoin,
-  util-linux,
-  vmTools,
-  writeReferencesToFile,
-  writeScript,
-  writeText,
-  writeTextDir,
-  writePython3,
-  system,  # Note: This is the cross system we're compiling for
+{ bashInteractive
+, buildPackages
+, cacert
+, callPackage
+, closureInfo
+, coreutils
+, e2fsprogs
+, fakeroot
+, findutils
+, go
+, jq
+, jshon
+, lib
+, makeWrapper
+, moreutils
+, nix
+, pigz
+, pkgs
+, rsync
+, runCommand
+, runtimeShell
+, shadow
+, skopeo
+, storeDir ? builtins.storeDir
+, substituteAll
+, symlinkJoin
+, util-linux
+, vmTools
+, writeReferencesToFile
+, writeScript
+, writeText
+, writeTextDir
+, writePython3
+, system
+, # Note: This is the cross system we're compiling for
 }:
 
 let
 
-  inherit (lib)
-    optionals
-    ;
-
-  mkDbExtraCommand = contents: let
-    contentsList = if builtins.isList contents then contents else [ contents ];
-  in ''
-    echo "Generating the nix database..."
-    echo "Warning: only the database of the deepest Nix layer is loaded."
-    echo "         If you want to use nix commands in the container, it would"
-    echo "         be better to only have one layer that contains a nix store."
-
-    export NIX_REMOTE=local?root=$PWD
-    # A user is required by nix
-    # https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478
-    export USER=nobody
-    ${buildPackages.nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contentsList;}}/registration
-
-    mkdir -p nix/var/nix/gcroots/docker/
-    for i in ${lib.concatStringsSep " " contentsList}; do
-    ln -s $i nix/var/nix/gcroots/docker/$(basename $i)
-    done;
-  '';
+  mkDbExtraCommand = contents:
+    let
+      contentsList = if builtins.isList contents then contents else [ contents ];
+    in
+    ''
+      echo "Generating the nix database..."
+      echo "Warning: only the database of the deepest Nix layer is loaded."
+      echo "         If you want to use nix commands in the container, it would"
+      echo "         be better to only have one layer that contains a nix store."
+
+      export NIX_REMOTE=local?root=$PWD
+      # A user is required by nix
+      # https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478
+      export USER=nobody
+      ${buildPackages.nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contentsList;}}/registration
+
+      mkdir -p nix/var/nix/gcroots/docker/
+      for i in ${lib.concatStringsSep " " contentsList}; do
+      ln -s $i nix/var/nix/gcroots/docker/$(basename $i)
+      done;
+    '';
 
   # The OCI Image specification recommends that configurations use values listed
   # in the Go Language document for GOARCH.
@@ -70,14 +68,14 @@ let
 
 in
 rec {
-
   examples = callPackage ./examples.nix {
     inherit buildImage buildLayeredImage fakeNss pullImage shadowSetup buildImageWithNixDb;
   };
 
-  pullImage = let
-    fixName = name: builtins.replaceStrings ["/" ":"] ["-" "-"] name;
-  in
+  pullImage =
+    let
+      fixName = name: builtins.replaceStrings [ "/" ":" ] [ "-" "-" ] name;
+    in
     { imageName
       # To find the digest of an image, you can use skopeo:
       # see doc/functions.xml
@@ -96,21 +94,22 @@ rec {
     , name ? fixName "docker-image-${finalImageName}-${finalImageTag}.tar"
     }:
 
-    runCommand name {
-      inherit imageDigest;
-      imageName = finalImageName;
-      imageTag = finalImageTag;
-      impureEnvVars = lib.fetchers.proxyImpureEnvVars;
-      outputHashMode = "flat";
-      outputHashAlgo = "sha256";
-      outputHash = sha256;
-
-      nativeBuildInputs = lib.singleton skopeo;
-      SSL_CERT_FILE = "${cacert.out}/etc/ssl/certs/ca-bundle.crt";
-
-      sourceURL = "docker://${imageName}@${imageDigest}";
-      destNameTag = "${finalImageName}:${finalImageTag}";
-    } ''
+    runCommand name
+      {
+        inherit imageDigest;
+        imageName = finalImageName;
+        imageTag = finalImageTag;
+        impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+        outputHashMode = "flat";
+        outputHashAlgo = "sha256";
+        outputHash = sha256;
+
+        nativeBuildInputs = lib.singleton skopeo;
+        SSL_CERT_FILE = "${cacert.out}/etc/ssl/certs/ca-bundle.crt";
+
+        sourceURL = "docker://${imageName}@${imageDigest}";
+        destNameTag = "${finalImageName}:${finalImageTag}";
+      } ''
       skopeo \
         --src-tls-verify=${lib.boolToString tlsVerify} \
         --insecure-policy \
@@ -126,13 +125,14 @@ rec {
   tarsum = pkgs.tarsum;
 
   # buildEnv creates symlinks to dirs, which is hard to edit inside the overlay VM
-  mergeDrvs = {
-    derivations,
-    onlyDeps ? false
-  }:
-    runCommand "merge-drvs" {
-      inherit derivations onlyDeps;
-    } ''
+  mergeDrvs =
+    { derivations
+    , onlyDeps ? false
+    }:
+    runCommand "merge-drvs"
+      {
+        inherit derivations onlyDeps;
+      } ''
       if [[ -n "$onlyDeps" ]]; then
         echo $derivations > $out
         exit 0
@@ -180,104 +180,105 @@ rec {
   '';
 
   # Run commands in a virtual machine.
-  runWithOverlay = {
-    name,
-    fromImage ? null,
-    fromImageName ? null,
-    fromImageTag ? null,
-    diskSize ? 1024,
-    preMount ? "",
-    postMount ? "",
-    postUmount ? ""
-  }:
-  let
-    result = vmTools.runInLinuxVM (
-      runCommand name {
-        preVM = vmTools.createEmptyImage {
-          size = diskSize;
-          fullName = "docker-run-disk";
-        };
-        inherit fromImage fromImageName fromImageTag;
-
-        nativeBuildInputs = [ util-linux e2fsprogs jshon rsync jq ];
-      } ''
-      mkdir disk
-      mkfs /dev/${vmTools.hd}
-      mount /dev/${vmTools.hd} disk
-      cd disk
-
-      if [[ -n "$fromImage" ]]; then
-        echo "Unpacking base image..."
-        mkdir image
-        tar -C image -xpf "$fromImage"
-
-        if [[ -n "$fromImageName" ]] && [[ -n "$fromImageTag" ]]; then
-          parentID="$(
-            cat "image/manifest.json" |
-              jq -r '.[] | select(.RepoTags | contains([$desiredTag])) | rtrimstr(".json")' \
-                --arg desiredTag "$fromImageName:$fromImageTag"
-          )"
-        else
-          echo "From-image name or tag wasn't set. Reading the first ID."
-          parentID="$(cat "image/manifest.json" | jq -r '.[0].Config | rtrimstr(".json")')"
-        fi
+  runWithOverlay =
+    { name
+    , fromImage ? null
+    , fromImageName ? null
+    , fromImageTag ? null
+    , diskSize ? 1024
+    , preMount ? ""
+    , postMount ? ""
+    , postUmount ? ""
+    }:
+    let
+      result = vmTools.runInLinuxVM (
+        runCommand name
+          {
+            preVM = vmTools.createEmptyImage {
+              size = diskSize;
+              fullName = "docker-run-disk";
+            };
+            inherit fromImage fromImageName fromImageTag;
+
+            nativeBuildInputs = [ util-linux e2fsprogs jshon rsync jq ];
+          } ''
+          mkdir disk
+          mkfs /dev/${vmTools.hd}
+          mount /dev/${vmTools.hd} disk
+          cd disk
+
+          if [[ -n "$fromImage" ]]; then
+            echo "Unpacking base image..."
+            mkdir image
+            tar -C image -xpf "$fromImage"
+
+            if [[ -n "$fromImageName" ]] && [[ -n "$fromImageTag" ]]; then
+              parentID="$(
+                cat "image/manifest.json" |
+                  jq -r '.[] | select(.RepoTags | contains([$desiredTag])) | rtrimstr(".json")' \
+                    --arg desiredTag "$fromImageName:$fromImageTag"
+              )"
+            else
+              echo "From-image name or tag wasn't set. Reading the first ID."
+              parentID="$(cat "image/manifest.json" | jq -r '.[0].Config | rtrimstr(".json")')"
+            fi
 
-        cat ./image/manifest.json  | jq -r '.[0].Layers | .[]' > layer-list
-      else
-        touch layer-list
-      fi
+            cat ./image/manifest.json  | jq -r '.[0].Layers | .[]' > layer-list
+          else
+            touch layer-list
+          fi
 
-      # Unpack all of the parent layers into the image.
-      lowerdir=""
-      extractionID=0
-      for layerTar in $(tac layer-list); do
-        echo "Unpacking layer $layerTar"
-        extractionID=$((extractionID + 1))
+          # Unpack all of the parent layers into the image.
+          lowerdir=""
+          extractionID=0
+          for layerTar in $(tac layer-list); do
+            echo "Unpacking layer $layerTar"
+            extractionID=$((extractionID + 1))
 
-        mkdir -p image/$extractionID/layer
-        tar -C image/$extractionID/layer -xpf image/$layerTar
-        rm image/$layerTar
+            mkdir -p image/$extractionID/layer
+            tar -C image/$extractionID/layer -xpf image/$layerTar
+            rm image/$layerTar
 
-        find image/$extractionID/layer -name ".wh.*" -exec bash -c 'name="$(basename {}|sed "s/^.wh.//")"; mknod "$(dirname {})/$name" c 0 0; rm {}' \;
+            find image/$extractionID/layer -name ".wh.*" -exec bash -c 'name="$(basename {}|sed "s/^.wh.//")"; mknod "$(dirname {})/$name" c 0 0; rm {}' \;
 
-        # Get the next lower directory and continue the loop.
-        lowerdir=image/$extractionID/layer''${lowerdir:+:}$lowerdir
-      done
+            # Get the next lower directory and continue the loop.
+            lowerdir=image/$extractionID/layer''${lowerdir:+:}$lowerdir
+          done
 
-      mkdir work
-      mkdir layer
-      mkdir mnt
+          mkdir work
+          mkdir layer
+          mkdir mnt
 
-      ${lib.optionalString (preMount != "") ''
-        # Execute pre-mount steps
-        echo "Executing pre-mount steps..."
-        ${preMount}
-      ''}
+          ${lib.optionalString (preMount != "") ''
+            # Execute pre-mount steps
+            echo "Executing pre-mount steps..."
+            ${preMount}
+          ''}
 
-      if [ -n "$lowerdir" ]; then
-        mount -t overlay overlay -olowerdir=$lowerdir,workdir=work,upperdir=layer mnt
-      else
-        mount --bind layer mnt
-      fi
+          if [ -n "$lowerdir" ]; then
+            mount -t overlay overlay -olowerdir=$lowerdir,workdir=work,upperdir=layer mnt
+          else
+            mount --bind layer mnt
+          fi
 
-      ${lib.optionalString (postMount != "") ''
-        # Execute post-mount steps
-        echo "Executing post-mount steps..."
-        ${postMount}
-      ''}
+          ${lib.optionalString (postMount != "") ''
+            # Execute post-mount steps
+            echo "Executing post-mount steps..."
+            ${postMount}
+          ''}
 
-      umount mnt
+          umount mnt
 
-      (
-        cd layer
-        cmd='name="$(basename {})"; touch "$(dirname {})/.wh.$name"; rm "{}"'
-        find . -type c -exec bash -c "$cmd" \;
-      )
+          (
+            cd layer
+            cmd='name="$(basename {})"; touch "$(dirname {})/.wh.$name"; rm "{}"'
+            find . -type c -exec bash -c "$cmd" \;
+          )
 
-      ${postUmount}
-      '');
+          ${postUmount}
+        '');
     in
-    runCommand name {} ''
+    runCommand name { } ''
       mkdir -p $out
       cd ${result}
       cp layer.tar json VERSION $out
@@ -293,7 +294,6 @@ rec {
       '';
     };
 
-
   # Create an executable shell script which has the coreutils in its
   # PATH. Since root scripts are executed in a blank environment, even
   # things like `ls` or `echo` will be missing.
@@ -306,94 +306,100 @@ rec {
     '';
 
   # Create a "layer" (set of files).
-  mkPureLayer = {
-    # Name of the layer
-    name,
-    # JSON containing configuration and metadata for this layer.
-    baseJson,
-    # Files to add to the layer.
-    contents ? null,
-    # When copying the contents into the image, preserve symlinks to
-    # directories (see `rsync -K`).  Otherwise, transform those symlinks
-    # into directories.
-    keepContentsDirlinks ? false,
-    # Additional commands to run on the layer before it is tar'd up.
-    extraCommands ? "", uid ? 0, gid ? 0
-  }:
-    runCommand "docker-layer-${name}" {
-      inherit baseJson contents extraCommands;
-      nativeBuildInputs = [ jshon rsync tarsum ];
-    }
-    ''
-      mkdir layer
-      if [[ -n "$contents" ]]; then
-        echo "Adding contents..."
-        for item in $contents; do
-          echo "Adding $item"
-          rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
-        done
-      else
-        echo "No contents to add to layer."
-      fi
+  mkPureLayer =
+    {
+      # Name of the layer
+      name
+    , # JSON containing configuration and metadata for this layer.
+      baseJson
+    , # Files to add to the layer.
+      contents ? null
+    , # When copying the contents into the image, preserve symlinks to
+      # directories (see `rsync -K`).  Otherwise, transform those symlinks
+      # into directories.
+      keepContentsDirlinks ? false
+    , # Additional commands to run on the layer before it is tar'd up.
+      extraCommands ? ""
+    , uid ? 0
+    , gid ? 0
+    }:
+    runCommand "docker-layer-${name}"
+      {
+        inherit baseJson contents extraCommands;
+        nativeBuildInputs = [ jshon rsync tarsum ];
+      }
+      ''
+        mkdir layer
+        if [[ -n "$contents" ]]; then
+          echo "Adding contents..."
+          for item in $contents; do
+            echo "Adding $item"
+            rsync -a${if keepContentsDirlinks then "K" else "k"} --chown=0:0 $item/ layer/
+          done
+        else
+          echo "No contents to add to layer."
+        fi
 
-      chmod ug+w layer
+        chmod ug+w layer
 
-      if [[ -n "$extraCommands" ]]; then
-        (cd layer; eval "$extraCommands")
-      fi
+        if [[ -n "$extraCommands" ]]; then
+          (cd layer; eval "$extraCommands")
+        fi
 
-      # Tar up the layer and throw it into 'layer.tar'.
-      echo "Packing layer..."
-      mkdir $out
-      tarhash=$(tar -C layer --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" --owner=${toString uid} --group=${toString gid} -cf - . | tee -p $out/layer.tar | tarsum)
+        # Tar up the layer and throw it into 'layer.tar'.
+        echo "Packing layer..."
+        mkdir $out
+        tarhash=$(tar -C layer --hard-dereference --sort=name --mtime="@$SOURCE_DATE_EPOCH" --owner=${toString uid} --group=${toString gid} -cf - . | tee -p $out/layer.tar | tarsum)
 
-      # Add a 'checksum' field to the JSON, with the value set to the
-      # checksum of the tarball.
-      cat ${baseJson} | jshon -s "$tarhash" -i checksum > $out/json
+        # Add a 'checksum' field to the JSON, with the value set to the
+        # checksum of the tarball.
+        cat ${baseJson} | jshon -s "$tarhash" -i checksum > $out/json
 
-      # Indicate to docker that we're using schema version 1.0.
-      echo -n "1.0" > $out/VERSION
+        # Indicate to docker that we're using schema version 1.0.
+        echo -n "1.0" > $out/VERSION
 
-      echo "Finished building layer '${name}'"
-    '';
+        echo "Finished building layer '${name}'"
+      '';
 
   # Make a "root" layer; required if we need to execute commands as a
   # privileged user on the image. The commands themselves will be
   # performed in a virtual machine sandbox.
-  mkRootLayer = {
-    # Name of the image.
-    name,
-    # Script to run as root. Bash.
-    runAsRoot,
-    # Files to add to the layer. If null, an empty layer will be created.
-    contents ? null,
-    # When copying the contents into the image, preserve symlinks to
-    # directories (see `rsync -K`).  Otherwise, transform those symlinks
-    # into directories.
-    keepContentsDirlinks ? false,
-    # JSON containing configuration and metadata for this layer.
-    baseJson,
-    # Existing image onto which to append the new layer.
-    fromImage ? null,
-    # Name of the image we're appending onto.
-    fromImageName ? null,
-    # Tag of the image we're appending onto.
-    fromImageTag ? null,
-    # How much disk to allocate for the temporary virtual machine.
-    diskSize ? 1024,
-    # Commands (bash) to run on the layer; these do not require sudo.
-    extraCommands ? ""
-  }:
+  mkRootLayer =
+    {
+      # Name of the image.
+      name
+    , # Script to run as root. Bash.
+      runAsRoot
+    , # Files to add to the layer. If null, an empty layer will be created.
+      contents ? null
+    , # When copying the contents into the image, preserve symlinks to
+      # directories (see `rsync -K`).  Otherwise, transform those symlinks
+      # into directories.
+      keepContentsDirlinks ? false
+    , # JSON containing configuration and metadata for this layer.
+      baseJson
+    , # Existing image onto which to append the new layer.
+      fromImage ? null
+    , # Name of the image we're appending onto.
+      fromImageName ? null
+    , # Tag of the image we're appending onto.
+      fromImageTag ? null
+    , # How much disk to allocate for the temporary virtual machine.
+      diskSize ? 1024
+    , # Commands (bash) to run on the layer; these do not require sudo.
+      extraCommands ? ""
+    }:
     # Generate an executable script from the `runAsRoot` text.
     let
       runAsRootScript = shellScript "run-as-root.sh" runAsRoot;
       extraCommandsScript = shellScript "extra-commands.sh" extraCommands;
-    in runWithOverlay {
+    in
+    runWithOverlay {
       name = "docker-layer-${name}";
 
       inherit fromImage fromImageName fromImageTag diskSize;
 
-      preMount = lib.optionalString (contents != null && contents != []) ''
+      preMount = lib.optionalString (contents != null && contents != [ ]) ''
         echo "Adding contents..."
         for item in ${toString contents}; do
           echo "Adding $item..."
@@ -445,11 +451,12 @@ rec {
       '';
     };
 
-  buildLayeredImage = {name, ...}@args:
+  buildLayeredImage = { name, ... }@args:
     let
       stream = streamLayeredImage args;
     in
-      runCommand "${baseNameOf name}.tar.gz" {
+    runCommand "${baseNameOf name}.tar.gz"
+      {
         inherit (stream) imageName;
         passthru = { inherit (stream) imageTag; };
         nativeBuildInputs = [ pigz ];
@@ -461,40 +468,45 @@ rec {
   # 4. compute the layer id
   # 5. put the layer in the image
   # 6. repack the image
-  buildImage = args@{
-    # Image name.
-    name,
-    # Image tag, when null then the nix output hash will be used.
-    tag ? null,
-    # Parent image, to append to.
-    fromImage ? null,
-    # Name of the parent image; will be read from the image otherwise.
-    fromImageName ? null,
-    # Tag of the parent image; will be read from the image otherwise.
-    fromImageTag ? null,
-    # Files to put on the image (a nix store path or list of paths).
-    contents ? null,
-    # When copying the contents into the image, preserve symlinks to
-    # directories (see `rsync -K`).  Otherwise, transform those symlinks
-    # into directories.
-    keepContentsDirlinks ? false,
-    # Docker config; e.g. what command to run on the container.
-    config ? null,
-    # Optional bash script to run on the files prior to fixturizing the layer.
-    extraCommands ? "", uid ? 0, gid ? 0,
-    # Optional bash script to run as root on the image when provisioning.
-    runAsRoot ? null,
-    # Size of the virtual machine disk to provision when building the image.
-    diskSize ? 1024,
-    # Time of creation of the image.
-    created ? "1970-01-01T00:00:01Z",
-  }:
+  buildImage =
+    args@{
+      # Image name.
+      name
+    , # Image tag, when null then the nix output hash will be used.
+      tag ? null
+    , # Parent image, to append to.
+      fromImage ? null
+    , # Name of the parent image; will be read from the image otherwise.
+      fromImageName ? null
+    , # Tag of the parent image; will be read from the image otherwise.
+      fromImageTag ? null
+    , # Files to put on the image (a nix store path or list of paths).
+      contents ? null
+    , # When copying the contents into the image, preserve symlinks to
+      # directories (see `rsync -K`).  Otherwise, transform those symlinks
+      # into directories.
+      keepContentsDirlinks ? false
+    , # Docker config; e.g. what command to run on the container.
+      config ? null
+    , # Optional bash script to run on the files prior to fixturizing the layer.
+      extraCommands ? ""
+    , uid ? 0
+    , gid ? 0
+    , # Optional bash script to run as root on the image when provisioning.
+      runAsRoot ? null
+    , # Size of the virtual machine disk to provision when building the image.
+      diskSize ? 1024
+    , # Time of creation of the image.
+      created ? "1970-01-01T00:00:01Z"
+    ,
+    }:
 
     let
       baseName = baseNameOf name;
 
       # Create a JSON blob of the configuration. Set the date to unix zero.
-      baseJson = let
+      baseJson =
+        let
           pure = writeText "${baseName}-config.json" (builtins.toJSON {
             inherit created config;
             architecture = defaultArch;
@@ -503,36 +515,41 @@ rec {
           impure = runCommand "${baseName}-config.json"
             { nativeBuildInputs = [ jq ]; }
             ''
-               jq ".created = \"$(TZ=utc date --iso-8601="seconds")\"" ${pure} > $out
+              jq ".created = \"$(TZ=utc date --iso-8601="seconds")\"" ${pure} > $out
             '';
-        in if created == "now" then impure else pure;
+        in
+        if created == "now" then impure else pure;
 
       layer =
         if runAsRoot == null
-        then mkPureLayer {
-          name = baseName;
-          inherit baseJson contents keepContentsDirlinks extraCommands uid gid;
-        } else mkRootLayer {
-          name = baseName;
-          inherit baseJson fromImage fromImageName fromImageTag
-                  contents keepContentsDirlinks runAsRoot diskSize
-                  extraCommands;
-        };
-      result = runCommand "docker-image-${baseName}.tar.gz" {
-        nativeBuildInputs = [ jshon pigz coreutils findutils jq moreutils ];
-        # Image name must be lowercase
-        imageName = lib.toLower name;
-        imageTag = if tag == null then "" else tag;
-        inherit fromImage baseJson;
-        layerClosure = writeReferencesToFile layer;
-        passthru.buildArgs = args;
-        passthru.layer = layer;
-        passthru.imageTag =
-          if tag != null
+        then
+          mkPureLayer
+            {
+              name = baseName;
+              inherit baseJson contents keepContentsDirlinks extraCommands uid gid;
+            } else
+          mkRootLayer {
+            name = baseName;
+            inherit baseJson fromImage fromImageName fromImageTag
+              contents keepContentsDirlinks runAsRoot diskSize
+              extraCommands;
+          };
+      result = runCommand "docker-image-${baseName}.tar.gz"
+        {
+          nativeBuildInputs = [ jshon pigz coreutils findutils jq moreutils ];
+          # Image name must be lowercase
+          imageName = lib.toLower name;
+          imageTag = if tag == null then "" else tag;
+          inherit fromImage baseJson;
+          layerClosure = writeReferencesToFile layer;
+          passthru.buildArgs = args;
+          passthru.layer = layer;
+          passthru.imageTag =
+            if tag != null
             then tag
             else
               lib.head (lib.strings.splitString "-" (baseNameOf result.outPath));
-      } ''
+        } ''
         ${lib.optionalString (tag == null) ''
           outName="$(basename "$out")"
           outHash=$(echo "$outName" | cut -d - -f 1)
@@ -732,14 +749,14 @@ rec {
         root:x:0:
         nobody:x:65534:
       '')
-      (runCommand "var-empty" {} ''
+      (runCommand "var-empty" { } ''
         mkdir -p $out/var/empty
       '')
     ];
   };
 
   # This provides /bin/sh, pointing to bashInteractive.
-  binSh = runCommand "bin-sh" {} ''
+  binSh = runCommand "bin-sh" { } ''
     mkdir -p $out/bin
     ln -s ${bashInteractive}/bin/bash $out/bin/sh
   '';
@@ -760,189 +777,194 @@ rec {
     })
   );
 
-  streamLayeredImage = {
-    # Image Name
-    name,
-    # Image tag, the Nix's output hash will be used if null
-    tag ? null,
-    # Parent image, to append to.
-    fromImage ? null,
-    # Files to put on the image (a nix store path or list of paths).
-    contents ? [],
-    # Docker config; e.g. what command to run on the container.
-    config ? {},
-    # Time of creation of the image. Passing "now" will make the
-    # created date be the time of building.
-    created ? "1970-01-01T00:00:01Z",
-    # Optional bash script to run on the files prior to fixturizing the layer.
-    extraCommands ? "",
-    # Optional bash script to run inside fakeroot environment.
-    # Could be used for changing ownership of files in customisation layer.
-    fakeRootCommands ? "",
-    # We pick 100 to ensure there is plenty of room for extension. I
-    # believe the actual maximum is 128.
-    maxLayers ? 100,
-    # Whether to include store paths in the image. You generally want to leave
-    # this on, but tooling may disable this to insert the store paths more
-    # efficiently via other means, such as bind mounting the host store.
-    includeStorePaths ? true,
-  }:
-    assert
+  streamLayeredImage =
+    {
+      # Image Name
+      name
+    , # Image tag, the Nix's output hash will be used if null
+      tag ? null
+    , # Parent image, to append to.
+      fromImage ? null
+    , # Files to put on the image (a nix store path or list of paths).
+      contents ? [ ]
+    , # Docker config; e.g. what command to run on the container.
+      config ? { }
+    , # Time of creation of the image. Passing "now" will make the
+      # created date be the time of building.
+      created ? "1970-01-01T00:00:01Z"
+    , # Optional bash script to run on the files prior to fixturizing the layer.
+      extraCommands ? ""
+    , # Optional bash script to run inside fakeroot environment.
+      # Could be used for changing ownership of files in customisation layer.
+      fakeRootCommands ? ""
+    , # We pick 100 to ensure there is plenty of room for extension. I
+      # believe the actual maximum is 128.
+      maxLayers ? 100
+    , # Whether to include store paths in the image. You generally want to leave
+      # this on, but tooling may disable this to insert the store paths more
+      # efficiently via other means, such as bind mounting the host store.
+      includeStorePaths ? true
+    ,
+    }:
+      assert
       (lib.assertMsg (maxLayers > 1)
-      "the maxLayers argument of dockerTools.buildLayeredImage function must be greather than 1 (current value: ${toString maxLayers})");
-    let
-      baseName = baseNameOf name;
-
-      streamScript = writePython3 "stream" {} ./stream_layered_image.py;
-      baseJson = writeText "${baseName}-base.json" (builtins.toJSON {
-         inherit config;
-         architecture = defaultArch;
-         os = "linux";
-      });
-
-      contentsList = if builtins.isList contents then contents else [ contents ];
-
-      # We store the customisation layer as a tarball, to make sure that
-      # things like permissions set on 'extraCommands' are not overriden
-      # by Nix. Then we precompute the sha256 for performance.
-      customisationLayer = symlinkJoin {
-        name = "${baseName}-customisation-layer";
-        paths = contentsList;
-        inherit extraCommands fakeRootCommands;
-        nativeBuildInputs = [ fakeroot ];
-        postBuild = ''
-          mv $out old_out
-          (cd old_out; eval "$extraCommands" )
-
-          mkdir $out
-
-          fakeroot bash -c '
-            source $stdenv/setup
-            cd old_out
-            eval "$fakeRootCommands"
-            tar \
-              --sort name \
-              --numeric-owner --mtime "@$SOURCE_DATE_EPOCH" \
-              --hard-dereference \
-              -cf $out/layer.tar .
-          '
-
-          sha256sum $out/layer.tar \
-            | cut -f 1 -d ' ' \
-            > $out/checksum
-        '';
-      };
-
-      closureRoots = optionals includeStorePaths /* normally true */ (
-        [ baseJson ] ++ contentsList
-      );
-      overallClosure = writeText "closure" (lib.concatStringsSep " " closureRoots);
-
-      # These derivations are only created as implementation details of docker-tools,
-      # so they'll be excluded from the created images.
-      unnecessaryDrvs = [ baseJson overallClosure ];
-
-      conf = runCommand "${baseName}-conf.json" {
-        inherit fromImage maxLayers created;
-        imageName = lib.toLower name;
-        passthru.imageTag =
-          if tag != null
-            then tag
-            else
-              lib.head (lib.strings.splitString "-" (baseNameOf conf.outPath));
-        paths = buildPackages.referencesByPopularity overallClosure;
-        nativeBuildInputs = [ jq ];
-      } ''
-        ${if (tag == null) then ''
-          outName="$(basename "$out")"
-          outHash=$(echo "$outName" | cut -d - -f 1)
-
-          imageTag=$outHash
-        '' else ''
-          imageTag="${tag}"
-        ''}
+        "the maxLayers argument of dockerTools.buildLayeredImage function must be greather than 1 (current value: ${toString maxLayers})");
+      let
+        baseName = baseNameOf name;
+
+        streamScript = writePython3 "stream" { } ./stream_layered_image.py;
+        baseJson = writeText "${baseName}-base.json" (builtins.toJSON {
+          inherit config;
+          architecture = defaultArch;
+          os = "linux";
+        });
+
+        contentsList = if builtins.isList contents then contents else [ contents ];
+
+        # We store the customisation layer as a tarball, to make sure that
+        # things like permissions set on 'extraCommands' are not overriden
+        # by Nix. Then we precompute the sha256 for performance.
+        customisationLayer = symlinkJoin {
+          name = "${baseName}-customisation-layer";
+          paths = contentsList;
+          inherit extraCommands fakeRootCommands;
+          nativeBuildInputs = [ fakeroot ];
+          postBuild = ''
+            mv $out old_out
+            (cd old_out; eval "$extraCommands" )
+
+            mkdir $out
+
+            fakeroot bash -c '
+              source $stdenv/setup
+              cd old_out
+              eval "$fakeRootCommands"
+              tar \
+                --sort name \
+                --numeric-owner --mtime "@$SOURCE_DATE_EPOCH" \
+                --hard-dereference \
+                -cf $out/layer.tar .
+            '
+
+            sha256sum $out/layer.tar \
+              | cut -f 1 -d ' ' \
+              > $out/checksum
+          '';
+        };
 
-        # convert "created" to iso format
-        if [[ "$created" != "now" ]]; then
-            created="$(date -Iseconds -d "$created")"
-        fi
+        closureRoots = lib.optionals includeStorePaths /* normally true */ (
+          [ baseJson ] ++ contentsList
+        );
+        overallClosure = writeText "closure" (lib.concatStringsSep " " closureRoots);
+
+        # These derivations are only created as implementation details of docker-tools,
+        # so they'll be excluded from the created images.
+        unnecessaryDrvs = [ baseJson overallClosure ];
+
+        conf = runCommand "${baseName}-conf.json"
+          {
+            inherit fromImage maxLayers created;
+            imageName = lib.toLower name;
+            passthru.imageTag =
+              if tag != null
+              then tag
+              else
+                lib.head (lib.strings.splitString "-" (baseNameOf conf.outPath));
+            paths = buildPackages.referencesByPopularity overallClosure;
+            nativeBuildInputs = [ jq ];
+          } ''
+          ${if (tag == null) then ''
+            outName="$(basename "$out")"
+            outHash=$(echo "$outName" | cut -d - -f 1)
+
+            imageTag=$outHash
+          '' else ''
+            imageTag="${tag}"
+          ''}
+
+          # convert "created" to iso format
+          if [[ "$created" != "now" ]]; then
+              created="$(date -Iseconds -d "$created")"
+          fi
 
-        paths() {
-          cat $paths ${lib.concatMapStringsSep " "
-                         (path: "| (grep -v ${path} || true)")
-                         unnecessaryDrvs}
-        }
+          paths() {
+            cat $paths ${lib.concatMapStringsSep " "
+                           (path: "| (grep -v ${path} || true)")
+                           unnecessaryDrvs}
+          }
 
-        # Compute the number of layers that are already used by a potential
-        # 'fromImage' as well as the customization layer. Ensure that there is
-        # still at least one layer available to store the image contents.
-        usedLayers=0
+          # Compute the number of layers that are already used by a potential
+          # 'fromImage' as well as the customization layer. Ensure that there is
+          # still at least one layer available to store the image contents.
+          usedLayers=0
 
-        # subtract number of base image layers
-        if [[ -n "$fromImage" ]]; then
-          (( usedLayers += $(tar -xOf "$fromImage" manifest.json | jq '.[0].Layers | length') ))
-        fi
+          # subtract number of base image layers
+          if [[ -n "$fromImage" ]]; then
+            (( usedLayers += $(tar -xOf "$fromImage" manifest.json | jq '.[0].Layers | length') ))
+          fi
 
-        # one layer will be taken up by the customisation layer
-        (( usedLayers += 1 ))
+          # one layer will be taken up by the customisation layer
+          (( usedLayers += 1 ))
 
-        if ! (( $usedLayers < $maxLayers )); then
-          echo >&2 "Error: usedLayers $usedLayers layers to store 'fromImage' and" \
-                    "'extraCommands', but only maxLayers=$maxLayers were" \
-                    "allowed. At least 1 layer is required to store contents."
-          exit 1
-        fi
-        availableLayers=$(( maxLayers - usedLayers ))
+          if ! (( $usedLayers < $maxLayers )); then
+            echo >&2 "Error: usedLayers $usedLayers layers to store 'fromImage' and" \
+                      "'extraCommands', but only maxLayers=$maxLayers were" \
+                      "allowed. At least 1 layer is required to store contents."
+            exit 1
+          fi
+          availableLayers=$(( maxLayers - usedLayers ))
+
+          # Create $maxLayers worth of Docker Layers, one layer per store path
+          # unless there are more paths than $maxLayers. In that case, create
+          # $maxLayers-1 for the most popular layers, and smush the remainaing
+          # store paths in to one final layer.
+          #
+          # The following code is fiddly w.r.t. ensuring every layer is
+          # created, and that no paths are missed. If you change the
+          # following lines, double-check that your code behaves properly
+          # when the number of layers equals:
+          #      maxLayers-1, maxLayers, and maxLayers+1, 0
+          store_layers="$(
+            paths |
+              jq -sR '
+                rtrimstr("\n") | split("\n")
+                  | (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ]
+                  | map(select(length > 0))
+              ' \
+                --argjson maxLayers "$availableLayers"
+          )"
 
-        # Create $maxLayers worth of Docker Layers, one layer per store path
-        # unless there are more paths than $maxLayers. In that case, create
-        # $maxLayers-1 for the most popular layers, and smush the remainaing
-        # store paths in to one final layer.
-        #
-        # The following code is fiddly w.r.t. ensuring every layer is
-        # created, and that no paths are missed. If you change the
-        # following lines, double-check that your code behaves properly
-        # when the number of layers equals:
-        #      maxLayers-1, maxLayers, and maxLayers+1, 0
-        store_layers="$(
-          paths |
-            jq -sR '
-              rtrimstr("\n") | split("\n")
-                | (.[:$maxLayers-1] | map([.])) + [ .[$maxLayers-1:] ]
-                | map(select(length > 0))
-            ' \
-              --argjson maxLayers "$availableLayers"
-        )"
-
-        cat ${baseJson} | jq '
-          . + {
-            "store_dir": $store_dir,
-            "from_image": $from_image,
-            "store_layers": $store_layers,
-            "customisation_layer", $customisation_layer,
-            "repo_tag": $repo_tag,
-            "created": $created
-          }
-          ' --arg store_dir "${storeDir}" \
-            --argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \
-            --argjson store_layers "$store_layers" \
-            --arg customisation_layer ${customisationLayer} \
-            --arg repo_tag "$imageName:$imageTag" \
-            --arg created "$created" |
-          tee $out
-      '';
-      result = runCommand "stream-${baseName}" {
-        inherit (conf) imageName;
-        passthru = {
-          inherit (conf) imageTag;
-
-          # Distinguish tarballs and exes at the Nix level so functions that
-          # take images can know in advance how the image is supposed to be used.
-          isExe = true;
-        };
-        nativeBuildInputs = [ makeWrapper ];
-      } ''
-        makeWrapper ${streamScript} $out --add-flags ${conf}
-      '';
-    in result;
+          cat ${baseJson} | jq '
+            . + {
+              "store_dir": $store_dir,
+              "from_image": $from_image,
+              "store_layers": $store_layers,
+              "customisation_layer", $customisation_layer,
+              "repo_tag": $repo_tag,
+              "created": $created
+            }
+            ' --arg store_dir "${storeDir}" \
+              --argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \
+              --argjson store_layers "$store_layers" \
+              --arg customisation_layer ${customisationLayer} \
+              --arg repo_tag "$imageName:$imageTag" \
+              --arg created "$created" |
+            tee $out
+        '';
+        result = runCommand "stream-${baseName}"
+          {
+            inherit (conf) imageName;
+            passthru = {
+              inherit (conf) imageTag;
+
+              # Distinguish tarballs and exes at the Nix level so functions that
+              # take images can know in advance how the image is supposed to be used.
+              isExe = true;
+            };
+            nativeBuildInputs = [ makeWrapper ];
+          } ''
+          makeWrapper ${streamScript} $out --add-flags ${conf}
+        '';
+      in
+      result;
 }
diff --git a/pkgs/data/themes/marwaita/default.nix b/pkgs/data/themes/marwaita/default.nix
index cdb7b4ed6e055..34f49955764b2 100644
--- a/pkgs/data/themes/marwaita/default.nix
+++ b/pkgs/data/themes/marwaita/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "marwaita";
-  version = "10.0";
+  version = "10.2";
 
   src = fetchFromGitHub {
     owner = "darkomarko42";
     repo = pname;
     rev = version;
-    sha256 = "19xy6p3v4jqpw448ywmx1i6mbjpy06qa1rdwkdpxdlhf45fbdacr";
+    sha256 = "09xh7yhnc7szk171n0qgr52xr7sw9qq4cb7qwrkhf0184idf0pik";
   };
 
   buildInputs = [
diff --git a/pkgs/data/themes/vimix/default.nix b/pkgs/data/themes/vimix/default.nix
index 1694063e4fefc..5f08f2c445dbb 100644
--- a/pkgs/data/themes/vimix/default.nix
+++ b/pkgs/data/themes/vimix/default.nix
@@ -1,19 +1,33 @@
-{ lib, stdenv, fetchFromGitHub, gtk_engines, gtk-engine-murrine }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, gnome-shell
+, gtk-engine-murrine
+, gtk_engines
+}:
 
 stdenv.mkDerivation rec {
   pname = "vimix-gtk-themes";
-  version = "2021-04-25";
+  version = "2021-08-09";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    sha256 = "0ak763vs27h5z2pgcqpz1g1hypn5gl0p0ylffawc9zdi1wp2mpxb";
+    sha256 = "0j6sq7z4zqc9q4hqcq4y9vh4qpgl0v1i353l6rcd6bh1r594rwjm";
   };
 
-  buildInputs = [ gtk_engines ];
+  nativeBuildInputs = [
+    gnome-shell  # needed to determine the gnome-shell version
+  ];
 
-  propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+  buildInputs = [
+    gtk_engines
+  ];
+
+  propagatedUserEnvPkgs = [
+    gtk-engine-murrine
+  ];
 
   installPhase = ''
     runHook preInstall
diff --git a/pkgs/desktops/xfce/applications/catfish/default.nix b/pkgs/desktops/xfce/applications/catfish/default.nix
index 072181595a6f9..df072f8620809 100644
--- a/pkgs/desktops/xfce/applications/catfish/default.nix
+++ b/pkgs/desktops/xfce/applications/catfish/default.nix
@@ -1,15 +1,15 @@
 { lib, fetchurl, file, which, intltool, gobject-introspection,
-  findutils, xdg-utils, dconf, gtk3, python3Packages,
+  findutils, xdg-utils, dconf, gtk3, python3Packages, xfconf,
   wrapGAppsHook
 }:
 
 python3Packages.buildPythonApplication rec {
   pname = "catfish";
-  version = "1.4.13";
+  version = "4.16.2";
 
   src = fetchurl {
     url = "https://archive.xfce.org/src/apps/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-WMDqBuXyhgGSlVRfv9HbyiOup0xiV2K7tMiab0hK6Dk=";
+    sha256 = "sha256-shouFRlD8LGU04sX/qrzghh5R+0SoCw9ZJKvt0gBKms=";
   };
 
   nativeBuildInputs = [
@@ -36,6 +36,7 @@ python3Packages.buildPythonApplication rec {
     python3Packages.pexpect
     xdg-utils
     findutils
+    xfconf
   ];
 
   # Explicitly set the prefix dir in "setup.py" because setuptools is
diff --git a/pkgs/desktops/xfce/applications/mousepad/default.nix b/pkgs/desktops/xfce/applications/mousepad/default.nix
index 11ef1c6841d29..c3e7805b112d7 100644
--- a/pkgs/desktops/xfce/applications/mousepad/default.nix
+++ b/pkgs/desktops/xfce/applications/mousepad/default.nix
@@ -3,10 +3,10 @@
 mkXfceDerivation {
   category = "apps";
   pname = "mousepad";
-  version = "0.5.5";
+  version = "0.5.6";
   odd-unstable = false;
 
-  sha256 = "sha256-ViiibikQ90S47stb3egXwK5JbcMYYiJAsKukMVYvKLE=";
+  sha256 = "sha256-cdM2NHUnN2FITITb4077Je5Z8xwZAJfjmwXfV+WE6jk=";
 
   nativeBuildInputs = [ gobject-introspection ];
 
diff --git a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix
index 2e275f2b35d9e..3e592b60f1413 100644
--- a/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix
+++ b/pkgs/desktops/xfce/panel-plugins/xfce4-sensors-plugin/default.nix
@@ -8,11 +8,11 @@ in
 
 stdenv.mkDerivation rec {
   pname  = "xfce4-sensors-plugin";
-  version = "1.3.95";
+  version = "1.4.1";
 
   src = fetchurl {
     url = "mirror://xfce/src/${category}/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-g8ZK5GGN1ZKXHPoLwoWptHr4AaPthWg1zbKkxTPHhGw=";
+    sha256 = "sha256-N9DcVp5zXkgqGFRcJOsc4CKdaRDjpNTB3uBoCZkjS+I=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/compilers/ecl/16.1.2.nix b/pkgs/development/compilers/ecl/16.1.2.nix
index 7736b71e56ed2..2742c2b8c07ea 100644
--- a/pkgs/development/compilers/ecl/16.1.2.nix
+++ b/pkgs/development/compilers/ecl/16.1.2.nix
@@ -7,15 +7,13 @@
 , useBoehmgc ? true, boehmgc
 }:
 
-assert useBoehmgc -> boehmgc != null;
-
 let
   s = # Generated upstream information
   rec {
     baseName="ecl";
     version="16.1.2";
     name="${baseName}-${version}";
-    url="https://common-lisp.net/project/ecl/static/files/release/ecl-16.1.2.tgz";
+    url="https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz";
     sha256="16ab8qs3awvdxy8xs8jy82v8r04x4wr70l9l2j45vgag18d2nj1d";
   };
   buildInputs = [
@@ -42,10 +40,7 @@ stdenv.mkDerivation {
     "--with-gmp-libdir=${lib.getLib gmp}/lib"
     # -incdir, -libdir doesn't seem to be supported for libffi
     "--with-libffi-prefix=${lib.getDev libffi}"
-    ]
-    ++
-    (lib.optional (! noUnicode)
-      "--enable-unicode")
+    ] ++ lib.optional (! noUnicode) "--enable-unicode"
     ;
 
   patches = [
@@ -91,11 +86,11 @@ stdenv.mkDerivation {
       --prefix NIX_LDFLAGS_BEFORE_${gcc.bintools.suffixSalt} ' ' "-L${lib.getLib libffi}/lib"
   '';
 
-  meta = {
+  meta = with lib; {
     inherit (s) version;
     description = "Lisp implementation aiming to be small, fast and easy to embed";
-    license = lib.licenses.mit ;
-    maintainers = [lib.maintainers.raskin];
-    platforms = lib.platforms.unix;
+    license = licenses.mit ;
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/compilers/edk2/default.nix b/pkgs/development/compilers/edk2/default.nix
index 9d1abc11af190..1a6685e914115 100644
--- a/pkgs/development/compilers/edk2/default.nix
+++ b/pkgs/development/compilers/edk2/default.nix
@@ -5,7 +5,6 @@
   fetchpatch,
   libuuid,
   python3,
-  iasl,
   bc,
   clang_9,
   llvmPackages_9,
diff --git a/pkgs/development/compilers/iasl/default.nix b/pkgs/development/compilers/iasl/default.nix
deleted file mode 100644
index a31e1ff3f6a95..0000000000000
--- a/pkgs/development/compilers/iasl/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{lib, stdenv, fetchurl, bison, flex}:
-
-stdenv.mkDerivation rec {
-  pname = "iasl";
-  version = "20210730";
-
-  src = fetchurl {
-    url = "https://acpica.org/sites/acpica/files/acpica-unix-${version}.tar.gz";
-    sha256 = "1pmm977nyl3bs71ipzcl4dh30qm8x9wm2p2ml0m62rl62kai832a";
-  };
-
-  NIX_CFLAGS_COMPILE = "-O3";
-
-  buildFlags = [ "iasl" ];
-
-  nativeBuildInputs = [ bison flex ];
-
-  installPhase =
-    ''
-      runHook preInstall
-
-      install -Dm755 generate/unix/bin*/iasl -t $out/bin
-
-      runHook postInstall
-    '';
-
-  meta = {
-    description = "Intel ACPI Compiler";
-    homepage = "http://www.acpica.org/";
-    license = lib.licenses.iasl;
-    platforms = lib.platforms.unix;
-  };
-}
diff --git a/pkgs/development/compilers/scala-runners/default.nix b/pkgs/development/compilers/scala-runners/default.nix
index d41ae17211e29..0f0de015af5f9 100644
--- a/pkgs/development/compilers/scala-runners/default.nix
+++ b/pkgs/development/compilers/scala-runners/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, jre, coursier }:
+{ stdenv, lib, fetchFromGitHub, coursier }:
 
 stdenv.mkDerivation rec {
   pname = "scala-runners";
diff --git a/pkgs/development/compilers/sdcc/default.nix b/pkgs/development/compilers/sdcc/default.nix
index d0ebb57920bc0..28a461b098832 100644
--- a/pkgs/development/compilers/sdcc/default.nix
+++ b/pkgs/development/compilers/sdcc/default.nix
@@ -23,6 +23,12 @@ stdenv.mkDerivation rec {
 
   configureFlags = map (f: "--disable-${f}-port") excludedPorts;
 
+  preConfigure = ''
+    if test -n "''${dontStrip-}"; then
+      export STRIP=none
+    fi
+  '';
+
   meta = {
     description = "Small Device C Compiler";
     longDescription = ''
diff --git a/pkgs/development/libraries/aften/default.nix b/pkgs/development/libraries/aften/default.nix
index 1ae5ffb17ad30..488c5b6e729ad 100644
--- a/pkgs/development/libraries/aften/default.nix
+++ b/pkgs/development/libraries/aften/default.nix
@@ -8,14 +8,21 @@ stdenv.mkDerivation rec {
     sha256 = "02hc5x9vkgng1v9bzvza9985ifrjd7fjr7nlpvazp4mv6dr89k47";
   };
 
+  patches = [
+    # Add fallback for missing SIMD functions on ARM
+    # Source https://github.com/Homebrew/homebrew-core/blob/cad412c7fb4b64925f821fcc9ac5f16a2c40f32d/Formula/aften.rb
+    ./simd-fallback.patch
+  ];
+
   nativeBuildInputs = [ cmake ];
 
   cmakeFlags = [ "-DSHARED=ON" ];
 
-  meta = {
+  meta = with lib; {
     description = "An audio encoder which generates compressed audio streams based on ATSC A/52 specification";
     homepage = "http://aften.sourceforge.net/";
-    license = lib.licenses.lgpl2;
-    platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
+    license = licenses.lgpl21Only;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ angustrau ];
   };
 }
diff --git a/pkgs/development/libraries/aften/simd-fallback.patch b/pkgs/development/libraries/aften/simd-fallback.patch
new file mode 100644
index 0000000000000..cdc961a7f5dfd
--- /dev/null
+++ b/pkgs/development/libraries/aften/simd-fallback.patch
@@ -0,0 +1,25 @@
+From dca9c03930d669233258c114e914a01f7c0aeb05 Mon Sep 17 00:00:00 2001
+From: jbr79 <jbr79@ef0d8562-5c19-0410-972e-841db63a069c>
+Date: Wed, 24 Sep 2008 22:02:59 +0000
+Subject: [PATCH] add fallback function for apply_simd_restrictions() on
+ non-x86/ppc
+
+git-svn-id: https://aften.svn.sourceforge.net/svnroot/aften@766 ef0d8562-5c19-0410-972e-841db63a069c
+---
+ libaften/cpu_caps.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libaften/cpu_caps.h b/libaften/cpu_caps.h
+index b7c6159..4db11f7 100644
+--- a/libaften/cpu_caps.h
++++ b/libaften/cpu_caps.h
+@@ -26,6 +26,7 @@
+ #include "ppc_cpu_caps.h"
+ #else
+ static inline void cpu_caps_detect(void){}
++static inline void apply_simd_restrictions(AftenSimdInstructions *simd_instructions){}
+ #endif
+
+ #endif /* CPU_CAPS_H */
+--
+2.24.3 (Apple Git-128)
\ No newline at end of file
diff --git a/pkgs/development/libraries/gjs/default.nix b/pkgs/development/libraries/gjs/default.nix
index 342d498f1547f..e86775de623b6 100644
--- a/pkgs/development/libraries/gjs/default.nix
+++ b/pkgs/development/libraries/gjs/default.nix
@@ -30,13 +30,13 @@ let
   ];
 in stdenv.mkDerivation rec {
   pname = "gjs";
-  version = "1.68.1";
+  version = "1.68.2";
 
   outputs = [ "out" "dev" "installedTests" ];
 
   src = fetchurl {
     url = "mirror://gnome/sources/gjs/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "0w2cbfpmc6alz7z8ycchhlkn586av5y8zk2xmgwzq10i0k13xyig";
+    sha256 = "sha256-cP8CraaC8TAzjsXMTFEQPcDlyrjVN+t2sYHsUSpl7jA=";
   };
 
   patches = [
@@ -126,6 +126,7 @@ in stdenv.mkDerivation rec {
 
     updateScript = gnome.updateScript {
       packageName = "gjs";
+      versionPolicy = "odd-unstable";
     };
   };
 
diff --git a/pkgs/development/libraries/nspr/default.nix b/pkgs/development/libraries/nspr/default.nix
index c68354a18b690..8048ef2a5e702 100644
--- a/pkgs/development/libraries/nspr/default.nix
+++ b/pkgs/development/libraries/nspr/default.nix
@@ -1,6 +1,9 @@
-{ lib, stdenv, fetchurl
-, CoreServices ? null
-, buildPackages }:
+{ lib
+, stdenv
+, fetchurl
+, CoreServices
+, buildPackages
+}:
 
 stdenv.mkDerivation rec {
   pname = "nspr";
@@ -37,13 +40,14 @@ stdenv.mkDerivation rec {
     moveToOutput share "$dev" # just aclocal
   '';
 
-  buildInputs = [] ++ lib.optionals stdenv.isDarwin [ CoreServices ];
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
 
   enableParallelBuilding = true;
 
   meta = with lib; {
-    homepage = "http://www.mozilla.org/projects/nspr/";
+    homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Reference/NSPR_functions";
     description = "Netscape Portable Runtime, a platform-neutral API for system-level and libc-like functions";
+    maintainers = with maintainers; [ ];
     platforms = platforms.all;
     license = licenses.mpl20;
   };
diff --git a/pkgs/development/libraries/nss/3.53.nix b/pkgs/development/libraries/nss/3.53.nix
index 5d44a4d2469d4..4d22e9a1a7cf0 100644
--- a/pkgs/development/libraries/nss/3.53.nix
+++ b/pkgs/development/libraries/nss/3.53.nix
@@ -1,4 +1,14 @@
-{ lib, stdenv, fetchurl, nspr, perl, zlib, sqlite, darwin, fixDarwinDylibNames, buildPackages, ninja
+{ lib
+, stdenv
+, fetchurl
+, nspr
+, perl
+, zlib
+, sqlite
+, darwin
+, fixDarwinDylibNames
+, buildPackages
+, ninja
 , # allow FIPS mode. Note that this makes the output non-reproducible.
   # https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Tech_Notes/nss_tech_note6
   enableFIPS ? false
@@ -9,7 +19,8 @@ let
     url = "http://dev.gentoo.org/~polynomial-c/mozilla/nss-3.15.4-pem-support-20140109.patch.xz";
     sha256 = "10ibz6y0hknac15zr6dw4gv9nb5r5z9ym6gq18j3xqx7v7n3vpdw";
   };
-in stdenv.mkDerivation rec {
+in
+stdenv.mkDerivation rec {
   pname = "nss";
   version = "3.53.1";
 
@@ -44,55 +55,58 @@ in stdenv.mkDerivation rec {
     substituteInPlace nss/coreconf/config.gypi --replace "/usr/bin/grep" "${buildPackages.coreutils}/bin/env grep"
   '';
 
-  patches =
-    [
-      # Based on http://patch-tracker.debian.org/patch/series/dl/nss/2:3.15.4-1/85_security_load.patch
-      ./85_security_load.patch
-      ./ckpem.patch
-      ./fix-cross-compilation.patch
-    ];
+  patches = [
+    # Based on http://patch-tracker.debian.org/patch/series/dl/nss/2:3.15.4-1/85_security_load.patch
+    ./85_security_load.patch
+    ./ckpem.patch
+    ./fix-cross-compilation.patch
+  ];
 
   patchFlags = [ "-p0" ];
 
   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
-     substituteInPlace nss/coreconf/Darwin.mk --replace '@executable_path/$(notdir $@)' "$out/lib/\$(notdir \$@)"
-     substituteInPlace nss/coreconf/config.gypi --replace "'DYLIB_INSTALL_NAME_BASE': '@executable_path'" "'DYLIB_INSTALL_NAME_BASE': '$out/lib'"
-   '';
+    substituteInPlace nss/coreconf/Darwin.mk --replace '@executable_path/$(notdir $@)' "$out/lib/\$(notdir \$@)"
+    substituteInPlace nss/coreconf/config.gypi --replace "'DYLIB_INSTALL_NAME_BASE': '@executable_path'" "'DYLIB_INSTALL_NAME_BASE': '$out/lib'"
+  '';
 
   outputs = [ "out" "dev" "tools" ];
 
   preConfigure = "cd nss";
 
-  buildPhase = let
-    getArch = platform: if platform.isx86_64 then "x64"
-          else if platform.isx86_32 then "ia32"
-          else if platform.isAarch32 then "arm"
-          else if platform.isAarch64 then "arm64"
-          else if platform.isPower && platform.is64bit then (
+  buildPhase =
+    let
+      getArch = platform:
+        if platform.isx86_64 then "x64"
+        else if platform.isx86_32 then "ia32"
+        else if platform.isAarch32 then "arm"
+        else if platform.isAarch64 then "arm64"
+        else if platform.isPower && platform.is64bit then
+          (
             if platform.isLittleEndian then "ppc64le" else "ppc64"
           )
-          else platform.parsed.cpu.name;
-    # yes, this is correct. nixpkgs uses "host" for the platform the binary will run on whereas nss uses "host" for the platform that the build is running on
-    target = getArch stdenv.hostPlatform;
-    host = getArch stdenv.buildPlatform;
-  in ''
-    runHook preBuild
-
-    sed -i 's|nss_dist_dir="$dist_dir"|nss_dist_dir="'$out'"|;s|nss_dist_obj_dir="$obj_dir"|nss_dist_obj_dir="'$out'"|' build.sh
-    ./build.sh -v --opt \
-      --with-nspr=${nspr.dev}/include:${nspr.out}/lib \
-      --system-sqlite \
-      --enable-legacy-db \
-      --target ${target} \
-      -Dhost_arch=${host} \
-      -Duse_system_zlib=1 \
-      --enable-libpkix \
-      ${lib.optionalString enableFIPS "--enable-fips"} \
-      ${lib.optionalString stdenv.isDarwin "--clang"} \
-      ${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-tests"}
-
-    runHook postBuild
-  '';
+        else platform.parsed.cpu.name;
+      # yes, this is correct. nixpkgs uses "host" for the platform the binary will run on whereas nss uses "host" for the platform that the build is running on
+      target = getArch stdenv.hostPlatform;
+      host = getArch stdenv.buildPlatform;
+    in
+    ''
+      runHook preBuild
+
+      sed -i 's|nss_dist_dir="$dist_dir"|nss_dist_dir="'$out'"|;s|nss_dist_obj_dir="$obj_dir"|nss_dist_obj_dir="'$out'"|' build.sh
+      ./build.sh -v --opt \
+        --with-nspr=${nspr.dev}/include:${nspr.out}/lib \
+        --system-sqlite \
+        --enable-legacy-db \
+        --target ${target} \
+        -Dhost_arch=${host} \
+        -Duse_system_zlib=1 \
+        --enable-libpkix \
+        ${lib.optionalString enableFIPS "--enable-fips"} \
+        ${lib.optionalString stdenv.isDarwin "--clang"} \
+        ${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-tests"}
+
+      runHook postBuild
+    '';
 
   NIX_CFLAGS_COMPILE = "-Wno-error -DNIX_NSS_LIBDIR=\"${placeholder "out"}/lib/\"";
 
@@ -130,36 +144,38 @@ in stdenv.mkDerivation rec {
     chmod 0755 $out/bin/nss-config
   '';
 
-  postFixup = let
-    isCross = stdenv.hostPlatform != stdenv.buildPlatform;
-    nss = if isCross then buildPackages.nss.tools else "$out";
-  in
-  (lib.optionalString enableFIPS (''
-    for libname in freebl3 nssdbm3 softokn3
-    do '' +
+  postFixup =
+    let
+      isCross = stdenv.hostPlatform != stdenv.buildPlatform;
+      nss = if isCross then buildPackages.nss.tools else "$out";
+    in
+    (lib.optionalString enableFIPS (''
+      for libname in freebl3 nssdbm3 softokn3
+      do '' +
     (if stdenv.isDarwin
-     then ''
-       libfile="$out/lib/lib$libname.dylib"
-       DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
-     '' else ''
-       libfile="$out/lib/lib$libname.so"
-       LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
-     '') + ''
-        ${nss}/bin/shlibsign -v -i "$libfile"
-    done
-  '')) +
-  ''
-    moveToOutput bin "$tools"
-    moveToOutput bin/nss-config "$dev"
-    moveToOutput lib/libcrmf.a "$dev" # needed by firefox, for example
-    rm -f "$out"/lib/*.a
-
-    runHook postInstall
-  '';
+    then ''
+      libfile="$out/lib/lib$libname.dylib"
+      DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
+    '' else ''
+      libfile="$out/lib/lib$libname.so"
+      LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
+    '') + ''
+          ${nss}/bin/shlibsign -v -i "$libfile"
+      done
+    '')) +
+    ''
+      moveToOutput bin "$tools"
+      moveToOutput bin/nss-config "$dev"
+      moveToOutput lib/libcrmf.a "$dev" # needed by firefox, for example
+      rm -f "$out"/lib/*.a
+
+      runHook postInstall
+    '';
 
   meta = with lib; {
-    homepage = "https://developer.mozilla.org/en-US/docs/NSS";
+    homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS";
     description = "A set of libraries for development of security-enabled client and server applications";
+    maintainers = with maintainers; [ ];
     license = licenses.mpl20;
     platforms = platforms.all;
   };
diff --git a/pkgs/development/libraries/nss/default.nix b/pkgs/development/libraries/nss/default.nix
index 1d38ed4531f7a..2df6214ab0919 100644
--- a/pkgs/development/libraries/nss/default.nix
+++ b/pkgs/development/libraries/nss/default.nix
@@ -1,7 +1,16 @@
-{ lib, stdenv, fetchurl, nspr, perl, zlib
-, sqlite, ninja
-, darwin, fixDarwinDylibNames, buildPackages
-, useP11kit ? true, p11-kit
+{ lib
+, stdenv
+, fetchurl
+, nspr
+, perl
+, zlib
+, sqlite
+, ninja
+, darwin
+, fixDarwinDylibNames
+, buildPackages
+, useP11kit ? true
+, p11-kit
 , # allow FIPS mode. Note that this makes the output non-reproducible.
   # https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Tech_Notes/nss_tech_note6
   enableFIPS ? false
@@ -19,14 +28,14 @@ let
   #       an update is required do the required changes to the expression.
   #       Example: nix-shell ./maintainers/scripts/update.nix --argstr package cacert
   version = "3.68";
-  underscoreVersion = builtins.replaceStrings ["."] ["_"] version;
 
-in stdenv.mkDerivation rec {
+in
+stdenv.mkDerivation rec {
   pname = "nss";
   inherit version;
 
   src = fetchurl {
-    url = "mirror://mozilla/security/nss/releases/NSS_${underscoreVersion}_RTM/src/${pname}-${version}.tar.gz";
+    url = "mirror://mozilla/security/nss/releases/NSS_${lib.replaceStrings [ "." ] [ "_" ] version}_RTM/src/${pname}-${version}.tar.gz";
     sha256 = "0nvj7h2brcw21p1z99nrsxka056d0r1yy9nqqg0lw0w3mhnb60n4";
   };
 
@@ -56,55 +65,58 @@ in stdenv.mkDerivation rec {
     substituteInPlace nss/coreconf/config.gypi --replace "/usr/bin/grep" "${buildPackages.coreutils}/bin/env grep"
   '';
 
-  patches =
-    [
-      # Based on http://patch-tracker.debian.org/patch/series/dl/nss/2:3.15.4-1/85_security_load.patch
-      ./85_security_load.patch
-      ./ckpem.patch
-      ./fix-cross-compilation.patch
-    ];
+  patches = [
+    # Based on http://patch-tracker.debian.org/patch/series/dl/nss/2:3.15.4-1/85_security_load.patch
+    ./85_security_load.patch
+    ./ckpem.patch
+    ./fix-cross-compilation.patch
+  ];
 
   patchFlags = [ "-p0" ];
 
   postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
-     substituteInPlace nss/coreconf/Darwin.mk --replace '@executable_path/$(notdir $@)' "$out/lib/\$(notdir \$@)"
-     substituteInPlace nss/coreconf/config.gypi --replace "'DYLIB_INSTALL_NAME_BASE': '@executable_path'" "'DYLIB_INSTALL_NAME_BASE': '$out/lib'"
-   '';
+    substituteInPlace nss/coreconf/Darwin.mk --replace '@executable_path/$(notdir $@)' "$out/lib/\$(notdir \$@)"
+    substituteInPlace nss/coreconf/config.gypi --replace "'DYLIB_INSTALL_NAME_BASE': '@executable_path'" "'DYLIB_INSTALL_NAME_BASE': '$out/lib'"
+  '';
 
   outputs = [ "out" "dev" "tools" ];
 
   preConfigure = "cd nss";
 
-  buildPhase = let
-    getArch = platform: if platform.isx86_64 then "x64"
-          else if platform.isx86_32 then "ia32"
-          else if platform.isAarch32 then "arm"
-          else if platform.isAarch64 then "arm64"
-          else if platform.isPower && platform.is64bit then (
+  buildPhase =
+    let
+      getArch = platform:
+        if platform.isx86_64 then "x64"
+        else if platform.isx86_32 then "ia32"
+        else if platform.isAarch32 then "arm"
+        else if platform.isAarch64 then "arm64"
+        else if platform.isPower && platform.is64bit then
+          (
             if platform.isLittleEndian then "ppc64le" else "ppc64"
           )
-          else platform.parsed.cpu.name;
-    # yes, this is correct. nixpkgs uses "host" for the platform the binary will run on whereas nss uses "host" for the platform that the build is running on
-    target = getArch stdenv.hostPlatform;
-    host = getArch stdenv.buildPlatform;
-  in ''
-    runHook preBuild
-
-    sed -i 's|nss_dist_dir="$dist_dir"|nss_dist_dir="'$out'"|;s|nss_dist_obj_dir="$obj_dir"|nss_dist_obj_dir="'$out'"|' build.sh
-    ./build.sh -v --opt \
-      --with-nspr=${nspr.dev}/include:${nspr.out}/lib \
-      --system-sqlite \
-      --enable-legacy-db \
-      --target ${target} \
-      -Dhost_arch=${host} \
-      -Duse_system_zlib=1 \
-      --enable-libpkix \
-      ${lib.optionalString enableFIPS "--enable-fips"} \
-      ${lib.optionalString stdenv.isDarwin "--clang"} \
-      ${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-tests"}
-
-    runHook postBuild
-  '';
+        else platform.parsed.cpu.name;
+      # yes, this is correct. nixpkgs uses "host" for the platform the binary will run on whereas nss uses "host" for the platform that the build is running on
+      target = getArch stdenv.hostPlatform;
+      host = getArch stdenv.buildPlatform;
+    in
+    ''
+      runHook preBuild
+
+      sed -i 's|nss_dist_dir="$dist_dir"|nss_dist_dir="'$out'"|;s|nss_dist_obj_dir="$obj_dir"|nss_dist_obj_dir="'$out'"|' build.sh
+      ./build.sh -v --opt \
+        --with-nspr=${nspr.dev}/include:${nspr.out}/lib \
+        --system-sqlite \
+        --enable-legacy-db \
+        --target ${target} \
+        -Dhost_arch=${host} \
+        -Duse_system_zlib=1 \
+        --enable-libpkix \
+        ${lib.optionalString enableFIPS "--enable-fips"} \
+        ${lib.optionalString stdenv.isDarwin "--clang"} \
+        ${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "--disable-tests"}
+
+      runHook postBuild
+    '';
 
   NIX_CFLAGS_COMPILE = "-Wno-error -DNIX_NSS_LIBDIR=\"${placeholder "out"}/lib/\" " + lib.optionalString stdenv.hostPlatform.is64bit "-DNSS_USE_64=1";
 
@@ -147,36 +159,38 @@ in stdenv.mkDerivation rec {
     ln -sf ${p11-kit}/lib/pkcs11/p11-kit-trust.so $out/lib/libnssckbi.so
   '';
 
-  postFixup = let
-    isCross = stdenv.hostPlatform != stdenv.buildPlatform;
-    nss = if isCross then buildPackages.nss.tools else "$out";
-  in
-  (lib.optionalString enableFIPS (''
-    for libname in freebl3 nssdbm3 softokn3
-    do '' +
+  postFixup =
+    let
+      isCross = stdenv.hostPlatform != stdenv.buildPlatform;
+      nss = if isCross then buildPackages.nss.tools else "$out";
+    in
+    (lib.optionalString enableFIPS (''
+      for libname in freebl3 nssdbm3 softokn3
+      do '' +
     (if stdenv.isDarwin
-     then ''
-       libfile="$out/lib/lib$libname.dylib"
-       DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
-     '' else ''
-       libfile="$out/lib/lib$libname.so"
-       LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
-     '') + ''
-        ${nss}/bin/shlibsign -v -i "$libfile"
-    done
-  '')) +
-  ''
-    moveToOutput bin "$tools"
-    moveToOutput bin/nss-config "$dev"
-    moveToOutput lib/libcrmf.a "$dev" # needed by firefox, for example
-    rm -f "$out"/lib/*.a
-
-    runHook postInstall
-  '';
+    then ''
+      libfile="$out/lib/lib$libname.dylib"
+      DYLD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
+    '' else ''
+      libfile="$out/lib/lib$libname.so"
+      LD_LIBRARY_PATH=$out/lib:${nspr.out}/lib \
+    '') + ''
+          ${nss}/bin/shlibsign -v -i "$libfile"
+      done
+    '')) +
+    ''
+      moveToOutput bin "$tools"
+      moveToOutput bin/nss-config "$dev"
+      moveToOutput lib/libcrmf.a "$dev" # needed by firefox, for example
+      rm -f "$out"/lib/*.a
+
+      runHook postInstall
+    '';
 
   meta = with lib; {
-    homepage = "https://developer.mozilla.org/en-US/docs/NSS";
+    homepage = "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS";
     description = "A set of libraries for development of security-enabled client and server applications";
+    maintainers = with maintainers; [ ];
     license = licenses.mpl20;
     platforms = platforms.all;
   };
diff --git a/pkgs/development/libraries/nss_wrapper/default.nix b/pkgs/development/libraries/nss_wrapper/default.nix
index 0e08083c4d828..a4538aa370ccb 100644
--- a/pkgs/development/libraries/nss_wrapper/default.nix
+++ b/pkgs/development/libraries/nss_wrapper/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, cmake, pkg-config }:
 
 stdenv.mkDerivation rec {
-  name = "nss_wrapper-1.1.11";
+  pname = "nss_wrapper";
+  version = "1.1.11";
 
   src = fetchurl {
-    url = "mirror://samba/cwrap/${name}.tar.gz";
+    url = "mirror://samba/cwrap/nss_wrapper-${version}.tar.gz";
     sha256 = "1q5l6w69yc71ly8gcbnkrcbnq6b64cbiiv99m0z5vn5lgwp36igv";
   };
 
diff --git a/pkgs/development/libraries/phonon/backends/vlc.nix b/pkgs/development/libraries/phonon/backends/vlc.nix
index 10ed6aceba2e8..8ff0f3bb4917c 100644
--- a/pkgs/development/libraries/phonon/backends/vlc.nix
+++ b/pkgs/development/libraries/phonon/backends/vlc.nix
@@ -3,19 +3,10 @@
 , debug ? false
 }:
 
-with lib;
-
 stdenv.mkDerivation rec {
   pname = "phonon-backend-vlc";
   version = "0.11.2";
 
-  meta = with lib; {
-    homepage = "https://phonon.kde.org/";
-    description = "GStreamer backend for Phonon";
-    platforms = platforms.linux;
-    license = with licenses; [ bsd3 lgpl2Plus ];
-  };
-
   src = fetchurl {
     url = "mirror://kde/stable/phonon/${pname}/${version}/${pname}-${version}.tar.xz";
     sha256 = "sha256-xsM7/GjRN/DlegKeS3mMu5D1Svb3Ma9JZ3hXeRzNU6U=";
@@ -40,4 +31,11 @@ stdenv.mkDerivation rec {
   cmakeFlags = [
     "-DCMAKE_BUILD_TYPE=${if debug then "Debug" else "Release"}"
   ];
+
+  meta = with lib; {
+    homepage = "https://phonon.kde.org/";
+    description = "GStreamer backend for Phonon";
+    platforms = platforms.linux;
+    license = with licenses; [ bsd3 lgpl2Plus ];
+  };
 }
diff --git a/pkgs/development/libraries/portmidi/default.nix b/pkgs/development/libraries/portmidi/default.nix
index 0151d461c1395..0fb9636bc2a19 100644
--- a/pkgs/development/libraries/portmidi/default.nix
+++ b/pkgs/development/libraries/portmidi/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, unzip, cmake, /*jdk,*/ alsa-lib }:
+{ lib, stdenv, fetchurl, unzip, cmake, /*jdk,*/ alsa-lib, Carbon, CoreAudio, CoreFoundation, CoreMIDI, CoreServices }:
 
 stdenv.mkDerivation rec {
   pname = "portmidi";
@@ -20,14 +20,31 @@ stdenv.mkDerivation rec {
     "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY=Release"
     "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=Release"
     "-DCMAKE_RUNTIME_OUTPUT_DIRECTORY=Release"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "-DCMAKE_OSX_ARCHITECTURES=${if stdenv.isAarch64 then "arm64" else "x86_64"}"
+    "-DCOREAUDIO_LIB=${CoreAudio}"
+    "-DCOREFOUNDATION_LIB=${CoreFoundation}"
+    "-DCOREMIDI_LIB=${CoreMIDI}"
+    "-DCORESERVICES_LIB=${CoreServices}"
   ];
 
-  # XXX: This is to deactivate Java support.
-  patches = lib.singleton (fetchurl {
-    url = "https://raw.github.com/Rogentos/argent-gentoo/master/media-libs/"
-        + "portmidi/files/portmidi-217-cmake-libdir-java-opts.patch";
-    sha256 = "1jbjwan61iqq9fqfpq2a4fd30k3clg7a6j0gfgsw87r8c76kqf6h";
-  });
+  NIX_LDFLAGS = lib.optionalString stdenv.isDarwin [
+    "-framework CoreAudio"
+    "-framework CoreFoundation"
+    "-framework CoreMIDI"
+    "-framework CoreServices"
+  ];
+
+  patches = [
+    # XXX: This is to deactivate Java support.
+    (fetchurl {
+      url = "https://raw.github.com/Rogentos/argent-gentoo/master/media-libs/portmidi/files/portmidi-217-cmake-libdir-java-opts.patch";
+      sha256 = "1jbjwan61iqq9fqfpq2a4fd30k3clg7a6j0gfgsw87r8c76kqf6h";
+    })
+  ] ++ lib.optionals stdenv.isDarwin [
+    # Remove hardcoded variables so we can set them properly
+    ./remove-darwin-variables.diff
+  ];
 
   postPatch = ''
     sed -i -e 's|/usr/local/|'"$out"'|' -e 's|/usr/share/|'"$out"'/share/|' \
@@ -40,19 +57,24 @@ stdenv.mkDerivation rec {
         pm_java/CMakeLists.txt
   '';
 
-  postInstall = ''
-    ln -s libportmidi.so "$out/lib/libporttime.so"
+  postInstall = let ext = stdenv.hostPlatform.extensions.sharedLibrary; in ''
+    ln -s libportmidi.${ext} "$out/lib/libporttime.${ext}"
   '';
 
   nativeBuildInputs = [ unzip cmake ];
-  buildInputs = [ alsa-lib ];
+  buildInputs = lib.optionals stdenv.isLinux [
+    alsa-lib
+  ] ++ lib.optionals stdenv.isDarwin [
+    Carbon CoreAudio CoreFoundation CoreMIDI CoreServices
+  ];
 
   hardeningDisable = [ "format" ];
 
-  meta = {
+  meta = with lib; {
     homepage = "http://portmedia.sourceforge.net/portmidi/";
     description = "Platform independent library for MIDI I/O";
-    license = lib.licenses.mit;
-    platforms = lib.platforms.linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ angustrau ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/libraries/portmidi/remove-darwin-variables.diff b/pkgs/development/libraries/portmidi/remove-darwin-variables.diff
new file mode 100644
index 0000000000000..975dbb57b59d3
--- /dev/null
+++ b/pkgs/development/libraries/portmidi/remove-darwin-variables.diff
@@ -0,0 +1,52 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4919b78..758eccb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -36,8 +36,6 @@ set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused")
+ set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused")
+ set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "Unused")
+ 
+-set(CMAKE_OSX_ARCHITECTURES i386 ppc x86_64 CACHE STRING "change to needed architecture for a smaller library" FORCE)
+-
+ PROJECT(portmidi)
+ 
+ if(UNIX)
+diff --git a/pm_common/CMakeLists.txt b/pm_common/CMakeLists.txt
+index e171047..aafa09c 100644
+--- a/pm_common/CMakeLists.txt
++++ b/pm_common/CMakeLists.txt
+@@ -22,7 +22,7 @@ else(APPLE OR WIN32)
+ endif(APPLE OR WIN32)
+ 
+ if(APPLE)
+-  set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX10.5.sdk CACHE 
++  set(CMAKE_OSX_SYSROOT / CACHE 
+       PATH "-isysroot parameter for compiler" FORCE)
+   set(CMAKE_C_FLAGS "-mmacosx-version-min=10.5" CACHE 
+       STRING "needed in conjunction with CMAKE_OSX_SYSROOT" FORCE)
+@@ -54,10 +54,6 @@ if(UNIX)
+ 
+     include_directories(${CMAKE_OSX_SYSROOT}/Developer/Headers/FlatCarbon)
+     set(FRAMEWORK_PATH ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks)
+-    set(COREAUDIO_LIB "${FRAMEWORK_PATH}/CoreAudio.framework")
+-    set(COREFOUNDATION_LIB "${FRAMEWORK_PATH}/CoreFoundation.framework")
+-    set(COREMIDI_LIB "${FRAMEWORK_PATH}/CoreMIDI.framework")
+-    set(CORESERVICES_LIB "${FRAMEWORK_PATH}/CoreServices.framework")
+     set(PM_NEEDED_LIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}
+                              ${COREMIDI_LIB} ${CORESERVICES_LIB}
+         CACHE INTERNAL "")
+diff --git a/pm_dylib/CMakeLists.txt b/pm_dylib/CMakeLists.txt
+index f693dd6..1dc5cd6 100644
+--- a/pm_dylib/CMakeLists.txt
++++ b/pm_dylib/CMakeLists.txt
+@@ -49,10 +49,6 @@ if(UNIX)
+ 
+     include_directories(${CMAKE_OSX_SYSROOT}/Developer/Headers/FlatCarbon)
+     set(FRAMEWORK_PATH ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks)
+-    set(COREAUDIO_LIB "${FRAMEWORK_PATH}/CoreAudio.framework")
+-    set(COREFOUNDATION_LIB "${FRAMEWORK_PATH}/CoreFoundation.framework")
+-    set(COREMIDI_LIB "${FRAMEWORK_PATH}/CoreMIDI.framework")
+-    set(CORESERVICES_LIB "${FRAMEWORK_PATH}/CoreServices.framework")
+     set(PM_NEEDED_LIBS ${COREAUDIO_LIB} ${COREFOUNDATION_LIB}
+                              ${COREMIDI_LIB} ${CORESERVICES_LIB}
+         CACHE INTERNAL "")
diff --git a/pkgs/development/libraries/usbredir/default.nix b/pkgs/development/libraries/usbredir/default.nix
index 0313b8c81ef25..00a16e15b0323 100644
--- a/pkgs/development/libraries/usbredir/default.nix
+++ b/pkgs/development/libraries/usbredir/default.nix
@@ -1,27 +1,50 @@
-{ lib, stdenv, fetchurl, pkg-config, libusb1 }:
+{ lib
+, stdenv
+, cmake
+, fetchFromGitLab
+, pkg-config
+, meson
+, ninja
+, glib
+, libusb1
+}:
 
 stdenv.mkDerivation rec {
   pname = "usbredir";
-  version = "0.8.0";
+  version = "0.10.0";
 
-  src = fetchurl {
-    url = "https://spice-space.org/download/usbredir/${pname}-${version}.tar.bz2";
-    sha256 = "002yik1x7kn0427xahvnhjby2np14a6xqw7c3dx530n9h5d9rg47";
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "spice";
+    repo = "usbredir";
+    rev = "${pname}-${version}";
+    sha256 = "1dz8jms9l6gg2hw0k6p1p1lnchc9mcgmskgvm5gbdvw3j7wrhdbz";
   };
 
-  NIX_CFLAGS_COMPILE = "-Wno-error";
+  nativeBuildInputs = [
+    glib
+    meson
+    ninja
+    pkg-config
+  ];
 
-  nativeBuildInputs = [ pkg-config ];
-  propagatedBuildInputs = [ libusb1 ];
+  propagatedBuildInputs = [
+    libusb1
+  ];
+
+  mesonFlags = [
+    "-Dgit_werror=disabled"
+    "-Dtools=enabled"
+    "-Dfuzzing=disabled"
+  ];
 
   outputs = [ "out" "dev" ];
 
   meta = with lib; {
     description = "USB traffic redirection protocol";
     homepage = "https://www.spice-space.org/usbredir.html";
-    license = licenses.lgpl21;
-
-    maintainers = [ maintainers.offline ];
+    license = licenses.lgpl21Plus;
+    maintainers = with maintainers; [ offline ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/webkitgtk/default.nix b/pkgs/development/libraries/webkitgtk/default.nix
index 72b09fec29d22..8c5a8d6306a2e 100644
--- a/pkgs/development/libraries/webkitgtk/default.nix
+++ b/pkgs/development/libraries/webkitgtk/default.nix
@@ -36,7 +36,7 @@
 , libidn
 , libedit
 , readline
-, sdk
+, apple_sdk
 , libGL
 , libGLU
 , mesa
@@ -167,13 +167,15 @@ stdenv.mkDerivation rec {
   ]) ++ lib.optionals stdenv.isDarwin [
     libedit
     readline
+  ] ++ lib.optional (stdenv.isDarwin && !stdenv.isAarch64) (
     # Pull a header that contains a definition of proc_pid_rusage().
     # (We pick just that one because using the other headers from `sdk` is not
-    # compatible with our C++ standard library)
-    (runCommandNoCC "${pname}_headers" {} ''
-      install -Dm444 "${lib.getDev sdk}"/include/libproc.h "$out"/include/libproc.h
-    '')
-  ] ++ lib.optionals stdenv.isLinux [
+    # compatible with our C++ standard library. This header is already in
+    # the standard library on aarch64)
+    runCommandNoCC "${pname}_headers" {} ''
+      install -Dm444 "${lib.getDev apple_sdk.sdk}"/include/libproc.h "$out"/include/libproc.h
+    ''
+  ) ++ lib.optionals stdenv.isLinux [
     bubblewrap
     libseccomp
     systemd
diff --git a/pkgs/development/libraries/wxsqlite3/default.nix b/pkgs/development/libraries/wxsqlite3/default.nix
index 5fdac25eb97ff..d1f6903961b7a 100644
--- a/pkgs/development/libraries/wxsqlite3/default.nix
+++ b/pkgs/development/libraries/wxsqlite3/default.nix
@@ -1,9 +1,13 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , fetchFromGitHub
 , autoreconfHook
 , wxGTK
 , sqlite
-, darwin
+, Cocoa
+, setfile
+, rez
+, derez
 }:
 
 stdenv.mkDerivation rec {
@@ -20,13 +24,13 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoreconfHook ];
 
   buildInputs = [ wxGTK sqlite ]
-    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa darwin.stubs.setfile darwin.stubs.rez darwin.stubs.derez ];
+    ++ lib.optionals stdenv.isDarwin [ Cocoa setfile rez derez ];
 
   meta = with lib; {
     homepage = "https://utelle.github.io/wxsqlite3/";
     description = "A C++ wrapper around the public domain SQLite 3.x for wxWidgets";
     platforms = platforms.unix;
     maintainers = with maintainers; [ vrthra ];
-    license = [ licenses.lgpl3Plus licenses.gpl3Plus ];
+    license = with licenses; [ lgpl3Plus gpl3Plus ];
   };
 }
diff --git a/pkgs/development/node-packages/node-packages.json b/pkgs/development/node-packages/node-packages.json
index 3ce357cecb233..95f6cb7ecf8f3 100644
--- a/pkgs/development/node-packages/node-packages.json
+++ b/pkgs/development/node-packages/node-packages.json
@@ -104,6 +104,7 @@
 , "fx"
 , "ganache-cli"
 , "gatsby-cli"
+, "generator-code"
 , "get-graphql-schema"
 , "git-run"
 , "git-ssb"
diff --git a/pkgs/development/node-packages/node-packages.nix b/pkgs/development/node-packages/node-packages.nix
index 35bb2db3f10f8..5bf9d0be05465 100644
--- a/pkgs/development/node-packages/node-packages.nix
+++ b/pkgs/development/node-packages/node-packages.nix
@@ -238,13 +238,13 @@ let
         sha512 = "GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==";
       };
     };
-    "@apollo/client-3.4.5" = {
+    "@apollo/client-3.4.7" = {
       name = "_at_apollo_slash_client";
       packageName = "@apollo/client";
-      version = "3.4.5";
+      version = "3.4.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@apollo/client/-/client-3.4.5.tgz";
-        sha512 = "arvzqyh+SmcJ9jGmdP1QhboTCq6YoowidqbDTigJ8LqA4jywOvgy3GMSPKUtyyxter12rQ+42cXjGI9+ZMVuyA==";
+        url = "https://registry.npmjs.org/@apollo/client/-/client-3.4.7.tgz";
+        sha512 = "EmqGxXD8hr05cIFWJFwtGXifc+Lo8hTCEuiaQMtKknHszJfqIFXSxqP+H+eJnjfuoxH74aTSsZKtJlnE83Vt6w==";
       };
     };
     "@apollo/protobufjs-1.2.2" = {
@@ -2731,6 +2731,15 @@ let
         sha512 = "v7+LQFbqZKmd/Tvf5/j1Xlbq6jXL/4d+gUtm2TNX4QiEC3ELWADmGr2dGlUyLl6aKTuYfsN72vAsO5zmavYkEg==";
       };
     };
+    "@grpc/grpc-js-1.3.7" = {
+      name = "_at_grpc_slash_grpc-js";
+      packageName = "@grpc/grpc-js";
+      version = "1.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.3.7.tgz";
+        sha512 = "CKQVuwuSPh40tgOkR7c0ZisxYRiN05PcKPW72mQL5y++qd7CwBRoaJZvU5xfXnCJDFBmS3qZGQ71Frx6Ofo2XA==";
+      };
+    };
     "@grpc/proto-loader-0.6.2" = {
       name = "_at_grpc_slash_proto-loader";
       packageName = "@grpc/proto-loader";
@@ -3127,22 +3136,22 @@ let
         sha512 = "fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==";
       };
     };
-    "@joplin/fork-htmlparser2-4.1.28" = {
+    "@joplin/fork-htmlparser2-4.1.30" = {
       name = "_at_joplin_slash_fork-htmlparser2";
       packageName = "@joplin/fork-htmlparser2";
-      version = "4.1.28";
+      version = "4.1.30";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@joplin/fork-htmlparser2/-/fork-htmlparser2-4.1.28.tgz";
-        sha512 = "aY8o+hi42Rn0BCcjI33nXC/tHwm1mYoAMrqnEfNVQ1ZDGJbbKVnYWADf6o5tGMR+Klkn9lbbR9tn+U8hKHbFhA==";
+        url = "https://registry.npmjs.org/@joplin/fork-htmlparser2/-/fork-htmlparser2-4.1.30.tgz";
+        sha512 = "zcuFx0Jxd+nmV+YRT2tjVjU6b1yB/pDxPE/PzBaiXzwLCpJrQKL7hUMsJiqfyyXbXwQkFRqu3pKVsBkuZjM0pw==";
       };
     };
-    "@joplin/fork-sax-1.2.32" = {
+    "@joplin/fork-sax-1.2.34" = {
       name = "_at_joplin_slash_fork-sax";
       packageName = "@joplin/fork-sax";
-      version = "1.2.32";
+      version = "1.2.34";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@joplin/fork-sax/-/fork-sax-1.2.32.tgz";
-        sha512 = "N6Nk2qdsmCM31zIYjyIEH2hTSFd9rZv6tcvN9bjsuxTQ97WW74d6fI8+ReBWz2cFs7joXxaPay0iNwwDDXV0Kg==";
+        url = "https://registry.npmjs.org/@joplin/fork-sax/-/fork-sax-1.2.34.tgz";
+        sha512 = "H+uKVcUvvRzzBkydbkTDF1w6SeTYzLSnAeUHCjEFG8zEZ2HlOxNt+418Iy74U00tbl2m4/uKPoXhjNz8wQhFGQ==";
       };
     };
     "@joplin/lib-2.1.1" = {
@@ -3172,22 +3181,22 @@ let
         sha512 = "XxmquKGZxlrjUorx924ogAACc39p22pzWp06DJX/eElU2kLZ/s+RC0EXAFj503EuDj/dd2voV+Tciz0wfCPc0Q==";
       };
     };
-    "@joplin/turndown-4.0.50" = {
+    "@joplin/turndown-4.0.52" = {
       name = "_at_joplin_slash_turndown";
       packageName = "@joplin/turndown";
-      version = "4.0.50";
+      version = "4.0.52";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@joplin/turndown/-/turndown-4.0.50.tgz";
-        sha512 = "oqMCmkudn3OUxkI68mbBy5AWqnmgWBlIL9lz3XSoq3iYJZdXYCDyYUA0Wb64eRHf6muUN8V23WdeVjc02dsbEQ==";
+        url = "https://registry.npmjs.org/@joplin/turndown/-/turndown-4.0.52.tgz";
+        sha512 = "e8F+si5xTer0OQlpSGKh2rSu7YnSCpkvh3n7N85x61Z2WvhV96RfXAhNvRahGdzF9WNVwJgudirapHDJ+zeO3A==";
       };
     };
-    "@joplin/turndown-plugin-gfm-1.0.32" = {
+    "@joplin/turndown-plugin-gfm-1.0.34" = {
       name = "_at_joplin_slash_turndown-plugin-gfm";
       packageName = "@joplin/turndown-plugin-gfm";
-      version = "1.0.32";
+      version = "1.0.34";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.32.tgz";
-        sha512 = "5jodAeZz90xt4p5FSvnRi4V1NyiPS0L9O7WufG8lN55sacZ9pkXUvELex4PQ7kiHvmOv67x4XcvTjfqX/mnKnA==";
+        url = "https://registry.npmjs.org/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.34.tgz";
+        sha512 = "0UZDcrMS/rViZZ50UPUpNy5qG8pWatyAWVSxZiKNmQ1+SJIwb6pzukGH25s3SxDmvW8lr7bQkBOn11hDxNFrug==";
       };
     };
     "@josephg/resolvable-1.0.1" = {
@@ -4270,13 +4279,13 @@ let
         sha512 = "tFb7J6+YEtZP0OYpS/b9Rjp1lm02XfhAQR6KRHAaeRlHp98/zgd0hhubfwXUCppP2BLfn+imkeVS0FnANh5B3g==";
       };
     };
-    "@netlify/plugins-list-3.2.1" = {
+    "@netlify/plugins-list-3.3.0" = {
       name = "_at_netlify_slash_plugins-list";
       packageName = "@netlify/plugins-list";
-      version = "3.2.1";
+      version = "3.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-3.2.1.tgz";
-        sha512 = "bmJGfMfXs3byjVUUOoNU78TMiIGx3yD0yl/2B5IKyXpkQw4a4UNgvIx53zmBCDwIub2HC2tTCFUZz9ESpfc3SQ==";
+        url = "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-3.3.0.tgz";
+        sha512 = "wuwDeBx8FK/jY1hQoI0w2MK+Q/6hcEnbaDDBzw+W0Ueu48r7QRIcZMin2OnOSMkTRpAHXqXyQUrm1lnULXKBfg==";
       };
     };
     "@netlify/routing-local-proxy-0.31.0" = {
@@ -5566,13 +5575,13 @@ let
         sha512 = "TVwlUvYnNjotd4010I9Vh0Dr0c2XByaUTEjpxLJm/Ti51Ka6vLIJ44JxuNZ6TmvkRh66yFZbaZUsVv6W4wNUVQ==";
       };
     };
-    "@serverless/platform-client-china-2.2.1" = {
+    "@serverless/platform-client-china-2.2.2" = {
       name = "_at_serverless_slash_platform-client-china";
       packageName = "@serverless/platform-client-china";
-      version = "2.2.1";
+      version = "2.2.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@serverless/platform-client-china/-/platform-client-china-2.2.1.tgz";
-        sha512 = "S1q6LOxpgMc872s/pXZwwat4Mr5DE8IilqKcgEcaGhydRFp85QeOqtFtunTzQ0n9Uo7OCfuIwL4GUC/i093pWA==";
+        url = "https://registry.npmjs.org/@serverless/platform-client-china/-/platform-client-china-2.2.2.tgz";
+        sha512 = "58B0UOueZIZiR8btPgSav53Jvzz8ce0LMVp2bPnWUyu4oKrmlCSgO/vYCeklyCd4kBDGZQ3aefHNxLMusE/XRQ==";
       };
     };
     "@serverless/template-1.1.4" = {
@@ -7933,13 +7942,13 @@ let
         sha512 = "fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==";
       };
     };
-    "@typescript-eslint/eslint-plugin-4.29.0" = {
+    "@typescript-eslint/eslint-plugin-4.29.1" = {
       name = "_at_typescript-eslint_slash_eslint-plugin";
       packageName = "@typescript-eslint/eslint-plugin";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.0.tgz";
-        sha512 = "eiREtqWRZ8aVJcNru7cT/AMVnYd9a2UHsfZT8MR1dW3UUEg6jDv9EQ9Cq4CUPZesyQ58YUpoAADGv71jY8RwgA==";
+        url = "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.29.1.tgz";
+        sha512 = "AHqIU+SqZZgBEiWOrtN94ldR3ZUABV5dUG94j8Nms9rQnHFc8fvDOue/58K4CFz6r8OtDDc35Pw9NQPWo0Ayrw==";
       };
     };
     "@typescript-eslint/experimental-utils-3.10.1" = {
@@ -7951,13 +7960,13 @@ let
         sha512 = "DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==";
       };
     };
-    "@typescript-eslint/experimental-utils-4.29.0" = {
+    "@typescript-eslint/experimental-utils-4.29.1" = {
       name = "_at_typescript-eslint_slash_experimental-utils";
       packageName = "@typescript-eslint/experimental-utils";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.0.tgz";
-        sha512 = "FpNVKykfeaIxlArLUP/yQfv/5/3rhl1ov6RWgud4OgbqWLkEq7lqgQU9iiavZRzpzCRQV4XddyFz3wFXdkiX9w==";
+        url = "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.29.1.tgz";
+        sha512 = "kl6QG6qpzZthfd2bzPNSJB2YcZpNOrP6r9jueXupcZHnL74WiuSjaft7WSu17J9+ae9zTlk0KJMXPUj0daBxMw==";
       };
     };
     "@typescript-eslint/parser-3.10.1" = {
@@ -7969,22 +7978,22 @@ let
         sha512 = "Ug1RcWcrJP02hmtaXVS3axPPTTPnZjupqhgj+NnZ6BCkwSImWk/283347+x9wN+lqOdK9Eo3vsyiyDHgsmiEJw==";
       };
     };
-    "@typescript-eslint/parser-4.29.0" = {
+    "@typescript-eslint/parser-4.29.1" = {
       name = "_at_typescript-eslint_slash_parser";
       packageName = "@typescript-eslint/parser";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.0.tgz";
-        sha512 = "+92YRNHFdXgq+GhWQPT2bmjX09X7EH36JfgN2/4wmhtwV/HPxozpCNst8jrWcngLtEVd/4zAwA6BKojAlf+YqA==";
+        url = "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.29.1.tgz";
+        sha512 = "3fL5iN20hzX3Q4OkG7QEPFjZV2qsVGiDhEwwh+EkmE/w7oteiOvUNzmpu5eSwGJX/anCryONltJ3WDmAzAoCMg==";
       };
     };
-    "@typescript-eslint/scope-manager-4.29.0" = {
+    "@typescript-eslint/scope-manager-4.29.1" = {
       name = "_at_typescript-eslint_slash_scope-manager";
       packageName = "@typescript-eslint/scope-manager";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.0.tgz";
-        sha512 = "HPq7XAaDMM3DpmuijxLV9Io8/6pQnliiXMQUcAdjpJJSR+fdmbD/zHCd7hMkjJn04UQtCQBtshgxClzg6NIS2w==";
+        url = "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.29.1.tgz";
+        sha512 = "Hzv/uZOa9zrD/W5mftZa54Jd5Fed3tL6b4HeaOpwVSabJK8CJ+2MkDasnX/XK4rqP5ZTWngK1ZDeCi6EnxPQ7A==";
       };
     };
     "@typescript-eslint/types-3.10.1" = {
@@ -7996,13 +8005,13 @@ let
         sha512 = "+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==";
       };
     };
-    "@typescript-eslint/types-4.29.0" = {
+    "@typescript-eslint/types-4.29.1" = {
       name = "_at_typescript-eslint_slash_types";
       packageName = "@typescript-eslint/types";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.0.tgz";
-        sha512 = "2YJM6XfWfi8pgU2HRhTp7WgRw78TCRO3dOmSpAvIQ8MOv4B46JD2chnhpNT7Jq8j0APlIbzO1Bach734xxUl4A==";
+        url = "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.29.1.tgz";
+        sha512 = "Jj2yu78IRfw4nlaLtKjVaGaxh/6FhofmQ/j8v3NXmAiKafbIqtAPnKYrf0sbGjKdj0hS316J8WhnGnErbJ4RCA==";
       };
     };
     "@typescript-eslint/typescript-estree-3.10.1" = {
@@ -8014,13 +8023,13 @@ let
         sha512 = "QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==";
       };
     };
-    "@typescript-eslint/typescript-estree-4.29.0" = {
+    "@typescript-eslint/typescript-estree-4.29.1" = {
       name = "_at_typescript-eslint_slash_typescript-estree";
       packageName = "@typescript-eslint/typescript-estree";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.0.tgz";
-        sha512 = "8ZpNHDIOyqzzgZrQW9+xQ4k5hM62Xy2R4RPO3DQxMc5Rq5QkCdSpk/drka+DL9w6sXNzV5nrdlBmf8+x495QXQ==";
+        url = "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.1.tgz";
+        sha512 = "lIkkrR9E4lwZkzPiRDNq0xdC3f2iVCUjw/7WPJ4S2Sl6C3nRWkeE1YXCQ0+KsiaQRbpY16jNaokdWnm9aUIsfw==";
       };
     };
     "@typescript-eslint/visitor-keys-3.10.1" = {
@@ -8032,13 +8041,13 @@ let
         sha512 = "9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==";
       };
     };
-    "@typescript-eslint/visitor-keys-4.29.0" = {
+    "@typescript-eslint/visitor-keys-4.29.1" = {
       name = "_at_typescript-eslint_slash_visitor-keys";
       packageName = "@typescript-eslint/visitor-keys";
-      version = "4.29.0";
+      version = "4.29.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.0.tgz";
-        sha512 = "LoaofO1C/jAJYs0uEpYMXfHboGXzOJeV118X4OsZu9f7rG7Pr9B3+4HTU8+err81rADa4xfQmAxnRnPAI2jp+Q==";
+        url = "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.1.tgz";
+        sha512 = "zLqtjMoXvgdZY/PG6gqA73V8BjqPs4af1v2kiiETBObp+uC6gRYnJLmJHxC0QyUrrHDLJPIWNYxoBV3wbcRlag==";
       };
     };
     "@uifabric/foundation-7.9.26" = {
@@ -8140,13 +8149,13 @@ let
         sha1 = "c585c0bdb94210198945c6597e4fe23d6e63e084";
       };
     };
-    "@vercel/build-utils-2.12.1" = {
+    "@vercel/build-utils-2.12.2" = {
       name = "_at_vercel_slash_build-utils";
       packageName = "@vercel/build-utils";
-      version = "2.12.1";
+      version = "2.12.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-2.12.1.tgz";
-        sha512 = "85FUGmNQWL+gWORGIfW2amNeDt3vBgliZ51j3D9s+2qcAv+Li+ghLfzjoP5w5E+DhO8OxHfy53WbqR5aprAWEA==";
+        url = "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-2.12.2.tgz";
+        sha512 = "KbSgG2ZCVXhUsdbnpv6gC7buygd31jaKiKhrd4Lzv1NwjnoeDZAXlm4hzvSPYHVtCY2jirKJWP2rFtMW8iAh9g==";
       };
     };
     "@vercel/go-1.2.3" = {
@@ -8158,13 +8167,13 @@ let
         sha512 = "BZCHRz43Qfr0DwZlZQCcofR+3cr+H+HK72/ZPkZy1Uq0NYjJMlmZ3ahuMgvJxT9lfC1RA6eOEUlUsZ+gqKcMCg==";
       };
     };
-    "@vercel/node-1.12.0" = {
+    "@vercel/node-1.12.1" = {
       name = "_at_vercel_slash_node";
       packageName = "@vercel/node";
-      version = "1.12.0";
+      version = "1.12.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@vercel/node/-/node-1.12.0.tgz";
-        sha512 = "McwhEg6KI0y7R875IG87Ry3HrFvws+60/yKk1KqJxbOud/n/Mj9eEZTI5mxxMFj8tT7KhmFaRdl8pJz8ISR1Cg==";
+        url = "https://registry.npmjs.org/@vercel/node/-/node-1.12.1.tgz";
+        sha512 = "NcawIY05BvVkWlsowaxF2hl/hJg475U8JvT2FnGykFPMx31q1/FtqyTw/awSrKfOSRXR0InrbEIDIelmS9NzPA==";
       };
     };
     "@vercel/python-2.0.5" = {
@@ -8221,31 +8230,31 @@ let
         sha512 = "B6PedV/H2kcGEAgnqncwjHe3E8fqUNXCLv1BsrNwkHHWQJXkDN7dFeuEB4oaucBOVbjhH7KGLJ6JAiXPE3S7xA==";
       };
     };
-    "@vue/compiler-core-3.1.5" = {
+    "@vue/compiler-core-3.2.1" = {
       name = "_at_vue_slash_compiler-core";
       packageName = "@vue/compiler-core";
-      version = "3.1.5";
+      version = "3.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.5.tgz";
-        sha512 = "TXBhFinoBaXKDykJzY26UEuQU1K07FOp/0Ie+OXySqqk0bS0ZO7Xvl7UmiTUPYcLrWbxWBR7Bs/y55AI0MNc2Q==";
+        url = "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.1.tgz";
+        sha512 = "UEJf2ZGww5wGVdrWIXIZo04KdJFGPmI2bHRUsBZ3AdyCAqJ5ykRXKOBn1OR1hvA2YzimudOEyHM+DpbBv91Kww==";
       };
     };
-    "@vue/compiler-dom-3.1.5" = {
+    "@vue/compiler-dom-3.2.1" = {
       name = "_at_vue_slash_compiler-dom";
       packageName = "@vue/compiler-dom";
-      version = "3.1.5";
+      version = "3.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.5.tgz";
-        sha512 = "ZsL3jqJ52OjGU/YiT/9XiuZAmWClKInZM2aFJh9gnsAPqOrj2JIELMbkIFpVKR/CrVO/f2VxfPiiQdQTr65jcQ==";
+        url = "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.1.tgz";
+        sha512 = "tXg8tkPb3j54zNfWqoao9T1JI41yWPz8TROzmif/QNNA46eq8/SRuRsBd36i47GWaz7mh+yg3vOJ87/YBjcMyQ==";
       };
     };
-    "@vue/shared-3.1.5" = {
+    "@vue/shared-3.2.1" = {
       name = "_at_vue_slash_shared";
       packageName = "@vue/shared";
-      version = "3.1.5";
+      version = "3.2.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz";
-        sha512 = "oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==";
+        url = "https://registry.npmjs.org/@vue/shared/-/shared-3.2.1.tgz";
+        sha512 = "INN92dVBNgd0TW9BqfQQKx/HWGCHhUUbAV5EZ5FgSCiEdwuZsJbGt1mdnaD9IxGhpiyOjP2ClxGG8SFp7ELcWg==";
       };
     };
     "@webassemblyjs/ast-1.11.1" = {
@@ -10903,6 +10912,15 @@ let
         sha512 = "HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==";
       };
     };
+    "array-union-3.0.1" = {
+      name = "array-union";
+      packageName = "array-union";
+      version = "3.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz";
+        sha512 = "1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==";
+      };
+    };
     "array-uniq-1.0.3" = {
       name = "array-uniq";
       packageName = "array-uniq";
@@ -11650,13 +11668,13 @@ let
         sha512 = "tbMZ/Y2rRo6R6TTBODJXTiil+MXaoT6Qzotws3yvI1IWGpYxKo7N/3L06XB8ul8tCG0TigxIOY70SMICM70Ppg==";
       };
     };
-    "aws-sdk-2.963.0" = {
+    "aws-sdk-2.964.0" = {
       name = "aws-sdk";
       packageName = "aws-sdk";
-      version = "2.963.0";
+      version = "2.964.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.963.0.tgz";
-        sha512 = "EY7EPap1c/1RxPx+Py56t9btJug3Z3PJkCfplqzNuU1QlFGs+rN8yYm9xIn8J6gbJ5D8F4Qab0GCtTmGstlHfQ==";
+        url = "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.964.0.tgz";
+        sha512 = "yDRLkPUiGvIXpccFd1PqOQZ1MJvYkh0RVBNWfquDoPonQuJ9QOCZoPrpe3VlB8IGMOODbVRSH1NRqPa12gNjBA==";
       };
     };
     "aws-sign2-0.6.0" = {
@@ -17779,13 +17797,13 @@ let
         sha1 = "c20b96d8c617748aaf1c16021760cd27fcb8cb75";
       };
     };
-    "constructs-3.3.117" = {
+    "constructs-3.3.118" = {
       name = "constructs";
       packageName = "constructs";
-      version = "3.3.117";
+      version = "3.3.118";
       src = fetchurl {
-        url = "https://registry.npmjs.org/constructs/-/constructs-3.3.117.tgz";
-        sha512 = "y5PVROPr7XFlz2/ZAXNHhkb8Y7HzJs4kBrUcjI5B5tbQz/YXsOmZV73AGRYDiUvMstqvpq+UOVBhL3zoA9vg7Q==";
+        url = "https://registry.npmjs.org/constructs/-/constructs-3.3.118.tgz";
+        sha512 = "Fe3XE/kVbfFomPtogd3h+5X9JHyMSLO8swjKYqUexgifX4qwOjsUYMHfZpB0a3xNBHr/YfJjbVikfY8Wzr0wNA==";
       };
     };
     "consume-http-header-1.0.0" = {
@@ -21713,24 +21731,6 @@ let
         sha512 = "cwaRptBmYZwu/FyhGcqBm2MzXA77W2/E6eVkpOZVDk6PkI9Bjj84xPrXiHMA+OWjzNy+DFjgKh8Q+1hMR7/OHg==";
       };
     };
-    "dockerfile-ast-0.1.0" = {
-      name = "dockerfile-ast";
-      packageName = "dockerfile-ast";
-      version = "0.1.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.1.0.tgz";
-        sha512 = "qKftHMVoMliYBaYLkgttm+NXhRISVNkIMfAL4ecmXjiWRElfdfY+xNgITiehG0LpUEDbFUa/UDCByYq/2UZIpQ==";
-      };
-    };
-    "dockerfile-ast-0.2.0" = {
-      name = "dockerfile-ast";
-      packageName = "dockerfile-ast";
-      version = "0.2.0";
-      src = fetchurl {
-        url = "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.2.0.tgz";
-        sha512 = "iQyp12k1A4tF3sEfLAq2wfFPKdpoiGTJeuiu2Y1bdEqIZu0DfSSL2zm0fk7a/UHeQkngnYaRRGuON+C+2LO1Fw==";
-      };
-    };
     "dockerfile-ast-0.2.1" = {
       name = "dockerfile-ast";
       packageName = "dockerfile-ast";
@@ -21740,31 +21740,31 @@ let
         sha512 = "ut04CVM1G6zIITTcYPDIXhPZk9mCa21m4dfW8FcDDGxwgTQhYyHDu6U7M8klZ7QsjqVcJhryKi+TGOX6bjgKdQ==";
       };
     };
-    "dockerfile-language-service-0.3.0" = {
-      name = "dockerfile-language-service";
-      packageName = "dockerfile-language-service";
+    "dockerfile-ast-0.3.0" = {
+      name = "dockerfile-ast";
+      packageName = "dockerfile-ast";
       version = "0.3.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/dockerfile-language-service/-/dockerfile-language-service-0.3.0.tgz";
-        sha512 = "BUStimzz1Ozh41o+2AgMfwW8M7KsqzOBllNlLkf7NDe6W9KvcC3d8j4MTc+cU9wfRUoVckK39M2btvRFFDK61w==";
+        url = "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.3.0.tgz";
+        sha512 = "wEbFtqeHZffyOYP2pMfMLQ0m2wdHUzty0UTDoAMNa6/nvLfDRSEaPkszIWFy86tuWwHucBtcczIHQlFATJ54eA==";
       };
     };
-    "dockerfile-utils-0.2.0" = {
-      name = "dockerfile-utils";
-      packageName = "dockerfile-utils";
-      version = "0.2.0";
+    "dockerfile-language-service-0.4.0" = {
+      name = "dockerfile-language-service";
+      packageName = "dockerfile-language-service";
+      version = "0.4.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.2.0.tgz";
-        sha512 = "B8tEGwLd3w0dWALshXS0gkAwDYdqFKAKm9zIyp/nCFkx8+BOhbz5CiAFlVU+WRvv6kd6AP/YtYVOzSL54MJlmQ==";
+        url = "https://registry.npmjs.org/dockerfile-language-service/-/dockerfile-language-service-0.4.0.tgz";
+        sha512 = "P4yj9in7PMLeN3StBn5e+Ofiju+nfs5ZdDv4EqfK91mYx/+U7wm8QipyP05iUXaVKFh6I9tn9Qmi1tpt5jj2hw==";
       };
     };
-    "dockerfile-utils-0.4.2" = {
+    "dockerfile-utils-0.5.0" = {
       name = "dockerfile-utils";
       packageName = "dockerfile-utils";
-      version = "0.4.2";
+      version = "0.5.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.4.2.tgz";
-        sha512 = "WfJEuXWdVdiarhxJgRlZ9bkMO/9un6dZDz+u3z6AYEXfsH2XRwYqdIvyOqFzaDDP0Hc6pR5rb9FJRSKyo+NuxA==";
+        url = "https://registry.npmjs.org/dockerfile-utils/-/dockerfile-utils-0.5.0.tgz";
+        sha512 = "a12B6qAwLpl7D9Y6Zxt0AhW74g0k5NarpWF+NUb66A6la5vs1igI/KfdXZbFoQtpTOsv1T+OfKmhlE982Ars1w==";
       };
     };
     "doctoc-2.0.1" = {
@@ -22514,13 +22514,13 @@ let
         sha512 = "9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==";
       };
     };
-    "electron-13.1.8" = {
+    "electron-13.1.9" = {
       name = "electron";
       packageName = "electron";
-      version = "13.1.8";
+      version = "13.1.9";
       src = fetchurl {
-        url = "https://registry.npmjs.org/electron/-/electron-13.1.8.tgz";
-        sha512 = "ei2ZyyG81zUOlvm5Zxri668TdH5GNLY0wF+XrC2FRCqa8AABAPjJIWTRkhFEr/H6PDVPNZjMPvSs3XhHyVVk2g==";
+        url = "https://registry.npmjs.org/electron/-/electron-13.1.9.tgz";
+        sha512 = "By4Zb72XNQLrPb70BXdIW3NtEHFwybP5DIQjohnCxOYONq5vojuHjNcTuWnBgMvwQ2qwykk6Tw5EwF2Pt0CWjA==";
       };
     };
     "electron-notarize-1.1.0" = {
@@ -22559,13 +22559,22 @@ let
         sha512 = "1sQ1DRtQGpglFhc3urD4olMJzt/wxlbnAAsf+WY2xHf5c50ZovivZvCXSpVgTOP9f4TzOMvelWyspyfhxQKHzQ==";
       };
     };
-    "electron-to-chromium-1.3.799" = {
+    "electron-to-chromium-1.3.800" = {
       name = "electron-to-chromium";
       packageName = "electron-to-chromium";
-      version = "1.3.799";
+      version = "1.3.800";
       src = fetchurl {
-        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.799.tgz";
-        sha512 = "V2rbYWdGvSqrg+95KjkVuSi41bGfrhrOzjl1tSi2VLnm0mRe3FsSvhiqidSiSll9WiMhrQAhpDcW/wcqK3c+Yw==";
+        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.800.tgz";
+        sha512 = "qagikPjZJSDWP85uWoxs32oK/xk/y3MhDZELfKRCWI7pBc0ZFlmjnXb+3+aNMaiqboeDJJa0v7CJd5cO1HKwEQ==";
+      };
+    };
+    "electron-to-chromium-1.3.801" = {
+      name = "electron-to-chromium";
+      packageName = "electron-to-chromium";
+      version = "1.3.801";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.801.tgz";
+        sha512 = "xapG8ekC+IAHtJrGBMQSImNuN+dm+zl7UP1YbhvTkwQn8zf/yYuoxfTSAEiJ9VDD+kjvXaAhNDPSxJ+VImtAJA==";
       };
     };
     "electrum-client-git://github.com/janoside/electrum-client" = {
@@ -23668,13 +23677,22 @@ let
         sha512 = "Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==";
       };
     };
-    "eslint-plugin-vue-7.15.1" = {
+    "eslint-plugin-vue-7.15.2" = {
       name = "eslint-plugin-vue";
       packageName = "eslint-plugin-vue";
-      version = "7.15.1";
+      version = "7.15.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.15.2.tgz";
+        sha512 = "h5ws2GewwJ02HwnDo3WdPbc867MQieg9wrWgbpzh9ELBIiuy79EWK0zfyUxYzUWNd1EECCZ/8f50UCC7Hvbamw==";
+      };
+    };
+    "eslint-plugin-vue-7.16.0" = {
+      name = "eslint-plugin-vue";
+      packageName = "eslint-plugin-vue";
+      version = "7.16.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.15.1.tgz";
-        sha512 = "4/r+n/i+ovyeW2gVRRH92kpy4lkpFbyPR4BMxGBTLtGnwqOKKzjSo6EMSaT0RhWPvEjK9uifcY8e7z5n8BIEgw==";
+        url = "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.16.0.tgz";
+        sha512 = "0E2dVvVC7I2Xm1HXyx+ZwPj9CNX4NJjs4K4r+GVsHWyt5Pew3JLD4fI7A91b2jeL0TXE7LlszrwLSTJU9eqehw==";
       };
     };
     "eslint-scope-3.7.3" = {
@@ -25144,6 +25162,15 @@ let
         sha512 = "Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==";
       };
     };
+    "fast-plist-0.1.2" = {
+      name = "fast-plist";
+      packageName = "fast-plist";
+      version = "0.1.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/fast-plist/-/fast-plist-0.1.2.tgz";
+        sha1 = "a45aff345196006d406ca6cdcd05f69051ef35b8";
+      };
+    };
     "fast-printf-1.6.6" = {
       name = "fast-printf";
       packageName = "fast-printf";
@@ -27772,6 +27799,15 @@ let
         sha1 = "f985fedcc0a9aa579dc88d7aff068d55cc6251a0";
       };
     };
+    "github-username-6.0.0" = {
+      name = "github-username";
+      packageName = "github-username";
+      version = "6.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/github-username/-/github-username-6.0.0.tgz";
+        sha512 = "7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==";
+      };
+    };
     "gl-matrix-2.8.1" = {
       name = "gl-matrix";
       packageName = "gl-matrix";
@@ -28178,6 +28214,15 @@ let
         sha512 = "9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==";
       };
     };
+    "globby-12.0.0" = {
+      name = "globby";
+      packageName = "globby";
+      version = "12.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/globby/-/globby-12.0.0.tgz";
+        sha512 = "3mOIUduqSMHm6gNjIw9E641TZ93NB8lFVt+6MKIw6vUaIS5aSsw/6cl0gT86z1IoKlaL90BiOQlA593GUMlzEA==";
+      };
+    };
     "globby-4.1.0" = {
       name = "globby";
       packageName = "globby";
@@ -34074,13 +34119,13 @@ let
         sha512 = "NrhHIJ0BNKxpjyvqtqhunIcHhJiA5dhlRSPPuO+EGsCQB+yc94aRj+hZZXYvWj+X1o61kdLVudJLn54sn7ESoQ==";
       };
     };
-    "jsii-srcmak-0.1.319" = {
+    "jsii-srcmak-0.1.320" = {
       name = "jsii-srcmak";
       packageName = "jsii-srcmak";
-      version = "0.1.319";
+      version = "0.1.320";
       src = fetchurl {
-        url = "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.319.tgz";
-        sha512 = "6FxGDXgt2utZnz0NC/wrBiILM3ZxQXsJF6eflNcadkhKhcjOwe9qCxSZWs6eDwJq6REckVn24iy+8H6pdpHbog==";
+        url = "https://registry.npmjs.org/jsii-srcmak/-/jsii-srcmak-0.1.320.tgz";
+        sha512 = "+XiaSKCrauom9xazpWr7O8pAEEDrrW1qYJ6O0vHG4YKZxJYJN7md6qwAurk3iamwtyuIW/Io2XEnB6ZypAk3bw==";
       };
     };
     "json-bigint-0.2.3" = {
@@ -34389,13 +34434,13 @@ let
         sha512 = "0/4Lv6IenJV0qj2oBdgPIAmFiKKnh8qh7bmLFJ+/ZZHLjSeiL3fKKGX3UryvKPbxFbhV+JcYo9KUC19GJ/Z/4A==";
       };
     };
-    "json2jsii-0.1.289" = {
+    "json2jsii-0.1.290" = {
       name = "json2jsii";
       packageName = "json2jsii";
-      version = "0.1.289";
+      version = "0.1.290";
       src = fetchurl {
-        url = "https://registry.npmjs.org/json2jsii/-/json2jsii-0.1.289.tgz";
-        sha512 = "HzFig1AW9qqN0Po2qLB3CD6C+UJcAA2dU+0kmpuOtY79WMVaKahj7yHQDvf0yZoEbFO5T4RyMwYyOCMOpCgY5w==";
+        url = "https://registry.npmjs.org/json2jsii/-/json2jsii-0.1.290.tgz";
+        sha512 = "r6Ab98tTR1NiD385ce5VpwH98Frhhmg7Kzq0t1Vte4FEx0icDcZIDIngqOoQWpMTMYFctTNggrswxkAvFeFBVA==";
       };
     };
     "json3-3.2.6" = {
@@ -40888,6 +40933,15 @@ let
         sha512 = "xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==";
       };
     };
+    "multer-1.4.3" = {
+      name = "multer";
+      packageName = "multer";
+      version = "1.4.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/multer/-/multer-1.4.3.tgz";
+        sha512 = "np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==";
+      };
+    };
     "multi-progress-2.0.0" = {
       name = "multi-progress";
       packageName = "multi-progress";
@@ -49559,13 +49613,13 @@ let
         sha1 = "15931d3cd967ade52206f523aa7331aef7d43af7";
       };
     };
-    "pyright-1.1.160" = {
+    "pyright-1.1.161" = {
       name = "pyright";
       packageName = "pyright";
-      version = "1.1.160";
+      version = "1.1.161";
       src = fetchurl {
-        url = "https://registry.npmjs.org/pyright/-/pyright-1.1.160.tgz";
-        sha512 = "SBgUVitoBS+VvGEG1IoPJNgJ9PSjsjCqeJPZ7DWMz9s4SvYHeZz57VtWlGGGpgjT19nmH/zPe8Cxk4CLXmDhiA==";
+        url = "https://registry.npmjs.org/pyright/-/pyright-1.1.161.tgz";
+        sha512 = "ahZ8KyDAMdyFTt9j0P/WL6SAeZWKI9qxoFRmTxw71JwyCVPSqXaeo2rK3304YjfKZKAtuHNMgtuZiAVT8U/Pbw==";
       };
     };
     "q-0.9.7" = {
@@ -49856,6 +49910,15 @@ let
         sha512 = "NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==";
       };
     };
+    "queue-tick-1.0.0" = {
+      name = "queue-tick";
+      packageName = "queue-tick";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.0.tgz";
+        sha512 = "ULWhjjE8BmiICGn3G8+1L9wFpERNxkf8ysxkAer4+TFdRefDaXOCV5m92aMB9FtBVmn/8sETXLXY6BfW7hyaWQ==";
+      };
+    };
     "quick-format-unescaped-4.0.3" = {
       name = "quick-format-unescaped";
       packageName = "quick-format-unescaped";
@@ -53051,13 +53114,13 @@ let
         sha512 = "8xfDbAtBleXotb6qKEHWuo/jkn94a9dVqGc7Rwl3sqspCVlnCfbRek7ldhCARSi7h32H0xR4QThm1t9zHN+3uw==";
       };
     };
-    "rollup-2.56.1" = {
+    "rollup-2.56.2" = {
       name = "rollup";
       packageName = "rollup";
-      version = "2.56.1";
+      version = "2.56.2";
       src = fetchurl {
-        url = "https://registry.npmjs.org/rollup/-/rollup-2.56.1.tgz";
-        sha512 = "KkrsNjeiTfGJMUFBi/PNfj3fnt70akqdoNXOjlzwo98uA1qrlkmgt6SGaK5OwhyDYCVnJb6jb2Xa2wbI47P4Nw==";
+        url = "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz";
+        sha512 = "s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==";
       };
     };
     "rollup-plugin-babel-4.4.0" = {
@@ -54968,6 +55031,15 @@ let
         sha512 = "g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==";
       };
     };
+    "slash-4.0.0" = {
+      name = "slash";
+      packageName = "slash";
+      version = "4.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz";
+        sha512 = "3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==";
+      };
+    };
     "slasp-0.0.4" = {
       name = "slasp";
       packageName = "slasp";
@@ -55319,13 +55391,13 @@ let
         sha512 = "MoekbWOZPj9umfukjk2bd2o3eRj0OyO+58sxq9crMtHmTlze4h0/Uj4+fb0JFPBOtBO3c2zwbA+dvFQmpKoOTA==";
       };
     };
-    "snyk-policy-1.19.0" = {
+    "snyk-policy-1.22.0" = {
       name = "snyk-policy";
       packageName = "snyk-policy";
-      version = "1.19.0";
+      version = "1.22.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.19.0.tgz";
-        sha512 = "XYjhOTRPFA7NfDUsH6uH1fbML2OgSFsqdUPbud7x01urNP9CHXgUgAD4NhKMi3dVQK+7IdYadWt0wrFWw4y+qg==";
+        url = "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.22.0.tgz";
+        sha512 = "torzlNhDWcoMQLcX2xsTbCXfKXE614+5YvLHxEefQPwC1JNkbCN5u3/pU0c+2RfC2cPCa1AKEBqIx5gvr6mNyQ==";
       };
     };
     "snyk-python-plugin-1.19.11" = {
@@ -56048,13 +56120,13 @@ let
         sha512 = "cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==";
       };
     };
-    "spdx-license-ids-3.0.9" = {
+    "spdx-license-ids-3.0.10" = {
       name = "spdx-license-ids";
       packageName = "spdx-license-ids";
-      version = "3.0.9";
+      version = "3.0.10";
       src = fetchurl {
-        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz";
-        sha512 = "Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==";
+        url = "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz";
+        sha512 = "oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==";
       };
     };
     "spdx-license-list-6.4.0" = {
@@ -56651,13 +56723,13 @@ let
         sha512 = "/QX6+DJkghqq1ZTbgYpOvaI+gx2O7ee1TRUM9yiOlVjh1XAQBevcBj0zO+W3TsNllX86urqBrySd/AEfFfUpIw==";
       };
     };
-    "ssb-ref-2.14.3" = {
+    "ssb-ref-2.16.0" = {
       name = "ssb-ref";
       packageName = "ssb-ref";
-      version = "2.14.3";
+      version = "2.16.0";
       src = fetchurl {
-        url = "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.14.3.tgz";
-        sha512 = "XhzVmezsUJLlKxTfWlicxhiPRTEYHfJLskYQNRSnw4USqgo9LVx53+MJAhdZOYpZTW2jINR0TeetWs9M27gcbA==";
+        url = "https://registry.npmjs.org/ssb-ref/-/ssb-ref-2.16.0.tgz";
+        sha512 = "ylyrfz9NLxwTCbeDDAdLo++O3elhNs6/gUqMhZ22F+gSOIjwXy2X7dpg5Q1YTH7uALOSu307Rpo1UfK9sj7Sjw==";
       };
     };
     "ssb-replicate-1.3.3" = {
@@ -56696,13 +56768,13 @@ let
         sha512 = "zZ/Q1M+9ZWlrchgh4QauD/MEUFa6eC6H6FYq6T8Of/y82JqsQBLwN6YlzbO09evE7Rx6x0oliXDCnQSjwGwQRA==";
       };
     };
-    "sscaff-1.2.40" = {
+    "sscaff-1.2.41" = {
       name = "sscaff";
       packageName = "sscaff";
-      version = "1.2.40";
+      version = "1.2.41";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sscaff/-/sscaff-1.2.40.tgz";
-        sha512 = "XAt/qwEqrzt7uXEkhLW1oVXi1f/Q1qtTaw8TjIuRjryNpbzF0mvFvag4rF/2jWdWC/TJ7HIQXx3mAce3rPb45A==";
+        url = "https://registry.npmjs.org/sscaff/-/sscaff-1.2.41.tgz";
+        sha512 = "l0TA0Wp/06N+P9qrpX70/ueNOukRkfF3aasxtfVSbvrwy2gi8xCA31/rTtJ/Kb2OcqU1vdxWIDUOB82JCG+wqg==";
       };
     };
     "ssh-config-1.1.6" = {
@@ -57353,13 +57425,13 @@ let
         sha1 = "808b9d0e56fc273d809ba57338e929919a1a9f1a";
       };
     };
-    "streamx-2.11.0" = {
+    "streamx-2.11.1" = {
       name = "streamx";
       packageName = "streamx";
-      version = "2.11.0";
+      version = "2.11.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/streamx/-/streamx-2.11.0.tgz";
-        sha512 = "Cv8hFlHwVRKg35EXAxCSmRRzCR8Nyphx3v58hkx8nqfRe3GM8kAPfDY16GvpU2V4m/U8Ri9Fdoi+K5X3z8VpMA==";
+        url = "https://registry.npmjs.org/streamx/-/streamx-2.11.1.tgz";
+        sha512 = "GG/cBcuwhKEu2MxJIdlFnrstgtwERx0yX0tjZUVFHmmq65ROrCEAVrfoYbNQnXdq76rH0Y/SuO9VcgW+ZPkeMQ==";
       };
     };
     "strftime-0.10.0" = {
@@ -58127,13 +58199,13 @@ let
         sha1 = "3a26ab96e06f78cf4ace8d083f6227fa55970947";
       };
     };
-    "sucrase-3.20.0" = {
+    "sucrase-3.20.1" = {
       name = "sucrase";
       packageName = "sucrase";
-      version = "3.20.0";
+      version = "3.20.1";
       src = fetchurl {
-        url = "https://registry.npmjs.org/sucrase/-/sucrase-3.20.0.tgz";
-        sha512 = "Rsp+BX7DRuCleJvBAHN7gQ3ddk7U0rJev19XlIBF6dAq9vX4Tr5mHk4E7+ig/I7BM3DLYotCmm20lfBElT2XtQ==";
+        url = "https://registry.npmjs.org/sucrase/-/sucrase-3.20.1.tgz";
+        sha512 = "BIG59HaJOxNct9Va6KvT5yzBA/rcMGetzvZyTx0ZdCcspIbpJTPS64zuAfYlJuOj+3WaI5JOdA+F0bJQQi8ZiQ==";
       };
     };
     "sudo-block-1.2.0" = {
@@ -58875,13 +58947,13 @@ let
         sha512 = "FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==";
       };
     };
-    "tar-4.4.15" = {
+    "tar-4.4.16" = {
       name = "tar";
       packageName = "tar";
-      version = "4.4.15";
+      version = "4.4.16";
       src = fetchurl {
-        url = "https://registry.npmjs.org/tar/-/tar-4.4.15.tgz";
-        sha512 = "ItbufpujXkry7bHH9NpQyTXPbJ72iTlXgkBAYsAjDXk3Ds8t/3NfO5P4xZGy7u+sYuQUbimgzswX4uQIEeNVOA==";
+        url = "https://registry.npmjs.org/tar/-/tar-4.4.16.tgz";
+        sha512 = "gOVUT/KWPkGFZQmCRDVFNUWBl7niIo/PRR7lzrIqtZpit+st54lGROuVjc6zEQM9FhH+dJfQIl+9F0k8GNXg5g==";
       };
     };
     "tar-4.4.6" = {
@@ -58911,13 +58983,13 @@ let
         sha512 = "EwKEgqJ7nJoS+s8QfLYVGMDmAsj+StbI2AM/RTHeUSsOw6Z8bwNBRv5z3CY0m7laC5qUAqruLX5AhMuc5deY3Q==";
       };
     };
-    "tar-6.1.6" = {
+    "tar-6.1.7" = {
       name = "tar";
       packageName = "tar";
-      version = "6.1.6";
+      version = "6.1.7";
       src = fetchurl {
-        url = "https://registry.npmjs.org/tar/-/tar-6.1.6.tgz";
-        sha512 = "oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==";
+        url = "https://registry.npmjs.org/tar/-/tar-6.1.7.tgz";
+        sha512 = "PBoRkOJU0X3lejJ8GaRCsobjXTgFofRDSPdSUhRSdlwJfifRlQBwGXitDItdGFu0/h0XDMCkig0RN1iT7DBxhA==";
       };
     };
     "tar-fs-1.16.3" = {
@@ -67013,6 +67085,15 @@ let
         sha512 = "XIJoCQDNlttjFubWL+tpf+t1MkFUdsqwtJvR2qhfzhHi8Z7ZzAwiBPgCtTiLK1mwPTfqzV/V0E9l7zX7hrhBdg==";
       };
     };
+    "yeoman-generator-5.4.0" = {
+      name = "yeoman-generator";
+      packageName = "yeoman-generator";
+      version = "5.4.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yeoman-generator/-/yeoman-generator-5.4.0.tgz";
+        sha512 = "ZOzoe8pAenTw8q7X3TdG3u5S7EM/ErCNue7Jvcb/ZDfank6Nnu3J249PtgTbyAuN+VYVZ/VVFIAJxjlrqJpldQ==";
+      };
+    };
     "yesno-0.3.1" = {
       name = "yesno";
       packageName = "yesno";
@@ -67426,7 +67507,7 @@ in
       sources."strip-ansi-6.0.0"
       sources."supports-color-7.2.0"
       sources."symbol-observable-4.0.0"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."through-2.3.8"
       sources."tmp-0.0.33"
       sources."tough-cookie-2.5.0"
@@ -68302,6 +68383,7 @@ in
           sources."readable-stream-3.6.0"
         ];
       })
+      sources."queue-tick-1.0.0"
       sources."random-access-file-2.2.0"
       sources."random-access-memory-3.1.2"
       sources."random-access-storage-1.4.1"
@@ -68370,7 +68452,7 @@ in
       sources."stream-collector-1.0.1"
       sources."stream-equal-1.1.1"
       sources."stream-shift-1.0.1"
-      sources."streamx-2.11.0"
+      sources."streamx-2.11.1"
       (sources."string-width-2.1.1" // {
         dependencies = [
           sources."ansi-regex-3.0.0"
@@ -68581,7 +68663,7 @@ in
       sources."cross-spawn-7.0.3"
       sources."deepmerge-4.2.2"
       sources."defaults-1.0.3"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.800"
       sources."emoji-regex-8.0.0"
       sources."end-of-stream-1.4.4"
       (sources."enhanced-resolve-5.8.2" // {
@@ -69005,13 +69087,13 @@ in
       })
       sources."@vue/cli-ui-addon-webpack-4.5.13"
       sources."@vue/cli-ui-addon-widgets-4.5.13"
-      (sources."@vue/compiler-core-3.1.5" // {
+      (sources."@vue/compiler-core-3.2.1" // {
         dependencies = [
           sources."source-map-0.6.1"
         ];
       })
-      sources."@vue/compiler-dom-3.1.5"
-      sources."@vue/shared-3.1.5"
+      sources."@vue/compiler-dom-3.2.1"
+      sources."@vue/shared-3.2.1"
       sources."@wry/equality-0.1.11"
       sources."accepts-1.3.7"
       sources."aggregate-error-3.1.0"
@@ -69261,7 +69343,7 @@ in
       sources."ecc-jsbn-0.1.2"
       sources."ee-first-1.1.1"
       sources."ejs-2.7.4"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.800"
       sources."emoji-regex-7.0.3"
       sources."encodeurl-1.0.2"
       sources."end-of-stream-1.4.4"
@@ -69826,7 +69908,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       (sources."split-string-3.1.0" // {
         dependencies = [
           sources."extend-shallow-3.0.2"
@@ -70285,7 +70367,7 @@ in
       sources."convert-source-map-1.8.0"
       sources."debug-4.3.2"
       sources."ejs-3.1.6"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.800"
       sources."ensure-posix-path-1.1.1"
       sources."escalade-3.1.1"
       sources."escape-string-regexp-1.0.5"
@@ -70416,7 +70498,7 @@ in
       sources."browserslist-4.16.7"
       sources."caniuse-lite-1.0.30001249"
       sources."colorette-1.2.2"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.800"
       sources."escalade-3.1.1"
       sources."fraction.js-4.1.1"
       sources."node-releases-1.1.73"
@@ -70450,7 +70532,7 @@ in
       sources."ansi-regex-5.0.0"
       sources."ansi-styles-4.3.0"
       sources."ast-types-0.13.4"
-      (sources."aws-sdk-2.963.0" // {
+      (sources."aws-sdk-2.964.0" // {
         dependencies = [
           sources."uuid-3.3.2"
         ];
@@ -71841,7 +71923,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sprintf-js-1.0.3"
       sources."strip-bom-2.0.0"
       sources."strip-indent-1.0.1"
@@ -72484,7 +72566,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sprintf-js-1.0.3"
       sources."sshpk-1.16.1"
       sources."standard-error-1.1.0"
@@ -72896,7 +72978,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."speedometer-0.1.4"
       sources."srt2vtt-1.3.1"
       sources."sshpk-1.16.1"
@@ -73000,7 +73082,7 @@ in
       sources."color-name-1.1.4"
       sources."colors-1.4.0"
       sources."commonmark-0.29.3"
-      sources."constructs-3.3.117"
+      sources."constructs-3.3.118"
       sources."date-format-3.0.0"
       sources."debug-4.3.2"
       sources."decamelize-5.0.0"
@@ -73075,13 +73157,13 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-srcmak-0.1.319" // {
+      (sources."jsii-srcmak-0.1.320" // {
         dependencies = [
           sources."fs-extra-9.1.0"
         ];
       })
       sources."json-schema-0.3.0"
-      sources."json2jsii-0.1.289"
+      sources."json2jsii-0.1.290"
       sources."jsonfile-6.1.0"
       sources."jsonschema-1.4.0"
       sources."locate-path-5.0.0"
@@ -73117,7 +73199,7 @@ in
       sources."snake-case-3.0.4"
       sources."sort-json-2.0.0"
       sources."spdx-license-list-6.4.0"
-      sources."sscaff-1.2.40"
+      sources."sscaff-1.2.41"
       (sources."streamroller-2.2.4" // {
         dependencies = [
           sources."date-format-2.1.0"
@@ -73172,7 +73254,7 @@ in
       sha512 = "53HldFlYJdptaQ9yZyx8xuN0pxmBwI7yaVImmPwGmauoOYWsO89YrAjyPIiAaR+GWI8avbQeg3jz5Z1Q+MoIGA==";
     };
     dependencies = [
-      sources."@apollo/client-3.4.5"
+      sources."@apollo/client-3.4.7"
       (sources."@apollo/protobufjs-1.2.2" // {
         dependencies = [
           sources."@types/node-10.17.60"
@@ -73380,7 +73462,7 @@ in
         ];
       })
       sources."concat-map-0.0.1"
-      sources."constructs-3.3.117"
+      sources."constructs-3.3.118"
       (sources."content-disposition-0.5.3" // {
         dependencies = [
           sources."safe-buffer-5.1.2"
@@ -73580,7 +73662,7 @@ in
           sources."yargs-16.2.0"
         ];
       })
-      (sources."jsii-srcmak-0.1.319" // {
+      (sources."jsii-srcmak-0.1.320" // {
         dependencies = [
           sources."fs-extra-9.1.0"
         ];
@@ -73738,7 +73820,7 @@ in
       sources."sort-json-2.0.0"
       sources."source-map-0.5.7"
       sources."spdx-license-list-6.4.0"
-      sources."sscaff-1.2.40"
+      sources."sscaff-1.2.41"
       (sources."stack-utils-2.0.3" // {
         dependencies = [
           sources."escape-string-regexp-2.0.0"
@@ -74080,10 +74162,10 @@ in
   coc-explorer = nodeEnv.buildNodePackage {
     name = "coc-explorer";
     packageName = "coc-explorer";
-    version = "0.18.12";
+    version = "0.18.14";
     src = fetchurl {
-      url = "https://registry.npmjs.org/coc-explorer/-/coc-explorer-0.18.12.tgz";
-      sha512 = "zVTZb+SUwBt6ZljFG+u+vBMj+DLr4IEDqjpBsgnZ+tOldKSbPUtsvbeXOR/PxkLN4unxKxaZBkG1BaP34YrYpw==";
+      url = "https://registry.npmjs.org/coc-explorer/-/coc-explorer-0.18.14.tgz";
+      sha512 = "nfJl0hw1/fMhXbaSNEVBHUQTUIGfiBRVQ5KLmYO4gJ7pNvhIcEUas+DKKONDr3WtmV3ZlEWmR0SbvVnaRzKB5w==";
     };
     dependencies = [
       sources."@sindresorhus/df-3.1.1"
@@ -74534,7 +74616,7 @@ in
       sources."string_decoder-1.1.1"
       sources."strip-eof-1.0.0"
       sources."strip-json-comments-2.0.1"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."traverse-0.3.9"
       sources."tslib-2.3.0"
       sources."unbox-primitive-1.0.1"
@@ -74770,7 +74852,7 @@ in
       sources."domutils-1.7.0"
       sources."dot-prop-5.3.0"
       sources."duplexer3-0.1.4"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."end-of-stream-1.4.4"
       sources."enquirer-2.3.6"
@@ -75365,7 +75447,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."specificity-0.3.2"
       sources."split-string-3.1.0"
       sources."sprintf-js-1.0.3"
@@ -75569,13 +75651,13 @@ in
   coc-pyright = nodeEnv.buildNodePackage {
     name = "coc-pyright";
     packageName = "coc-pyright";
-    version = "1.1.159";
+    version = "1.1.161";
     src = fetchurl {
-      url = "https://registry.npmjs.org/coc-pyright/-/coc-pyright-1.1.159.tgz";
-      sha512 = "0CoePhEzGBHBin0mGtGhUV+hkg6Uh8+Qz0tN4a1A+vqiip/juRRmokB/yxMyFbhUftDXmkiF/JmrSC04uYCTAw==";
+      url = "https://registry.npmjs.org/coc-pyright/-/coc-pyright-1.1.161.tgz";
+      sha512 = "CFWLqQ3t0o73tioZHqJip0avZ7K9p9sBCMz81voAkBDoaSvUvrqT/SGpbhwXjzsvwBF6H1WY9aEK8FDMVAh+XA==";
     };
     dependencies = [
-      sources."pyright-1.1.160"
+      sources."pyright-1.1.161"
     ];
     buildInputs = globalBuildInputs;
     meta = {
@@ -75819,7 +75901,7 @@ in
       sources."domelementtype-1.3.1"
       sources."domhandler-2.4.2"
       sources."domutils-1.7.0"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."entities-1.1.2"
       sources."error-ex-1.3.2"
@@ -76002,7 +76084,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."specificity-0.4.1"
       sources."string-width-4.2.2"
       (sources."string_decoder-1.3.0" // {
@@ -76265,7 +76347,7 @@ in
       sources."enquirer-2.3.6"
       sources."escape-string-regexp-4.0.0"
       sources."eslint-7.32.0"
-      (sources."eslint-plugin-vue-7.15.1" // {
+      (sources."eslint-plugin-vue-7.15.2" // {
         dependencies = [
           sources."semver-6.3.0"
         ];
@@ -76410,10 +76492,10 @@ in
   coc-vimlsp = nodeEnv.buildNodePackage {
     name = "coc-vimlsp";
     packageName = "coc-vimlsp";
-    version = "0.12.2";
+    version = "0.12.3";
     src = fetchurl {
-      url = "https://registry.npmjs.org/coc-vimlsp/-/coc-vimlsp-0.12.2.tgz";
-      sha512 = "vfWz0wpyuyj1U/8v6kXaBnJrhlTK40FWezeKKW/UNLLi9v3rWiV4QoV3uTmJqIMbvW97mhIzD5EynXgqPlD8Bg==";
+      url = "https://registry.npmjs.org/coc-vimlsp/-/coc-vimlsp-0.12.3.tgz";
+      sha512 = "mq6V4fQmcQSiGvilJ0j1pbbj5EHeS8QC6ThuLVBJ+2wRqO8fiTkPYJrXPDUQDcICV9hUjdTBE8klaFYlK6oviA==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -77181,7 +77263,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sshpk-1.16.1"
       sources."ssri-8.0.1"
       sources."statuses-1.5.0"
@@ -77195,7 +77277,7 @@ in
       sources."strip-json-comments-2.0.1"
       sources."supports-color-7.2.0"
       sources."systeminformation-4.34.23"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."term-size-2.2.1"
       sources."through-2.3.8"
       sources."tmp-0.2.1"
@@ -77581,7 +77663,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       (sources."static-extend-0.1.2" // {
         dependencies = [
@@ -78899,8 +78981,8 @@ in
       sources."dom4-2.1.6"
       sources."duplexer3-0.1.4"
       sources."earcut-2.2.3"
-      sources."electron-13.1.8"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-13.1.9"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-js-clean-4.0.0"
       sources."emoji-mart-3.0.1"
       sources."emoji-regex-9.2.2"
@@ -79440,30 +79522,20 @@ in
   dockerfile-language-server-nodejs = nodeEnv.buildNodePackage {
     name = "dockerfile-language-server-nodejs";
     packageName = "dockerfile-language-server-nodejs";
-    version = "0.4.1";
+    version = "0.5.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/dockerfile-language-server-nodejs/-/dockerfile-language-server-nodejs-0.4.1.tgz";
-      sha512 = "7mB+HdMd4dfjChK1+37++ylA+sy7wFaf0/3HDy6cJDj5dTx4C4vVDmDKQpZgNJU1gIkxDnW6QCLCxpoe5FPyVA==";
+      url = "https://registry.npmjs.org/dockerfile-language-server-nodejs/-/dockerfile-language-server-nodejs-0.5.0.tgz";
+      sha512 = "aDwANs1c1xIh5lQTbMlsGx8tMDk1k+sjsYbIXYjWvGY9Ff2e40MQ6RgALItVVij1dj1049FkG9MOHLFqekxZoA==";
     };
     dependencies = [
-      (sources."dockerfile-ast-0.2.0" // {
+      (sources."dockerfile-ast-0.3.0" // {
         dependencies = [
           sources."vscode-languageserver-types-3.16.0"
         ];
       })
-      (sources."dockerfile-language-service-0.3.0" // {
+      sources."dockerfile-language-service-0.4.0"
+      (sources."dockerfile-utils-0.5.0" // {
         dependencies = [
-          (sources."dockerfile-utils-0.4.2" // {
-            dependencies = [
-              sources."dockerfile-ast-0.2.1"
-              sources."vscode-languageserver-types-3.16.0"
-            ];
-          })
-        ];
-      })
-      (sources."dockerfile-utils-0.2.0" // {
-        dependencies = [
-          sources."dockerfile-ast-0.1.0"
           sources."vscode-languageserver-types-3.16.0"
         ];
       })
@@ -79474,6 +79546,7 @@ in
           sources."vscode-languageserver-types-3.16.0"
         ];
       })
+      sources."vscode-languageserver-textdocument-1.0.1"
       sources."vscode-languageserver-types-3.17.0-next.1"
     ];
     buildInputs = globalBuildInputs;
@@ -80047,7 +80120,7 @@ in
       (sources."node-pre-gyp-0.11.0" // {
         dependencies = [
           sources."semver-5.7.1"
-          sources."tar-4.4.15"
+          sources."tar-4.4.16"
         ];
       })
       sources."nopt-4.0.3"
@@ -80174,7 +80247,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."speedometer-0.1.4"
       sources."sprintf-js-1.1.2"
       sources."sshpk-1.16.1"
@@ -80194,7 +80267,7 @@ in
       sources."sudo-prompt-9.2.1"
       sources."sumchecker-3.0.1"
       sources."supports-color-7.2.0"
-      (sources."tar-6.1.6" // {
+      (sources."tar-6.1.7" // {
         dependencies = [
           sources."chownr-2.0.0"
           sources."fs-minipass-2.1.0"
@@ -80421,7 +80494,7 @@ in
       })
       sources."defer-to-connect-2.0.1"
       sources."dot-prop-5.3.0"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."emojilib-2.4.0"
       sources."end-of-stream-1.4.4"
@@ -80598,7 +80671,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       (sources."stack-utils-2.0.3" // {
         dependencies = [
           sources."escape-string-regexp-2.0.0"
@@ -80931,7 +81004,7 @@ in
           sources."minizlib-2.1.2"
           sources."p-map-4.0.0"
           sources."rimraf-3.0.2"
-          sources."tar-6.1.6"
+          sources."tar-6.1.7"
         ];
       })
       sources."cache-base-1.0.1"
@@ -82044,7 +82117,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."split2-3.2.2"
       sources."sprintf-js-1.0.3"
@@ -82122,9 +82195,10 @@ in
       sources."swagger-ui-dist-3.34.0"
       sources."tail-2.2.3"
       sources."tapable-1.1.3"
-      (sources."tar-4.4.15" // {
+      (sources."tar-4.4.16" // {
         dependencies = [
           sources."mkdirp-0.5.5"
+          sources."safe-buffer-5.2.1"
           sources."yallist-3.1.1"
         ];
       })
@@ -83439,7 +83513,7 @@ in
       sources."duplexify-3.7.1"
       sources."ecc-jsbn-0.1.2"
       sources."ee-first-1.1.1"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       (sources."elliptic-6.5.4" // {
         dependencies = [
           sources."bn.js-4.12.0"
@@ -84662,7 +84736,7 @@ in
         ];
       })
       sources."subscriptions-transport-ws-0.9.8"
-      (sources."sucrase-3.20.0" // {
+      (sources."sucrase-3.20.1" // {
         dependencies = [
           sources."commander-4.1.1"
         ];
@@ -84692,7 +84766,7 @@ in
       })
       sources."symbol-observable-1.2.0"
       sources."tapable-1.1.3"
-      (sources."tar-6.1.6" // {
+      (sources."tar-6.1.7" // {
         dependencies = [
           sources."minipass-3.1.3"
           sources."mkdirp-1.0.4"
@@ -85155,7 +85229,7 @@ in
       })
       sources."delay-5.0.0"
       sources."devtools-protocol-0.0.869402"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."end-of-stream-1.4.4"
       sources."error-ex-1.3.2"
@@ -85287,7 +85361,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       (sources."stack-utils-2.0.3" // {
         dependencies = [
           sources."escape-string-regexp-2.0.0"
@@ -86010,7 +86084,7 @@ in
           sources."google-auth-library-7.5.0"
         ];
       })
-      sources."@grpc/grpc-js-1.3.6"
+      sources."@grpc/grpc-js-1.3.7"
       sources."@grpc/proto-loader-0.6.4"
       sources."@jsdevtools/ono-7.1.3"
       (sources."@npmcli/move-file-1.1.2" // {
@@ -86129,7 +86203,7 @@ in
       (sources."cacache-15.2.0" // {
         dependencies = [
           sources."mkdirp-1.0.4"
-          sources."tar-6.1.6"
+          sources."tar-6.1.7"
         ];
       })
       (sources."cacheable-request-6.1.0" // {
@@ -86598,7 +86672,7 @@ in
         dependencies = [
           sources."mkdirp-1.0.4"
           sources."semver-7.3.5"
-          sources."tar-6.1.6"
+          sources."tar-6.1.7"
           sources."which-2.0.2"
         ];
       })
@@ -86779,7 +86853,7 @@ in
           sources."has-flag-2.0.0"
         ];
       })
-      (sources."tar-4.4.15" // {
+      (sources."tar-4.4.16" // {
         dependencies = [
           sources."chownr-1.1.4"
           sources."fs-minipass-1.2.7"
@@ -87101,7 +87175,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."string-width-4.2.2"
       sources."strip-ansi-6.0.0"
       sources."strip-final-newline-2.0.0"
@@ -88092,7 +88166,7 @@ in
       sources."dotenv-8.6.0"
       sources."duplexer3-0.1.4"
       sources."ee-first-1.1.1"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-7.0.3"
       sources."encodeurl-1.0.2"
       sources."end-of-stream-1.4.4"
@@ -88586,6 +88660,193 @@ in
     bypassCache = true;
     reconstructLock = true;
   };
+  generator-code = nodeEnv.buildNodePackage {
+    name = "generator-code";
+    packageName = "generator-code";
+    version = "1.5.5";
+    src = fetchurl {
+      url = "https://registry.npmjs.org/generator-code/-/generator-code-1.5.5.tgz";
+      sha512 = "KxmZfEzhV0JYIonYtKBihZAFFVt0tqKoGL1OAbW8RdFQAgR/Yt5H0zF5K/7q7/M446JRcHCrI/pn9dmWmCXiDA==";
+    };
+    dependencies = [
+      sources."@babel/code-frame-7.14.5"
+      sources."@babel/helper-validator-identifier-7.14.9"
+      (sources."@babel/highlight-7.14.5" // {
+        dependencies = [
+          sources."ansi-styles-3.2.1"
+          sources."chalk-2.4.2"
+          sources."color-convert-1.9.3"
+          sources."color-name-1.1.3"
+          sources."has-flag-3.0.0"
+          sources."supports-color-5.5.0"
+        ];
+      })
+      sources."@octokit/auth-token-2.4.5"
+      sources."@octokit/core-3.5.1"
+      sources."@octokit/endpoint-6.0.12"
+      sources."@octokit/graphql-4.6.4"
+      sources."@octokit/openapi-types-9.4.0"
+      sources."@octokit/plugin-paginate-rest-2.15.0"
+      sources."@octokit/plugin-request-log-1.0.4"
+      sources."@octokit/plugin-rest-endpoint-methods-5.7.0"
+      sources."@octokit/request-5.6.0"
+      sources."@octokit/request-error-2.1.0"
+      sources."@octokit/rest-18.9.0"
+      sources."@octokit/types-6.24.0"
+      sources."@types/normalize-package-data-2.4.1"
+      sources."agent-base-4.3.0"
+      sources."ansi-regex-2.1.1"
+      sources."ansi-styles-4.3.0"
+      sources."balanced-match-1.0.2"
+      sources."before-after-hook-2.2.2"
+      sources."brace-expansion-1.1.11"
+      sources."chalk-4.1.2"
+      sources."cli-boxes-1.0.0"
+      sources."code-point-at-1.1.0"
+      sources."color-convert-2.0.1"
+      sources."color-name-1.1.4"
+      sources."concat-map-0.0.1"
+      sources."cross-spawn-7.0.3"
+      sources."dargs-7.0.0"
+      sources."debug-3.1.0"
+      sources."deprecation-2.3.1"
+      sources."end-of-stream-1.4.4"
+      sources."error-ex-1.3.2"
+      sources."es6-promise-4.2.8"
+      sources."es6-promisify-5.0.0"
+      sources."escape-string-regexp-1.0.5"
+      sources."execa-4.1.0"
+      sources."fast-plist-0.1.2"
+      sources."find-up-4.1.0"
+      sources."fs.realpath-1.0.0"
+      sources."function-bind-1.1.1"
+      sources."get-stdin-4.0.1"
+      sources."get-stream-5.2.0"
+      sources."github-username-6.0.0"
+      sources."glob-7.1.7"
+      sources."has-1.0.3"
+      sources."has-ansi-2.0.0"
+      sources."has-flag-4.0.0"
+      sources."hosted-git-info-2.8.9"
+      sources."http-proxy-agent-2.1.0"
+      sources."https-proxy-agent-2.2.4"
+      sources."human-signals-1.1.1"
+      sources."inflight-1.0.6"
+      sources."inherits-2.0.4"
+      sources."interpret-1.4.0"
+      sources."is-arrayish-0.2.1"
+      sources."is-core-module-2.5.0"
+      sources."is-fullwidth-code-point-2.0.0"
+      sources."is-plain-object-5.0.0"
+      sources."is-stream-2.0.1"
+      sources."isexe-2.0.0"
+      sources."js-tokens-4.0.0"
+      sources."json-parse-even-better-errors-2.3.1"
+      sources."lines-and-columns-1.1.6"
+      sources."locate-path-5.0.0"
+      sources."lodash-4.17.21"
+      sources."lru-cache-6.0.0"
+      sources."merge-stream-2.0.0"
+      sources."mimic-fn-2.1.0"
+      sources."minimatch-3.0.4"
+      sources."minimist-1.2.5"
+      sources."ms-2.0.0"
+      sources."node-fetch-2.6.1"
+      (sources."normalize-package-data-2.5.0" // {
+        dependencies = [
+          sources."semver-5.7.1"
+        ];
+      })
+      sources."npm-run-path-4.0.1"
+      sources."number-is-nan-1.0.1"
+      sources."once-1.4.0"
+      sources."onetime-5.1.2"
+      sources."p-limit-2.3.0"
+      sources."p-locate-4.1.0"
+      sources."p-try-2.2.0"
+      sources."pad-component-0.0.1"
+      sources."parse-json-5.2.0"
+      sources."path-exists-4.0.0"
+      sources."path-is-absolute-1.0.1"
+      sources."path-key-3.1.1"
+      sources."path-parse-1.0.7"
+      sources."pump-3.0.0"
+      (sources."read-pkg-5.2.0" // {
+        dependencies = [
+          sources."type-fest-0.6.0"
+        ];
+      })
+      sources."read-pkg-up-7.0.1"
+      sources."rechoir-0.6.2"
+      sources."request-light-0.4.0"
+      sources."resolve-1.20.0"
+      sources."run-async-2.4.1"
+      sources."sanitize-filename-1.6.3"
+      sources."semver-7.3.5"
+      sources."shebang-command-2.0.0"
+      sources."shebang-regex-3.0.0"
+      sources."shelljs-0.8.4"
+      sources."signal-exit-3.0.3"
+      sources."spdx-correct-3.1.1"
+      sources."spdx-exceptions-2.3.0"
+      sources."spdx-expression-parse-3.0.1"
+      sources."spdx-license-ids-3.0.10"
+      (sources."string-width-2.1.1" // {
+        dependencies = [
+          sources."ansi-regex-3.0.0"
+          sources."strip-ansi-4.0.0"
+        ];
+      })
+      sources."strip-ansi-3.0.1"
+      sources."strip-final-newline-2.0.0"
+      sources."supports-color-7.2.0"
+      sources."taketalk-1.0.0"
+      sources."text-table-0.2.0"
+      sources."truncate-utf8-bytes-1.0.2"
+      sources."type-fest-0.8.1"
+      sources."universal-user-agent-6.0.0"
+      sources."utf8-byte-length-1.0.4"
+      sources."validate-npm-package-license-3.0.4"
+      sources."vscode-nls-4.1.2"
+      sources."which-2.0.2"
+      (sources."wrap-ansi-2.1.0" // {
+        dependencies = [
+          sources."is-fullwidth-code-point-1.0.0"
+          sources."string-width-1.0.2"
+        ];
+      })
+      sources."wrappy-1.0.2"
+      sources."yallist-4.0.0"
+      (sources."yeoman-generator-5.4.0" // {
+        dependencies = [
+          sources."debug-4.3.2"
+          sources."ms-2.1.2"
+        ];
+      })
+      (sources."yosay-2.0.2" // {
+        dependencies = [
+          sources."ansi-styles-3.2.1"
+          (sources."chalk-1.1.3" // {
+            dependencies = [
+              sources."ansi-styles-2.2.1"
+            ];
+          })
+          sources."color-convert-1.9.3"
+          sources."color-name-1.1.3"
+          sources."supports-color-2.0.0"
+        ];
+      })
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "Yeoman generator for Visual Studio Code Extensions";
+      homepage = "http://code.visualstudio.com";
+      license = "MIT";
+    };
+    production = true;
+    bypassCache = true;
+    reconstructLock = true;
+  };
   get-graphql-schema = nodeEnv.buildNodePackage {
     name = "get-graphql-schema";
     packageName = "get-graphql-schema";
@@ -88806,7 +89067,7 @@ in
       })
       sources."ssb-msgs-5.2.0"
       sources."ssb-pull-requests-1.0.0"
-      sources."ssb-ref-2.14.3"
+      sources."ssb-ref-2.16.0"
       (sources."stream-to-pull-stream-1.7.3" // {
         dependencies = [
           sources."looper-3.0.0"
@@ -89157,7 +89418,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."statuses-1.5.0"
       sources."string-width-4.2.2"
       sources."string_decoder-1.3.0"
@@ -90468,7 +90729,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."stack-trace-0.0.10"
       (sources."static-extend-0.1.2" // {
@@ -90865,7 +91126,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."stack-trace-0.0.10"
       (sources."static-extend-0.1.2" // {
@@ -91954,7 +92215,7 @@ in
         ];
       })
       sources."supports-color-7.2.0"
-      sources."tar-4.4.15"
+      sources."tar-4.4.16"
       sources."through-2.3.8"
       sources."through2-3.0.2"
       sources."tmp-0.0.33"
@@ -92335,10 +92596,10 @@ in
   joplin = nodeEnv.buildNodePackage {
     name = "joplin";
     packageName = "joplin";
-    version = "2.1.2";
+    version = "2.2.1";
     src = fetchurl {
-      url = "https://registry.npmjs.org/joplin/-/joplin-2.1.2.tgz";
-      sha512 = "8xDS/I9zMH0wHuZGZ0xENBn/Ml4gHk2WLMDfShN7L2VNRK/9xowunf2c/fAwI0eNXn/aw2QcMrcgqj37uZ0gbw==";
+      url = "https://registry.npmjs.org/joplin/-/joplin-2.2.1.tgz";
+      sha512 = "6meo5eWRPmmZACLY+5atvtaecNsclzxcwYeFOUyAPf1JctSH/nCGow2nVkZoLtwNJGgXAnIEzwn08CpNIecDEQ==";
     };
     dependencies = [
       sources."@babel/code-frame-7.14.5"
@@ -92399,8 +92660,8 @@ in
       sources."@babel/types-7.15.0"
       sources."@braintree/sanitize-url-3.1.0"
       sources."@cronvel/get-pixels-3.4.0"
-      sources."@joplin/fork-htmlparser2-4.1.28"
-      sources."@joplin/fork-sax-1.2.32"
+      sources."@joplin/fork-htmlparser2-4.1.30"
+      sources."@joplin/fork-sax-1.2.34"
       (sources."@joplin/lib-2.1.1" // {
         dependencies = [
           (sources."@joplin/renderer-1.8.2" // {
@@ -92417,13 +92678,13 @@ in
           sources."uslug-git+https://github.com/laurent22/uslug.git#emoji-support"
         ];
       })
-      (sources."@joplin/turndown-4.0.50" // {
+      (sources."@joplin/turndown-4.0.52" // {
         dependencies = [
           sources."css-2.2.4"
           sources."source-map-0.6.1"
         ];
       })
-      sources."@joplin/turndown-plugin-gfm-1.0.32"
+      sources."@joplin/turndown-plugin-gfm-1.0.34"
       sources."@nodelib/fs.scandir-2.1.5"
       sources."@nodelib/fs.stat-2.0.5"
       sources."@nodelib/fs.walk-1.2.8"
@@ -92518,14 +92779,12 @@ in
       sources."asynckit-0.4.0"
       sources."at-least-node-1.0.0"
       sources."atob-2.1.2"
-      (sources."aws-sdk-2.963.0" // {
+      (sources."aws-sdk-2.964.0" // {
         dependencies = [
           sources."buffer-4.9.2"
           sources."ieee754-1.1.13"
-          sources."sax-1.2.1"
           sources."uuid-3.3.2"
           sources."xml2js-0.4.19"
-          sources."xmlbuilder-9.0.7"
         ];
       })
       sources."aws-sign2-0.7.0"
@@ -92733,7 +92992,7 @@ in
         ];
       })
       sources."ecc-jsbn-0.1.2"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       (sources."emphasize-1.5.0" // {
         dependencies = [
@@ -93130,6 +93389,7 @@ in
       (sources."needle-2.8.0" // {
         dependencies = [
           sources."debug-3.2.7"
+          sources."sax-1.2.4"
         ];
       })
       sources."neo-async-2.6.2"
@@ -93318,7 +93578,7 @@ in
       sources."safe-buffer-5.2.1"
       sources."safe-regex-1.1.0"
       sources."safer-buffer-2.1.2"
-      sources."sax-1.2.4"
+      sources."sax-1.2.1"
       sources."saxes-3.1.11"
       sources."semver-7.3.5"
       sources."server-destroy-1.0.1"
@@ -93460,7 +93720,7 @@ in
       sources."symbol-observable-1.2.0"
       sources."symbol-tree-3.2.4"
       sources."table-layout-0.4.5"
-      (sources."tar-4.4.15" // {
+      (sources."tar-4.4.16" // {
         dependencies = [
           sources."yallist-3.1.1"
         ];
@@ -93574,8 +93834,12 @@ in
       sources."write-file-atomic-2.4.3"
       sources."ws-7.5.3"
       sources."xml-name-validator-3.0.0"
-      sources."xml2js-0.4.23"
-      sources."xmlbuilder-11.0.1"
+      (sources."xml2js-0.4.23" // {
+        dependencies = [
+          sources."xmlbuilder-11.0.1"
+        ];
+      })
+      sources."xmlbuilder-9.0.7"
       sources."xmlchars-2.2.0"
       sources."yallist-4.0.0"
       sources."yaml-1.10.2"
@@ -94596,7 +94860,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."sshpk-1.16.1"
       (sources."static-extend-0.1.2" // {
@@ -96527,7 +96791,7 @@ in
           sources."resolve-from-4.0.0"
           sources."rimraf-2.7.1"
           sources."semver-5.7.1"
-          sources."tar-4.4.15"
+          sources."tar-4.4.16"
           sources."which-1.3.1"
           sources."yallist-3.1.1"
         ];
@@ -96651,7 +96915,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-1.0.1"
       sources."split-on-first-1.1.0"
       sources."split2-3.2.2"
@@ -96673,7 +96937,7 @@ in
       sources."strip-indent-3.0.0"
       sources."strong-log-transformer-2.1.0"
       sources."supports-color-7.2.0"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."temp-dir-1.0.0"
       (sources."temp-write-4.0.0" // {
         dependencies = [
@@ -98087,7 +98351,7 @@ in
       sources."duplexer2-0.1.4"
       sources."duplexify-3.7.1"
       sources."ecc-jsbn-0.1.2"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       (sources."elliptic-6.5.4" // {
         dependencies = [
           sources."bn.js-4.12.0"
@@ -98599,7 +98863,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."sprintf-js-1.0.3"
       sources."sshpk-1.16.1"
@@ -99328,10 +99592,10 @@ in
   "@mermaid-js/mermaid-cli" = nodeEnv.buildNodePackage {
     name = "_at_mermaid-js_slash_mermaid-cli";
     packageName = "@mermaid-js/mermaid-cli";
-    version = "8.11.0";
+    version = "8.11.4";
     src = fetchurl {
-      url = "https://registry.npmjs.org/@mermaid-js/mermaid-cli/-/mermaid-cli-8.11.0.tgz";
-      sha512 = "UyYOnVhvKcfh9e2S4QnK53uRa2hvdgQVo3ZT+FcaP56ZeBDNWKB3IZI/sNzAbxqJBEuRpW6HxoEzHCleis1dFw==";
+      url = "https://registry.npmjs.org/@mermaid-js/mermaid-cli/-/mermaid-cli-8.11.4.tgz";
+      sha512 = "4Ke9t29EF84LUbUE4mQOQYVdIJcZpJyOs1dyVq4KqDDKWtyQDrXbdt1JGJ1NxyKqJt9vEmR2e3BZyiLd9vJ/CQ==";
     };
     dependencies = [
       sources."@babel/code-frame-7.14.5"
@@ -99575,7 +99839,7 @@ in
       sources."devtools-protocol-0.0.901419"
       sources."dir-glob-3.0.1"
       sources."dompurify-2.3.0"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."end-of-stream-1.4.4"
       sources."error-ex-1.3.2"
@@ -100622,10 +100886,10 @@ in
   netlify-cli = nodeEnv.buildNodePackage {
     name = "netlify-cli";
     packageName = "netlify-cli";
-    version = "6.0.8";
+    version = "6.0.9";
     src = fetchurl {
-      url = "https://registry.npmjs.org/netlify-cli/-/netlify-cli-6.0.8.tgz";
-      sha512 = "pYqdFgEw/2pWjSZQ4r+UEmXy1UkR4WDSf8INBJOEJvIzw4HaBD/pjsUadwkGvMX/iUjSy2/dD9SLZbESFA8lTA==";
+      url = "https://registry.npmjs.org/netlify-cli/-/netlify-cli-6.0.9.tgz";
+      sha512 = "eOZSTnEZO6bPMJWvsKxYgm0+lG3uv6anqEylomDEZEszfd8jXO8B5DIpGholtoCC9WKTeiE7XfizrdTXLFI3UQ==";
     };
     dependencies = [
       sources."@babel/code-frame-7.14.5"
@@ -100834,7 +101098,7 @@ in
           sources."@types/node-14.17.9"
         ];
       })
-      sources."@netlify/plugins-list-3.2.1"
+      sources."@netlify/plugins-list-3.3.0"
       sources."@netlify/routing-local-proxy-0.31.0"
       (sources."@netlify/run-utils-2.0.0" // {
         dependencies = [
@@ -101035,8 +101299,8 @@ in
       sources."@types/semver-7.3.8"
       sources."@types/yargs-13.0.12"
       sources."@types/yargs-parser-20.2.1"
-      sources."@typescript-eslint/types-4.29.0"
-      (sources."@typescript-eslint/typescript-estree-4.29.0" // {
+      sources."@typescript-eslint/types-4.29.1"
+      (sources."@typescript-eslint/typescript-estree-4.29.1" // {
         dependencies = [
           sources."@nodelib/fs.stat-2.0.5"
           sources."array-union-2.1.0"
@@ -101053,7 +101317,7 @@ in
           sources."to-regex-range-5.0.1"
         ];
       })
-      sources."@typescript-eslint/visitor-keys-4.29.0"
+      sources."@typescript-eslint/visitor-keys-4.29.1"
       sources."@ungap/from-entries-0.2.1"
       sources."accepts-1.3.7"
       sources."acorn-8.4.1"
@@ -101451,7 +101715,7 @@ in
       })
       sources."duplexer3-0.1.4"
       sources."ee-first-1.1.1"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."elegant-spinner-1.0.1"
       sources."elf-cam-0.1.1"
       sources."emoji-regex-8.0.0"
@@ -102270,7 +102534,7 @@ in
       sources."reusify-1.0.4"
       sources."rfdc-1.3.0"
       sources."rimraf-3.0.2"
-      sources."rollup-2.56.1"
+      sources."rollup-2.56.2"
       (sources."rollup-plugin-inject-3.0.2" // {
         dependencies = [
           sources."estree-walker-0.6.1"
@@ -102375,7 +102639,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."split2-1.1.1"
       sources."sprintf-js-1.0.3"
@@ -102727,7 +102991,7 @@ in
       sources."string-width-1.0.2"
       sources."string_decoder-1.1.1"
       sources."strip-ansi-3.0.1"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."unique-filename-1.1.1"
       sources."unique-slug-2.0.2"
       sources."util-deprecate-1.0.2"
@@ -102985,7 +103249,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       (sources."sshpk-1.16.1" // {
         dependencies = [
           sources."assert-plus-1.0.0"
@@ -103131,7 +103395,11 @@ in
       sources."string_decoder-1.1.1"
       sources."strip-ansi-3.0.1"
       sources."strip-json-comments-2.0.1"
-      sources."tar-4.4.15"
+      (sources."tar-4.4.16" // {
+        dependencies = [
+          sources."safe-buffer-5.2.1"
+        ];
+      })
       sources."util-deprecate-1.0.2"
       sources."wide-align-1.1.3"
       sources."wrappy-1.0.2"
@@ -103700,7 +103968,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sshpk-1.16.1"
       sources."ssri-5.3.0"
       sources."string-width-1.0.2"
@@ -103710,7 +103978,7 @@ in
         ];
       })
       sources."strip-ansi-3.0.1"
-      (sources."tar-6.1.6" // {
+      (sources."tar-6.1.7" // {
         dependencies = [
           sources."mkdirp-1.0.4"
         ];
@@ -104383,7 +104651,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-1.0.1"
       sources."string-width-4.2.2"
       sources."strip-ansi-6.0.0"
@@ -104766,7 +105034,7 @@ in
       sources."strip-ansi-3.0.1"
       sources."strip-json-comments-2.0.1"
       sources."supports-color-7.2.0"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."to-readable-stream-1.0.0"
       sources."to-regex-range-5.0.1"
       sources."tough-cookie-2.5.0"
@@ -105444,7 +105712,7 @@ in
       sources."duplexer2-0.1.4"
       sources."ecc-jsbn-0.1.2"
       sources."ee-first-1.1.1"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       (sources."elliptic-6.5.4" // {
         dependencies = [
           sources."bn.js-4.12.0"
@@ -106684,7 +106952,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."speedometer-0.1.4"
       sources."stream-buffers-2.2.0"
       sources."string-width-1.0.2"
@@ -108202,10 +108470,10 @@ in
   pyright = nodeEnv.buildNodePackage {
     name = "pyright";
     packageName = "pyright";
-    version = "1.1.160";
+    version = "1.1.161";
     src = fetchurl {
-      url = "https://registry.npmjs.org/pyright/-/pyright-1.1.160.tgz";
-      sha512 = "SBgUVitoBS+VvGEG1IoPJNgJ9PSjsjCqeJPZ7DWMz9s4SvYHeZz57VtWlGGGpgjT19nmH/zPe8Cxk4CLXmDhiA==";
+      url = "https://registry.npmjs.org/pyright/-/pyright-1.1.161.tgz";
+      sha512 = "ahZ8KyDAMdyFTt9j0P/WL6SAeZWKI9qxoFRmTxw71JwyCVPSqXaeo2rK3304YjfKZKAtuHNMgtuZiAVT8U/Pbw==";
     };
     buildInputs = globalBuildInputs;
     meta = {
@@ -109107,7 +109375,7 @@ in
       sources."duplexify-3.7.1"
       sources."ee-first-1.1.1"
       sources."ejs-2.7.4"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       (sources."elliptic-6.5.4" // {
         dependencies = [
           sources."bn.js-4.12.0"
@@ -110898,7 +111166,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       (sources."string-length-3.1.0" // {
         dependencies = [
           sources."ansi-regex-4.1.0"
@@ -110980,10 +111248,10 @@ in
   rollup = nodeEnv.buildNodePackage {
     name = "rollup";
     packageName = "rollup";
-    version = "2.56.1";
+    version = "2.56.2";
     src = fetchurl {
-      url = "https://registry.npmjs.org/rollup/-/rollup-2.56.1.tgz";
-      sha512 = "KkrsNjeiTfGJMUFBi/PNfj3fnt70akqdoNXOjlzwo98uA1qrlkmgt6SGaK5OwhyDYCVnJb6jb2Xa2wbI47P4Nw==";
+      url = "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz";
+      sha512 = "s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==";
     };
     dependencies = [
       sources."fsevents-2.3.2"
@@ -111001,7 +111269,7 @@ in
   "rust-analyzer-build-deps-../../misc/vscode-extensions/rust-analyzer/build-deps" = nodeEnv.buildNodePackage {
     name = "rust-analyzer";
     packageName = "rust-analyzer";
-    version = "0.4.0-dev";
+    version = "0.2.702";
     src = ../../misc/vscode-extensions/rust-analyzer/build-deps;
     dependencies = [
       sources."@babel/code-frame-7.12.11"
@@ -111039,13 +111307,13 @@ in
       sources."@types/node-fetch-2.5.12"
       sources."@types/resolve-1.17.1"
       sources."@types/vscode-1.59.0"
-      sources."@typescript-eslint/eslint-plugin-4.29.0"
-      sources."@typescript-eslint/experimental-utils-4.29.0"
-      sources."@typescript-eslint/parser-4.29.0"
-      sources."@typescript-eslint/scope-manager-4.29.0"
-      sources."@typescript-eslint/types-4.29.0"
-      sources."@typescript-eslint/typescript-estree-4.29.0"
-      sources."@typescript-eslint/visitor-keys-4.29.0"
+      sources."@typescript-eslint/eslint-plugin-4.29.1"
+      sources."@typescript-eslint/experimental-utils-4.29.1"
+      sources."@typescript-eslint/parser-4.29.1"
+      sources."@typescript-eslint/scope-manager-4.29.1"
+      sources."@typescript-eslint/types-4.29.1"
+      sources."@typescript-eslint/typescript-estree-4.29.1"
+      sources."@typescript-eslint/visitor-keys-4.29.1"
       sources."@ungap/promise-all-settled-1.1.2"
       sources."acorn-7.4.1"
       sources."acorn-jsx-5.3.2"
@@ -111758,7 +112026,7 @@ in
           sources."jwt-decode-2.2.0"
         ];
       })
-      (sources."@serverless/platform-client-china-2.2.1" // {
+      (sources."@serverless/platform-client-china-2.2.2" // {
         dependencies = [
           sources."dotenv-8.6.0"
           sources."js-yaml-3.14.1"
@@ -111843,7 +112111,7 @@ in
       sources."async-2.6.3"
       sources."asynckit-0.4.0"
       sources."at-least-node-1.0.0"
-      (sources."aws-sdk-2.963.0" // {
+      (sources."aws-sdk-2.964.0" // {
         dependencies = [
           sources."buffer-4.9.2"
           sources."ieee754-1.1.13"
@@ -112461,7 +112729,7 @@ in
           sources."untildify-3.0.3"
         ];
       })
-      (sources."tar-6.1.6" // {
+      (sources."tar-6.1.7" // {
         dependencies = [
           sources."chownr-2.0.0"
           sources."mkdirp-1.0.4"
@@ -113198,10 +113466,10 @@ in
   snyk = nodeEnv.buildNodePackage {
     name = "snyk";
     packageName = "snyk";
-    version = "1.676.0";
+    version = "1.677.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/snyk/-/snyk-1.676.0.tgz";
-      sha512 = "3B+YZ5mf/fXcb6PmbXBhZHQPY9BuK5g+KeI+HsLlNeLIEqc+PPxyL0XKv8W1VKFsaY8J1d3JQ68fjXeJie2OoA==";
+      url = "https://registry.npmjs.org/snyk/-/snyk-1.677.0.tgz";
+      sha512 = "2CALWUc+gOmOmpK9ehsJiaU0SYJEEmpJYalVw1Gh8pk4S/8bZWx5OdaQyD3ep29ZX5BCVSDQvOE22NPtTs8X7g==";
     };
     dependencies = [
       sources."@arcanis/slice-ansi-1.0.2"
@@ -113809,9 +114077,10 @@ in
           sources."tslib-2.3.0"
         ];
       })
-      (sources."snyk-policy-1.19.0" // {
+      (sources."snyk-policy-1.22.0" // {
         dependencies = [
           sources."lru-cache-5.1.1"
+          sources."semver-7.3.5"
           sources."snyk-try-require-2.0.1"
           sources."yallist-3.1.1"
         ];
@@ -113873,7 +114142,7 @@ in
       sources."strip-eof-1.0.0"
       sources."strip-json-comments-2.0.1"
       sources."supports-color-7.2.0"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."tar-stream-2.2.0"
       sources."temp-dir-2.0.0"
       (sources."tempy-1.0.1" // {
@@ -114129,7 +114398,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."speedtest-net-1.6.2"
       sources."string-width-2.1.1"
       sources."strip-ansi-4.0.0"
@@ -114953,7 +115222,7 @@ in
       })
       sources."ssb-plugins-1.0.0"
       sources."ssb-query-2.4.5"
-      sources."ssb-ref-2.14.3"
+      sources."ssb-ref-2.16.0"
       sources."ssb-replicate-1.3.3"
       sources."ssb-unix-socket-1.0.0"
       (sources."ssb-validate-4.1.4" // {
@@ -115164,7 +115433,7 @@ in
       sources."async-1.5.2"
       sources."async-limiter-1.0.1"
       sources."asynckit-0.4.0"
-      (sources."aws-sdk-2.963.0" // {
+      (sources."aws-sdk-2.964.0" // {
         dependencies = [
           sources."uuid-3.3.2"
         ];
@@ -115532,7 +115801,7 @@ in
       sources."mkdirp-0.5.5"
       sources."moment-2.29.1"
       sources."ms-2.1.3"
-      sources."multer-1.4.2"
+      sources."multer-1.4.3"
       sources."mustache-2.3.2"
       sources."mv-2.1.1"
       sources."my-local-ip-1.0.0"
@@ -115726,7 +115995,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-1.0.1"
       sources."sprintf-js-1.0.3"
       (sources."sshpk-1.16.1" // {
@@ -116041,7 +116310,7 @@ in
       sources."domelementtype-1.3.1"
       sources."domhandler-2.4.2"
       sources."domutils-1.7.0"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."entities-1.1.2"
       sources."error-ex-1.3.2"
@@ -116222,7 +116491,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."specificity-0.4.1"
       sources."string-width-4.2.2"
       (sources."string_decoder-1.3.0" // {
@@ -116818,7 +117087,12 @@ in
       })
       sources."mpath-0.5.2"
       sources."ms-2.0.0"
-      sources."multer-1.4.2"
+      (sources."multer-1.4.3" // {
+        dependencies = [
+          sources."minimist-1.2.5"
+          sources."mkdirp-0.5.5"
+        ];
+      })
       sources."mute-stream-0.0.5"
       sources."nan-2.15.0"
       sources."nanomatch-1.2.13"
@@ -117588,7 +117862,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sprintf-js-1.0.3"
       (sources."string-width-1.0.2" // {
         dependencies = [
@@ -118004,7 +118278,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-0.2.10"
       (sources."split-transform-stream-0.1.1" // {
         dependencies = [
@@ -118903,7 +119177,7 @@ in
       sources."strip-outer-1.0.1"
       sources."strtok3-6.2.4"
       sources."supports-color-7.2.0"
-      sources."tar-4.4.15"
+      sources."tar-4.4.16"
       sources."tlds-1.208.0"
       sources."to-array-0.1.4"
       sources."to-readable-stream-1.0.0"
@@ -120067,7 +120341,7 @@ in
       sources."string-width-1.0.2"
       sources."string_decoder-1.1.1"
       sources."strip-ansi-3.0.1"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       sources."topojson-client-3.1.0"
       sources."util-deprecate-1.0.2"
       sources."vega-5.20.2"
@@ -120182,18 +120456,18 @@ in
   vercel = nodeEnv.buildNodePackage {
     name = "vercel";
     packageName = "vercel";
-    version = "23.1.1";
+    version = "23.1.2";
     src = fetchurl {
-      url = "https://registry.npmjs.org/vercel/-/vercel-23.1.1.tgz";
-      sha512 = "9HScSWBFGHmFvvInD0IgbkIrP1+rPjajDlI0n/7HTPOgZ68l2DShEpN6Igt2BPFQhbMK8Fwt5MNuC5RM6JTI2Q==";
+      url = "https://registry.npmjs.org/vercel/-/vercel-23.1.2.tgz";
+      sha512 = "uS1k7wuXI6hbxiW+kn9vdAWL0bBi4jjVxc7Jwp8NhJjcRuzlydtt3gUEnhnC9AOIKQ4LxoAgmg50lSyYkrC8Hg==";
     };
     dependencies = [
       sources."@sindresorhus/is-0.14.0"
       sources."@szmarczak/http-timer-1.1.2"
       sources."@types/node-16.4.13"
-      sources."@vercel/build-utils-2.12.1"
+      sources."@vercel/build-utils-2.12.2"
       sources."@vercel/go-1.2.3"
-      sources."@vercel/node-1.12.0"
+      sources."@vercel/node-1.12.1"
       sources."@vercel/python-2.0.5"
       sources."@vercel/ruby-1.2.7"
       (sources."ansi-align-3.0.0" // {
@@ -120380,7 +120654,7 @@ in
       sources."enquirer-2.3.6"
       sources."escape-string-regexp-4.0.0"
       sources."eslint-7.32.0"
-      (sources."eslint-plugin-vue-7.15.1" // {
+      (sources."eslint-plugin-vue-7.16.0" // {
         dependencies = [
           sources."semver-6.3.0"
         ];
@@ -120777,7 +121051,7 @@ in
       sources."domelementtype-2.2.0"
       sources."domhandler-4.2.0"
       sources."domutils-2.7.0"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."emoji-regex-8.0.0"
       sources."emojis-list-3.0.0"
       sources."enhanced-resolve-5.8.2"
@@ -122017,7 +122291,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."split-string-3.1.0"
       sources."sprintf-js-1.0.3"
       sources."stampit-1.2.0"
@@ -122425,7 +122699,7 @@ in
       sources."svg-pathdata-5.0.5"
       sources."svg2img-0.9.3"
       sources."symbol-tree-3.2.4"
-      sources."tar-6.1.6"
+      sources."tar-6.1.7"
       (sources."tough-cookie-4.0.0" // {
         dependencies = [
           sources."universalify-0.1.2"
@@ -123107,7 +123381,7 @@ in
       sources."chrome-trace-event-1.0.3"
       sources."colorette-1.2.2"
       sources."commander-2.20.3"
-      sources."electron-to-chromium-1.3.799"
+      sources."electron-to-chromium-1.3.801"
       sources."enhanced-resolve-5.8.2"
       sources."es-module-lexer-0.7.1"
       sources."escalade-3.1.1"
@@ -124106,6 +124380,7 @@ in
       sources."pump-3.0.0"
       sources."qap-3.3.1"
       sources."queue-microtask-1.2.3"
+      sources."queue-tick-1.0.0"
       sources."random-access-file-2.2.0"
       sources."random-access-storage-1.4.1"
       sources."random-iterate-1.0.1"
@@ -124151,7 +124426,7 @@ in
       sources."stream-to-blob-2.0.1"
       sources."stream-to-blob-url-3.0.2"
       sources."stream-with-known-length-to-buffer-1.0.4"
-      sources."streamx-2.11.0"
+      sources."streamx-2.11.1"
       sources."string-width-4.2.2"
       sources."string2compact-1.3.2"
       sources."string_decoder-1.3.0"
@@ -125016,7 +125291,7 @@ in
       sources."spdx-correct-3.1.1"
       sources."spdx-exceptions-2.3.0"
       sources."spdx-expression-parse-3.0.1"
-      sources."spdx-license-ids-3.0.9"
+      sources."spdx-license-ids-3.0.10"
       sources."sprintf-js-1.1.2"
       sources."sshpk-1.16.1"
       sources."ssri-8.0.1"
@@ -125079,7 +125354,7 @@ in
         ];
       })
       sources."taketalk-1.0.0"
-      (sources."tar-6.1.6" // {
+      (sources."tar-6.1.7" // {
         dependencies = [
           sources."mkdirp-1.0.4"
         ];
@@ -125254,34 +125529,58 @@ in
   zx = nodeEnv.buildNodePackage {
     name = "zx";
     packageName = "zx";
-    version = "2.0.0";
+    version = "2.1.0";
     src = fetchurl {
-      url = "https://registry.npmjs.org/zx/-/zx-2.0.0.tgz";
-      sha512 = "OF8YvqseMMmtDaASqO+8+0/tJZvykLK0hX9YBAaRO9l7Hc+YjNKjpgJTjrmncgEURoyDr9Ln4r/qBtEuDNZstg==";
+      url = "https://registry.npmjs.org/zx/-/zx-2.1.0.tgz";
+      sha512 = "7mCJ92ev894l94w5aXkdQoZ9iE6qXERLMPp/uMhTumGKtyhvN8tWprqFFHiXGS/31HxEy1NtNd9NHmYjGHd85A==";
     };
     dependencies = [
+      sources."@nodelib/fs.scandir-2.1.5"
+      sources."@nodelib/fs.stat-2.0.5"
+      sources."@nodelib/fs.walk-1.2.8"
       sources."@types/fs-extra-9.0.12"
       sources."@types/minimist-1.2.2"
       sources."@types/node-16.4.13"
       sources."@types/node-fetch-2.5.12"
       sources."ansi-styles-4.3.0"
+      sources."array-union-3.0.1"
       sources."asynckit-0.4.0"
+      sources."braces-3.0.2"
       sources."chalk-4.1.2"
       sources."color-convert-2.0.1"
       sources."color-name-1.1.4"
       sources."combined-stream-1.0.8"
       sources."delayed-stream-1.0.0"
+      sources."dir-glob-3.0.1"
+      sources."fast-glob-3.2.7"
+      sources."fastq-1.11.1"
+      sources."fill-range-7.0.1"
       sources."form-data-3.0.1"
       sources."fs-extra-10.0.0"
+      sources."glob-parent-5.1.2"
+      sources."globby-12.0.0"
       sources."graceful-fs-4.2.8"
       sources."has-flag-4.0.0"
+      sources."ignore-5.1.8"
+      sources."is-extglob-2.1.1"
+      sources."is-glob-4.0.1"
+      sources."is-number-7.0.0"
       sources."isexe-2.0.0"
       sources."jsonfile-6.1.0"
+      sources."merge2-1.4.1"
+      sources."micromatch-4.0.4"
       sources."mime-db-1.49.0"
       sources."mime-types-2.1.32"
       sources."minimist-1.2.5"
       sources."node-fetch-2.6.1"
+      sources."path-type-4.0.0"
+      sources."picomatch-2.3.0"
+      sources."queue-microtask-1.2.3"
+      sources."reusify-1.0.4"
+      sources."run-parallel-1.2.0"
+      sources."slash-4.0.0"
       sources."supports-color-7.2.0"
+      sources."to-regex-range-5.0.1"
       sources."universalify-2.0.0"
       sources."which-2.0.2"
     ];
diff --git a/pkgs/development/python-modules/arcam-fmj/default.nix b/pkgs/development/python-modules/arcam-fmj/default.nix
index 4c3ff7d85a575..55e629d9358e5 100644
--- a/pkgs/development/python-modules/arcam-fmj/default.nix
+++ b/pkgs/development/python-modules/arcam-fmj/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "arcam-fmj";
-  version = "0.7.0";
+  version = "0.10.0";
 
   disabled = pythonOlder "3.8";
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "elupus";
     repo = "arcam_fmj";
     rev = version;
-    sha256 = "0y4wvvbcsizjd9qz6iw4gjhq5qf0qcqs27hpx1cd90vhy6rclxm0";
+    sha256 = "sha256-pPPBeOwB2HgyxxMnR5yU3ZwDaJVP0v7/fkeDkeGGhPM=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/b2sdk/default.nix b/pkgs/development/python-modules/b2sdk/default.nix
index c6122e15a83a5..d81c374670fd2 100644
--- a/pkgs/development/python-modules/b2sdk/default.nix
+++ b/pkgs/development/python-modules/b2sdk/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "b2sdk";
-  version = "1.9.0";
+  version = "1.12.0";
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "ff9c27c89f53583fd83c711d0a642d9b3bdbb8682c2e8e2315674b517cb441ec";
+    sha256 = "sha256-PsImSuK0IVY9EwpLKlP5ZFS6A7j2iJOtUg/GUcQTJR0=";
   };
 
   nativeBuildInputs = [
@@ -54,6 +54,7 @@ buildPythonPackage rec {
     # Test requires an API key
     "test_raw_api"
     "test_files_headers"
+    "test_large_file"
   ];
 
   pythonImportsCheck = [ "b2sdk" ];
diff --git a/pkgs/development/python-modules/clevercsv/default.nix b/pkgs/development/python-modules/clevercsv/default.nix
index 233b7164989dd..f42a97c0652e3 100644
--- a/pkgs/development/python-modules/clevercsv/default.nix
+++ b/pkgs/development/python-modules/clevercsv/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "clevercsv";
-  version = "0.6.8";
+  version = "0.7.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "alan-turing-institute";
     repo = "CleverCSV";
     rev = "v${version}";
-    sha256 = "0jpgyh65zqr76sz2s63zsjyb49dpg2xdmf72jvpicw923bdzhqvp";
+    sha256 = "09ccgydnrfdgxjz6ph829l9q62jkzqrak0k6yjik2rvs33jn0dhc";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/clize/default.nix b/pkgs/development/python-modules/clize/default.nix
index 0088acdb832c7..faeb54f794bb6 100644
--- a/pkgs/development/python-modules/clize/default.nix
+++ b/pkgs/development/python-modules/clize/default.nix
@@ -15,18 +15,13 @@
 
 buildPythonPackage rec {
   pname = "clize";
-  version = "4.1.1";
+  version = "4.2.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "f54dedcf6fea90a3e75c30cb65e0ab1e832760121f393b8d68edd711dbaf7187";
+    sha256 = "06p47i6hri006v7xbx7myj02as1a6f34rv88wfa9rb067p13nmyz";
   };
 
-  # Remove overly restrictive version constraints
-  postPatch = ''
-    substituteInPlace setup.py --replace "attrs>=19.1.0,<20" "attrs"
-  '';
-
   checkInputs = [
     pytestCheckHook
     python-dateutil
@@ -49,5 +44,6 @@ buildPythonPackage rec {
     description = "Command-line argument parsing for Python";
     homepage = "https://github.com/epsy/clize";
     license = licenses.mit;
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/coapthon3/default.nix b/pkgs/development/python-modules/coapthon3/default.nix
index 6f22e8e9f2962..643072269a369 100644
--- a/pkgs/development/python-modules/coapthon3/default.nix
+++ b/pkgs/development/python-modules/coapthon3/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonPackage rec {
   pname = "CoAPthon3";
-  version = "1.0.1";
+  version = "1.0.2";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "Tanganelli";
     repo = pname;
     rev = version;
-    sha256 = "1im35i5i72y1p9qj8ixkwq7q6ksbrmi42giqiyfgjp1ym38snl69";
+    sha256 = "sha256-9QApoPUu3XFZY/lgjAsf5r2StFiRtUd1UXWDrzYUh6w=";
   };
 
   propagatedBuildInputs = [ cachetools ];
diff --git a/pkgs/development/python-modules/dbutils/default.nix b/pkgs/development/python-modules/dbutils/default.nix
index 294456cc85bda..fef630e868313 100644
--- a/pkgs/development/python-modules/dbutils/default.nix
+++ b/pkgs/development/python-modules/dbutils/default.nix
@@ -1,17 +1,23 @@
-{ lib, buildPythonPackage, fetchPypi, pytestCheckHook }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+}:
 
 buildPythonPackage rec {
-  version = "2.0.1";
+  version = "2.0.2";
   pname = "dbutils";
 
   src = fetchPypi {
     inherit version;
     pname = "DBUtils";
-    sha256 = "sha256-Vw590TbBMRb+74vKGGCeP2a4ZoqcPV8hCdh0TERE2GE=";
+    sha256 = "1cc8zyd4lapzf9ny6c2jf1vysphlhr19m8miyvw5spbyq4pxpnsf";
   };
 
   checkInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "dbutils" ];
+
   meta = with lib; {
     description = "Database connections for multi-threaded environments";
     homepage = "https://webwareforpython.github.io/DBUtils/";
diff --git a/pkgs/development/python-modules/deemix/default.nix b/pkgs/development/python-modules/deemix/default.nix
index b34c54d91f1f2..bf9b226587627 100644
--- a/pkgs/development/python-modules/deemix/default.nix
+++ b/pkgs/development/python-modules/deemix/default.nix
@@ -12,12 +12,12 @@
 
 buildPythonPackage rec {
   pname = "deemix";
-  version = "3.4.1";
+  version = "3.4.2";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-FGzMFJOoKQPNq4tGI1KsMO+i9iBZhoz5Z67BFLEuv48=";
+    sha256 = "sha256-kGE3JLMaDSQsz/b+vgQ5GGTp+itiqMymamaNO0NM2L0=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/deezer-py/default.nix b/pkgs/development/python-modules/deezer-py/default.nix
index de5c076a42881..1ae219e25c115 100644
--- a/pkgs/development/python-modules/deezer-py/default.nix
+++ b/pkgs/development/python-modules/deezer-py/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "deezer-py";
-  version = "1.1.1";
+  version = "1.1.2";
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-EAiGMSLrRsF03FMLkizy3Fm+nAldSTxe9KdXFFep0iQ=";
+    sha256 = "sha256-xkPbKFGULq5On13xuuV0Bqb5ATTXonH6mCPf3mwwv8A=";
   };
 
   propagatedBuildInputs = [ requests ];
diff --git a/pkgs/development/python-modules/hass-nabucasa/default.nix b/pkgs/development/python-modules/hass-nabucasa/default.nix
index 201337ef77179..556576459695d 100644
--- a/pkgs/development/python-modules/hass-nabucasa/default.nix
+++ b/pkgs/development/python-modules/hass-nabucasa/default.nix
@@ -15,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "hass-nabucasa";
-  version = "0.44.0";
+  version = "0.45.1";
 
   src = fetchFromGitHub {
     owner = "nabucasa";
     repo = pname;
     rev = version;
-    sha256 = "sha256-cfKuqkIgmbo7/kUIpJFbckyQ0uDrxXmdsI7qORX0PWc=";
+    sha256 = "sha256-ZDPlYoLAQLXiV+LUMdu/8v3TrG5/Zz4+r4PtThrLAas=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/hstspreload/default.nix b/pkgs/development/python-modules/hstspreload/default.nix
index 6833837b69685..7b92aeb269df4 100644
--- a/pkgs/development/python-modules/hstspreload/default.nix
+++ b/pkgs/development/python-modules/hstspreload/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "hstspreload";
-  version = "2021.7.5";
+  version = "2021.8.1";
   disabled = isPy27;
 
   src = fetchFromGitHub {
     owner = "sethmlarson";
     repo = pname;
     rev = version;
-    sha256 = "sha256-/89K41MrTdF68+BVkfnv+0d+6rBHdRGKpN2Psfr2Wog=";
+    sha256 = "0si22p461qydh874gkidiar89hrfx7lm7r7g6d1qi7lz8wlwcplv";
   };
 
   # tests require network connection
diff --git a/pkgs/development/python-modules/mutesync/default.nix b/pkgs/development/python-modules/mutesync/default.nix
index 98bf6ce074583..382f09ca6d0aa 100644
--- a/pkgs/development/python-modules/mutesync/default.nix
+++ b/pkgs/development/python-modules/mutesync/default.nix
@@ -2,17 +2,16 @@
 , aiohttp
 , async-timeout
 , buildPythonPackage
-, fetchpatch
 , fetchPypi
 }:
 
 buildPythonPackage rec {
   pname = "mutesync";
-  version = "0.0.1";
+  version = "0.0.2";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "05r8maq59glwgysg98y1vrysfb1mkh9jpbag3ixl13n8jw8clp85";
+    sha256 = "1lz3q3q9lw8qxxb8jyrak77v6hkxwi39akyx96j8hd5jjaq2k5qc";
   };
 
   propagatedBuildInputs = [
@@ -20,17 +19,9 @@ buildPythonPackage rec {
     async-timeout
   ];
 
-  patches = [
-    # Don't parse requirements.txt, https://github.com/currentoor/pymutesync/pull/1
-    (fetchpatch {
-      name = "add-requirements.patch";
-      url = "https://github.com/currentoor/pymutesync/commit/d66910fc83b1ae3060cdb3fe22a6f91fb70a67f0.patch";
-      sha256 = "0axhgriyyv31b1r1yidxcrv0nyrqbb63xw5qrmv2iy2h0v96ijsk";
-    })
-  ];
-
   # Project has not published tests yet
   doCheck = false;
+
   pythonImportsCheck = [ "mutesync" ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/py-air-control-exporter/default.nix b/pkgs/development/python-modules/py-air-control-exporter/default.nix
index 869aea01a29a9..1a8a52fd246e9 100644
--- a/pkgs/development/python-modules/py-air-control-exporter/default.nix
+++ b/pkgs/development/python-modules/py-air-control-exporter/default.nix
@@ -1,6 +1,15 @@
-{ buildPythonPackage, fetchPypi, flask, isPy27, lib, nixosTests
-, prometheus_client, py-air-control, pytestCheckHook, pytest-cov, pytest-runner
-, setuptools-scm }:
+{ lib
+, buildPythonPackage
+, click
+, fetchPypi
+, flask
+, isPy27
+, nixosTests
+, prometheus_client
+, py-air-control
+, pytestCheckHook
+, setuptools-scm
+}:
 
 buildPythonPackage rec {
   pname = "py-air-control-exporter";
@@ -12,14 +21,40 @@ buildPythonPackage rec {
     sha256 = "ece2e446273542e5c0352c9d6e80d8279132c6ada3649c59e87a711448801a3b";
   };
 
-  nativeBuildInputs = [ setuptools-scm ];
-  checkInputs = [ pytestCheckHook pytest-cov pytest-runner ];
-  propagatedBuildInputs = [ flask prometheus_client py-air-control ];
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    click
+    flask
+    prometheus_client
+    py-air-control
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "pytest-runner" ""
+    substituteInPlace setup.cfg \
+      --replace "--cov=py_air_control_exporter" ""
+  '';
+
+  disabledTests = [
+    # Tests are outdated
+    "test_help"
+    "test_unknown_protocol"
+  ];
+
+  pythonImportsCheck = [ "py_air_control_exporter" ];
 
   passthru.tests = { inherit (nixosTests.prometheus-exporters) py-air-control; };
 
   meta = with lib; {
-    description = "Exports Air Quality Metrics to Prometheus.";
+    description = "Exports Air Quality Metrics to Prometheus";
     homepage = "https://github.com/urbas/py-air-control-exporter";
     license = licenses.mit;
     maintainers = with maintainers; [ urbas ];
diff --git a/pkgs/development/python-modules/pymupdf/default.nix b/pkgs/development/python-modules/pymupdf/default.nix
index 501f829dc142a..ff7b9a4649980 100644
--- a/pkgs/development/python-modules/pymupdf/default.nix
+++ b/pkgs/development/python-modules/pymupdf/default.nix
@@ -1,28 +1,53 @@
-{ lib, buildPythonPackage, fetchPypi, mupdf, swig }:
+{ lib
+, buildPythonPackage
+, fetchPypi
+, fetchpatch
+, mupdf
+, swig
+, freetype
+, harfbuzz
+, openjpeg
+, jbig2dec
+, libjpeg_turbo
+, gumbo
+}:
+
 buildPythonPackage rec {
   pname = "pymupdf";
-  version = "1.18.0";
+  version = "1.18.16";
 
   src = fetchPypi {
     pname = "PyMuPDF";
     inherit version;
-    sha256 = "64ce58f92d9edd2631e447175fa13b4024ac3b6dce6e718e0b003c41de6f7952";
+    sha256 = "b21e39098fbbe0fdf269fdb2d1dd25a3847bbf22785ee8903d3a5637c2d0b9d7";
   };
 
-  patchPhase = ''
+  patchFlags = [ "--binary" "--ignore-whitespace" ];
+  patches = [
+    # Add NIX environment support.
+    # Should be removed next pyMuPDF release.
+    (fetchpatch {
+      url = "https://github.com/pymupdf/PyMuPDF/commit/d9b2d42019e5705a1c6621ea0cdfa26da1ce9ad5.patch";
+      sha256 = "fc3f6ad88c8f3933ed9ab9d4db9ebec8bc30ed5113f6ca9d72080b56dfa52ad6";
+    })
+  ];
+
+  postPatch = ''
     substituteInPlace setup.py \
         --replace '/usr/include/mupdf' ${mupdf.dev}/include/mupdf
-    '';
+  '';
   nativeBuildInputs = [ swig ];
-  buildInputs = [ mupdf ];
+  buildInputs = [ mupdf freetype harfbuzz openjpeg jbig2dec libjpeg_turbo gumbo ];
 
   doCheck = false;
 
+  pythonImportsCheck = [ "fitz" ];
+
   meta = with lib; {
     description = "Python bindings for MuPDF's rendering library.";
     homepage = "https://github.com/pymupdf/PyMuPDF";
     maintainers = with maintainers; [ teto ];
-    license =  licenses.agpl3;
+    license = licenses.agpl3Only;
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/python-modules/runway-python/default.nix b/pkgs/development/python-modules/runway-python/default.nix
index 4e062d9928ec8..ffe21701dd2b9 100644
--- a/pkgs/development/python-modules/runway-python/default.nix
+++ b/pkgs/development/python-modules/runway-python/default.nix
@@ -21,12 +21,14 @@
 , deepdiff
 , pytestCheckHook
 , pytest-cov
+, pythonOlder
 , websocket-client
 }:
 
 buildPythonPackage rec {
   pname = "runway-python";
   version = "0.6.1";
+  disabled = pythonOlder "3.6";
 
   src = fetchFromGitHub {
     owner = "runwayml";
@@ -70,6 +72,8 @@ buildPythonPackage rec {
     "test_file_deserialization_remote"
     "test_file_deserialization_absolute_directory"
     "test_file_deserialization_remote_directory"
+    # Fails with a decoding error at the moment
+    "test_inference_async"
   ] ++ lib.optionals (pythonAtLeast "3.9") [
      # AttributeError: module 'base64' has no attribute 'decodestring
      # https://github.com/runwayml/model-sdk/issues/99
diff --git a/pkgs/development/python-modules/scrapy/default.nix b/pkgs/development/python-modules/scrapy/default.nix
index 4ca0731065868..e19e502af2690 100644
--- a/pkgs/development/python-modules/scrapy/default.nix
+++ b/pkgs/development/python-modules/scrapy/default.nix
@@ -113,6 +113,10 @@ buildPythonPackage rec {
     "test_custom_loop_asyncio"
     "test_custom_loop_asyncio_deferred_signal"
     "FileFeedStoragePreFeedOptionsTest"  # https://github.com/scrapy/scrapy/issues/5157
+    # Fails with AssertionError
+    "test_peek_fifo"
+    "test_peek_one_element"
+    "test_peek_lifo"
   ] ++ lib.optionals stdenv.isDarwin [
     "test_xmliter_encoding"
     "test_download"
diff --git a/pkgs/development/python-modules/sopel/default.nix b/pkgs/development/python-modules/sopel/default.nix
index f74fa560adc4b..54fc243be2624 100644
--- a/pkgs/development/python-modules/sopel/default.nix
+++ b/pkgs/development/python-modules/sopel/default.nix
@@ -13,12 +13,12 @@
 
 buildPythonPackage rec {
   pname = "sopel";
-  version = "7.1.0";
+  version = "7.1.2";
   disabled = isPyPy;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "74057d4c86cff744b1f1062f3a9c4ae99eb4f1b17048ceb083293d5f4c7e989b";
+    sha256 = "sha256-8RhIw3Qt0BclH1Ws16JNuFfwiRxJ14lM6MBUK9OvNKA=";
   };
 
   propagatedBuildInputs = [
@@ -36,7 +36,8 @@ buildPythonPackage rec {
   # remove once https://github.com/sopel-irc/sopel/pull/1653 lands
   postPatch = ''
     substituteInPlace requirements.txt \
-      --replace "praw>=4.0.0,<6.0.0" "praw"
+      --replace "praw>=4.0.0,<6.0.0" "praw" \
+      --replace "sqlalchemy<1.4" "sqlalchemy"
   '';
 
   checkInputs = [ pytestCheckHook ];
diff --git a/pkgs/development/python-modules/testfixtures/default.nix b/pkgs/development/python-modules/testfixtures/default.nix
index cd08fe58dcab1..525f23f290ba8 100644
--- a/pkgs/development/python-modules/testfixtures/default.nix
+++ b/pkgs/development/python-modules/testfixtures/default.nix
@@ -1,25 +1,44 @@
-{ lib, buildPythonPackage, fetchPypi, fetchpatch, isPy27
-, mock, pytest, sybil, zope_component, twisted }:
+{ lib
+, buildPythonPackage
+, fetchpatch
+, fetchPypi
+, isPy27
+, mock
+, pytestCheckHook
+, sybil
+, twisted
+, zope_component
+}:
 
 buildPythonPackage rec {
   pname = "testfixtures";
-  version = "6.17.1";
+  version = "6.18.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5ec3a0dd6f71cc4c304fbc024a10cc293d3e0b852c868014b9f233203e149bda";
+    sha256 = "sha256-1L0cT5DqyQpz4b3FnDHQOUPyGNaH88WgnkhHiEGor18=";
   };
 
-  checkInputs = [ pytest mock sybil zope_component twisted ];
+  checkInputs = [
+    pytestCheckHook
+    mock
+    sybil
+    zope_component
+    twisted
+  ];
 
   doCheck = !isPy27;
-  checkPhase = ''
-    # django is too much hasle to setup at the moment
-    pytest -W ignore::DeprecationWarning \
-      --ignore=testfixtures/tests/test_django \
-      -k 'not (log_then_patch or our_wrap_dealing_with_mock_patch or patch_with_dict)' \
-      testfixtures/tests
-  '';
+
+  disabledTestPaths = [
+    # Django is too much hasle to setup at the moment
+    "testfixtures/tests/test_django"
+  ];
+
+  pytestFlagsArray = [
+    "testfixtures/tests"
+  ];
+
+  pythonImportsCheck = [ "testfixtures" ];
 
   meta = with lib; {
     homepage = "https://github.com/Simplistix/testfixtures";
diff --git a/pkgs/development/python-modules/zeroconf/default.nix b/pkgs/development/python-modules/zeroconf/default.nix
index ad84bdd1c5663..edd5819177ee8 100644
--- a/pkgs/development/python-modules/zeroconf/default.nix
+++ b/pkgs/development/python-modules/zeroconf/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "zeroconf";
-  version = "0.33.4";
+  version = "0.34.3";
   format = "setuptools";
   disabled = pythonOlder "3.6";
 
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "jstasiak";
     repo = "python-zeroconf";
     rev = version;
-    sha256 = "sha256-ld8Mo465fJTVNSv6YvKcsPafiIij4PEmeycWB3M3ewU=";
+    sha256 = "sha256-HJSqQl7dd8sN490lqGHWg6QiJblGKKlVMn7UJDQb7ZA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/ruby-modules/with-packages/Gemfile b/pkgs/development/ruby-modules/with-packages/Gemfile
index a3e7f41a2a097..401fa3c66b0f2 100644
--- a/pkgs/development/ruby-modules/with-packages/Gemfile
+++ b/pkgs/development/ruby-modules/with-packages/Gemfile
@@ -55,6 +55,7 @@ source 'https://rubygems.org' do
   gem 'fog-dnsimple'
   gem 'gdk_pixbuf2'
   gem 'gio2'
+  gem 'github-pages'
   gem 'gitlab-markup'
   gem 'glib2'
   # gem 'gobject-introspection' fails on require
diff --git a/pkgs/development/tools/analysis/tfsec/default.nix b/pkgs/development/tools/analysis/tfsec/default.nix
index 1e9f262e3be74..edcaddbd9ce78 100644
--- a/pkgs/development/tools/analysis/tfsec/default.nix
+++ b/pkgs/development/tools/analysis/tfsec/default.nix
@@ -5,13 +5,13 @@
 
 buildGoPackage rec {
   pname = "tfsec";
-  version = "0.56.0";
+  version = "0.57.1";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0kv9g11jgbrbb50qhlfznw9i473gw8vadrrlkvki6y3cfcavghkv";
+    sha256 = "0g3yq2y9z7vnaznmdmdb98djsv8nbai8jvbhfs2g12q55dlm3vf3";
   };
 
   goPackagePath = "github.com/aquasecurity/tfsec";
diff --git a/pkgs/development/tools/backblaze-b2/default.nix b/pkgs/development/tools/backblaze-b2/default.nix
index 171885d989a77..070546a3ff918 100644
--- a/pkgs/development/tools/backblaze-b2/default.nix
+++ b/pkgs/development/tools/backblaze-b2/default.nix
@@ -12,12 +12,12 @@ let
 in
 python3Packages.buildPythonApplication rec {
   pname = "backblaze-b2";
-  version = "2.5.0";
+  version = "3.0.1";
 
   src = python3Packages.fetchPypi {
     inherit version;
     pname = "b2";
-    sha256 = "0sh9k9fnj73ydqnk056m01xkilpxh7f4597cnczqhy21lxzr3d45";
+    sha256 = "sha256-Zr+5J6MCjfth+5fOSfHXpT/CAgD754ZpS1b1NqeGid8=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/tools/electron/default.nix b/pkgs/development/tools/electron/default.nix
index 1c23ca5bf8d35..2bc10265ebc62 100644
--- a/pkgs/development/tools/electron/default.nix
+++ b/pkgs/development/tools/electron/default.nix
@@ -95,33 +95,33 @@ rec {
     headers = "01x6a0r2jawjpl09ixgzap3g0z6znj34hsnnhzanavkbds0ri4k6";
   };
 
-  electron_11 = mkElectron "11.4.10" {
-    x86_64-linux = "bad6af91183bcb27428a258fba3fab24ef3e8435402d6cb2d500fe215b8c920c";
-    x86_64-darwin = "aaa11e61697ec2eec99950082a68eef32bc1231e51ac77cde6d96a12837f5b73";
-    i686-linux = "8e956bad6a6c5f85fe5a53304ffe878191c670ffbc13176fbe01911ba7d6da0f";
-    armv7l-linux = "c9e3873316416426151fbff9a190526e40a3e311d0f348ee6965a8c7948cb9c1";
-    aarch64-linux = "4ee0dab2af08f0d8f0d141a165744c949b068a8a6537ef5ff7973b63266c2abf";
-    aarch64-darwin = "53f96ba6099617c219ca75bde1682abb9e961927e5a3645b38dee11b95517659";
-    headers = "0c7qms8vbirblg6z86s19p5l472p3h8lw1rj7ckgnwna4b68vn33";
+  electron_11 = mkElectron "11.4.11" {
+    x86_64-linux = "8c9525bffa3479e3a2de88f65348585948e4d03ecfc35b71641dc3833d9b639f";
+    x86_64-darwin = "48b89a46c6d4d117bcac6a45fbe0690adfd2b7f1f3602976d8e0859f16324bff";
+    i686-linux = "33eff09dfc655da756b247580b790060c93f306c4a8f33a457e8df1fd4f196c3";
+    armv7l-linux = "58251a2b9fc5ac68ad7e5fd8a1ab07b6e4cd675e8476e6f177388310b1831a3c";
+    aarch64-linux = "edd622f99cd628a90d46fe62cdf8ca473b8125680d4b46a82dfd6dfee6f71088";
+    aarch64-darwin = "03e6023e80b7d1b3e8df23dc69db53b4cc32c0663899f920f9bed8be504d7076";
+    headers = "1rar3c4qx3rylxjqryfr16bcqph8ivs0qgzmiqglyc9avgz9bn9z";
   };
 
-  electron_12 = mkElectron "12.0.15" {
-    x86_64-linux = "0ba1803ba64f2c155dcfc5452a4b7c034390aaea6197395b6195693b5d0bf605";
-    x86_64-darwin = "7da73a8e3eb82a035f0d720709dbbb44cac0166d52ad4858fca9f3d96e6a32ed";
-    i686-linux = "597f5710e6e55e4fb75c769af6e3c7db1924f6795f417e3ff6b37c4da2ae39fc";
-    armv7l-linux = "01138b036812e5461a5871c2f8912baf0adf316df6597eb5c4fd3df8d41fb95e";
-    aarch64-linux = "fe24cf90e3768cafa9939a0107261a97b4f132f9dec24bf0d1d15b591cdad2d6";
-    aarch64-darwin = "c48323f1fd6cd4ebc67a248a83bd7c460a640bf32613d4fecf6be705f3d6803c";
-    headers = "1gbnjgf1pfbca2czn8j74rafiwmgc64nxi6drzm1b7qy2f6lxrl0";
+  electron_12 = mkElectron "12.0.16" {
+    x86_64-linux = "ba20154a752d93f15264619c05c4a08ce6a00fbe13e1f5655b0cca2d4053014c";
+    x86_64-darwin = "0279c9907f4c87861259e686463e910eac214ca4f3da6a4608974b4030347689";
+    i686-linux = "bacfb2135395bbc31de479f81e8392e5619337684e71f8973d4c04dab75a2569";
+    armv7l-linux = "b3ce3e60f5cb9135fa8cb8859f62194ab1ba1d792c6ee7c451877a96bd13d47c";
+    aarch64-linux = "d3ab4f93d32d8fe9674d807c4b216e141b75ee116f73458cc496c57032ebe66f";
+    aarch64-darwin = "d7f390dca9f6af1eb647b65217f470b89a2dc3b2360351e016e283db8f2ce7d8";
+    headers = "0b66a7nbi1mybqy0j8x6hnp9k0jzvr6lpp4zsazhbfpk47px116y";
   };
 
-  electron_13 = mkElectron "13.1.7" {
-    x86_64-linux = "0bb38a5e45609a8c46dd6173447a45477651f3c2ea58f724807d79c8e4a8876e";
-    x86_64-darwin = "be8d05a7f853b9e7020c095c3d8075269832ccf821ca9785135884e6bc893df8";
-    i686-linux = "2a1c84ca8fd2a5b10b918bda11c5e546f4b77f85484a32af24ed44d6f877587d";
-    armv7l-linux = "3d4ed4cbd2ea9dd01d5ad09ed5b408762c69b5827be6fdae2e19681f2a159509";
-    aarch64-linux = "68e174bee2a686926ec2da193831aefc16ff8ec43b46e423044918e6d25d5925";
-    aarch64-darwin = "95489cc66c5638d95cde80189a5ae3477ce09c6cfa4c421b1e8bceea94f4dfba";
-    headers = "0zsnkgixch0c6ihg4drdx9a7gsl35wwfsphgiz80mhbw84slvq0n";
+  electron_13 = mkElectron "13.1.8" {
+    x86_64-linux = "a4630aadd7e510e46ffe30632a69183b240bc19db226c83fab43e998d080e0ef";
+    x86_64-darwin = "05c58efb89c69da53c8a512c2bd1ecb5996d996de16af3a2ed937e1f3bf126bb";
+    i686-linux = "59e6d0d13640ee674a0b1ba96d51704eba8be1220fadf922832f6f52a72e12ec";
+    armv7l-linux = "2b62f9874b4553782e8e5c7d7b667271fe4a5916adb2074a3b56ab9076076617";
+    aarch64-linux = "2071c389cff1196e3ce1be4f5b486372003335bc132a2dbf4dc3b983dd26ee52";
+    aarch64-darwin = "c870b31e30611a4d38557d6992bf5afe8d80f75548a427381aaf37d1d46af524";
+    headers = "1q5gbsxrvf2mqfm91llkzcdlqg8lkpgxqxmzfmrm7na1r01lb4hr";
   };
 }
diff --git a/pkgs/development/tools/fnm/default.nix b/pkgs/development/tools/fnm/default.nix
new file mode 100644
index 0000000000000..a111633858939
--- /dev/null
+++ b/pkgs/development/tools/fnm/default.nix
@@ -0,0 +1,35 @@
+{ lib, stdenv, fetchFromGitHub, rustPlatform, installShellFiles, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fnm";
+  version = "1.26.0";
+
+  src = fetchFromGitHub {
+    owner = "Schniz";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-wKtgMUt7QquT6mS3AI+XrZqbJOZxj6jlJi+7uC9w7xU=";
+  };
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
+
+  cargoSha256 = "sha256-TMhhCVVFTanKdbDp7L3ZaiNohWo5a/jFbQjdRiBlCkk=";
+
+  doCheck = false;
+
+  postInstall = ''
+    installShellCompletion --cmd fnm \
+      --bash <($out/bin/fnm completions --shell bash) \
+      --fish <($out/bin/fnm completions --shell fish) \
+      --zsh <($out/bin/fnm completions --shell zsh)
+  '';
+
+  meta = with lib; {
+    description = "Fast and simple Node.js version manager";
+    homepage = "https://github.com/Schniz/fnm";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ kidonng ];
+  };
+}
diff --git a/pkgs/development/tools/java/java-language-server/default.nix b/pkgs/development/tools/java/java-language-server/default.nix
new file mode 100644
index 0000000000000..47054564f9b7a
--- /dev/null
+++ b/pkgs/development/tools/java/java-language-server/default.nix
@@ -0,0 +1,96 @@
+{ lib, stdenv, fetchFromGitHub
+, jdk, maven
+, runtimeShell, makeWrapper
+}:
+
+let
+  platform =
+    if stdenv.isLinux then "linux"
+    else if stdenv.isDarwin then "mac"
+    else if stdenv.isWindows then "windows"
+    else throw "unsupported platform";
+in
+stdenv.mkDerivation rec {
+  pname = "java-language-server";
+  version = "0.2.38";
+
+  src = fetchFromGitHub {
+    owner = "georgewfraser";
+    repo = pname;
+    # commit hash is used as owner sometimes forgets to set tags. See https://github.com/georgewfraser/java-language-server/issues/104
+    rev = "1dfdc54d1f1e57646a0ec9c0b3f4a4f094bd9f17";
+    sha256 = "sha256-zkbl/SLg09XK2ZhJNzWEtvFCQBRQ62273M/2+4HV1Lk=";
+  };
+
+  fetchedMavenDeps = stdenv.mkDerivation {
+    name = "java-language-server-${version}-maven-deps";
+    inherit src;
+    buildInputs = [ maven ];
+
+    buildPhase = ''
+      runHook preBuild
+
+      mvn package -Dmaven.repo.local=$out -DskipTests
+
+      runHook postBuild
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      find $out -type f \
+        -name \*.lastUpdated -or \
+        -name resolver-status.properties -or \
+        -name _remote.repositories \
+        -delete
+
+      runHook postInstall
+    '';
+
+    dontFixup = true;
+    dontConfigure = true;
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "sha256-YkcQKmm8oeEH7uyUzV/qGoe4LiI6o5wZ7o69qrO3oCA=";
+  };
+
+
+  nativeBuildInputs = [ maven jdk makeWrapper ];
+
+  dontConfigure = true;
+  buildPhase = ''
+    runHook preBuild
+
+    jlink \
+      ${lib.optionalString (!stdenv.isDarwin) "--module-path './jdks/${platform}/jdk-13/jmods'"} \
+      --add-modules java.base,java.compiler,java.logging,java.sql,java.xml,jdk.compiler,jdk.jdi,jdk.unsupported,jdk.zipfs \
+      --output dist/${platform} \
+      --no-header-files \
+      --no-man-pages \
+      --compress 2
+
+    mvn package --offline -Dmaven.repo.local=${fetchedMavenDeps} -DskipTests
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/share/java/java-language-server
+    cp -r dist/classpath dist/*${platform}* $out/share/java/java-language-server
+
+    # a link is not used as lang_server_${platform}.sh makes use of "dirname $0" to access other files
+    makeWrapper $out/share/java/java-language-server/lang_server_${platform}.sh $out/bin/java-language-server
+
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "A Java language server based on v3.0 of the protocol and implemented using the Java compiler API";
+    homepage = "https://github.com/georgewfraser/java-language-server";
+    license = licenses.mit;
+    maintainers = with maintainers; [ hqurve ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/misc/terraform-ls/default.nix b/pkgs/development/tools/misc/terraform-ls/default.nix
index 75b75733af6a0..d484ee56aa11c 100644
--- a/pkgs/development/tools/misc/terraform-ls/default.nix
+++ b/pkgs/development/tools/misc/terraform-ls/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "terraform-ls";
-  version = "0.20.0";
+  version = "0.20.1";
 
   src = fetchFromGitHub {
     owner = "hashicorp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-G1i5SS1BY+h8qPPjrZ9HCnKX3o2VkwvpeHPNxW6rnuI=";
+    sha256 = "sha256-KEuqE09EvI00e2YwPaExuM9ji5Z7YDTOF+4jw6SvtKo=";
   };
-  vendorSha256 = "sha256-nRElOa9IQ31Wh01wTFM6pazDYFnmR06vkU4CI8Gx4Vw=";
+  vendorSha256 = "sha256-hPa1xaYqKs++Ifw732bfs2VHW7DFRggO/faJgX4M2F4=";
 
   ldflags = [ "-s" "-w" "-X main.version=v${version}" "-X main.prerelease=" ];
 
diff --git a/pkgs/development/tools/operator-sdk/default.nix b/pkgs/development/tools/operator-sdk/default.nix
index 0df831b579e11..2818b75ede585 100644
--- a/pkgs/development/tools/operator-sdk/default.nix
+++ b/pkgs/development/tools/operator-sdk/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "operator-sdk";
-  version = "1.5.0";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     owner = "operator-framework";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-95fTfUKoknGBIoc/ALd5w9X89Tl9DBxapl9EgWENsa0=";
+    sha256 = "1qvwk2gyawa3ihi5zqynrimxf426x22kplr3gdb91m9bx9dwqs3v";
   };
 
-  vendorSha256 = "sha256-Sp0ml5tnsbnuyk3NkA80dmFj6IOiL/NeYYbEbr7EPRY=";
+  vendorSha256 = "1chfiqxljpq6rad4fnqf3dcri63qr9vb765kphw98ly4s0mwm1aj";
 
   doCheck = false;
 
diff --git a/pkgs/development/tools/rust/rust-analyzer/default.nix b/pkgs/development/tools/rust/rust-analyzer/default.nix
index 25b6ff680416b..915dad400b4c2 100644
--- a/pkgs/development/tools/rust/rust-analyzer/default.nix
+++ b/pkgs/development/tools/rust/rust-analyzer/default.nix
@@ -7,14 +7,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-analyzer-unwrapped";
-  version = "2021-08-02";
-  cargoSha256 = "10mdkqf6fqbzx49gwc283ms56yvrcdlvyk4y98jf33b8g5jmr8j5";
+  version = "2021-08-09";
+  cargoSha256 = "sha256-r01riAztIlwxRjvqQXofmqv5875nqQ0Qb9KALvKy4u8=";
 
   src = fetchFromGitHub {
     owner = "rust-analyzer";
     repo = "rust-analyzer";
     rev = version;
-    sha256 = "1nh1naaqc6f40raz31a0vwypaxm5drzdl2bwjfqx2gydy6051gcl";
+    sha256 = "sha256-l9F/cznYHxBdnb3NerIXzOMrzRnxdka0vExzUtKkBfw=";
   };
 
   buildAndTestSubdir = "crates/rust-analyzer";
diff --git a/pkgs/development/tools/rust/rust-analyzer/update.sh b/pkgs/development/tools/rust/rust-analyzer/update.sh
index 893477735f53e..91bde976ebdb2 100755
--- a/pkgs/development/tools/rust/rust-analyzer/update.sh
+++ b/pkgs/development/tools/rust/rust-analyzer/update.sh
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl jq nix-prefetch
+#!nix-shell -i bash -p curl jq nix-prefetch libarchive
 set -euo pipefail
 cd "$(dirname "$0")"
 owner=rust-analyzer
@@ -46,19 +46,31 @@ sed "s#cargoSha256 = \".*\"#cargoSha256 = \"$cargo_sha256\"#" \
 
 # Update vscode extension
 
+extension_ver=$(curl "https://github.com/rust-analyzer/rust-analyzer/releases/download/$ver/rust-analyzer.vsix" -L |
+    bsdtar -xf - --to-stdout extension/package.json | # Use bsdtar to extract vsix(zip).
+    jq --raw-output '.version')
+echo "Extension version: $extension_ver"
+
 build_deps="../../../../misc/vscode-extensions/rust-analyzer/build-deps"
 # We need devDependencies to build vsix.
-jq '{ name, version, dependencies: (.dependencies + .devDependencies) }' "$node_src/package.json" \
+jq '{ name, version: $ver, dependencies: (.dependencies + .devDependencies) }' "$node_src/package.json" \
+    --arg ver "$extension_ver" \
     >"$build_deps/package.json.new"
 
 # FIXME: rollup@2.55.0 breaks the build: https://github.com/rollup/rollup/issues/4195
 sed 's/"rollup": ".*"/"rollup": "=2.51.1"/' --in-place "$build_deps/package.json.new"
 
-if cmp --quiet "$build_deps"/package.json{.new,}; then
-    echo "package.json not changed, skip updating nodePackages"
-    rm "$build_deps"/package.json.new
+old_deps="$(jq '.dependencies' "$build_deps"/package.json)"
+new_deps="$(jq '.dependencies' "$build_deps"/package.json.new)"
+if [[ "$old_deps" == "$new_deps" ]]; then
+    echo "package.json dependencies not changed, do simple version change"
+
+    sed -E '/^  "rust-analyzer-build-deps/,+3 s/version = ".*"/version = "'"$extension_ver"'"/' \
+        --in-place ../../../node-packages/node-packages.nix
+    mv "$build_deps"/package.json{.new,}
+
 else
-    echo "package.json changed, updating nodePackages"
+    echo "package.json dependencies changed, updating nodePackages"
     mv "$build_deps"/package.json{.new,}
 
     pushd "../../../node-packages"
diff --git a/pkgs/games/0ad/wrapper.nix b/pkgs/games/0ad/wrapper.nix
index ede151307d553..3511dc0bed498 100644
--- a/pkgs/games/0ad/wrapper.nix
+++ b/pkgs/games/0ad/wrapper.nix
@@ -4,7 +4,6 @@ assert zeroad-unwrapped.version == zeroad-data.version;
 
 buildEnv {
   name = "zeroad-${zeroad-unwrapped.version}";
-  inherit (zeroad-unwrapped) meta;
 
   nativeBuildInputs = [ makeWrapper ];
 
@@ -18,4 +17,8 @@ buildEnv {
         --set ZEROAD_ROOTDIR "$out/share/0ad"
     done
   '';
+
+  meta = zeroad-unwrapped.meta // {
+    hydraPlatforms = [];
+  };
 }
diff --git a/pkgs/games/ecwolf/default.nix b/pkgs/games/ecwolf/default.nix
index b7bb382db835a..251b51df43a82 100644
--- a/pkgs/games/ecwolf/default.nix
+++ b/pkgs/games/ecwolf/default.nix
@@ -1,14 +1,5 @@
-{stdenv, lib, fetchurl, makeDesktopItem, copyDesktopItems, cmake, pkg-config, zlib, bzip2, libjpeg, SDL, SDL_mixer, gtk2}:
-
-let
-  desktopItem = makeDesktopItem {
-    name = "ecwolf";
-    exec = "ecwolf";
-    comment = "Enhanced Wolfenstein 3D port";
-    desktopName = "Wolfenstein 3D";
-    categories = "Game;";
-  };
-in
+{ stdenv, lib, fetchurl, makeDesktopItem, copyDesktopItems, cmake, pkg-config, zlib, bzip2, libjpeg, SDL, SDL_mixer, gtk2 }:
+
 stdenv.mkDerivation rec {
   pname = "ecwolf";
   version = "1.3.3";
@@ -18,10 +9,18 @@ stdenv.mkDerivation rec {
     sha256 = "1sbdv672dz47la5a5qwmdi1v258k9kc5dkx7cdj2b6gk8nbm2srl";
   };
 
-  nativeBuildInputs = [ cmake pkg-config ];
-  buildInputs = [ zlib bzip2 libjpeg SDL SDL_mixer gtk2 copyDesktopItems ];
+  nativeBuildInputs = [ cmake copyDesktopItems pkg-config ];
+  buildInputs = [ zlib bzip2 libjpeg SDL SDL_mixer gtk2 ];
 
-  desktopItems = [ desktopItem ];
+  desktopItems = [
+    (makeDesktopItem {
+      name = "ecwolf";
+      exec = "ecwolf";
+      comment = "Enhanced Wolfenstein 3D port";
+      desktopName = "Wolfenstein 3D";
+      categories = "Game;";
+    })
+  ];
 
   # Change the location where the ecwolf executable looks for the ecwolf.pk3
   # file.
@@ -35,7 +34,7 @@ stdenv.mkDerivation rec {
     sed -i -e "s|ecwolf.pk3|$out/share/ecwolf/ecwolf.pk3|" src/version.h
   ''
   # Disable app bundle creation on Darwin. It fails, and it is not needed to run it from the Nix store
-  + lib.optionalString (stdenv.isDarwin) ''
+  + lib.optionalString stdenv.isDarwin ''
     sed -i -e "s|include(\''${CMAKE_CURRENT_SOURCE_DIR}/macosx/install.txt)||" src/CMakeLists.txt
   '';
 
diff --git a/pkgs/misc/screensavers/betterlockscreen/default.nix b/pkgs/misc/screensavers/betterlockscreen/default.nix
index facac2717c4c3..b7f8ce99b533b 100644
--- a/pkgs/misc/screensavers/betterlockscreen/default.nix
+++ b/pkgs/misc/screensavers/betterlockscreen/default.nix
@@ -1,39 +1,50 @@
-{
-  lib, stdenv, makeWrapper, fetchFromGitHub,
-  imagemagick, i3lock-color, xdpyinfo, xrandr, bc, feh, procps, xrdb
+{ fetchFromGitHub
+, lib
+, makeWrapper
+, stdenv
+
+  # Dependencies (@see https://github.com/pavanjadhaw/betterlockscreen/blob/master/shell.nix)
+, bc
+, coreutils
+, i3lock-color
+, gawk
+, gnugrep
+, gnused
+, imagemagick
+, procps
+, xdpyinfo
+, xrandr
+, xset
 }:
 
 stdenv.mkDerivation rec {
   pname = "betterlockscreen";
-  version = "3.2.0";
+  version = "4.0.0";
 
   src = fetchFromGitHub {
     owner = "pavanjadhaw";
     repo = "betterlockscreen";
-    rev = version;
-    sha256 = "sha256-UOMCTHtw1C+MiJL6AQ+8gqmmbqrs1QTzEi1Ar03PyMs=";
+    rev = "v${version}";
+    sha256 = "1ha1yddrcmbsdljdg3gn7i42csbw8h3zgf4i3mcsmbz8nsvc2wdc";
   };
 
   nativeBuildInputs = [ makeWrapper ];
 
-  patches = [ ./replace-i3lock.patch ];
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp betterlockscreen $out/bin/betterlockscreen
+    wrapProgram "$out/bin/betterlockscreen" --prefix PATH : "$out/bin:${lib.makeBinPath [ bc coreutils i3lock-color gawk gnugrep gnused imagemagick procps xdpyinfo xrandr xset ]}"
 
-  installPhase =
-    let
-      PATH =
-        lib.makeBinPath
-        [imagemagick i3lock-color xdpyinfo xrandr bc feh procps xrdb];
-    in ''
-      mkdir -p $out/bin
-      cp betterlockscreen $out/bin/betterlockscreen
-      wrapProgram "$out/bin/betterlockscreen" --prefix PATH : "$out/bin:${PATH}"
-    '';
+    runHook postInstall
+  '';
 
   meta = with lib; {
-    description = "A simple minimal lock screen which allows you to cache images with different filters and lockscreen with blazing speed";
+    description = "Fast and sweet looking lockscreen for linux systems with effects!";
     homepage = "https://github.com/pavanjadhaw/betterlockscreen";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ eyjhb ];
+    maintainers = with maintainers; [ eyjhb sebtm ];
   };
 }
diff --git a/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch b/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch
deleted file mode 100644
index 439c3561f9604..0000000000000
--- a/pkgs/misc/screensavers/betterlockscreen/replace-i3lock.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/betterlockscreen b/betterlockscreen
-index 6dd06e0..746d820 100755
---- a/betterlockscreen
-+++ b/betterlockscreen
-@@ -87,7 +87,7 @@ prelock() {
- lock() {
- 	#$1 image path
- 
--	i3lock \
-+	i3lock-color \
- 		-c 00000000 \
- 		-t -i "$1" \
- 		--timepos='x+110:h-70' \
-
diff --git a/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix
index 0fa9a4bb4bee5..c111f01621b36 100644
--- a/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix
+++ b/pkgs/misc/vscode-extensions/ms-vsliveshare-vsliveshare/default.nix
@@ -38,8 +38,8 @@ in ((vscode-utils.override { stdenv = gccStdenv; }).buildVscodeMarketplaceExtens
   mktplcRef = {
     name = "vsliveshare";
     publisher = "ms-vsliveshare";
-    version = "1.0.4498";
-    sha256 = "01gg9jqkq9z05ckw0mnqfr769359j6h3z8ay6r17jj6m4mhy2m5g";
+    version = "1.0.4673";
+    sha256 = "1ys3lilc2r3n250s6pfvadrabnvqpzy74awjmvw79jrbvvk1iw1z";
   };
 }).overrideAttrs({ nativeBuildInputs ? [], buildInputs ? [], ... }: {
   nativeBuildInputs = nativeBuildInputs ++ [
diff --git a/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json b/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
index 89fc84022f60a..1e69d9e81bae1 100644
--- a/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
+++ b/pkgs/misc/vscode-extensions/rust-analyzer/build-deps/package.json
@@ -1,6 +1,6 @@
 {
   "name": "rust-analyzer",
-  "version": "0.4.0-dev",
+  "version": "0.2.702",
   "dependencies": {
     "https-proxy-agent": "^5.0.0",
     "node-fetch": "^2.6.1",
diff --git a/pkgs/misc/vscode-extensions/rust-analyzer/default.nix b/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
index 143a74fe82dcf..479f9f4c6ea99 100644
--- a/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
+++ b/pkgs/misc/vscode-extensions/rust-analyzer/default.nix
@@ -12,9 +12,6 @@ let
   pname = "rust-analyzer";
   publisher = "matklad";
 
-  # Follow the unstable version of rust-analyzer, since the extension is not stable yet.
-  inherit (rust-analyzer) version;
-
   build-deps = nodePackages."rust-analyzer-build-deps-../../misc/vscode-extensions/rust-analyzer/build-deps";
   # FIXME: Making a new derivation to link `node_modules` and run `npm run package`
   # will cause a build failure.
@@ -22,13 +19,27 @@ let
     src = "${rust-analyzer.src}/editors/code";
     outputs = [ "vsix" "out" ];
 
+    releaseTag = rust-analyzer.version;
+
+    nativeBuildInputs = [ jq moreutils ];
+
+    # Follows https://github.com/rust-analyzer/rust-analyzer/blob/41949748a6123fd6061eb984a47f4fe780525e63/xtask/src/dist.rs#L39-L65
     postInstall = ''
-      npm run package
-      mkdir $vsix
-      cp ${pname}.vsix $vsix/${pname}.zip
+      jq '
+        .version = $ENV.version |
+        .releaseTag = $ENV.releaseTag |
+        .enableProposedApi = false |
+        walk(del(.["$generated-start"]?) | del(.["$generated-end"]?))
+      ' package.json | sponge package.json
+
+      mkdir -p $vsix
+      npx vsce package -o $vsix/${pname}.zip
     '';
   };
 
+  # Use the plugin version as in vscode marketplace, updated by update script.
+  inherit (vsix) version;
+
 in
 vscode-utils.buildVscodeExtension {
   inherit version vsix;
diff --git a/pkgs/os-specific/linux/fwts/default.nix b/pkgs/os-specific/linux/fwts/default.nix
index d937d4b75f65b..ea42e90a3fe80 100644
--- a/pkgs/os-specific/linux/fwts/default.nix
+++ b/pkgs/os-specific/linux/fwts/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchzip, autoreconfHook, pkg-config, glib, pcre
-, json_c, flex, bison, dtc, pciutils, dmidecode, iasl, libbsd }:
+, json_c, flex, bison, dtc, pciutils, dmidecode, acpica-tools, libbsd }:
 
 stdenv.mkDerivation rec {
   pname = "fwts";
@@ -12,13 +12,13 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
-  buildInputs = [ glib pcre json_c flex bison dtc pciutils dmidecode iasl libbsd ];
+  buildInputs = [ glib pcre json_c flex bison dtc pciutils dmidecode acpica-tools libbsd ];
 
   postPatch = ''
     substituteInPlace src/lib/include/fwts_binpaths.h \
       --replace "/usr/bin/lspci"      "${pciutils}/bin/lspci" \
       --replace "/usr/sbin/dmidecode" "${dmidecode}/bin/dmidecode" \
-      --replace "/usr/bin/iasl"       "${iasl}/bin/iasl"
+      --replace "/usr/bin/iasl"       "${acpica-tools}/bin/iasl"
   '';
 
   enableParallelBuilding = true;
diff --git a/pkgs/servers/dns/knot-dns/default.nix b/pkgs/servers/dns/knot-dns/default.nix
index 34032aa3597e7..4adb649e08680 100644
--- a/pkgs/servers/dns/knot-dns/default.nix
+++ b/pkgs/servers/dns/knot-dns/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "knot-dns";
-  version = "3.1.0";
+  version = "3.1.1";
 
   src = fetchurl {
     url = "https://secure.nic.cz/files/knot-dns/knot-${version}.tar.xz";
-    sha256 = "54323712e3cbc3d4c70a15777818fd2ff0de30cebb6c22e2946372b15b2653ed";
+    sha256 = "75bfb1acaca774ed3dd781dc74780298dc0fd51b54e4b61015e7487d6cd2067c";
   };
 
   outputs = [ "bin" "out" "dev" ];
@@ -27,12 +27,6 @@ stdenv.mkDerivation rec {
     ./runtime-deps.patch
   ];
 
-  # Disable knotd journal tests on platforms that don't use 4k sysconf(_SC_PAGESIZE).
-  # The journal most likely works fine, but some of the tests currently don't.
-  postPatch = lib.optionalString (doCheck && stdenv.isDarwin && stdenv.isAarch64) ''
-    sed '/^\tknot\/test_journal\>/d' -i tests/Makefile.am
-  '';
-
   nativeBuildInputs = [ pkg-config autoreconfHook ];
   buildInputs = [
     gnutls liburcu libidn2 libunistring
diff --git a/pkgs/servers/gpsd/default.nix b/pkgs/servers/gpsd/default.nix
index 62b711af67a09..e7746fa34f0a5 100644
--- a/pkgs/servers/gpsd/default.nix
+++ b/pkgs/servers/gpsd/default.nix
@@ -1,40 +1,71 @@
-{ stdenv, lib ,fetchurl, scons, pkg-config, dbus, ncurses
-, libusb1, docbook_xml_dtd_412, docbook_xsl, bc
+{ stdenv
+, lib
+, fetchurl
+
+# nativeBuildInputs
+, scons
+, pkg-config
+
+# buildInputs
+, dbus
+, libusb1
+, ncurses
+, pps-tools
+, python3Packages
 
 # optional deps for GUI packages
 , guiSupport ? true
-, dbus-glib ? null, libX11 ? null, libXt ? null, libXpm ? null, libXaw ? null, libXext ? null
-, gobject-introspection ? null, pango ? null, gdk-pixbuf ? null, atk ? null, wrapGAppsHook ? null
-
-, libxslt, xmlto, gpsdUser ? "gpsd", gpsdGroup ? "dialout"
-, pps-tools
-, python3Packages
+, dbus-glib
+, libX11
+, libXt
+, libXpm
+, libXaw
+, libXext
+, gobject-introspection
+, pango
+, gdk-pixbuf
+, atk
+, wrapGAppsHook
+
+, gpsdUser ? "gpsd", gpsdGroup ? "dialout"
 }:
 
-
 stdenv.mkDerivation rec {
   pname = "gpsd";
-  version = "3.22";
+  version = "3.23";
 
   src = fetchurl {
     url = "mirror://savannah/${pname}/${pname}-${version}.tar.gz";
-    sha256 = "18rplv1cd76ndb2wc91jarjmfm2nk508pykv1hir79bqbwmdygvq";
+    sha256 = "sha256-UiwjYqfrLXrDfqoVBPEq3tHDc0eah7oGzGeVl0tWe7w=";
   };
 
+  # TODO: render & install HTML documentation using asciidoctor
   nativeBuildInputs = [
-    scons pkg-config docbook_xml_dtd_412 docbook_xsl xmlto bc
-    python3Packages.python
+    pkg-config
     python3Packages.wrapPython
-  ]
-  ++ lib.optionals guiSupport [ wrapGAppsHook gobject-introspection ];
+    scons
+  ] ++ lib.optionals guiSupport [
+    gobject-introspection
+    wrapGAppsHook
+  ];
 
   buildInputs = [
-    python3Packages.python dbus ncurses
-    libxslt libusb1 pps-tools
-  ]
-  ++ lib.optionals guiSupport [
-    dbus-glib libX11 libXt libXpm libXaw libXext
-    gobject-introspection pango gdk-pixbuf atk
+    dbus
+    libusb1
+    ncurses
+    pps-tools
+    python3Packages.python
+  ] ++ lib.optionals guiSupport [
+    atk
+    dbus-glib
+    gdk-pixbuf
+    gobject-introspection
+    libX11
+    libXaw
+    libXext
+    libXpm
+    libXt
+    pango
   ];
 
   pythonPath = lib.optionals guiSupport [
@@ -46,8 +77,6 @@ stdenv.mkDerivation rec {
     ./sconstruct-env-fixes.patch
   ];
 
-  # - leapfetch=no disables going online at build time to fetch leap-seconds
-  #   info. See <gpsd-src>/build.txt for more info.
   preBuild = ''
     patchShebangs .
     sed -e "s|systemd_dir = .*|systemd_dir = '$out/lib/systemd/system'|" -i SConscript
@@ -57,6 +86,8 @@ stdenv.mkDerivation rec {
     sconsFlags+=" python_libdir=$out/lib/${python3Packages.python.libPrefix}/site-packages"
   '';
 
+  # - leapfetch=no disables going online at build time to fetch leap-seconds
+  #   info. See <gpsd-src>/build.txt for more info.
   sconsFlags = [
     "leapfetch=no"
     "gpsd_user=${gpsdUser}"
@@ -73,6 +104,7 @@ stdenv.mkDerivation rec {
   preInstall = ''
     mkdir -p "$out/lib/udev/rules.d"
   '';
+
   installTargets = [ "install" "udev-install" ];
 
   # remove binaries for x-less install because xgps sconsflag is partially broken
@@ -103,7 +135,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = "https://gpsd.gitlab.io/gpsd/index.html";
     changelog = "https://gitlab.com/gpsd/gpsd/-/blob/release-${version}/NEWS";
-    license = licenses.bsd3;
+    license = licenses.bsd2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor rasendubi ];
   };
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index 717f83d54870f..6677be105bb9d 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "2021.8.4";
+  version = "2021.8.5";
   components = {
     "abode" = ps: with ps; [ abodepy ];
     "accuweather" = ps: with ps; [ accuweather ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 87dcd3f545d0b..384766852c2e5 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -138,7 +138,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2021.8.4";
+  hassVersion = "2021.8.5";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -155,7 +155,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = version;
-    sha256 = "0xnw6a1wfk0br0lyplhbp64fqbywa3ld3ggj0czyi1c0n8pqx7cq";
+    sha256 = "0alyr87vm0szljw1lgdsv7085rl0m9r16nwdprwskhcjlwllk1bh";
   };
 
   # leave this in, so users don't have to constantly update their downstream patch handling
diff --git a/pkgs/servers/home-assistant/frontend.nix b/pkgs/servers/home-assistant/frontend.nix
index 72e48629a6d2d..926cb48ce30e9 100644
--- a/pkgs/servers/home-assistant/frontend.nix
+++ b/pkgs/servers/home-assistant/frontend.nix
@@ -4,11 +4,11 @@ buildPythonPackage rec {
   # the frontend version corresponding to a specific home-assistant version can be found here
   # https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/frontend/manifest.json
   pname = "home-assistant-frontend";
-  version = "20210804.0";
+  version = "20210809.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-0VCukSHI4PXAecxHc1DJSQ1GrErenNb0K4OhSIgkQbs=";
+    sha256 = "sha256-5NWNDhQ7XKK9/tC+SbpwOm2MSA2VGHLcE1ggyl6vPkc=";
   };
 
   # there is nothing to strip in this package
diff --git a/pkgs/servers/isso/default.nix b/pkgs/servers/isso/default.nix
index 3338f8b2a84d9..6550659898e07 100644
--- a/pkgs/servers/isso/default.nix
+++ b/pkgs/servers/isso/default.nix
@@ -1,11 +1,23 @@
-{ lib, python3Packages, fetchFromGitHub }:
+{ pkgs, nodejs, lib, python3Packages, fetchFromGitHub }:
+let
+  nodeEnv = import ./node-env.nix {
+    inherit (pkgs) stdenv lib python2 runCommand writeTextFile;
+    inherit pkgs nodejs;
+    libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+  };
+  nodePackages = import ./node-packages.nix {
+    inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+    inherit nodeEnv;
+  };
 
+  nodeDependencies = (nodePackages.shell.override (old: {
+  })).nodeDependencies;
+in
 with python3Packages; buildPythonApplication rec {
 
   pname = "isso";
   version = "0.12.5";
 
-  # no tests on PyPI
   src = fetchFromGitHub {
     owner = "posativ";
     repo = pname;
@@ -25,8 +37,16 @@ with python3Packages; buildPythonApplication rec {
 
   nativeBuildInputs = [
     cffi
+    nodejs
   ];
 
+  preBuild = ''
+    ln -s ${nodeDependencies}/lib/node_modules ./node_modules
+    export PATH="${nodeDependencies}/bin:$PATH"
+
+    make js
+  '';
+
   checkInputs = [ nose ];
 
   checkPhase = ''
@@ -40,4 +60,3 @@ with python3Packages; buildPythonApplication rec {
     maintainers = with maintainers; [ fgaz ];
   };
 }
-
diff --git a/pkgs/servers/isso/node-env.nix b/pkgs/servers/isso/node-env.nix
new file mode 100644
index 0000000000000..21089c4d5459e
--- /dev/null
+++ b/pkgs/servers/isso/node-env.nix
@@ -0,0 +1,573 @@
+# This file originates from node2nix
+
+{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile}:
+
+let
+  # Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
+  utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;
+
+  python = if nodejs ? python then nodejs.python else python2;
+
+  # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
+  tarWrapper = runCommand "tarWrapper" {} ''
+    mkdir -p $out/bin
+
+    cat > $out/bin/tar <<EOF
+    #! ${stdenv.shell} -e
+    $(type -p tar) "\$@" --warning=no-unknown-keyword --delay-directory-restore
+    EOF
+
+    chmod +x $out/bin/tar
+  '';
+
+  # Function that generates a TGZ file from a NPM project
+  buildNodeSourceDist =
+    { name, version, src, ... }:
+
+    stdenv.mkDerivation {
+      name = "node-tarball-${name}-${version}";
+      inherit src;
+      buildInputs = [ nodejs ];
+      buildPhase = ''
+        export HOME=$TMPDIR
+        tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
+      '';
+      installPhase = ''
+        mkdir -p $out/tarballs
+        mv $tgzFile $out/tarballs
+        mkdir -p $out/nix-support
+        echo "file source-dist $out/tarballs/$tgzFile" >> $out/nix-support/hydra-build-products
+      '';
+    };
+
+  includeDependencies = {dependencies}:
+    lib.optionalString (dependencies != [])
+      (lib.concatMapStrings (dependency:
+        ''
+          # Bundle the dependencies of the package
+          mkdir -p node_modules
+          cd node_modules
+
+          # Only include dependencies if they don't exist. They may also be bundled in the package.
+          if [ ! -e "${dependency.name}" ]
+          then
+              ${composePackage dependency}
+          fi
+
+          cd ..
+        ''
+      ) dependencies);
+
+  # Recursively composes the dependencies of a package
+  composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+    builtins.addErrorContext "while evaluating node package '${packageName}'" ''
+      DIR=$(pwd)
+      cd $TMPDIR
+
+      unpackFile ${src}
+
+      # Make the base dir in which the target dependency resides first
+      mkdir -p "$(dirname "$DIR/${packageName}")"
+
+      if [ -f "${src}" ]
+      then
+          # Figure out what directory has been unpacked
+          packageDir="$(find . -maxdepth 1 -type d | tail -1)"
+
+          # Restore write permissions to make building work
+          find "$packageDir" -type d -exec chmod u+x {} \;
+          chmod -R u+w "$packageDir"
+
+          # Move the extracted tarball into the output folder
+          mv "$packageDir" "$DIR/${packageName}"
+      elif [ -d "${src}" ]
+      then
+          # Get a stripped name (without hash) of the source directory.
+          # On old nixpkgs it's already set internally.
+          if [ -z "$strippedName" ]
+          then
+              strippedName="$(stripHash ${src})"
+          fi
+
+          # Restore write permissions to make building work
+          chmod -R u+w "$strippedName"
+
+          # Move the extracted directory into the output folder
+          mv "$strippedName" "$DIR/${packageName}"
+      fi
+
+      # Unset the stripped name to not confuse the next unpack step
+      unset strippedName
+
+      # Include the dependencies of the package
+      cd "$DIR/${packageName}"
+      ${includeDependencies { inherit dependencies; }}
+      cd ..
+      ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+    '';
+
+  pinpointDependencies = {dependencies, production}:
+    let
+      pinpointDependenciesFromPackageJSON = writeTextFile {
+        name = "pinpointDependencies.js";
+        text = ''
+          var fs = require('fs');
+          var path = require('path');
+
+          function resolveDependencyVersion(location, name) {
+              if(location == process.env['NIX_STORE']) {
+                  return null;
+              } else {
+                  var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
+
+                  if(fs.existsSync(dependencyPackageJSON)) {
+                      var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
+
+                      if(dependencyPackageObj.name == name) {
+                          return dependencyPackageObj.version;
+                      }
+                  } else {
+                      return resolveDependencyVersion(path.resolve(location, ".."), name);
+                  }
+              }
+          }
+
+          function replaceDependencies(dependencies) {
+              if(typeof dependencies == "object" && dependencies !== null) {
+                  for(var dependency in dependencies) {
+                      var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+
+                      if(resolvedVersion === null) {
+                          process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+                      } else {
+                          dependencies[dependency] = resolvedVersion;
+                      }
+                  }
+              }
+          }
+
+          /* Read the package.json configuration */
+          var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+
+          /* Pinpoint all dependencies */
+          replaceDependencies(packageObj.dependencies);
+          if(process.argv[2] == "development") {
+              replaceDependencies(packageObj.devDependencies);
+          }
+          replaceDependencies(packageObj.optionalDependencies);
+
+          /* Write the fixed package.json file */
+          fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
+        '';
+      };
+    in
+    ''
+      node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
+
+      ${lib.optionalString (dependencies != [])
+        ''
+          if [ -d node_modules ]
+          then
+              cd node_modules
+              ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+              cd ..
+          fi
+        ''}
+    '';
+
+  # Recursively traverses all dependencies of a package and pinpoints all
+  # dependencies in the package.json file to the versions that are actually
+  # being used.
+
+  pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
+    ''
+      if [ -d "${packageName}" ]
+      then
+          cd "${packageName}"
+          ${pinpointDependencies { inherit dependencies production; }}
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+      fi
+    '';
+
+  # Extract the Node.js source code which is used to compile packages with
+  # native bindings
+  nodeSources = runCommand "node-sources" {} ''
+    tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
+    mv node-* $out
+  '';
+
+  # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
+  addIntegrityFieldsScript = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      function augmentDependencies(baseDir, dependencies) {
+          for(var dependencyName in dependencies) {
+              var dependency = dependencies[dependencyName];
+
+              // Open package.json and augment metadata fields
+              var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
+              var packageJSONPath = path.join(packageJSONDir, "package.json");
+
+              if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
+                  console.log("Adding metadata fields to: "+packageJSONPath);
+                  var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+
+                  if(dependency.integrity) {
+                      packageObj["_integrity"] = dependency.integrity;
+                  } else {
+                      packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+                  }
+
+                  if(dependency.resolved) {
+                      packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
+                  } else {
+                      packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+                  }
+
+                  if(dependency.from !== undefined) { // Adopt from property if one has been provided
+                      packageObj["_from"] = dependency.from;
+                  }
+
+                  fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
+              }
+
+              // Augment transitive dependencies
+              if(dependency.dependencies !== undefined) {
+                  augmentDependencies(packageJSONDir, dependency.dependencies);
+              }
+          }
+      }
+
+      if(fs.existsSync("./package-lock.json")) {
+          var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
+
+          if(![1, 2].includes(packageLock.lockfileVersion)) {
+             process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
+             process.exit(1);
+          }
+
+          if(packageLock.dependencies !== undefined) {
+              augmentDependencies(".", packageLock.dependencies);
+          }
+      }
+    '';
+  };
+
+  # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
+  reconstructPackageLock = writeTextFile {
+    name = "addintegrityfields.js";
+    text = ''
+      var fs = require('fs');
+      var path = require('path');
+
+      var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+      var lockObj = {
+          name: packageObj.name,
+          version: packageObj.version,
+          lockfileVersion: 1,
+          requires: true,
+          dependencies: {}
+      };
+
+      function augmentPackageJSON(filePath, dependencies) {
+          var packageJSON = path.join(filePath, "package.json");
+          if(fs.existsSync(packageJSON)) {
+              var packageObj = JSON.parse(fs.readFileSync(packageJSON));
+              dependencies[packageObj.name] = {
+                  version: packageObj.version,
+                  integrity: "sha1-000000000000000000000000000=",
+                  dependencies: {}
+              };
+              processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
+          }
+      }
+
+      function processDependencies(dir, dependencies) {
+          if(fs.existsSync(dir)) {
+              var files = fs.readdirSync(dir);
+
+              files.forEach(function(entry) {
+                  var filePath = path.join(dir, entry);
+                  var stats = fs.statSync(filePath);
+
+                  if(stats.isDirectory()) {
+                      if(entry.substr(0, 1) == "@") {
+                          // When we encounter a namespace folder, augment all packages belonging to the scope
+                          var pkgFiles = fs.readdirSync(filePath);
+
+                          pkgFiles.forEach(function(entry) {
+                              if(stats.isDirectory()) {
+                                  var pkgFilePath = path.join(filePath, entry);
+                                  augmentPackageJSON(pkgFilePath, dependencies);
+                              }
+                          });
+                      } else {
+                          augmentPackageJSON(filePath, dependencies);
+                      }
+                  }
+              });
+          }
+      }
+
+      processDependencies("node_modules", lockObj.dependencies);
+
+      fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
+    '';
+  };
+
+  prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
+    let
+      forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
+    in
+    ''
+        # Pinpoint the versions of all dependencies to the ones that are actually being used
+        echo "pinpointing versions of dependencies..."
+        source $pinpointDependenciesScriptPath
+
+        # Patch the shebangs of the bundled modules to prevent them from
+        # calling executables outside the Nix store as much as possible
+        patchShebangs .
+
+        # Deploy the Node.js package by running npm install. Since the
+        # dependencies have been provided already by ourselves, it should not
+        # attempt to install them again, which is good, because we want to make
+        # it Nix's responsibility. If it needs to install any dependencies
+        # anyway (e.g. because the dependency parameters are
+        # incomplete/incorrect), it fails.
+        #
+        # The other responsibilities of NPM are kept -- version checks, build
+        # steps, postprocessing etc.
+
+        export HOME=$TMPDIR
+        cd "${packageName}"
+        runHook preRebuild
+
+        ${lib.optionalString bypassCache ''
+          ${lib.optionalString reconstructLock ''
+            if [ -f package-lock.json ]
+            then
+                echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+                echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+                rm package-lock.json
+            else
+                echo "No package-lock.json file found, reconstructing..."
+            fi
+
+            node ${reconstructPackageLock}
+          ''}
+
+          node ${addIntegrityFieldsScript}
+        ''}
+
+        npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+
+        if [ "''${dontNpmInstall-}" != "1" ]
+        then
+            # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+            rm -f npm-shrinkwrap.json
+
+            npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
+        fi
+    '';
+
+  # Builds and composes an NPM package including all its dependencies
+  buildNodePackage =
+    { name
+    , packageName
+    , version
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , preRebuild ? ""
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , meta ? {}
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
+    in
+    stdenv.mkDerivation ({
+      name = "${name}-${version}";
+      buildInputs = [ tarWrapper python nodejs ]
+        ++ lib.optional (stdenv.isLinux) utillinux
+        ++ lib.optional (stdenv.isDarwin) libtool
+        ++ buildInputs;
+
+      inherit nodejs;
+
+      inherit dontStrip; # Stripping may fail a build for some package deployments
+      inherit dontNpmInstall preRebuild unpackPhase buildPhase;
+
+      compositionScript = composePackage args;
+      pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+      passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
+
+      installPhase = ''
+        # Create and enter a root node_modules/ folder
+        mkdir -p $out/lib/node_modules
+        cd $out/lib/node_modules
+
+        # Compose the package and all its dependencies
+        source $compositionScriptPath
+
+        ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+        # Create symlink to the deployed executable folder, if applicable
+        if [ -d "$out/lib/node_modules/.bin" ]
+        then
+            ln -s $out/lib/node_modules/.bin $out/bin
+        fi
+
+        # Create symlinks to the deployed manual page folders, if applicable
+        if [ -d "$out/lib/node_modules/${packageName}/man" ]
+        then
+            mkdir -p $out/share
+            for dir in "$out/lib/node_modules/${packageName}/man/"*
+            do
+                mkdir -p $out/share/man/$(basename "$dir")
+                for page in "$dir"/*
+                do
+                    ln -s $page $out/share/man/$(basename "$dir")
+                done
+            done
+        fi
+
+        # Run post install hook, if provided
+        runHook postInstall
+      '';
+
+      meta = {
+        # default to Node.js' platforms
+        platforms = nodejs.meta.platforms;
+      } // meta;
+    } // extraArgs);
+
+  # Builds a node environment (a node_modules folder and a set of binaries)
+  buildNodeDependencies =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
+    in
+      stdenv.mkDerivation ({
+        name = "node-dependencies-${name}-${version}";
+
+        buildInputs = [ tarWrapper python nodejs ]
+          ++ lib.optional (stdenv.isLinux) utillinux
+          ++ lib.optional (stdenv.isDarwin) libtool
+          ++ buildInputs;
+
+        inherit dontStrip; # Stripping may fail a build for some package deployments
+        inherit dontNpmInstall unpackPhase buildPhase;
+
+        includeScript = includeDependencies { inherit dependencies; };
+        pinpointDependenciesScript = pinpointDependenciesOfPackage args;
+
+        passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
+
+        installPhase = ''
+          mkdir -p $out/${packageName}
+          cd $out/${packageName}
+
+          source $includeScriptPath
+
+          # Create fake package.json to make the npm commands work properly
+          cp ${src}/package.json .
+          chmod 644 package.json
+          ${lib.optionalString bypassCache ''
+            if [ -f ${src}/package-lock.json ]
+            then
+                cp ${src}/package-lock.json .
+            fi
+          ''}
+
+          # Go to the parent folder to make sure that all packages are pinpointed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+
+          # Expose the executables that were installed
+          cd ..
+          ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+
+          mv ${packageName} lib
+          ln -s $out/lib/node_modules/.bin $out/bin
+        '';
+      } // extraArgs);
+
+  # Builds a development shell
+  buildNodeShell =
+    { name
+    , packageName
+    , version
+    , src
+    , dependencies ? []
+    , buildInputs ? []
+    , production ? true
+    , npmFlags ? ""
+    , dontNpmInstall ? false
+    , bypassCache ? false
+    , reconstructLock ? false
+    , dontStrip ? true
+    , unpackPhase ? "true"
+    , buildPhase ? "true"
+    , ... }@args:
+
+    let
+      nodeDependencies = buildNodeDependencies args;
+    in
+    stdenv.mkDerivation {
+      name = "node-shell-${name}-${version}";
+
+      buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
+      buildCommand = ''
+        mkdir -p $out/bin
+        cat > $out/bin/shell <<EOF
+        #! ${stdenv.shell} -e
+        $shellHook
+        exec ${stdenv.shell}
+        EOF
+        chmod +x $out/bin/shell
+      '';
+
+      # Provide the dependencies in a development shell through the NODE_PATH environment variable
+      inherit nodeDependencies;
+      shellHook = lib.optionalString (dependencies != []) ''
+        export NODE_PATH=${nodeDependencies}/lib/node_modules
+        export PATH="${nodeDependencies}/bin:$PATH"
+      '';
+    };
+in
+{
+  buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist;
+  buildNodePackage = lib.makeOverridable buildNodePackage;
+  buildNodeDependencies = lib.makeOverridable buildNodeDependencies;
+  buildNodeShell = lib.makeOverridable buildNodeShell;
+}
diff --git a/pkgs/servers/isso/node-packages.nix b/pkgs/servers/isso/node-packages.nix
new file mode 100644
index 0000000000000..462108c0e7372
--- /dev/null
+++ b/pkgs/servers/isso/node-packages.nix
@@ -0,0 +1,558 @@
+# This file has been generated by node2nix 1.9.0. Do not edit!
+
+{nodeEnv, fetchurl, fetchgit, nix-gitignore, stdenv, lib, globalBuildInputs ? []}:
+
+let
+  sources = {
+    "acorn-1.2.2" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "1.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz";
+        sha1 = "c8ce27de0acc76d896d2b1fad3df588d9e82f014";
+      };
+    };
+    "acorn-2.7.0" = {
+      name = "acorn";
+      packageName = "acorn";
+      version = "2.7.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz";
+        sha1 = "ab6e7d9d886aaca8b085bc3312b79a198433f0e7";
+      };
+    };
+    "acorn-globals-1.0.9" = {
+      name = "acorn-globals";
+      packageName = "acorn-globals";
+      version = "1.0.9";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz";
+        sha1 = "55bb5e98691507b74579d0513413217c380c54cf";
+      };
+    };
+    "align-text-0.1.4" = {
+      name = "align-text";
+      packageName = "align-text";
+      version = "0.1.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz";
+        sha1 = "0cd90a561093f35d0a99256c22b7069433fad117";
+      };
+    };
+    "almond-0.3.3" = {
+      name = "almond";
+      packageName = "almond";
+      version = "0.3.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/almond/-/almond-0.3.3.tgz";
+        sha1 = "a0e7c95ac7624d6417b4494b1e68bff693168a20";
+      };
+    };
+    "amdefine-1.0.1" = {
+      name = "amdefine";
+      packageName = "amdefine";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz";
+        sha1 = "4a5282ac164729e93619bcfd3ad151f817ce91f5";
+      };
+    };
+    "asap-1.0.0" = {
+      name = "asap";
+      packageName = "asap";
+      version = "1.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz";
+        sha1 = "b2a45da5fdfa20b0496fc3768cc27c12fa916a7d";
+      };
+    };
+    "camelcase-1.2.1" = {
+      name = "camelcase";
+      packageName = "camelcase";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz";
+        sha1 = "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39";
+      };
+    };
+    "center-align-0.1.3" = {
+      name = "center-align";
+      packageName = "center-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz";
+        sha1 = "aa0d32629b6ee972200411cbd4461c907bc2b7ad";
+      };
+    };
+    "character-parser-1.2.1" = {
+      name = "character-parser";
+      packageName = "character-parser";
+      version = "1.2.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz";
+        sha1 = "c0dde4ab182713b919b970959a123ecc1a30fcd6";
+      };
+    };
+    "clean-css-3.4.28" = {
+      name = "clean-css";
+      packageName = "clean-css";
+      version = "3.4.28";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/clean-css/-/clean-css-3.4.28.tgz";
+        sha1 = "bf1945e82fc808f55695e6ddeaec01400efd03ff";
+      };
+    };
+    "cliui-2.1.0" = {
+      name = "cliui";
+      packageName = "cliui";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz";
+        sha1 = "4b475760ff80264c762c3a1719032e91c7fea0d1";
+      };
+    };
+    "commander-2.6.0" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.6.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz";
+        sha1 = "9df7e52fb2a0cb0fb89058ee80c3104225f37e1d";
+      };
+    };
+    "commander-2.8.1" = {
+      name = "commander";
+      packageName = "commander";
+      version = "2.8.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz";
+        sha1 = "06be367febfda0c330aa1e2a072d3dc9762425d4";
+      };
+    };
+    "constantinople-3.0.2" = {
+      name = "constantinople";
+      packageName = "constantinople";
+      version = "3.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz";
+        sha1 = "4b945d9937907bcd98ee575122c3817516544141";
+      };
+    };
+    "css-1.0.8" = {
+      name = "css";
+      packageName = "css";
+      version = "1.0.8";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/css/-/css-1.0.8.tgz";
+        sha1 = "9386811ca82bccc9ee7fb5a732b1e2a317c8a3e7";
+      };
+    };
+    "css-parse-1.0.4" = {
+      name = "css-parse";
+      packageName = "css-parse";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz";
+        sha1 = "38b0503fbf9da9f54e9c1dbda60e145c77117bdd";
+      };
+    };
+    "css-stringify-1.0.5" = {
+      name = "css-stringify";
+      packageName = "css-stringify";
+      version = "1.0.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz";
+        sha1 = "b0d042946db2953bb9d292900a6cb5f6d0122031";
+      };
+    };
+    "decamelize-1.2.0" = {
+      name = "decamelize";
+      packageName = "decamelize";
+      version = "1.2.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz";
+        sha1 = "f6534d15148269b20352e7bee26f501f9a191290";
+      };
+    };
+    "graceful-readlink-1.0.1" = {
+      name = "graceful-readlink";
+      packageName = "graceful-readlink";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz";
+        sha1 = "4cafad76bc62f02fa039b2f94e9a3dd3a391a725";
+      };
+    };
+    "is-buffer-1.1.6" = {
+      name = "is-buffer";
+      packageName = "is-buffer";
+      version = "1.1.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz";
+        sha512 = "NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==";
+      };
+    };
+    "is-promise-1.0.1" = {
+      name = "is-promise";
+      packageName = "is-promise";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz";
+        sha1 = "31573761c057e33c2e91aab9e96da08cefbe76e5";
+      };
+    };
+    "is-promise-2.2.2" = {
+      name = "is-promise";
+      packageName = "is-promise";
+      version = "2.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz";
+        sha512 = "+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==";
+      };
+    };
+    "jade-1.11.0" = {
+      name = "jade";
+      packageName = "jade";
+      version = "1.11.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jade/-/jade-1.11.0.tgz";
+        sha1 = "9c80e538c12d3fb95c8d9bb9559fa0cc040405fd";
+      };
+    };
+    "jstransformer-0.0.2" = {
+      name = "jstransformer";
+      packageName = "jstransformer";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz";
+        sha1 = "7aae29a903d196cfa0973d885d3e47947ecd76ab";
+      };
+    };
+    "kind-of-3.2.2" = {
+      name = "kind-of";
+      packageName = "kind-of";
+      version = "3.2.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz";
+        sha1 = "31ea21a734bab9bbb0f32466d893aea51e4a3c64";
+      };
+    };
+    "lazy-cache-1.0.4" = {
+      name = "lazy-cache";
+      packageName = "lazy-cache";
+      version = "1.0.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz";
+        sha1 = "a1d78fc3a50474cb80845d3b3b6e1da49a446e8e";
+      };
+    };
+    "longest-1.0.1" = {
+      name = "longest";
+      packageName = "longest";
+      version = "1.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz";
+        sha1 = "30a0b2da38f73770e8294a0d22e6625ed77d0097";
+      };
+    };
+    "minimist-1.2.5" = {
+      name = "minimist";
+      packageName = "minimist";
+      version = "1.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz";
+        sha512 = "FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==";
+      };
+    };
+    "mkdirp-0.5.5" = {
+      name = "mkdirp";
+      packageName = "mkdirp";
+      version = "0.5.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz";
+        sha512 = "NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==";
+      };
+    };
+    "optimist-0.3.7" = {
+      name = "optimist";
+      packageName = "optimist";
+      version = "0.3.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz";
+        sha1 = "c90941ad59e4273328923074d2cf2e7cbc6ec0d9";
+      };
+    };
+    "promise-2.0.0" = {
+      name = "promise";
+      packageName = "promise";
+      version = "2.0.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz";
+        sha1 = "46648aa9d605af5d2e70c3024bf59436da02b80e";
+      };
+    };
+    "promise-6.1.0" = {
+      name = "promise";
+      packageName = "promise";
+      version = "6.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz";
+        sha1 = "2ce729f6b94b45c26891ad0602c5c90e04c6eef6";
+      };
+    };
+    "repeat-string-1.6.1" = {
+      name = "repeat-string";
+      packageName = "repeat-string";
+      version = "1.6.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz";
+        sha1 = "8dcae470e1c88abc2d600fff4a776286da75e637";
+      };
+    };
+    "requirejs-2.3.6" = {
+      name = "requirejs";
+      packageName = "requirejs";
+      version = "2.3.6";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz";
+        sha512 = "ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==";
+      };
+    };
+    "requirejs-text-2.0.16" = {
+      name = "requirejs-text";
+      packageName = "requirejs-text";
+      version = "2.0.16";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/requirejs-text/-/requirejs-text-2.0.16.tgz";
+        sha512 = "XrzjeTb1pwzIWmkz8qnUiM20gENgiwB+66IciNuziwlaPAJsYQsQPSYyQ1kD4tGKGZxTisIfDbOHk02DpI/76Q==";
+      };
+    };
+    "right-align-0.1.3" = {
+      name = "right-align";
+      packageName = "right-align";
+      version = "0.1.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz";
+        sha1 = "61339b722fe6a3515689210d24e14c96148613ef";
+      };
+    };
+    "source-map-0.1.43" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.1.43";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz";
+        sha1 = "c24bc146ca517c1471f5dacbe2571b2b7f9e3346";
+      };
+    };
+    "source-map-0.4.4" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.4.4";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz";
+        sha1 = "eba4f5da9c0dc999de68032d8b4f76173652036b";
+      };
+    };
+    "source-map-0.5.7" = {
+      name = "source-map";
+      packageName = "source-map";
+      version = "0.5.7";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz";
+        sha1 = "8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc";
+      };
+    };
+    "transformers-2.1.0" = {
+      name = "transformers";
+      packageName = "transformers";
+      version = "2.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz";
+        sha1 = "5d23cb35561dd85dc67fb8482309b47d53cce9a7";
+      };
+    };
+    "uglify-js-2.2.5" = {
+      name = "uglify-js";
+      packageName = "uglify-js";
+      version = "2.2.5";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz";
+        sha1 = "a6e02a70d839792b9780488b7b8b184c095c99c7";
+      };
+    };
+    "uglify-js-2.8.29" = {
+      name = "uglify-js";
+      packageName = "uglify-js";
+      version = "2.8.29";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz";
+        sha1 = "29c5733148057bb4e1f75df35b7a9cb72e6a59dd";
+      };
+    };
+    "uglify-to-browserify-1.0.2" = {
+      name = "uglify-to-browserify";
+      packageName = "uglify-to-browserify";
+      version = "1.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz";
+        sha1 = "6e0924d6bda6b5afe349e39a6d632850a0f882b7";
+      };
+    };
+    "void-elements-2.0.1" = {
+      name = "void-elements";
+      packageName = "void-elements";
+      version = "2.0.1";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz";
+        sha1 = "c066afb582bb1cb4128d60ea92392e94d5e9dbec";
+      };
+    };
+    "window-size-0.1.0" = {
+      name = "window-size";
+      packageName = "window-size";
+      version = "0.1.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz";
+        sha1 = "5438cd2ea93b202efa3a19fe8887aee7c94f9c9d";
+      };
+    };
+    "with-4.0.3" = {
+      name = "with";
+      packageName = "with";
+      version = "4.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/with/-/with-4.0.3.tgz";
+        sha1 = "eefd154e9e79d2c8d3417b647a8f14d9fecce14e";
+      };
+    };
+    "wordwrap-0.0.2" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "0.0.2";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz";
+        sha1 = "b79669bb42ecb409f83d583cad52ca17eaa1643f";
+      };
+    };
+    "wordwrap-0.0.3" = {
+      name = "wordwrap";
+      packageName = "wordwrap";
+      version = "0.0.3";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz";
+        sha1 = "a3d5da6cd5c0bc0008d37234bbaf1bed63059107";
+      };
+    };
+    "yargs-3.10.0" = {
+      name = "yargs";
+      packageName = "yargs";
+      version = "3.10.0";
+      src = fetchurl {
+        url = "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz";
+        sha1 = "f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1";
+      };
+    };
+  };
+  args = {
+    name = "isso";
+    packageName = "isso";
+    version = "latest";
+    src = ./.;
+    dependencies = [
+      sources."acorn-2.7.0"
+      sources."acorn-globals-1.0.9"
+      sources."align-text-0.1.4"
+      sources."almond-0.3.3"
+      sources."amdefine-1.0.1"
+      sources."asap-1.0.0"
+      sources."camelcase-1.2.1"
+      sources."center-align-0.1.3"
+      sources."character-parser-1.2.1"
+      (sources."clean-css-3.4.28" // {
+        dependencies = [
+          sources."commander-2.8.1"
+        ];
+      })
+      (sources."cliui-2.1.0" // {
+        dependencies = [
+          sources."wordwrap-0.0.2"
+        ];
+      })
+      sources."commander-2.6.0"
+      sources."constantinople-3.0.2"
+      sources."css-1.0.8"
+      sources."css-parse-1.0.4"
+      sources."css-stringify-1.0.5"
+      sources."decamelize-1.2.0"
+      sources."graceful-readlink-1.0.1"
+      sources."is-buffer-1.1.6"
+      sources."is-promise-2.2.2"
+      sources."jade-1.11.0"
+      sources."jstransformer-0.0.2"
+      sources."kind-of-3.2.2"
+      sources."lazy-cache-1.0.4"
+      sources."longest-1.0.1"
+      sources."minimist-1.2.5"
+      sources."mkdirp-0.5.5"
+      sources."optimist-0.3.7"
+      sources."promise-6.1.0"
+      sources."repeat-string-1.6.1"
+      sources."requirejs-2.3.6"
+      sources."requirejs-text-2.0.16"
+      sources."right-align-0.1.3"
+      sources."source-map-0.4.4"
+      (sources."transformers-2.1.0" // {
+        dependencies = [
+          sources."is-promise-1.0.1"
+          sources."promise-2.0.0"
+          sources."source-map-0.1.43"
+          sources."uglify-js-2.2.5"
+        ];
+      })
+      (sources."uglify-js-2.8.29" // {
+        dependencies = [
+          sources."source-map-0.5.7"
+        ];
+      })
+      sources."uglify-to-browserify-1.0.2"
+      sources."void-elements-2.0.1"
+      sources."window-size-0.1.0"
+      (sources."with-4.0.3" // {
+        dependencies = [
+          sources."acorn-1.2.2"
+        ];
+      })
+      sources."wordwrap-0.0.3"
+      sources."yargs-3.10.0"
+    ];
+    buildInputs = globalBuildInputs;
+    meta = {
+      description = "lightweight Disquis alternative";
+      license = "MIT";
+    };
+    production = false;
+    bypassCache = true;
+    reconstructLock = true;
+  };
+in
+{
+  args = args;
+  sources = sources;
+  tarball = nodeEnv.buildNodeSourceDist args;
+  package = nodeEnv.buildNodePackage args;
+  shell = nodeEnv.buildNodeShell args;
+  nodeDependencies = nodeEnv.buildNodeDependencies (lib.overrideExisting args {
+    src = stdenv.mkDerivation {
+      name = args.name + "-package-json";
+      src = nix-gitignore.gitignoreSourcePure [
+        "*"
+        "!package.json"
+        "!package-lock.json"
+      ] args.src;
+      dontBuild = true;
+      installPhase = "mkdir -p $out; cp -r ./* $out;";
+    };
+  });
+}
diff --git a/pkgs/servers/isso/package.json b/pkgs/servers/isso/package.json
new file mode 100644
index 0000000000000..6b89e0f77dd49
--- /dev/null
+++ b/pkgs/servers/isso/package.json
@@ -0,0 +1,15 @@
+{
+  "name": "isso",
+  "version": "latest",
+  "author": "Martin Zimmermann",
+  "description": "lightweight Disquis alternative",
+  "license": "MIT",
+  "repository": "github:posativ/isso",
+  "dependencies": {},
+  "devDependencies": {
+    "almond": "^0.3.3",
+    "jade": "^1.5.0",
+    "requirejs": "^2.3.6",
+    "requirejs-text": "^2.0.15"
+  }
+}
diff --git a/pkgs/servers/tailscale/default.nix b/pkgs/servers/tailscale/default.nix
index d22d358d4480b..f6f60771921f4 100644
--- a/pkgs/servers/tailscale/default.nix
+++ b/pkgs/servers/tailscale/default.nix
@@ -26,13 +26,9 @@ buildGoModule rec {
   ldflags = [ "-X tailscale.com/version.Long=${version}" "-X tailscale.com/version.Short=${version}" ];
 
   postInstall = ''
-    wrapProgram $out/bin/tailscaled --prefix PATH : ${
-      lib.makeBinPath [ iproute2 iptables ]
-    }
+    wrapProgram $out/bin/tailscaled --prefix PATH : ${lib.makeBinPath [ iproute2 iptables ]}
+    wrapProgram $out/bin/tailscale --suffix PATH : ${lib.makeBinPath [ procps ]}
 
-    wrapProgram $out/bin/tailscale --suffix PATH : ${
-      lib.makeBinPath [ procps ]
-    }
     sed -i -e "s#/usr/sbin#$out/bin#" -e "/^EnvironmentFile/d" ./cmd/tailscaled/tailscaled.service
     install -D -m0444 -t $out/lib/systemd/system ./cmd/tailscaled/tailscaled.service
   '';
diff --git a/pkgs/shells/zsh/zsh-fzf-tab/default.nix b/pkgs/shells/zsh/zsh-fzf-tab/default.nix
index ee0f702780f3b..ccf60e6d76af3 100644
--- a/pkgs/shells/zsh/zsh-fzf-tab/default.nix
+++ b/pkgs/shells/zsh/zsh-fzf-tab/default.nix
@@ -4,13 +4,13 @@ let
   INSTALL_PATH="${placeholder "out"}/share/fzf-tab";
 in stdenv.mkDerivation rec {
   pname = "zsh-fzf-tab";
-  version = "unstable-2021-04-01";
+  version = "unstable-2021-08-05";
 
   src = fetchFromGitHub {
     owner = "Aloxaf";
     repo = "fzf-tab";
-    rev = "0c36bdcf6a80ec009280897f07f56969f94d377e";
-    sha256 = "0ymp9ky0jlkx9b63jajvpac5g3ll8snkf8q081g0yw42b9hwpiid";
+    rev = "89a33154707c09789177a893e5a8ebbb131d5d3d";
+    sha256 = "1g8011ldrghbw5ibchsp0p93r31cwyx2r1z5xplksd779jw79wdx";
   };
 
   buildInputs = [ ncurses ];
diff --git a/pkgs/tools/X11/ckbcomp/default.nix b/pkgs/tools/X11/ckbcomp/default.nix
index 471dc80979ab6..06f87f0a7ae7b 100644
--- a/pkgs/tools/X11/ckbcomp/default.nix
+++ b/pkgs/tools/X11/ckbcomp/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   pname = "ckbcomp";
-  version = "1.199";
+  version = "1.205";
 
   src = fetchFromGitLab {
     domain = "salsa.debian.org";
     owner = "installer-team";
     repo = "console-setup";
     rev = version;
-    sha256 = "0jvnxmqhfmj4aywskr2bk1q5p5fl8s4k4bch89965vcwi9bplalf";
+    sha256 = "sha256-agE+Bspw1JL1R1HvNeWW4xr2m0+H83f/9jk6EjQwxWk=";
   };
 
   buildInputs = [ perl ];
diff --git a/pkgs/tools/backup/sanoid/default.nix b/pkgs/tools/backup/sanoid/default.nix
index 5c61763f258d3..d2b37615e903d 100644
--- a/pkgs/tools/backup/sanoid/default.nix
+++ b/pkgs/tools/backup/sanoid/default.nix
@@ -1,8 +1,6 @@
 { lib, stdenv, fetchFromGitHub, nixosTests, makeWrapper, zfs
 , perlPackages, procps, which, openssh, mbuffer, pv, lzop, gzip, pigz }:
 
-with lib;
-
 stdenv.mkDerivation rec {
   pname = "sanoid";
   version = "2.1.0";
@@ -33,22 +31,22 @@ stdenv.mkDerivation rec {
     # incompatibilities with the ZFS kernel module.
     wrapProgram "$out/bin/sanoid" \
       --prefix PERL5LIB : "$PERL5LIB" \
-      --prefix PATH : "${makeBinPath [ procps "/run/booted-system/sw" zfs ]}"
+      --prefix PATH : "${lib.makeBinPath [ procps "/run/booted-system/sw" zfs ]}"
 
     install -m755 syncoid "$out/bin/syncoid"
     wrapProgram "$out/bin/syncoid" \
       --prefix PERL5LIB : "$PERL5LIB" \
-      --prefix PATH : "${makeBinPath [ openssh procps which pv mbuffer lzop gzip pigz "/run/booted-system/sw" zfs ]}"
+      --prefix PATH : "${lib.makeBinPath [ openssh procps which pv mbuffer lzop gzip pigz "/run/booted-system/sw" zfs ]}"
 
     install -m755 findoid "$out/bin/findoid"
     wrapProgram "$out/bin/findoid" \
       --prefix PERL5LIB : "$PERL5LIB" \
-      --prefix PATH : "${makeBinPath [ "/run/booted-system/sw" zfs ]}"
+      --prefix PATH : "${lib.makeBinPath [ "/run/booted-system/sw" zfs ]}"
 
     runHook postInstall
   '';
 
-  meta = {
+  meta = with lib; {
     description = "A policy-driven snapshot management tool for ZFS filesystems";
     homepage = "https://github.com/jimsalterjrs/sanoid";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/cd-dvd/xorriso/default.nix b/pkgs/tools/cd-dvd/xorriso/default.nix
index 34fdb8d03af5a..e1cd7cc4046e5 100644
--- a/pkgs/tools/cd-dvd/xorriso/default.nix
+++ b/pkgs/tools/cd-dvd/xorriso/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "xorriso-${version}";
-  version = "1.5.2";
+  version = "1.5.4.pl02";
 
   src = fetchurl {
     url = "mirror://gnu/xorriso/${name}.tar.gz";
-    sha256 = "1rqpzj95f70jfwpn4lamasfgqpizjsipz12aprdhri777b4zas9v";
+    sha256 = "sha256-Psc5PUqdy/X3QwnCikFfVSJ+xidwuVrpk6yNejsVKXI=";
   };
 
   doCheck = true;
diff --git a/pkgs/tools/filesystems/fuse-overlayfs/default.nix b/pkgs/tools/filesystems/fuse-overlayfs/default.nix
index 56c96ff6f16a7..3fc319d5b7483 100644
--- a/pkgs/tools/filesystems/fuse-overlayfs/default.nix
+++ b/pkgs/tools/filesystems/fuse-overlayfs/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "fuse-overlayfs";
-  version = "1.7";
+  version = "1.7.1";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-eJTyiepQpCptZUnlmWTYejCyzf3QHCzqrn67UjW9mU4=";
+    sha256 = "sha256-wSJjA9eZCb3DJed07xuCS0M7ey3DnyuIlp9kvFvDDC8=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config ];
diff --git a/pkgs/tools/misc/coreboot-utils/default.nix b/pkgs/tools/misc/coreboot-utils/default.nix
index 95f9c74f5ade0..36e82903a7e4c 100644
--- a/pkgs/tools/misc/coreboot-utils/default.nix
+++ b/pkgs/tools/misc/coreboot-utils/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, zlib, pciutils, coreutils, acpica-tools, iasl, makeWrapper, gnugrep, gnused, file, buildEnv }:
+{ lib, stdenv, fetchurl, zlib, pciutils, coreutils, acpica-tools, makeWrapper, gnugrep, gnused, file, buildEnv }:
 
 let
   version = "4.14";
@@ -6,7 +6,7 @@ let
   commonMeta = with lib; {
     description = "Various coreboot-related tools";
     homepage = "https://www.coreboot.org";
-    license = licenses.gpl2;
+    license = with licenses; [ gpl2Only gpl2Plus ];
     maintainers = with maintainers; [ petabyteboy felixsinger yuka ];
     platforms = platforms.linux;
   };
@@ -81,7 +81,13 @@ let
     amdfwtool = generic {
       pname = "amdfwtool";
       meta.description = "Create AMD firmware combination";
-      installPhase = "install -Dm755 amdfwtool $out/bin/amdfwtool";
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm755 amdfwtool $out/bin/amdfwtool
+
+        runHook postInstall
+      '';
     };
     acpidump-all = generic {
       pname = "acpidump-all";
@@ -89,9 +95,15 @@ let
       meta.description = "Walk through all ACPI tables with their addresses";
       nativeBuildInputs = [ makeWrapper ];
       dontBuild = true;
-      installPhase = "install -Dm755 acpidump-all $out/bin/acpidump-all";
+      installPhase = ''
+        runHook preInstall
+
+        install -Dm755 acpidump-all $out/bin/acpidump-all
+
+        runHook postInstall
+      '';
       postFixup = let
-        binPath = [ coreutils  acpica-tools iasl gnugrep  gnused  file ];
+        binPath = [ coreutils acpica-tools gnugrep gnused file ];
       in "wrapProgram $out/bin/acpidump-all --set PATH ${lib.makeBinPath binPath}";
     };
   };
diff --git a/pkgs/tools/misc/disfetch/default.nix b/pkgs/tools/misc/disfetch/default.nix
index 25c018a068a64..1e6c466d8f39c 100644
--- a/pkgs/tools/misc/disfetch/default.nix
+++ b/pkgs/tools/misc/disfetch/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "disfetch";
-  version = "2.7";
+  version = "2.9";
 
   src = fetchFromGitHub {
-    owner = "llathasa-veleth";
+    owner = "q60";
     repo = "disfetch";
     rev = version;
-    sha256 = "sha256-9VPyH7tJEOKCB95VtoIZJ6pL2hEiKTXrp9C7HBD+oxc=";
+    sha256 = "sha256-dmDDO1DcDMGWtQtIQncOjSc114tL5QH1Jaq1n4vAe5M=";
   };
 
   dontBuild = true;
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Yet another *nix distro fetching program, but less complex";
-    homepage = "https://github.com/llathasa-veleth/disfetch";
+    homepage = "https://github.com/q60/disfetch";
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = [ maintainers.vel ];
diff --git a/pkgs/tools/misc/kepubify/default.nix b/pkgs/tools/misc/kepubify/default.nix
index 19bf832fadf59..a53ff544ad19c 100644
--- a/pkgs/tools/misc/kepubify/default.nix
+++ b/pkgs/tools/misc/kepubify/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "kepubify";
-  version = "4.0.0";
+  version = "4.0.1";
 
   src = fetchFromGitHub {
     owner = "pgaskin";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-Mxe43U0kxkSdAzs+lSJ0x/VspbJPam59DpTpFEJVMl4=";
+    sha256 = "sha256-ZQY5U9uMCwsMl3Ds3bscPYmTt8JdWehOoowb+AmJSbQ=";
   };
 
-  vendorSha256 = "sha256-bLQH7ZY2hE8fBTcW7DNoUQxe4N3m9Mv3JjjKO4cG7DY=";
+  vendorSha256 = "sha256-DcE2MCbH5FIU1UoIF8OF17TfsWS5eQhHnWDEAxy8X6c=";
 
   # remove when built with >= go 1.17
   tags = [ "zip117" ];
diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix
new file mode 100644
index 0000000000000..8f5e14a240393
--- /dev/null
+++ b/pkgs/tools/misc/yt-dlp/default.nix
@@ -0,0 +1,62 @@
+{ lib, fetchurl, buildPythonPackage
+, zip, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome, pandoc
+, fetchFromGitHub
+, websockets, mutagen
+, ffmpegSupport ? true
+, rtmpSupport ? true
+, phantomjsSupport ? false
+, hlsEncryptedSupport ? true
+, installShellFiles, makeWrapper }:
+
+buildPythonPackage rec {
+  pname = "yt-dlp";
+  # The websites yt-dlp deals with are a very moving target. That means that
+  # downloads break constantly. Because of that, updates should always be backported
+  # to the latest stable release.
+  version = "2021.08.02";
+
+  src = fetchFromGitHub {
+    owner = "yt-dlp";
+    repo = "yt-dlp";
+    rev = version;
+    sha256 = "QEJKOZGVQNXLU8GfTbwBx2Zv3KO++ozTJcXLWxXA4hI=";
+  };
+
+  nativeBuildInputs = [ installShellFiles makeWrapper ];
+  buildInputs = [ zip pandoc ];
+  propagatedBuildInputs = [ websockets mutagen ]
+    ++ lib.optional hlsEncryptedSupport pycryptodome;
+
+  # Ensure these utilities are available in $PATH:
+  # - ffmpeg: post-processing & transcoding support
+  # - rtmpdump: download files over RTMP
+  # - atomicparsley: embedding thumbnails
+  makeWrapperArgs = let
+      packagesToBinPath = [ atomicparsley ]
+        ++ lib.optional ffmpegSupport ffmpeg
+        ++ lib.optional rtmpSupport rtmpdump
+        ++ lib.optional phantomjsSupport phantomjs2;
+    in [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ];
+
+  setupPyBuildFlags = [
+    "build_lazy_extractors"
+  ];
+
+  # Requires network
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/yt-dlp/yt-dlp/";
+    description = "Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork)";
+    longDescription = ''
+      yt-dlp is a youtube-dl fork based on the now inactive youtube-dlc.
+
+      youtube-dl is a small, Python-based command-line program
+      to download videos from YouTube.com and a few more sites.
+      youtube-dl is released to the public domain, which means
+      you can modify it, redistribute it or use it however you like.
+    '';
+    license = licenses.publicDomain;
+    maintainers = with maintainers; [ mkg20001 ];
+  };
+}
diff --git a/pkgs/tools/networking/findomain/default.nix b/pkgs/tools/networking/findomain/default.nix
index 018a210e4aa22..37499757e7577 100644
--- a/pkgs/tools/networking/findomain/default.nix
+++ b/pkgs/tools/networking/findomain/default.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "findomain";
-  version = "4.3.0";
+  version = "5.0.0";
 
   src = fetchFromGitHub {
     owner = "Edu4rdSHL";
     repo = pname;
     rev = version;
-    sha256 = "sha256-UC70XmhAVf2a2QO9bkIRE5vEsWyIA0DudZfKraNffGY=";
+    sha256 = "sha256-xuabmlpejQVN8pYCNa97aL2IJUAgV7zLXpkEIp9SZRI=";
   };
 
-  cargoSha256 = "sha256-Cdfh3smX6UjiG29L9hG22bOQQIjaNrv+okl153mIiso=";
+  cargoSha256 = "sha256-hrgTWB5D0eKmfuR+lrMN4mx6yGomHe/jUJxw2uyrjHg=";
 
   nativeBuildInputs = [ installShellFiles perl ];
   buildInputs = lib.optionals stdenv.isDarwin [ libiconv Security ];
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index 06ec1b5a83f7f..893537e167ad6 100644
--- a/pkgs/tools/networking/minio-client/default.nix
+++ b/pkgs/tools/networking/minio-client/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "minio-client";
-  version = "2021-06-13T17-48-22Z";
+  version = "2021-07-27T06-46-19Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "mc";
     rev = "RELEASE.${version}";
-    sha256 = "sha256-u0WO7KSalDqlRwbN3b74FOb632fIGPZ2F0T8qLrvt+U=";
+    sha256 = "1h0r8c22v94w2hhbc0hv9rc9jyr5ar7gpa76lhr9l8ra0k3qra43";
   };
 
-  vendorSha256 = "sha256-BadW8AKHcrkCS3sXR7bqdgNhRYkfXIQOteMxIbiLvwg=";
+  vendorSha256 = "1s1bq166dlhqll0r5lcdjpd2446cwi1slbi895582jgs38zpkzvw";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/security/doas/default.nix b/pkgs/tools/security/doas/default.nix
index 7da3b8e9f0683..f88abbd7e1ba8 100644
--- a/pkgs/tools/security/doas/default.nix
+++ b/pkgs/tools/security/doas/default.nix
@@ -25,7 +25,6 @@ stdenv.mkDerivation rec {
   configureFlags = [
     (lib.optionalString withTimestamp "--with-timestamp") # to allow the "persist" setting
     (lib.optionalString (!withPAM) "--without-pam")
-    "--pamdir=${placeholder "out"}/etc/pam.d"
   ];
 
   patches = [
diff --git a/pkgs/tools/security/nuclei/default.nix b/pkgs/tools/security/nuclei/default.nix
index 24ab55900f971..04a0df6c7db6a 100644
--- a/pkgs/tools/security/nuclei/default.nix
+++ b/pkgs/tools/security/nuclei/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "nuclei";
-  version = "2.4.2";
+  version = "2.4.3";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0qgpkxb3wm5lwg8kvhfnirw60l81nrs0qv4z07740amnqzd6by4b";
+    sha256 = "1wg9kqwc2h2689xqb2m9fgxc4rhi3pnml08q3hg4fq6l31damaj5";
   };
 
-  vendorSha256 = "1ddr986rqmd57m8k4x78c4xkbja580ix6xdj5rbysfkr6g073qmq";
+  vendorSha256 = "0pcxadyhppaf7iarl2y6f2crjzg85x4hrg1m1pg3mydqm4gvg5vx";
 
   modRoot = "./v2";
   subPackages = [
diff --git a/pkgs/tools/security/opensc/default.nix b/pkgs/tools/security/opensc/default.nix
index 51e0c1f58f93e..c48d19fbe87d0 100644
--- a/pkgs/tools/security/opensc/default.nix
+++ b/pkgs/tools/security/opensc/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "opensc";
-  version = "0.21.0";
+  version = "0.22.0";
 
   src = fetchFromGitHub {
     owner = "OpenSC";
     repo = "OpenSC";
     rev = version;
-    sha256 = "sha256-OjOfA1pIu8NeN+hPuow5UVMKsg0PrsLojw5h05/Qm+o=";
+    sha256 = "sha256-0IFpiG1SJq4cpS5z6kwpWSPVWjO0q0SHs+doD2vbUKs=";
   };
 
   nativeBuildInputs = [ pkg-config autoreconfHook ];
diff --git a/pkgs/tools/security/scorecard/default.nix b/pkgs/tools/security/scorecard/default.nix
index e26491415734f..5d8d9413ae994 100644
--- a/pkgs/tools/security/scorecard/default.nix
+++ b/pkgs/tools/security/scorecard/default.nix
@@ -2,15 +2,15 @@
 
 buildGoModule rec {
   pname = "scorecard";
-  version = "2.1.2";
+  version = "2.1.3";
 
   src = fetchFromGitHub {
     owner = "ossf";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-OUQzgTQbeQfut/ATvUl9RTFZISiGaUhRjZi4Rh7BB2A=";
+    sha256 = "sha256-lTaFSQ3yyzQGdiKwev38iEpV+ELKg9f1rMYdbqVuiSs=";
   };
-  vendorSha256 = "sha256-/Ltw0qZkLr1qaQixLy5pvWZiNRJucp+bDiY7yVlWmqA=";
+  vendorSha256 = "sha256-eFu954gwoL5z99cJGhSnvliAzwxv3JJxfjmBF+cx7Dg=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/system/acpica-tools/default.nix b/pkgs/tools/system/acpica-tools/default.nix
index 2d2033aadef36..b035ae04215d7 100644
--- a/pkgs/tools/system/acpica-tools/default.nix
+++ b/pkgs/tools/system/acpica-tools/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
     "acpihelp"
     "acpisrc"
     "acpixtract"
+    "iasl"
   ];
 
   nativeBuildInputs = [ bison flex ];
diff --git a/pkgs/tools/video/atomicparsley/default.nix b/pkgs/tools/video/atomicparsley/default.nix
index 92059699e98b5..758fa56db50d7 100644
--- a/pkgs/tools/video/atomicparsley/default.nix
+++ b/pkgs/tools/video/atomicparsley/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "atomicparsley";
-  version = "20210617.200601.1ac7c08";
+  version = "20210715.151551.e7ad03a";
 
   src = fetchFromGitHub {
     owner = "wez";
     repo = pname;
     rev = version;
-    sha256 = "sha256-IhZe0vM41JhO8H79ZrRx4FRA4zfB6X0daC8QoE5MHmU=";
+    sha256 = "sha256-77yWwfdEul4uLsUNX1dLwj8K0ilcuBaTVKMyXDvKVx4=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -22,6 +22,23 @@ stdenv.mkDerivation rec {
     runHook postInstall
   '';
 
+  doCheck = true;
+
+  postPatch = ''
+    patchShebangs tests/test.sh
+  '';
+
+  # copying files so that we dont need to patch the test.sh
+  checkPhase = ''
+    (
+    cp AtomicParsley ../tests
+    cd ../tests
+    mkdir tests
+    mv *.mp4 tests
+    ./test.sh
+    )
+  '';
+
   meta = with lib; {
     description = "A CLI program for reading, parsing and setting metadata into MPEG-4 files";
     homepage = "https://github.com/wez/atomicparsley";
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index ec92bfeb5832f..e88c6978ad1ff 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -339,6 +339,7 @@ mapAliases ({
   htmlTidy = html-tidy;  # added 2014-12-06
   hydra-flakes = throw "hydra-flakes: Flakes support has been merged into Hydra's master. Please use `hydra-unstable` now."; # added 2020-04-06
   iana_etc = iana-etc;  # added 2017-03-08
+  iasl = throw "iasl has been removed, use acpica-tools instead"; # added 2021-08-08
   icedtea8_web = adoptopenjdk-icedtea-web; # added 2019-08-21
   icedtea_web = adoptopenjdk-icedtea-web; # added 2019-08-21
   idea = jetbrains; # added 2017-04-03
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 65fd40e508839..f828f7992b277 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5954,8 +5954,6 @@ with pkgs;
 
   i2pd = callPackage ../tools/networking/i2pd { };
 
-  iasl = callPackage ../development/compilers/iasl { };
-
   iannix = libsForQt5.callPackage ../applications/audio/iannix { };
 
   jamulus = libsForQt5.callPackage ../applications/audio/jamulus { };
@@ -10923,6 +10921,10 @@ with pkgs;
     recurseIntoAttrs (callPackage ../development/compilers/flutter { });
   flutter = flutterPackages.stable;
 
+  fnm = callPackage ../development/tools/fnm {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   fnlfmt = callPackage ../development/tools/fnlfmt { };
 
   fpc = callPackage ../development/compilers/fpc { };
@@ -12299,7 +12301,6 @@ with pkgs;
   scala = scala_2_13;
   scala-runners = callPackage ../development/compilers/scala-runners/default.nix {
     coursier = coursier.override { jre = jdk8; };
-    jre = jdk8;
   };
 
   metal = callPackage ../development/libraries/metal { };
@@ -14591,6 +14592,8 @@ with pkgs;
     readline = readline81;
   };
 
+  java-language-server = callPackage ../development/tools/java/java-language-server { };
+
   jhiccup = callPackage ../development/tools/java/jhiccup { };
 
   valgrind = callPackage ../development/tools/analysis/valgrind {
@@ -18136,7 +18139,9 @@ with pkgs;
     };
   });
 
-  portmidi = callPackage ../development/libraries/portmidi {};
+  portmidi = callPackage ../development/libraries/portmidi {
+    inherit (darwin.apple_sdk.frameworks) Carbon CoreAudio CoreFoundation CoreMIDI CoreServices;
+  };
 
   presage = callPackage ../development/libraries/presage { };
 
@@ -19079,7 +19084,7 @@ with pkgs;
   webkitgtk = callPackage ../development/libraries/webkitgtk {
     harfbuzz = harfbuzzFull;
     inherit (gst_all_1) gst-plugins-base gst-plugins-bad;
-    inherit (darwin.apple_sdk) sdk;
+    inherit (darwin) apple_sdk;
   };
 
   websocketpp = callPackage ../development/libraries/websocket++ { };
@@ -21383,7 +21388,7 @@ with pkgs;
 
     oci-seccomp-bpf-hook = if lib.versionAtLeast kernel.version "5.4" then callPackage ../os-specific/linux/oci-seccomp-bpf-hook { } else null;
 
-    perf = callPackage ../os-specific/linux/kernel/perf.nix { };
+    perf = if lib.versionAtLeast kernel.version "3.12" then callPackage ../os-specific/linux/kernel/perf.nix { } else null;
 
     phc-intel = if lib.versionAtLeast kernel.version "4.10" then callPackage ../os-specific/linux/phc-intel { } else null;
 
@@ -23117,7 +23122,9 @@ with pkgs;
 
   victor-mono = callPackage ../data/fonts/victor-mono { };
 
-  vimix-gtk-themes = callPackage ../data/themes/vimix {};
+  vimix-gtk-themes = callPackage ../data/themes/vimix {
+    inherit (gnome) gnome-shell;
+  };
 
   vistafonts = callPackage ../data/fonts/vista-fonts { };
 
@@ -25114,7 +25121,7 @@ with pkgs;
   i3lock-pixeled = callPackage ../misc/screensavers/i3lock-pixeled { };
 
   betterlockscreen = callPackage ../misc/screensavers/betterlockscreen {
-    inherit (xorg) xrdb;
+    inherit (xorg) xdpyinfo xrandr xset;
   };
 
   multilockscreen = callPackage ../misc/screensavers/multilockscreen { };
@@ -28658,6 +28665,10 @@ with pkgs;
 
   youtube-dl-light = with python3Packages; toPythonApplication youtube-dl-light;
 
+  yt-dlp = with python3Packages; toPythonApplication yt-dlp;
+
+  yt-dlp-light = with python3Packages; toPythonApplication yt-dlp-light;
+
   youtube-viewer = perlPackages.WWWYoutubeViewer;
 
   ytalk = callPackage ../applications/networking/instant-messengers/ytalk { };
@@ -28727,6 +28738,8 @@ with pkgs;
 
   zsteg = callPackage ../tools/security/zsteg { };
 
+  inherit (nodePackages) zx;
+
   zynaddsubfx = zyn-fusion;
 
   zynaddsubfx-fltk = callPackage ../applications/audio/zynaddsubfx {
@@ -30016,7 +30029,7 @@ with pkgs;
 
   keen4 = callPackage ../games/keen4 { };
 
-  zeroadPackages = dontRecurseIntoAttrs (callPackage ../games/0ad {
+  zeroadPackages = recurseIntoAttrs (callPackage ../games/0ad {
     wxGTK = wxGTK31;
   });
 
@@ -32307,6 +32320,8 @@ with pkgs;
 
   wxsqlite3 = callPackage ../development/libraries/wxsqlite3 {
     wxGTK = wxGTK30;
+    inherit (darwin.apple_sdk.frameworks) Cocoa;
+    inherit (darwin.stubs) setfile rez derez;
   };
 
   wxsqliteplus = callPackage ../development/libraries/wxsqliteplus {
@@ -32374,8 +32389,7 @@ with pkgs;
   xzoom = callPackage ../tools/X11/xzoom {};
 
   yabai = callPackage ../os-specific/darwin/yabai {
-    inherit (darwin.apple_sdk.frameworks)
-      Carbon Cocoa ScriptingBridge;
+    inherit (darwin.apple_sdk.frameworks) Carbon Cocoa ScriptingBridge;
   };
 
   yabause = libsForQt5.callPackage ../misc/emulators/yabause {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index ee7db9d5d36fb..b30dfe4511bf5 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -9529,6 +9529,13 @@ in {
     phantomjsSupport = false;
   };
 
+  yt-dlp = callPackage ../tools/misc/yt-dlp { };
+
+  yt-dlp-light = callPackage ../tools/misc/yt-dlp {
+    ffmpegSupport = false;
+    phantomjsSupport = false;
+  };
+
   youtube-search = callPackage ../development/python-modules/youtube-search { };
 
   youtube-transcript-api = callPackage ../development/python-modules/youtube-transcript-api { };
diff --git a/pkgs/top-level/ruby-packages.nix b/pkgs/top-level/ruby-packages.nix
index c04c88697d195..39108721a061b 100644
--- a/pkgs/top-level/ruby-packages.nix
+++ b/pkgs/top-level/ruby-packages.nix
@@ -121,15 +121,14 @@
     version = "6.1.4";
   };
   addressable = {
-    dependencies = ["public_suffix"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "022r3m9wdxljpbya69y2i3h9g3dhhfaqzidf95m6qjzms792jvgp";
+      sha256 = "0mpn7sbjl477h56gmxsjqb89r5s3w7vx5af994ssgc3iamvgzgvs";
       type = "gem";
     };
-    version = "2.8.0";
+    version = "2.4.0";
   };
   ast = {
     groups = ["default"];
@@ -147,10 +146,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "08c0mgsmw7xf3hwbnlsdmn3z5z84ldhw7w98n0lkvfizvvjn0mx2";
+      sha256 = "05brc25pfvak610mdwgjsc64di29yff9i9g72m6hyc21pdjwfy3n";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "3.4.3";
   };
   atomos = {
     groups = ["default"];
@@ -239,10 +238,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1s7dr3jf5a2jg2dd23f97hsd29qj2cfah5rkjvhgb40z3k75vgy3";
+      sha256 = "136aa800dgq6bmr0lb59mfj5q72r712wwp5wy5qxnp48adjw1k2h";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "3.4.3";
   };
   camping = {
     dependencies = ["mab" "rack"];
@@ -255,16 +254,6 @@
     };
     version = "2.1.532";
   };
-  certified = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1706p6p0a8adyvd943af2a3093xakvislgffw3v9dvp7j07dyk5a";
-      type = "gem";
-    };
-    version = "1.0.0";
-  };
   CFPropertyList = {
     groups = ["default"];
     platforms = [];
@@ -628,15 +617,36 @@
     };
     version = "1.1.3";
   };
+  coffee-script = {
+    dependencies = ["coffee-script-source" "execjs"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rc7scyk7mnpfxqv5yy4y5q1hx3i7q3ahplcp4bq2g5r24g2izl2";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  coffee-script-source = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1907v9q1zcqmmyqzhzych5l7qifgls2rlbnbhy5vzyr7i7yicaz1";
+      type = "gem";
+    };
+    version = "1.12.2";
+  };
   colorator = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72";
+      sha256 = "09zp15hyd9wlbgf1kmrf4rnry8cpvh1h9fj7afarlqcy4hrfdpvs";
       type = "gem";
     };
-    version = "1.1.0";
+    version = "0.1";
   };
   colored = {
     groups = ["default"];
@@ -801,17 +811,6 @@
     };
     version = "0.1.0";
   };
-  em-websocket = {
-    dependencies = ["eventmachine" "http_parser.rb"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "1mg1mx735a0k1l8y14ps2mxdwhi5r01ikydf34b0sp60v66nvbkb";
-      type = "gem";
-    };
-    version = "0.5.2";
-  };
   erubi = {
     groups = ["default"];
     platforms = [];
@@ -863,16 +862,26 @@
     };
     version = "0.85.0";
   };
+  execjs = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "121h6af4i6wr3wxvv84y53jcyw2sk71j5wsncm6wq6yqrwcrk4vd";
+      type = "gem";
+    };
+    version = "2.8.1";
+  };
   faraday = {
-    dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "multipart-post" "ruby2_keywords"];
+    dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "multipart-post" "ruby2_keywords"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xpq9w46alagszx2mx82mqxxmsmyni2bpxd08gygzpl03zwbpr63";
+      sha256 = "0r6ik2yvsbx6jj30vck32da2bbvj4m0gf4jhp09vr75i1d6jzfvb";
       type = "gem";
     };
-    version = "1.5.1";
+    version = "1.7.0";
   };
   faraday-em_http = {
     groups = ["default"];
@@ -944,6 +953,16 @@
     };
     version = "1.0.0";
   };
+  faraday-rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
   ffi = {
     groups = ["default"];
     platforms = [];
@@ -1019,16 +1038,6 @@
     };
     version = "0.3.0";
   };
-  forwardable-extended = {
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v";
-      type = "gem";
-    };
-    version = "2.6.0";
-  };
   fourflusher = {
     groups = ["default"];
     platforms = [];
@@ -1055,10 +1064,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1mp4dgd7i26xp1n3ggagdc5xh52wm7gsmmq7mykfjm6bqvh0v302";
+      sha256 = "0hslcfns2ysvjyj21hjvp4hghrafw1sdl627fm0nj0wsncs94m67";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  gemoji = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0n3r6p1lrcwq2y3fzbj350qai0z8giz8wjhhxall8qkvacrcbb6w";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "2.1.0";
   };
   gio2 = {
     dependencies = ["gobject-introspection"];
@@ -1066,10 +1085,32 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0gkik2d0c9xfljip17pafkln52wykrjvz9cf25da6hnxp73fvzwb";
+      sha256 = "1l30xsr1dgnzqfmln17arnqi8iga97ldf6zgbqrfby6a94v3ammd";
+      type = "gem";
+    };
+    version = "3.4.3";
+  };
+  github-pages = {
+    dependencies = ["github-pages-health-check" "jekyll" "jekyll-coffeescript" "jekyll-feed" "jekyll-gist" "jekyll-github-metadata" "jekyll-mentions" "jekyll-paginate" "jekyll-redirect-from" "jekyll-sass-converter" "jekyll-seo-tag" "jekyll-sitemap" "jemoji" "kramdown" "liquid" "listen" "mercenary" "rouge" "terminal-table"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15ngq2x2i4m7dp87lczv7w5xh5qxqnhn898jyaahgl6wgcq8fggc";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "87";
+  };
+  github-pages-health-check = {
+    dependencies = ["addressable" "net-dns" "octokit" "public_suffix" "typhoeus"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x1ccwi3nfb1s3lv9px6lx3fjbn0s1g1v1cm0jcs2gb2zixgn4nf";
+      type = "gem";
+    };
+    version = "1.1.0";
   };
   gitlab-markup = {
     groups = ["default"];
@@ -1087,10 +1128,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0daspjbnw3banifms1xshxzh4v4784zm3fqda1civqczyj62dw1n";
+      sha256 = "0l46ymdf7azpd137xq4rarbaq54hxs9rgfry0r6b0ywj74rmw9ih";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "3.4.3";
   };
   globalid = {
     dependencies = ["activesupport"];
@@ -1098,10 +1139,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1zkxndvck72bfw235bd9nl2ii0lvs5z88q14706cmn702ww2mxv1";
+      sha256 = "0k6ww3shk3mv119xvr9m99l6ql0czq91xhd66hm8hqssb18r2lvm";
       type = "gem";
     };
-    version = "0.4.2";
+    version = "0.5.2";
   };
   gobject-introspection = {
     dependencies = ["glib2"];
@@ -1109,10 +1150,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1p2qn9cbdh3fav7x3ygp8jh7cr2yz4pqs6m979k43dj1vk49vb12";
+      sha256 = "11gas9hzq36a2bwqi7h5c6p6jihanbhsarwhv5fw53dxap4iwj25";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "3.4.3";
   };
   gpgme = {
     dependencies = ["mini_portile2"];
@@ -1126,14 +1167,15 @@
     version = "2.0.20";
   };
   gtk2 = {
+    dependencies = ["atk" "gdk_pixbuf2" "pango"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09n8gz5h0d0wwrifr8c8z0b4vrd64xdi4lws8p6gpz0j0pxm5fzh";
+      sha256 = "0v1ag6irp52asm0yaxa7s533czy7yzhanhgn1v0cndqpzqk8icfz";
       type = "gem";
     };
-    version = "3.2.6";
+    version = "3.4.3";
   };
   hashie = {
     groups = ["default"];
@@ -1185,36 +1227,37 @@
     };
     version = "0.8.6";
   };
-  http-accept = {
+  html-pipeline = {
+    dependencies = ["activesupport" "nokogiri"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09m1facypsdjynfwrcv19xcb1mqg8z6kk31g8r33pfxzh838c9n6";
+      sha256 = "080sn9z1a64gv04p318jz10y6lv6qd3avip08rrcmq9k4ihai0f1";
       type = "gem";
     };
-    version = "1.7.0";
+    version = "2.14.0";
   };
-  http-cookie = {
-    dependencies = ["domain_name"];
+  http-accept = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19370bc97gsy2j4hanij246hv1ddc85hw0xjb6sj7n1ykqdlx9l9";
+      sha256 = "09m1facypsdjynfwrcv19xcb1mqg8z6kk31g8r33pfxzh838c9n6";
       type = "gem";
     };
-    version = "1.0.4";
+    version = "1.7.0";
   };
-  "http_parser.rb" = {
+  http-cookie = {
+    dependencies = ["domain_name"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi";
+      sha256 = "19370bc97gsy2j4hanij246hv1ddc85hw0xjb6sj7n1ykqdlx9l9";
       type = "gem";
     };
-    version = "0.6.0";
+    version = "1.0.4";
   };
   httpclient = {
     groups = ["default"];
@@ -1279,110 +1322,195 @@
     version = "2.11.2";
   };
   jekyll = {
-    dependencies = ["addressable" "colorator" "em-websocket" "i18n" "jekyll-sass-converter" "jekyll-watch" "kramdown" "kramdown-parser-gfm" "liquid" "mercenary" "pathutil" "rouge" "safe_yaml" "terminal-table"];
+    dependencies = ["colorator" "jekyll-sass-converter" "jekyll-watch" "kramdown" "liquid" "mercenary" "rouge" "safe_yaml"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0cqkh78jw8scrajyx5nla0vwm9fvp2qql3kdcvvplcq9mazy8snq";
+      sha256 = "1l1kq96bps29sx1cawbn4p9al4cljkywlr02zwgbcdwrr0211rhp";
       type = "gem";
     };
-    version = "4.2.0";
+    version = "3.1.6";
   };
-  jekyll-sass-converter = {
-    dependencies = ["sassc"];
+  jekyll-coffeescript = {
+    dependencies = ["coffee-script"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "04ncr44wrilz26ayqwlg7379yjnkb29mvx4j04i62b7czmdrc9dv";
+      sha256 = "19nkqbaxqbzqbfbi7sgshshj2krp9ap88m9fc5pa6mglb2ypk3hg";
       type = "gem";
     };
-    version = "2.1.0";
+    version = "1.0.1";
   };
-  jekyll-watch = {
-    dependencies = ["listen"];
+  jekyll-feed = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1qd7hy1kl87fl7l0frw5qbn22x7ayfzlv9a5ca1m59g0ym1ysi5w";
+      sha256 = "0jq7048yynabd9c1s171bb0wp1qqkh00n1q15w16fdp4hrvvjmsh";
       type = "gem";
     };
-    version = "2.2.1";
+    version = "0.5.1";
   };
-  jmespath = {
+  jekyll-gist = {
+    dependencies = ["octokit"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
+      sha256 = "1mjw9y7mqmglckn81ix9x1gqnvbxb28fbz72yhvmm5sdk2l957lr";
       type = "gem";
     };
     version = "1.4.0";
   };
-  json = {
+  jekyll-github-metadata = {
+    dependencies = ["jekyll" "octokit"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci";
+      sha256 = "0psxsfbic425qhniz0nxfr0qqjdwji06x66jpqxpyn9js0iqh5hj";
       type = "gem";
     };
-    version = "2.5.1";
+    version = "2.0.2";
   };
-  json_pure = {
+  jekyll-mentions = {
+    dependencies = ["html-pipeline" "jekyll"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "030hmc268wchqsccbjk41hvbyg99krpa72i3q0y3wwqzfh8hi736";
+      sha256 = "1ps50b62gn6dp7ga5wg5x4j1vr9wlw91sqhv9pkmbbv805w5fxbq";
       type = "gem";
     };
-    version = "2.5.1";
+    version = "1.1.3";
   };
-  jwt = {
+  jekyll-paginate = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "036i5fc09275ms49mw43mh4i9pwaap778ra2pmx06ipzyyjl6bfs";
+      sha256 = "0r7bcs8fq98zldih4787zk5i9w24nz5wa26m84ssja95n3sas2l8";
       type = "gem";
     };
-    version = "2.2.3";
+    version = "1.1.0";
   };
-  kramdown = {
-    dependencies = ["rexml"];
+  jekyll-redirect-from = {
+    dependencies = ["jekyll"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0jdbcjv4v7sj888bv3vc6d1dg4ackkh7ywlmn9ln2g9alk7kisar";
+      sha256 = "1s85rsjl7jd783iiwzd3vq84qcmcz86frl7mjhhlipski60x5fjp";
       type = "gem";
     };
-    version = "2.3.1";
+    version = "0.11.0";
   };
-  kramdown-parser-gfm = {
-    dependencies = ["kramdown"];
+  jekyll-sass-converter = {
+    dependencies = ["sass"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0a8pb3v951f4x7h968rqfsa19c8arz21zw1vaj42jza22rap8fgv";
+      sha256 = "1xqmlr87xmzpalf846gybkbfqkj48y3fva81r7c7175my9p4ykl1";
       type = "gem";
     };
-    version = "1.1.0";
+    version = "1.3.0";
+  };
+  jekyll-seo-tag = {
+    dependencies = ["jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y0szawdxs00qz13plxdfgy9njw40m0jcmg9l3ng2q0b2wnhf3cb";
+      type = "gem";
+    };
+    version = "2.0.0";
+  };
+  jekyll-sitemap = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sg0yzhzja2lw48w5l23l3612pig5c2x4hf883c8bgz0rvr81di1";
+      type = "gem";
+    };
+    version = "0.10.0";
+  };
+  jekyll-watch = {
+    dependencies = ["listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f0p3jbvp9gafbddkbpk78gb6837d2qdhw97py3svsk3d9vkbcdn";
+      type = "gem";
+    };
+    version = "1.5.1";
+  };
+  jemoji = {
+    dependencies = ["gemoji" "html-pipeline" "jekyll"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "090zxsm77ag8phb8c3mhrqcivq1kazs10srqnxc8wjbvcp37qrdi";
+      type = "gem";
+    };
+    version = "0.6.2";
+  };
+  jmespath = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d4wac0dcd1jf6kc57891glih9w57552zgqswgy74d1xhgnk0ngf";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0lrirj0gw420kw71bjjlqkqhqbrplla61gbv1jzgsz6bv90qr3ci";
+      type = "gem";
+    };
+    version = "2.5.1";
+  };
+  jwt = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "036i5fc09275ms49mw43mh4i9pwaap778ra2pmx06ipzyyjl6bfs";
+      type = "gem";
+    };
+    version = "2.2.3";
+  };
+  kramdown = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "05ljwi07hjjwgnjg19sg8mkyxf1an5xn8kn1717d5qrrqkzn3zq1";
+      type = "gem";
+    };
+    version = "1.11.1";
   };
   kramdown-rfc2629 = {
-    dependencies = ["certified" "json_pure" "kramdown"];
+    dependencies = ["kramdown"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0yky836g80jfvyhxn052q9fqrnhn72dsc2j10nirq7qylbq1jl7g";
+      sha256 = "1ay4jy434mpcn72l1rx2cj2gp8lv0z8r5skxyzs1r79yljmxkx4b";
       type = "gem";
     };
-    version = "1.5.5";
+    version = "1.0.32";
   };
   libv8 = {
     groups = ["default"];
@@ -1409,10 +1537,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0zhg5ha8zy8zw9qr3fl4wgk4r5940n4128xm2pn4shpbzdbsj5by";
+      sha256 = "033png37ym4jrjz5bi7zb4ic4yxacwvnllm1xxmrnr4swgyyygc2";
       type = "gem";
     };
-    version = "4.0.3";
+    version = "3.0.6";
   };
   listen = {
     dependencies = ["rb-fsevent" "rb-inotify"];
@@ -1420,10 +1548,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1dq7yd4s9accpjiq0f92sgikw3whc5wnjn065laggkpqcqgx75gh";
+      sha256 = "0zv8rdn3nwnmf5iyxv7ync46wjk8z2sxjpda1j9pjc5n2mkdz97b";
       type = "gem";
     };
-    version = "3.6.0";
+    version = "3.0.6";
   };
   loofah = {
     dependencies = ["crass" "nokogiri"];
@@ -1431,10 +1559,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "19vkaazjqyq7yj5ah8rpr4vl9n4mg95scdr5im93akhd5bjvkkly";
+      sha256 = "0pwik3x5fa92g6hbv4imz3n46nlkzgj69pkgql22ppmcr36knk6m";
       type = "gem";
     };
-    version = "2.10.0";
+    version = "2.11.0";
   };
   mab = {
     groups = ["default"];
@@ -1489,6 +1617,16 @@
     };
     version = "0.9.0";
   };
+  maruku = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r7bxpgnx2hp3g12bjrmdrpv663dfqxsdp0af69kjhxmaxpia56x";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
   matrix = {
     groups = ["default"];
     platforms = [];
@@ -1504,10 +1642,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0f2i827w4lmsizrxixsrv2ssa3gk1b7lmqh8brk8ijmdb551wnmj";
+      sha256 = "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a";
       type = "gem";
     };
-    version = "0.4.0";
+    version = "0.3.6";
   };
   method_source = {
     groups = ["default"];
@@ -1565,10 +1703,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1ad0mli9rc0f17zw4ibp24dbj1y39zkykijsjmnzl4gwpg5s0j6k";
+      sha256 = "1lvxm91hi0pabnkkg47wh1siv56s6slm2mdq1idfm86dyfidfprq";
       type = "gem";
     };
-    version = "2.5.3";
+    version = "2.6.1";
   };
   minitest = {
     groups = ["default"];
@@ -1681,6 +1819,16 @@
     };
     version = "1.4.10";
   };
+  net-dns = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18d97xjphw21naaqfhgxp95ikr1d79rx708b2df3xm01j6isqy1d";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
   net-scp = {
     dependencies = ["net-ssh"];
     groups = ["default"];
@@ -1717,10 +1865,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "00fwz0qq7agd2xkdz02i8li236qvwhma3p0jdn5bdvc21b7ydzd5";
+      sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v";
       type = "gem";
     };
-    version = "2.5.7";
+    version = "2.5.8";
   };
   nokogiri = {
     dependencies = ["mini_portile2" "racc"];
@@ -1728,10 +1876,21 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1vrn31385ix5k9b0yalnlzv360isv6dincbcvi8psllnwz4sjxj9";
+      sha256 = "1iav4jrklvm8938bxhby0khs36mdndhvwia4hc85zxcb0yl1k8ll";
       type = "gem";
     };
-    version = "1.11.7";
+    version = "1.12.2";
+  };
+  octokit = {
+    dependencies = ["faraday" "sawyer"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0ak64rb48d8z98nw6q70r6i0i3ivv61iqla40ss5l79491qfnn27";
+      type = "gem";
+    };
+    version = "4.21.0";
   };
   opus-ruby = {
     dependencies = ["ffi"];
@@ -1772,10 +1931,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "09rkarch6kd20cc9xj9v3yfvs7v2k8bxfzwi8vp56h4rcwmsy7m1";
+      sha256 = "05smxn2jank7wqih59lhr30ab8f4qxdsdiiag5v7a0gjgzkmbi7f";
       type = "gem";
     };
-    version = "3.4.6";
+    version = "3.4.3";
   };
   parallel = {
     groups = ["default"];
@@ -1793,21 +1952,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "06ma6w87ph8lnc9z4hi40ynmcdnjv0p8x53x0s3fjkz4q2p6sxh5";
+      sha256 = "1f7gmm60yla325wlnd3qkxs59qm2y0aan8ljpg6k18rwzrrfil6z";
       type = "gem";
     };
-    version = "3.0.2.0";
-  };
-  pathutil = {
-    dependencies = ["forwardable-extended"];
-    groups = ["default"];
-    platforms = [];
-    source = {
-      remotes = ["https://rubygems.org"];
-      sha256 = "12fm93ljw9fbxmv2krki5k5wkvr7560qy8p4spvb9jiiaqv78fz4";
-      type = "gem";
-    };
-    version = "0.16.2";
+    version = "2.7.2.0";
   };
   patron = {
     groups = ["default"];
@@ -1897,10 +2045,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xqcgkl7bwws1qrlnmxgh8g4g9m10vg60bhlw40fplninb3ng6d9";
+      sha256 = "02rqflr53584j1278hxvhxyrc6hqasv33qiqb7j186ji3s018y5c";
       type = "gem";
     };
-    version = "4.0.6";
+    version = "1.5.3";
   };
   puma = {
     dependencies = ["nio4r"];
@@ -1908,10 +2056,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lmaq05a257m9588a81wql3a5p039f221f0dmq57bm2qjwxydjmj";
+      sha256 = "0bz9y1hxfyv73yb26nvs2kcw08gxi7nxkfc94j82hgx2sifcnv3x";
       type = "gem";
     };
-    version = "5.3.2";
+    version = "5.4.0";
   };
   racc = {
     groups = ["default"];
@@ -2097,10 +2245,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "057xp6bkfpmkq0csd1aa0nji1vjsx8pc0c63blcj6scvi9nh1l5k";
+      sha256 = "1ig832dp0xmpp6a934nifzaj7wm9lzjxzasw911fagycs8p6m720";
       type = "gem";
     };
-    version = "4.3.1";
+    version = "4.4.0";
   };
   redis-rack = {
     dependencies = ["rack" "redis-store"];
@@ -2181,10 +2329,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0b4b300i3m4m4kw7w1n9wgxwy16zccnb7271miksyzd0wq5b9pm3";
+      sha256 = "13amckbdknnc5491ag28y8pqbyfpbzx5n4rlmadxhd3wkrhp92c8";
       type = "gem";
     };
-    version = "3.26.0";
+    version = "1.11.1";
   };
   rpam2 = {
     groups = ["default"];
@@ -2256,10 +2404,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1lk8ppn0a2b94fymlra80sygwn63pxyqy4cj4c3ic2697ll3mihj";
+      sha256 = "0phrig25dykgi42z6mf1abllh3ws6sv7awa82hzvvvbjx2xlzd3k";
       type = "gem";
     };
-    version = "1.18.4";
+    version = "0.93.1";
   };
   rubocop-ast = {
     dependencies = ["parser"];
@@ -2267,10 +2415,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0dbbll8k2xqdfpirzpfl3gi4asplay25mg91510i7qb601xbjpcy";
+      sha256 = "0gkf1p8yal38nlvdb39qaiy0gr85fxfr09j5dxh8qvrgpncpnk78";
       type = "gem";
     };
-    version = "1.8.0";
+    version = "1.4.1";
   };
   rubocop-performance = {
     dependencies = ["rubocop" "rubocop-ast"];
@@ -2278,10 +2426,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0sl1l9xwvbxbkla5a64avlmyirc2vsbmvqdqza17dydh8m48pb3h";
+      sha256 = "07c3kymvsid9aajwmmwr3n6apxgyjcbzbl2n6r5lpzkyz28jqn15";
       type = "gem";
     };
-    version = "1.11.4";
+    version = "1.10.2";
   };
   ruby-graphviz = {
     dependencies = ["rexml"];
@@ -2396,6 +2544,28 @@
     };
     version = "1.0.5";
   };
+  sass = {
+    dependencies = ["sass-listen"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p95lhs0jza5l7hqci1isflxakz83xkj97lkvxl919is0lwhv2w0";
+      type = "gem";
+    };
+    version = "3.7.4";
+  };
+  sass-listen = {
+    dependencies = ["rb-fsevent" "rb-inotify"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df";
+      type = "gem";
+    };
+    version = "4.0.0";
+  };
   sassc = {
     dependencies = ["ffi"];
     groups = ["default"];
@@ -2407,6 +2577,17 @@
     };
     version = "2.4.0";
   };
+  sawyer = {
+    dependencies = ["addressable" "faraday"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yrdchs3psh583rjapkv33mljdivggqn99wkydkjdckcjn43j3cz";
+      type = "gem";
+    };
+    version = "0.8.2";
+  };
   scrypt = {
     dependencies = ["ffi-compiler"];
     groups = ["default"];
@@ -2433,10 +2614,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0qbx9p07jdrnpqvjnq6js9qjwjihsk91c1ndmfap153darp1adw0";
+      sha256 = "03pmhj4kc3ga75wy397l57bvd18jxxmrk3qsznjw93b993qgvj3z";
       type = "gem";
     };
-    version = "5.46.0";
+    version = "5.47.0";
   };
   sequel_pg = {
     dependencies = ["pg" "sequel"];
@@ -2533,15 +2714,15 @@
     version = "1.3.2";
   };
   solargraph = {
-    dependencies = ["backport" "benchmark" "diff-lcs" "e2mmap" "jaro_winkler" "kramdown" "kramdown-parser-gfm" "parser" "reverse_markdown" "rubocop" "thor" "tilt" "yard"];
+    dependencies = ["backport" "benchmark" "e2mmap" "jaro_winkler" "maruku" "nokogiri" "parser" "reverse_markdown" "rubocop" "thor" "tilt" "yard"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1i2prnczlg871l3kyqy08z8axsilgv3wm4zw061wjyzqglx7xghg";
+      sha256 = "06fby6dpq1jcq30x8ladig4dvz8j2pxd08mkrad3d41jx33zd2hg";
       type = "gem";
     };
-    version = "0.43.0";
+    version = "0.39.17";
   };
   sprockets = {
     dependencies = ["concurrent-ruby" "rack"];
@@ -2591,10 +2772,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "18rbrh464ysqbdv53iwj0r8frshn65566kyj044cp3x9c2754jwh";
+      sha256 = "1512cngw35hsmhvw4c05rscihc59mnj09m249sm9p3pik831ydqk";
       type = "gem";
     };
-    version = "2.0.0";
+    version = "1.8.0";
   };
   thor = {
     groups = ["default"];
@@ -2653,10 +2834,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz";
+      sha256 = "03x3fxjsnhgayl4s96h0a9975awlvx2v9nmx2ba0cnliglyczdr8";
       type = "gem";
     };
-    version = "1.4.0";
+    version = "0.8.0";
   };
   tzinfo = {
     dependencies = ["concurrent-ruby"];
@@ -2747,10 +2928,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0vcfl87z490xmj4q09davx31r2gzvan95sj90x58wq4ymgrdhf1p";
+      sha256 = "0xmzb1mdsnkpf7v07whz0n2wc8kg6785sc7i5zyawd8dl8517rp4";
       type = "gem";
     };
-    version = "1.20.0";
+    version = "1.21.0";
   };
   xctasks = {
     dependencies = ["nokogiri" "rake"];