summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/admin/awscli/default.nix6
-rw-r--r--pkgs/tools/admin/clair/default.nix6
-rw-r--r--pkgs/tools/admin/eksctl/default.nix6
-rw-r--r--pkgs/tools/admin/google-cloud-sdk/default.nix16
-rw-r--r--pkgs/tools/archivers/xtrt/default.nix36
-rw-r--r--pkgs/tools/audio/mpdas/default.nix10
-rw-r--r--pkgs/tools/audio/mpdcron/default.nix54
-rw-r--r--pkgs/tools/audio/yabridge/default.nix127
-rw-r--r--pkgs/tools/audio/yabridgectl/default.nix23
-rw-r--r--pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch70
-rw-r--r--pkgs/tools/backup/btrbk/default.nix6
-rw-r--r--pkgs/tools/backup/sanoid/default.nix4
-rw-r--r--pkgs/tools/backup/zrepl/default.nix31
-rw-r--r--pkgs/tools/bootloaders/refind/0001-Fix-GCC-10-compile-problem.patch25
-rw-r--r--pkgs/tools/bootloaders/refind/default.nix13
-rw-r--r--pkgs/tools/compression/ncompress/default.nix9
-rw-r--r--pkgs/tools/compression/ncompress/makefile.patch12
-rw-r--r--pkgs/tools/filesystems/bindfs/default.nix8
-rw-r--r--pkgs/tools/filesystems/catcli/default.nix4
-rw-r--r--pkgs/tools/filesystems/e2fsprogs/default.nix2
-rw-r--r--pkgs/tools/filesystems/fwanalyzer/default.nix39
-rw-r--r--pkgs/tools/filesystems/rmfuse/default.nix26
-rw-r--r--pkgs/tools/filesystems/rmfuse/poetry-git-overlay.nix14
-rw-r--r--pkgs/tools/filesystems/rmfuse/poetry.lock547
-rw-r--r--pkgs/tools/filesystems/rmfuse/pyproject.toml15
-rw-r--r--pkgs/tools/filesystems/rmfuse/update5
-rw-r--r--pkgs/tools/games/ajour/default.nix6
-rw-r--r--pkgs/tools/graphics/lprof/default.nix38
-rw-r--r--pkgs/tools/graphics/lprof/keep-environment.patch16
-rw-r--r--pkgs/tools/graphics/lprof/lcms-1.17.patch13
-rw-r--r--pkgs/tools/inputmethods/evscript/default.nix1
-rw-r--r--pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix2
-rw-r--r--pkgs/tools/inputmethods/hime/default.nix2
-rw-r--r--pkgs/tools/misc/bmap-tools/default.nix10
-rw-r--r--pkgs/tools/misc/cicero-tui/default.nix41
-rw-r--r--pkgs/tools/misc/cod/default.nix2
-rw-r--r--pkgs/tools/misc/dua/default.nix6
-rw-r--r--pkgs/tools/misc/duf/default.nix2
-rw-r--r--pkgs/tools/misc/dust/default.nix6
-rw-r--r--pkgs/tools/misc/exa/default.nix6
-rw-r--r--pkgs/tools/misc/expect/default.nix7
-rw-r--r--pkgs/tools/misc/fend/default.nix12
-rw-r--r--pkgs/tools/misc/fontfor/default.nix41
-rw-r--r--pkgs/tools/misc/fontforge/default.nix25
-rw-r--r--pkgs/tools/misc/fzf/default.nix14
-rw-r--r--pkgs/tools/misc/grex/default.nix4
-rw-r--r--pkgs/tools/misc/grub/2.0x.nix30
-rw-r--r--pkgs/tools/misc/kak-lsp/default.nix4
-rw-r--r--pkgs/tools/misc/lice/default.nix21
-rwxr-xr-xpkgs/tools/misc/mcrypt/malloc_to_stdlib.patch2
-rw-r--r--pkgs/tools/misc/mpdscribble/default.nix30
-rw-r--r--pkgs/tools/misc/neofetch/default.nix10
-rw-r--r--pkgs/tools/misc/nix-direnv/default.nix4
-rw-r--r--pkgs/tools/misc/onefetch/default.nix3
-rw-r--r--pkgs/tools/misc/parallel/default.nix2
-rw-r--r--pkgs/tools/misc/pgcenter/default.nix14
-rw-r--r--pkgs/tools/misc/piston-cli/default.nix6
-rw-r--r--pkgs/tools/misc/pspg/default.nix4
-rw-r--r--pkgs/tools/misc/pubs/default.nix2
-rw-r--r--pkgs/tools/misc/rlwrap/default.nix32
-rw-r--r--pkgs/tools/misc/rpm-ostree/default.nix4
-rw-r--r--pkgs/tools/misc/savepagenow/default.nix25
-rw-r--r--pkgs/tools/misc/skim/default.nix6
-rw-r--r--pkgs/tools/misc/smenu/default.nix17
-rw-r--r--pkgs/tools/misc/tab-rs/default.nix6
-rw-r--r--pkgs/tools/misc/thefuck/default.nix16
-rw-r--r--pkgs/tools/misc/topgrade/default.nix10
-rw-r--r--pkgs/tools/misc/ttfautohint/default.nix2
-rw-r--r--pkgs/tools/misc/uhubctl/default.nix4
-rw-r--r--pkgs/tools/misc/yubikey-manager-qt/default.nix4
-rw-r--r--pkgs/tools/misc/zoxide/default.nix11
-rw-r--r--pkgs/tools/networking/boundary/default.nix16
-rw-r--r--pkgs/tools/networking/chisel/default.nix4
-rw-r--r--pkgs/tools/networking/ferm/default.nix4
-rw-r--r--pkgs/tools/networking/ht-rust/default.nix34
-rw-r--r--pkgs/tools/networking/i2pd/default.nix9
-rw-r--r--pkgs/tools/networking/mailutils/default.nix10
-rw-r--r--pkgs/tools/networking/minio-client/default.nix6
-rw-r--r--pkgs/tools/networking/mosh/default.nix10
-rw-r--r--pkgs/tools/networking/mtr/default.nix16
-rw-r--r--pkgs/tools/networking/mu/default.nix4
-rw-r--r--pkgs/tools/networking/pritunl-ssh/default.nix29
-rw-r--r--pkgs/tools/networking/proxychains/default.nix24
-rw-r--r--pkgs/tools/networking/spoofer/default.nix2
-rw-r--r--pkgs/tools/networking/tendermint/default.nix6
-rw-r--r--pkgs/tools/networking/wakeonlan/default.nix29
-rw-r--r--pkgs/tools/networking/wget2/default.nix100
-rw-r--r--pkgs/tools/networking/xh/default.nix32
-rw-r--r--pkgs/tools/networking/zap/default.nix47
-rw-r--r--pkgs/tools/networking/zerotierone/default.nix4
-rw-r--r--pkgs/tools/package-management/dpkg/default.nix4
-rw-r--r--pkgs/tools/package-management/emplace/default.nix8
-rw-r--r--pkgs/tools/package-management/holo-build/default.nix59
-rw-r--r--pkgs/tools/package-management/packagekit/qt.nix2
-rw-r--r--pkgs/tools/security/bitwarden_rs/default.nix8
-rw-r--r--pkgs/tools/security/doppler/default.nix4
-rw-r--r--pkgs/tools/security/gen-oath-safe/default.nix2
-rw-r--r--pkgs/tools/security/gopass/jsonapi.nix43
-rw-r--r--pkgs/tools/security/hcxtools/default.nix7
-rw-r--r--pkgs/tools/security/metasploit/Gemfile2
-rw-r--r--pkgs/tools/security/metasploit/Gemfile.lock56
-rw-r--r--pkgs/tools/security/metasploit/default.nix4
-rw-r--r--pkgs/tools/security/metasploit/gemset.nix80
-rw-r--r--pkgs/tools/security/nmap-unfree/default.nix65
-rw-r--r--pkgs/tools/security/proxmark3/default.nix2
-rw-r--r--pkgs/tools/security/shhgit/default.nix26
-rw-r--r--pkgs/tools/security/teler/default.nix6
-rw-r--r--pkgs/tools/security/tor/default.nix4
-rw-r--r--pkgs/tools/security/tpm2-tools/default.nix8
-rw-r--r--pkgs/tools/security/wafw00f/default.nix34
-rw-r--r--pkgs/tools/system/auto-cpufreq/default.nix4
-rw-r--r--pkgs/tools/system/auto-cpufreq/prevent-install-and-copy.patch38
-rw-r--r--pkgs/tools/system/bpytop/default.nix4
-rw-r--r--pkgs/tools/system/facter/default.nix4
-rw-r--r--pkgs/tools/system/freeipmi/default.nix4
-rw-r--r--pkgs/tools/system/gdu/default.nix4
-rw-r--r--pkgs/tools/system/gptfdisk/default.nix4
-rw-r--r--pkgs/tools/system/logrotate/default.nix26
-rw-r--r--pkgs/tools/system/pciutils/default.nix4
-rw-r--r--pkgs/tools/system/stressapptest/default.nix27
-rw-r--r--pkgs/tools/text/colordiff/default.nix36
-rw-r--r--pkgs/tools/text/ledger2beancount/default.nix19
-rw-r--r--pkgs/tools/text/markdown-pp/default.nix12
-rw-r--r--pkgs/tools/text/ripgrep/default.nix14
-rw-r--r--pkgs/tools/text/source-highlight/default.nix27
-rw-r--r--pkgs/tools/text/wdiff/default.nix13
-rw-r--r--pkgs/tools/typesetting/asciidoc/default.nix12
-rw-r--r--pkgs/tools/typesetting/fop/default.nix15
-rw-r--r--pkgs/tools/video/atomicparsley/default.nix4
-rw-r--r--pkgs/tools/wayland/clipman/default.nix (renamed from pkgs/tools/misc/clipman/default.nix)11
-rw-r--r--pkgs/tools/wayland/kanshi/default.nix (renamed from pkgs/tools/misc/kanshi/default.nix)13
-rw-r--r--pkgs/tools/wayland/oguri/default.nix39
-rw-r--r--pkgs/tools/wayland/slurp/default.nix (renamed from pkgs/tools/misc/slurp/default.nix)14
-rw-r--r--pkgs/tools/wayland/wev/default.nix (renamed from pkgs/tools/misc/wev/default.nix)15
-rw-r--r--pkgs/tools/wayland/wl-clipboard/default.nix (renamed from pkgs/tools/misc/wl-clipboard/default.nix)16
-rw-r--r--pkgs/tools/wayland/wlogout/default.nix54
-rw-r--r--pkgs/tools/wayland/wlr-randr/default.nix (renamed from pkgs/tools/misc/wlr-randr/default.nix)14
-rw-r--r--pkgs/tools/wayland/wob/default.nix (renamed from pkgs/tools/misc/wob/default.nix)17
138 files changed, 2276 insertions, 635 deletions
diff --git a/pkgs/tools/admin/awscli/default.nix b/pkgs/tools/admin/awscli/default.nix
index 2360ef20e1f..defb46b4443 100644
--- a/pkgs/tools/admin/awscli/default.nix
+++ b/pkgs/tools/admin/awscli/default.nix
@@ -35,8 +35,12 @@ in with py.pkgs; buildPythonApplication rec {
     sha256 = "sha256-SwYL2ViwazP2MDZbW9cRThvg6jVOMlkfsbpY6QDsjQY=";
   };
 
+  # https://github.com/aws/aws-cli/issues/4837
+  # https://github.com/aws/aws-cli/pull/5887
   postPatch = ''
-    substituteInPlace setup.py --replace "docutils>=0.10,<0.16" "docutils>=0.10"
+    substituteInPlace setup.py \
+      --replace "docutils>=0.10,<0.16" "docutils>=0.10" \
+      --replace "PyYAML>=3.10,<5.4" "PyYAML>=3.10"
   '';
 
   # No tests included
diff --git a/pkgs/tools/admin/clair/default.nix b/pkgs/tools/admin/clair/default.nix
index cbe6e3eed1f..6db3e80d3f8 100644
--- a/pkgs/tools/admin/clair/default.nix
+++ b/pkgs/tools/admin/clair/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "clair";
-  version = "4.0.0";
+  version = "4.0.1";
 
   src = fetchFromGitHub {
     owner = "quay";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10kgg2i5yzdfhylrdkmh8rsc4cgdnhcgfa8fa4dm8m3licjciwam";
+    sha256 = "sha256-FJqUYQDDOuO0EcZ8+el/MUcJJzWL7vgGhEFo7v4HpOw=";
   };
 
-  vendorSha256 = "1l3b86f5xmyc6lskvb4ab30adcgzb69ayccc0wcz2f28sda3i80r";
+  vendorSha256 = "sha256-CO4U8uSQeHXLPj5PH/SsOI/LjT2Rs/mBHsvNTudx72I=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/admin/eksctl/default.nix b/pkgs/tools/admin/eksctl/default.nix
index 0db88659575..202f576633a 100644
--- a/pkgs/tools/admin/eksctl/default.nix
+++ b/pkgs/tools/admin/eksctl/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "eksctl";
-  version = "0.37.0";
+  version = "0.38.0";
 
   src = fetchFromGitHub {
     owner = "weaveworks";
     repo = pname;
     rev = version;
-    sha256 = "sha256-1IhCBDMfGW9hDvQoGSJKJ1ZlShzVeIGjVOfiUspHRBw=";
+    sha256 = "sha256-QMJKrM5IBDqNfdxYAaEzmZ8YFMPu2hB6jvl6R/7ORl8=";
   };
 
-  vendorSha256 = "sha256-fa8IrJhsy5cBzBs4tGIx7ykJcXjdvLqms3Dk97P4Vik=";
+  vendorSha256 = "sha256-VTKnkMe0SB6sWRJTC4p6BMjH5qZ6LsSQnjuPFfOP/Eg=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/admin/google-cloud-sdk/default.nix b/pkgs/tools/admin/google-cloud-sdk/default.nix
index 36af063c448..644bdedffe5 100644
--- a/pkgs/tools/admin/google-cloud-sdk/default.nix
+++ b/pkgs/tools/admin/google-cloud-sdk/default.nix
@@ -21,31 +21,35 @@ let
   sources = name: system: {
     x86_64-darwin = {
       url = "${baseUrl}/${name}-darwin-x86_64.tar.gz";
-      sha256 = "09pv1xvycgfai151z6kbsggyldcd3cx6x1p04dcim2xrawqvng6s";
+      sha256 = "sha256-aHFwcynt4xQ0T1J+OTSxgttU9W3VFJAqCwmQSdVg8Fk=";
     };
 
     x86_64-linux = {
       url = "${baseUrl}/${name}-linux-x86_64.tar.gz";
-      sha256 = "1iybbvxjny33mw3h2f81fdvsvp65xa62c2qrzjv8hkrqkw69ckrp";
+      sha256 = "sha256-MfldToK7ZfdWZiZnI1qKI1o/dSiUcysxzUkTYMVZ5u4=";
     };
   }.${system};
 
 in stdenv.mkDerivation rec {
   pname = "google-cloud-sdk";
-  version = "325.0.0";
+  version = "328.0.0";
 
   src = fetchurl (sources "${pname}-${version}" stdenv.hostPlatform.system);
 
-  buildInputs = [ python makeWrapper ];
+  buildInputs = [ python ];
 
-  nativeBuildInputs = [ jq ];
+  nativeBuildInputs = [ jq makeWrapper ];
 
   patches = [
+    # For kubectl configs, don't store the absolute path of the `gcloud` binary as it can be garbage-collected
     ./gcloud-path.patch
+    # Disable checking for updates for the package
     ./gsutil-disable-updates.patch
   ];
 
   installPhase = ''
+    runHook preInstall
+
     mkdir -p $out/google-cloud-sdk
     cp -R * .install $out/google-cloud-sdk/
 
@@ -91,6 +95,8 @@ in stdenv.mkDerivation rec {
       jq -c . $path > $path.min
       mv $path.min $path
     done
+
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/archivers/xtrt/default.nix b/pkgs/tools/archivers/xtrt/default.nix
new file mode 100644
index 00000000000..175494057e0
--- /dev/null
+++ b/pkgs/tools/archivers/xtrt/default.nix
@@ -0,0 +1,36 @@
+{ bzip2, fetchFromGitHub, gzip, gnutar, lib, stdenv, unzip, xz }:
+
+stdenv.mkDerivation rec {
+  pname = "xtrt";
+  version = "unstable-2021-02-17";
+
+  src = fetchFromGitHub {
+    owner = "figsoda";
+    repo = pname;
+    rev = "61884fb7c48c7e1e2194afd82b85f415a6dc7c20";
+    sha256 = "073l4q6mx5if791p5a6w8m8bz2aypmjmycaijq4spql8bh6h12vf";
+  };
+
+  postPatch = ''
+    substituteInPlace xtrt \
+      --replace "bzip2 " "${bzip2}/bin/bzip2 " \
+      --replace "gzip " "${gzip}/bin/gzip " \
+      --replace "tar " "${gnutar}/bin/tar " \
+      --replace "unzip " "${unzip}/bin/unzip " \
+      --replace "xz " "${xz}/bin/xz "
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    cp xtrt $out/bin
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Tiny script to extract archives by their extensions";
+    homepage = "https://github.com/figsoda/xtrt";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ figsoda ];
+  };
+}
diff --git a/pkgs/tools/audio/mpdas/default.nix b/pkgs/tools/audio/mpdas/default.nix
index 255d28b62b1..8b12b6fc16d 100644
--- a/pkgs/tools/audio/mpdas/default.nix
+++ b/pkgs/tools/audio/mpdas/default.nix
@@ -1,4 +1,10 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, mpd_clientlib, curl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, libmpdclient
+, curl
+}:
 
 stdenv.mkDerivation rec {
   pname = "mpdas";
@@ -13,7 +19,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ mpd_clientlib curl ];
+  buildInputs = [ libmpdclient curl ];
 
   makeFlags = [ "CONFIG=/etc" "DESTDIR=" "PREFIX=$(out)" ];
 
diff --git a/pkgs/tools/audio/mpdcron/default.nix b/pkgs/tools/audio/mpdcron/default.nix
index 1fa0d155a3d..afb1c9a3dcd 100644
--- a/pkgs/tools/audio/mpdcron/default.nix
+++ b/pkgs/tools/audio/mpdcron/default.nix
@@ -1,5 +1,19 @@
-{ lib, stdenv, fetchFromGitHub, autoconf, automake, libtool, pkg-config, glib, libdaemon
-, mpd_clientlib, curl, sqlite, bundlerEnv, libnotify, pandoc }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoconf
+, automake
+, libtool
+, pkg-config
+, glib
+, libdaemon
+, libmpdclient
+, curl
+, sqlite
+, bundlerEnv
+, libnotify
+, pandoc
+}:
 
 let
   gemEnv = bundlerEnv {
@@ -7,8 +21,8 @@ let
     gemdir = ./.;
   };
 in stdenv.mkDerivation {
-  version = "20161228";
   pname = "mpdcron";
+  version = "20161228";
 
   src = fetchFromGitHub {
     owner = "alip";
@@ -17,21 +31,33 @@ in stdenv.mkDerivation {
     sha256 = "0vdksf6lcgmizqr5mqp0bbci259k0dj7gpmhx32md41jlmw5skaw";
   };
 
-  meta = with lib; {
-    description = "A cron like daemon for mpd";
-    homepage    = "http://alip.github.io/mpdcron/";
-    license     = licenses.gpl2;
-    platforms   = platforms.unix;
-    maintainers = with maintainers; [ lovek323 manveru ];
-  };
-
-  buildInputs =
-    [ autoconf automake libtool pkg-config glib libdaemon pandoc
-      mpd_clientlib curl sqlite gemEnv.wrappedRuby libnotify ];
+  buildInputs = [
+    autoconf
+    automake
+    libtool
+    pkg-config
+    glib
+    libdaemon
+    pandoc
+    libmpdclient
+    curl
+    sqlite
+    gemEnv.wrappedRuby
+    libnotify
+  ];
 
   preConfigure = ''
     ./autogen.sh
   '';
 
   configureFlags = [ "--enable-gmodule" "--with-standard-modules=all" ];
+
+  meta = with lib; {
+    description = "A cron like daemon for mpd";
+    homepage    = "http://alip.github.io/mpdcron/";
+    license     = licenses.gpl2Plus;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ lovek323 manveru ];
+  };
 }
+# TODO: autoreconfHook this
diff --git a/pkgs/tools/audio/yabridge/default.nix b/pkgs/tools/audio/yabridge/default.nix
new file mode 100644
index 00000000000..56f6cddb61e
--- /dev/null
+++ b/pkgs/tools/audio/yabridge/default.nix
@@ -0,0 +1,127 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wine
+, boost
+, libxcb
+}:
+
+let
+  # Derived from subprojects/bitsery.wrap
+  bitsery = rec {
+    version = "5.2.0";
+    src = fetchFromGitHub {
+      owner = "fraillt";
+      repo = "bitsery";
+      rev = "v${version}";
+      sha256 = "132b0n0xlpcv97l6bhk9n57hg95pkhwqzvr9jkv57nmggn76s5q7";
+    };
+  };
+
+  # Derived from subprojects/function2.wrap
+  function2 = rec {
+    version = "4.1.0";
+    src = fetchFromGitHub {
+      owner = "Naios";
+      repo = "function2";
+      rev = version;
+      sha256 = "0abrz2as62725g212qswi35nsdlf5wrhcz78hm2qidbgqr9rkir5";
+    };
+  };
+
+  # Derived from subprojects/tomlplusplus.wrap
+  tomlplusplus = rec {
+    version = "2.1.0";
+    src = fetchFromGitHub {
+      owner = "marzer";
+      repo = "tomlplusplus";
+      rev = "v${version}";
+      sha256 = "0fspinnpyk1c9ay0h3wl8d4bbm6aswlypnrw2c7pk2i4mh981b4b";
+    };
+  };
+
+  # Derived from vst3.wrap
+  vst3 = rec {
+    version = "e2fbb41f28a4b311f2fc7d28e9b4330eec1802b6";
+    src = fetchFromGitHub {
+      owner = "robbert-vdh";
+      repo = "vst3sdk";
+      rev = version;
+      fetchSubmodules = true;
+      sha256 = "1fqpylkbljifwdw2z75agc0yxnhmv4b09fxs3rvlw1qmm5mwx0p2";
+    };
+  };
+in stdenv.mkDerivation rec {
+  pname = "yabridge";
+  version = "3.0.0";
+
+  # NOTE: Also update yabridgectl's cargoSha256 when this is updated
+  src = fetchFromGitHub {
+    owner = "robbert-vdh";
+    repo = pname;
+    rev = version;
+    sha256 = "0ha7jhnkd2i49q5rz2hp7sq6hv19bir99x51hs6nvvcf16hlf2bp";
+  };
+
+  # Unpack subproject sources
+  postUnpack = ''(
+    cd "$sourceRoot/subprojects"
+    cp -R --no-preserve=mode,ownership ${bitsery.src} bitsery-${bitsery.version}
+    tar -xf bitsery-patch-${bitsery.version}.tar.xz
+    cp -R --no-preserve=mode,ownership ${function2.src} function2-${function2.version}
+    tar -xf function2-patch-${function2.version}.tar.xz
+    cp -R --no-preserve=mode,ownership ${tomlplusplus.src} tomlplusplus
+    cp -R --no-preserve=mode,ownership ${vst3.src} vst3
+  )'';
+
+  postPatch = ''
+    patchShebangs .
+  '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wine
+  ];
+
+  buildInputs = [
+    boost
+    libxcb
+  ];
+
+  # Meson is no longer able to pick up Boost automatically.
+  # https://github.com/NixOS/nixpkgs/issues/86131
+  BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
+  BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";
+
+  mesonFlags = [
+    "--cross-file" "cross-wine.conf"
+
+    # Requires CMake and is unnecessary
+    "-Dtomlplusplus:GENERATE_CMAKE_CONFIG=disabled"
+
+    # tomlplusplus examples and tests don't build with winegcc
+    "-Dtomlplusplus:BUILD_EXAMPLES=disabled"
+    "-Dtomlplusplus:BUILD_TESTS=disabled"
+  ];
+
+  installPhase = ''
+    mkdir -p "$out/bin" "$out/lib"
+    cp yabridge-group.exe{,.so} "$out/bin"
+    cp yabridge-host.exe{,.so} "$out/bin"
+    cp libyabridge-vst2.so "$out/lib"
+    cp libyabridge-vst3.so "$out/lib"
+  '';
+
+  meta = with lib; {
+    description = "Yet Another VST bridge, run Windows VST2 plugins under Linux";
+    homepage = "https://github.com/robbert-vdh/yabridge";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ metadark ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/tools/audio/yabridgectl/default.nix b/pkgs/tools/audio/yabridgectl/default.nix
new file mode 100644
index 00000000000..6fa85cd89e8
--- /dev/null
+++ b/pkgs/tools/audio/yabridgectl/default.nix
@@ -0,0 +1,23 @@
+{ lib, rustPlatform, yabridge }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "yabridgectl";
+  version = yabridge.version;
+
+  src = yabridge.src;
+  sourceRoot = "source/tools/yabridgectl";
+  cargoSha256 = "1sjhani8h7ap42yqlnj05sx59jyz2h12qlm1ibv8ldxcpwps0bwy";
+
+  patches = [
+    ./libyabridge-from-nix-profiles.patch
+  ];
+
+  patchFlags = [ "-p3" ];
+
+  meta = with lib; {
+    description = "A small, optional utility to help set up and update yabridge for several directories at once";
+    homepage = "https://github.com/robbert-vdh/yabridge/tree/master/tools/yabridgectl";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ metadark ];
+  };
+}
diff --git a/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch b/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch
new file mode 100644
index 00000000000..e17cda6ada3
--- /dev/null
+++ b/pkgs/tools/audio/yabridgectl/libyabridge-from-nix-profiles.patch
@@ -0,0 +1,70 @@
+diff --git a/tools/yabridgectl/src/config.rs b/tools/yabridgectl/src/config.rs
+index c1c89cf..d7bd822 100644
+--- a/tools/yabridgectl/src/config.rs
++++ b/tools/yabridgectl/src/config.rs
+@@ -23,6 +23,7 @@ use std::collections::{BTreeMap, BTreeSet};
+ use std::env;
+ use std::fmt::Display;
+ use std::fs;
++use std::iter;
+ use std::path::{Path, PathBuf};
+ use which::which;
+ use xdg::BaseDirectories;
+@@ -216,34 +217,24 @@ impl Config {
+                 }
+             }
+             None => {
+-                // Search in the system library locations and in `~/.local/share/yabridge` if no
+-                // path was set explicitely. We'll also search through `/usr/local/lib` just in case
+-                // but since we advocate against installing yabridge there we won't list this path
+-                // in the error message when `libyabridge-vst2.so` can't be found.
+-                let system_path = Path::new("/usr/lib");
++                // Search through NIX_PROFILES & data home directory if no path was set explicitly.
++                let nix_profiles = env::var("NIX_PROFILES");
+                 let user_path = xdg_dirs.get_data_home();
+-                let lib_directories = [
+-                    system_path,
+-                    // Used on Debian based distros
+-                    Path::new("/usr/lib/x86_64-linux-gnu"),
+-                    // Used on Fedora
+-                    Path::new("/usr/lib64"),
+-                    Path::new("/usr/local/lib"),
+-                    Path::new("/usr/local/lib/x86_64-linux-gnu"),
+-                    Path::new("/usr/local/lib64"),
+-                    &user_path,
+-                ];
++                let lib_directories = nix_profiles.iter()
++                    .flat_map(|profiles| profiles.split(' ')
++                              .map(|profile| Path::new(profile).join("lib")))
++                    .chain(iter::once(user_path.clone()));
++
+                 let mut candidates = lib_directories
+-                    .iter()
+                     .map(|directory| directory.join(LIBYABRIDGE_VST2_NAME));
++
+                 match candidates.find(|directory| directory.exists()) {
+                     Some(candidate) => candidate,
+                     _ => {
+                         return Err(anyhow!(
+-                            "Could not find '{}' in either '{}' or '{}'. You can override the \
+-                            default search path using 'yabridgectl set --path=<path>'.",
++                            "Could not find '{}' through 'NIX_PROFILES' or '{}'. You can override the \
++                             default search path using 'yabridgectl set --path=<path>'.",
+                             LIBYABRIDGE_VST2_NAME,
+-                            system_path.display(),
+                             user_path.display()
+                         ));
+                     }
+diff --git a/tools/yabridgectl/src/main.rs b/tools/yabridgectl/src/main.rs
+index 0db1bd4..221cdd0 100644
+--- a/tools/yabridgectl/src/main.rs
++++ b/tools/yabridgectl/src/main.rs
+@@ -102,7 +102,7 @@ fn main() -> Result<()> {
+                         .about("Path to the directory containing 'libyabridge-{vst2,vst3}.so'")
+                         .long_about(
+                             "Path to the directory containing 'libyabridge-{vst2,vst3}.so'. If this \
+-                             is not set, then yabridgectl will look in both '/usr/lib' and \
++                             is not set, then yabridgectl will look through 'NIX_PROFILES' and \
+                              '~/.local/share/yabridge' by default.",
+                         )
+                         .validator(validate_path)
diff --git a/pkgs/tools/backup/btrbk/default.nix b/pkgs/tools/backup/btrbk/default.nix
index cd91d51d960..63808d48512 100644
--- a/pkgs/tools/backup/btrbk/default.nix
+++ b/pkgs/tools/backup/btrbk/default.nix
@@ -24,12 +24,6 @@ stdenv.mkDerivation rec {
     # Tainted Mode disables PERL5LIB
     substituteInPlace btrbk --replace "perl -T" "perl"
 
-    # Fix btrbk-mail
-    substituteInPlace contrib/cron/btrbk-mail \
-      --replace "/bin/date" "${coreutils}/bin/date" \
-      --replace "/bin/echo" "${coreutils}/bin/echo" \
-      --replace '$btrbk' 'btrbk'
-
     # Fix SSH filter script
     sed -i '/^export PATH/d' ssh_filter_btrbk.sh
     substituteInPlace ssh_filter_btrbk.sh --replace logger ${util-linux}/bin/logger
diff --git a/pkgs/tools/backup/sanoid/default.nix b/pkgs/tools/backup/sanoid/default.nix
index 569a07a459b..a60683a27e1 100644
--- a/pkgs/tools/backup/sanoid/default.nix
+++ b/pkgs/tools/backup/sanoid/default.nix
@@ -1,5 +1,5 @@
-{ lib, stdenv, fetchFromGitHub, fetchpatch, makeWrapper, coreutils, zfs
-, perlPackages, procps, which, openssh, sudo, mbuffer, pv, lzop, gzip, pigz }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, makeWrapper, zfs
+, perlPackages, procps, which, openssh, mbuffer, pv, lzop, gzip, pigz }:
 
 with lib;
 
diff --git a/pkgs/tools/backup/zrepl/default.nix b/pkgs/tools/backup/zrepl/default.nix
new file mode 100644
index 00000000000..8d5a5159877
--- /dev/null
+++ b/pkgs/tools/backup/zrepl/default.nix
@@ -0,0 +1,31 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "zrepl";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "zrepl";
+    repo = "zrepl";
+    rev = "v${version}";
+    sha256 = "sha256-wtUL8GGSJxn9yEdyTWKtkHODfxxLOxojNPlPLRjI9xo=";
+  };
+
+  vendorSha256 = "sha256-4LBX0bD8qirFaFkV52QFU50lEW4eae6iObIa5fFT/wA=";
+
+  subPackages = [ "." ];
+
+  postInstall = ''
+    mkdir -p $out/lib/systemd/system
+    substitute dist/systemd/zrepl.service $out/lib/systemd/system/zrepl.service \
+      --replace /usr/local/bin/zrepl $out/bin/zrepl
+  '';
+
+  meta = with lib; {
+    homepage = "https://zrepl.github.io/";
+    description = "A one-stop, integrated solution for ZFS replication";
+    platforms = platforms.linux;
+    license = licenses.mit;
+    maintainers = with maintainers; [ cole-h danderson ];
+  };
+}
diff --git a/pkgs/tools/bootloaders/refind/0001-Fix-GCC-10-compile-problem.patch b/pkgs/tools/bootloaders/refind/0001-Fix-GCC-10-compile-problem.patch
deleted file mode 100644
index 90b60235aad..00000000000
--- a/pkgs/tools/bootloaders/refind/0001-Fix-GCC-10-compile-problem.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From e34a16301f425f273a67ed3abbc45840bc82d892 Mon Sep 17 00:00:00 2001
-From: srs5694 <srs5694@users.sourceforge.net>
-Date: Fri, 15 May 2020 12:34:14 -0400
-Subject: [PATCH] Fix GCC 10 compile problem
-
----
- Make.common | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Make.common b/Make.common
-index 3f0b919..95a3a97 100644
---- a/Make.common
-+++ b/Make.common
-@@ -60,7 +60,7 @@ endif
- #
- 
- # ...for both GNU-EFI and TianoCore....
--OPTIMFLAGS      = -Os -fno-strict-aliasing
-+OPTIMFLAGS      = -Os -fno-strict-aliasing -fno-tree-loop-distribute-patterns
- CFLAGS          = $(OPTIMFLAGS) -fno-stack-protector -fshort-wchar -Wall
- 
- # ...for GNU-EFI....
--- 
-2.29.2
-
diff --git a/pkgs/tools/bootloaders/refind/default.nix b/pkgs/tools/bootloaders/refind/default.nix
index 9c36e55b8f2..eac55d6beae 100644
--- a/pkgs/tools/bootloaders/refind/default.nix
+++ b/pkgs/tools/bootloaders/refind/default.nix
@@ -14,17 +14,16 @@ in
 
 stdenv.mkDerivation rec {
   pname = "refind";
-  version = "0.12.0";
-  srcName = "refind-src-${version}";
+  version = "0.13.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/project/refind/${version}/${srcName}.tar.gz";
-    sha256 = "1i5p3sir3mx4i2q5w78360xn2kbgsj8rmgrqvsvag1zzr5dm1f3v";
+    url = "mirror://sourceforge/project/refind/${version}/${pname}-src-${version}.tar.gz";
+    sha256 = "0zivlcw1f3zwnrwvbhwq6gg781hh72g2bhc2cxcsb2zmg7q8in65";
   };
 
   patches = [
+    # Removes hardcoded toolchain for aarch64, allowing successful aarch64 builds.
     ./0001-toolchain.patch
-    ./0001-Fix-GCC-10-compile-problem.patch
   ];
 
   buildInputs = [ gnu-efi ];
@@ -44,6 +43,8 @@ stdenv.mkDerivation rec {
   buildFlags = [ "gnuefi" "fs_gnuefi" ];
 
   installPhase = ''
+    runHook preInstall
+
     install -d $out/bin/
     install -d $out/share/refind/drivers_${efiPlatform}/
     install -d $out/share/refind/tools_${efiPlatform}/
@@ -102,6 +103,8 @@ stdenv.mkDerivation rec {
     sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-install
     sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mvrefind
     sed -i 's,`which \(.*\)`,`type -p \1`,g' $out/bin/refind-mkfont
+
+    runHook postInstall
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/compression/ncompress/default.nix b/pkgs/tools/compression/ncompress/default.nix
index 438e169d23c..f580709495e 100644
--- a/pkgs/tools/compression/ncompress/default.nix
+++ b/pkgs/tools/compression/ncompress/default.nix
@@ -1,15 +1,14 @@
 {lib, stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "ncompress-4.2.4.6";
+  pname = "ncompress";
+  version = "5.0";
 
   builder = ./builder.sh;
 
-  patches = [ ./makefile.patch ];
-
   src = fetchurl {
-    url = "mirror://sourceforge/project/ncompress/${name}.tar.gz";
-    sha256 = "0sw3c7h80v9pagfqfx16ws9w2y3yrajrdk54bgiwdm0b0q06lyzv";
+    url = "mirror://sourceforge/project/ncompress/${pname}-${version}.tar.gz";
+    sha256 = "004r086c11sw9vg2j3srgxpz98w8pycjl33bk3pgqnd0s92igrn4";
   };
 
   meta = {
diff --git a/pkgs/tools/compression/ncompress/makefile.patch b/pkgs/tools/compression/ncompress/makefile.patch
deleted file mode 100644
index b61b1272f8b..00000000000
--- a/pkgs/tools/compression/ncompress/makefile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur ncompress-4.2.4.2.orig/Makefile.def ncompress-4.2.4.2/Makefile.def
---- ncompress-4.2.4.2.orig/Makefile.def	2007-09-06 22:28:42.000000000 -0500
-+++ ncompress-4.2.4.2/Makefile.def	2009-08-18 12:30:53.000000000 -0500
-@@ -31,7 +33,7 @@
- #	-DDEF_ERRNO=1				Define error (not defined in errno.h).
- #	-DMAXSEG_64K=1 -BITS=16		Support segment processsor like 80286.
- #
--options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DUSERMEM=800000 -DREGISTERS=3
-+options= $(CFLAGS) $(CPPFLAGS) -DDIRENT=1 -DUSERMEM=800000 -DREGISTERS=3 -DNOFUNCDEF=1
- 
- # libary options
- LBOPT= $(LDFLAGS)
diff --git a/pkgs/tools/filesystems/bindfs/default.nix b/pkgs/tools/filesystems/bindfs/default.nix
index cc6916869b6..12052100db3 100644
--- a/pkgs/tools/filesystems/bindfs/default.nix
+++ b/pkgs/tools/filesystems/bindfs/default.nix
@@ -1,12 +1,12 @@
 { lib, stdenv, fetchurl, fuse, pkg-config }:
 
 stdenv.mkDerivation rec {
-  version = "1.14.9";
+  version = "1.15.1";
   pname = "bindfs";
 
   src = fetchurl {
     url    = "https://bindfs.org/downloads/${pname}-${version}.tar.gz";
-    sha256 = "0fnij365dn4ihkpfc92x63inxxwpminzffyj55krp1w02canpl5n";
+    sha256 = "sha256-BN01hKbN+a9DRNQDxiGFyp+rMc465aJdAQG8EJNsaKs=";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -18,8 +18,8 @@ stdenv.mkDerivation rec {
   meta = {
     description = "A FUSE filesystem for mounting a directory to another location";
     homepage    = "https://bindfs.org";
-    license     = lib.licenses.gpl2;
-    maintainers = with lib.maintainers; [ lovek323 ];
+    license     = lib.licenses.gpl2Only;
+    maintainers = with lib.maintainers; [ lovek323 lovesegfault ];
     platforms   = lib.platforms.unix;
   };
 }
diff --git a/pkgs/tools/filesystems/catcli/default.nix b/pkgs/tools/filesystems/catcli/default.nix
index 2f179a151d1..6c101dbc9c0 100644
--- a/pkgs/tools/filesystems/catcli/default.nix
+++ b/pkgs/tools/filesystems/catcli/default.nix
@@ -7,13 +7,13 @@
 buildPythonApplication rec {
 
   pname = "catcli";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "deadc0de6";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0myhvflph4fayl2bg8m9a7prh5pcnvnb75p0jb4jpmbx7jyn7ihp";
+    sha256 = "1k5xjz353ry0vbmq1ql7brb9g4wwsijzix2zh5zpd768xl8nc1z8";
   };
 
   propagatedBuildInputs = [ docopt anytree ];
diff --git a/pkgs/tools/filesystems/e2fsprogs/default.nix b/pkgs/tools/filesystems/e2fsprogs/default.nix
index ffe716dceea..154b0006663 100644
--- a/pkgs/tools/filesystems/e2fsprogs/default.nix
+++ b/pkgs/tools/filesystems/e2fsprogs/default.nix
@@ -71,5 +71,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.unix;
     maintainers = [ maintainers.eelco ];
+    # imager.c:70:2: error: unknown type name 'loff_t'; did you mean 'off_t'?
+    broken = stdenv.isDarwin;
   };
 }
diff --git a/pkgs/tools/filesystems/fwanalyzer/default.nix b/pkgs/tools/filesystems/fwanalyzer/default.nix
new file mode 100644
index 00000000000..00266817390
--- /dev/null
+++ b/pkgs/tools/filesystems/fwanalyzer/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, e2tools
+, makeWrapper
+, mtools
+}:
+
+buildGoModule rec {
+  pname = "fwanalyzer";
+  version = "1.4.3";
+
+  src = fetchFromGitHub {
+    owner = "cruise-automation";
+    repo = pname;
+    rev = version;
+    sha256 = "1pj6s7lzw7490488a30pzvqy2riprfnhb4nzxm6sh2nsp51xalzv";
+  };
+
+  vendorSha256 = "1cjbqx75cspnkx7fgc665q920dsxnsdhqgyiawkvx0i8akczbflw";
+
+  subPackages = [ "cmd/${pname}" ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postInstall = ''
+    wrapProgram "$out/bin/fwanalyzer" --prefix PATH : "${lib.makeBinPath [ e2tools mtools ]}"
+  '';
+
+  # The tests requires an additional setup (unpacking images, etc.)
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Tool to analyze filesystem images";
+    homepage = "https://github.com/cruise-automation/fwanalyzer";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/filesystems/rmfuse/default.nix b/pkgs/tools/filesystems/rmfuse/default.nix
new file mode 100644
index 00000000000..b7850f7023f
--- /dev/null
+++ b/pkgs/tools/filesystems/rmfuse/default.nix
@@ -0,0 +1,26 @@
+{ poetry2nix, pkgs, lib }:
+
+let
+  pythonPackages = (poetry2nix.mkPoetryPackages {
+    projectDir = ./.;
+    overrides = [
+      poetry2nix.defaultPoetryOverrides
+      (import ./poetry-git-overlay.nix { inherit pkgs; })
+      (self: super: {
+
+        rmfuse = super.rmfuse.overridePythonAttrs(old: {
+          meta = old.meta // {
+            description = "RMfuse provides access to your reMarkable Cloud files in the form of a FUSE filesystem.";
+            longDescription = ''
+              RMfuse provides access to your reMarkable Cloud files in the form of a FUSE filesystem. These files are exposed either in their original format, or as PDF files that contain your annotations. This lets you manage files in the reMarkable Cloud using the same tools you use on your local system.
+            '';
+            license = lib.licenses.mit;
+            homepage = "https://github.com/rschroll/rmfuse";
+            maintainers = [ lib.maintainers.adisbladis ];
+          };
+        });
+
+      })
+    ];
+  }).python.pkgs;
+in pythonPackages.rmfuse
diff --git a/pkgs/tools/filesystems/rmfuse/poetry-git-overlay.nix b/pkgs/tools/filesystems/rmfuse/poetry-git-overlay.nix
new file mode 100644
index 00000000000..9185faedc07
--- /dev/null
+++ b/pkgs/tools/filesystems/rmfuse/poetry-git-overlay.nix
@@ -0,0 +1,14 @@
+{ pkgs }:
+self: super: {
+
+  rmfuse = super.rmfuse.overridePythonAttrs (
+    _: {
+      src = pkgs.fetchgit {
+        url = "https://github.com/rschroll/rmfuse.git";
+        rev = "ac91d477cc32311c88aa7ecd1bebd6503e426ae7";
+        sha256 = "129n00hricsf4jkgj39bq3m5nhvy4d4yg7mcvrcgwb2546wcix0n";
+      };
+    }
+  );
+
+}
diff --git a/pkgs/tools/filesystems/rmfuse/poetry.lock b/pkgs/tools/filesystems/rmfuse/poetry.lock
new file mode 100644
index 00000000000..a97b89181fb
--- /dev/null
+++ b/pkgs/tools/filesystems/rmfuse/poetry.lock
@@ -0,0 +1,547 @@
+[[package]]
+category = "main"
+description = "High level compatibility layer for multiple asynchronous event loop implementations"
+name = "anyio"
+optional = false
+python-versions = ">=3.6.2"
+version = "2.1.0"
+
+[package.dependencies]
+idna = ">=2.8"
+sniffio = ">=1.1"
+
+[package.extras]
+curio = ["curio (>=1.4)"]
+doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["coverage (>=4.5)", "hypothesis (>=4.0)", "pytest (>=6.0)", "trustme", "uvloop"]
+trio = ["trio (>=0.16)"]
+
+[[package]]
+category = "main"
+description = "asks - async http"
+name = "asks"
+optional = false
+python-versions = ">= 3.6.2"
+version = "2.4.12"
+
+[package.dependencies]
+anyio = ">=2.0,<3.0"
+async_generator = "*"
+h11 = "*"
+
+[[package]]
+category = "main"
+description = "Async generators and context managers for Python 3.5+"
+name = "async-generator"
+optional = false
+python-versions = ">=3.5"
+version = "1.10"
+
+[[package]]
+category = "main"
+description = "Classes Without Boilerplate"
+name = "attrs"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "20.3.0"
+
+[package.extras]
+dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "furo", "sphinx", "pre-commit"]
+docs = ["furo", "sphinx", "zope.interface"]
+tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
+tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six"]
+
+[[package]]
+category = "main"
+description = "The bidirectional mapping library for Python."
+name = "bidict"
+optional = false
+python-versions = ">=3.6"
+version = "0.21.2"
+
+[package.extras]
+coverage = ["coverage (<6)", "pytest-cov (<3)"]
+dev = ["setuptools-scm", "hypothesis (<6)", "py (<2)", "pytest (<7)", "pytest-benchmark (>=3.2.0,<4)", "sortedcollections (<2)", "sortedcontainers (<3)", "Sphinx (<4)", "sphinx-autodoc-typehints (<2)", "coverage (<6)", "pytest-cov (<3)", "pre-commit (<3)", "tox (<4)"]
+docs = ["Sphinx (<4)", "sphinx-autodoc-typehints (<2)"]
+precommit = ["pre-commit (<3)"]
+test = ["hypothesis (<6)", "py (<2)", "pytest (<7)", "pytest-benchmark (>=3.2.0,<4)", "sortedcollections (<2)", "sortedcontainers (<3)", "Sphinx (<4)", "sphinx-autodoc-typehints (<2)"]
+
+[[package]]
+category = "main"
+description = "Foreign Function Interface for Python calling C code."
+name = "cffi"
+optional = false
+python-versions = "*"
+version = "1.14.5"
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+category = "main"
+description = "cssselect2"
+name = "cssselect2"
+optional = false
+python-versions = ">=3.6"
+version = "0.4.1"
+
+[package.dependencies]
+tinycss2 = "*"
+webencodings = "*"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
+
+[[package]]
+category = "main"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+name = "h11"
+optional = false
+python-versions = ">=3.6"
+version = "0.12.0"
+
+[[package]]
+category = "main"
+description = "Internationalized Domain Names in Applications (IDNA)"
+name = "idna"
+optional = false
+python-versions = ">=3.4"
+version = "3.1"
+
+[[package]]
+category = "main"
+description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API."
+name = "lxml"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*"
+version = "4.6.2"
+
+[package.extras]
+cssselect = ["cssselect (>=0.7)"]
+html5 = ["html5lib"]
+htmlsoup = ["beautifulsoup4"]
+source = ["Cython (>=0.29.7)"]
+
+[[package]]
+category = "main"
+description = "Capture the outcome of Python function calls."
+name = "outcome"
+optional = false
+python-versions = ">=3.6"
+version = "1.1.0"
+
+[package.dependencies]
+attrs = ">=19.2.0"
+
+[[package]]
+category = "main"
+description = "PDF file reader/writer library"
+name = "pdfrw"
+optional = false
+python-versions = "*"
+version = "0.4"
+
+[[package]]
+category = "main"
+description = "Python Imaging Library (Fork)"
+name = "pillow"
+optional = false
+python-versions = ">=3.6"
+version = "8.1.0"
+
+[[package]]
+category = "main"
+description = "C parser in Python"
+name = "pycparser"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.20"
+
+[[package]]
+category = "main"
+description = "Python 3 bindings for libfuse 3 with async I/O support"
+name = "pyfuse3"
+optional = false
+python-versions = ">=3.5"
+version = "3.2.0"
+
+[package.dependencies]
+trio = ">=0.15"
+
+[[package]]
+category = "main"
+description = "The Reportlab Toolkit"
+name = "reportlab"
+optional = false
+python-versions = "*"
+version = "3.5.59"
+
+[package.dependencies]
+pillow = ">=4.0.0"
+
+[[package]]
+category = "main"
+description = "reMarkable Cloud Library"
+name = "rmcl"
+optional = false
+python-versions = ">=3.7,<4.0"
+version = "0.3.1"
+
+[package.dependencies]
+asks = ">=2.4.12,<3.0.0"
+trio = ">=0.18.0,<0.19.0"
+xdg = ">=5.0.1,<6.0.0"
+
+[[package]]
+category = "main"
+description = ""
+name = "rmfuse"
+optional = false
+python-versions = "^3.7"
+version = "0.1.1"
+
+[package.dependencies]
+bidict = "^0.21.2"
+pyfuse3 = "^3.2.0"
+rmcl = "^0.3.1"
+rmrl = "^0.1.2"
+
+[package.source]
+reference = "ac91d477cc32311c88aa7ecd1bebd6503e426ae7"
+type = "git"
+url = "https://github.com/rschroll/rmfuse.git"
+[[package]]
+category = "main"
+description = "Render reMarkable documents to PDF"
+name = "rmrl"
+optional = false
+python-versions = ">=3.7,<4.0"
+version = "0.1.2"
+
+[package.dependencies]
+pdfrw = ">=0.4,<0.5"
+reportlab = ">=3.5.59,<4.0.0"
+svglib = ">=1.0.1,<2.0.0"
+xdg = ">=5.0.1,<6.0.0"
+
+[[package]]
+category = "main"
+description = "Sniff out which async library your code is running under"
+name = "sniffio"
+optional = false
+python-versions = ">=3.5"
+version = "1.2.0"
+
+[[package]]
+category = "main"
+description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set"
+name = "sortedcontainers"
+optional = false
+python-versions = "*"
+version = "2.3.0"
+
+[[package]]
+category = "main"
+description = "A pure-Python library for reading and converting SVG"
+name = "svglib"
+optional = false
+python-versions = ">=3"
+version = "1.0.1"
+
+[package.dependencies]
+cssselect2 = ">=0.2.0"
+lxml = "*"
+reportlab = "*"
+tinycss2 = ">=0.6.0"
+
+[[package]]
+category = "main"
+description = "tinycss2"
+name = "tinycss2"
+optional = false
+python-versions = ">=3.6"
+version = "1.1.0"
+
+[package.dependencies]
+webencodings = ">=0.4"
+
+[package.extras]
+doc = ["sphinx", "sphinx-rtd-theme"]
+test = ["pytest", "pytest-cov", "pytest-flake8", "pytest-isort", "coverage"]
+
+[[package]]
+category = "main"
+description = "A friendly Python library for async concurrency and I/O"
+name = "trio"
+optional = false
+python-versions = ">=3.6"
+version = "0.18.0"
+
+[package.dependencies]
+async-generator = ">=1.9"
+attrs = ">=19.2.0"
+cffi = ">=1.14"
+idna = "*"
+outcome = "*"
+sniffio = "*"
+sortedcontainers = "*"
+
+[[package]]
+category = "main"
+description = "Character encoding aliases for legacy web content"
+name = "webencodings"
+optional = false
+python-versions = "*"
+version = "0.5.1"
+
+[[package]]
+category = "main"
+description = "Variables defined by the XDG Base Directory Specification"
+name = "xdg"
+optional = false
+python-versions = ">=3.6,<4.0"
+version = "5.0.1"
+
+[metadata]
+content-hash = "df8dfb527656dec034712b2d07aaacfdee20f89f635d38af52bb21888d7d4130"
+lock-version = "1.0"
+python-versions = "^3.8"
+
+[metadata.files]
+anyio = [
+    {file = "anyio-2.1.0-py3-none-any.whl", hash = "sha256:c286818ccd5dcbd5d385b223f16a055393474527b1d5650da489828a9887d559"},
+    {file = "anyio-2.1.0.tar.gz", hash = "sha256:8a56e08623dc55955a06719d4ad62de6009bb3f1dd04936e60b2104dd58da484"},
+]
+asks = [
+    {file = "asks-2.4.12.tar.gz", hash = "sha256:38de944eb350e7e4e3a918055fa8ff033da5f7b5ff385c1160a2d6b9d84783b0"},
+]
+async-generator = [
+    {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"},
+    {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"},
+]
+attrs = [
+    {file = "attrs-20.3.0-py2.py3-none-any.whl", hash = "sha256:31b2eced602aa8423c2aea9c76a724617ed67cf9513173fd3a4f03e3a929c7e6"},
+    {file = "attrs-20.3.0.tar.gz", hash = "sha256:832aa3cde19744e49938b91fea06d69ecb9e649c93ba974535d08ad92164f700"},
+]
+bidict = [
+    {file = "bidict-0.21.2-py2.py3-none-any.whl", hash = "sha256:929d056e8d0d9b17ceda20ba5b24ac388e2a4d39802b87f9f4d3f45ecba070bf"},
+    {file = "bidict-0.21.2.tar.gz", hash = "sha256:4fa46f7ff96dc244abfc437383d987404ae861df797e2fd5b190e233c302be09"},
+]
+cffi = [
+    {file = "cffi-1.14.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:bb89f306e5da99f4d922728ddcd6f7fcebb3241fc40edebcb7284d7514741991"},
+    {file = "cffi-1.14.5-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:34eff4b97f3d982fb93e2831e6750127d1355a923ebaeeb565407b3d2f8d41a1"},
+    {file = "cffi-1.14.5-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99cd03ae7988a93dd00bcd9d0b75e1f6c426063d6f03d2f90b89e29b25b82dfa"},
+    {file = "cffi-1.14.5-cp27-cp27m-win32.whl", hash = "sha256:65fa59693c62cf06e45ddbb822165394a288edce9e276647f0046e1ec26920f3"},
+    {file = "cffi-1.14.5-cp27-cp27m-win_amd64.whl", hash = "sha256:51182f8927c5af975fece87b1b369f722c570fe169f9880764b1ee3bca8347b5"},
+    {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:43e0b9d9e2c9e5d152946b9c5fe062c151614b262fda2e7b201204de0b99e482"},
+    {file = "cffi-1.14.5-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:cbde590d4faaa07c72bf979734738f328d239913ba3e043b1e98fe9a39f8b2b6"},
+    {file = "cffi-1.14.5-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:5de7970188bb46b7bf9858eb6890aad302577a5f6f75091fd7cdd3ef13ef3045"},
+    {file = "cffi-1.14.5-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:a465da611f6fa124963b91bf432d960a555563efe4ed1cc403ba5077b15370aa"},
+    {file = "cffi-1.14.5-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:d42b11d692e11b6634f7613ad8df5d6d5f8875f5d48939520d351007b3c13406"},
+    {file = "cffi-1.14.5-cp35-cp35m-win32.whl", hash = "sha256:72d8d3ef52c208ee1c7b2e341f7d71c6fd3157138abf1a95166e6165dd5d4369"},
+    {file = "cffi-1.14.5-cp35-cp35m-win_amd64.whl", hash = "sha256:29314480e958fd8aab22e4a58b355b629c59bf5f2ac2492b61e3dc06d8c7a315"},
+    {file = "cffi-1.14.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:3d3dd4c9e559eb172ecf00a2a7517e97d1e96de2a5e610bd9b68cea3925b4892"},
+    {file = "cffi-1.14.5-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:48e1c69bbacfc3d932221851b39d49e81567a4d4aac3b21258d9c24578280058"},
+    {file = "cffi-1.14.5-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:69e395c24fc60aad6bb4fa7e583698ea6cc684648e1ffb7fe85e3c1ca131a7d5"},
+    {file = "cffi-1.14.5-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:9e93e79c2551ff263400e1e4be085a1210e12073a31c2011dbbda14bda0c6132"},
+    {file = "cffi-1.14.5-cp36-cp36m-win32.whl", hash = "sha256:58e3f59d583d413809d60779492342801d6e82fefb89c86a38e040c16883be53"},
+    {file = "cffi-1.14.5-cp36-cp36m-win_amd64.whl", hash = "sha256:005a36f41773e148deac64b08f233873a4d0c18b053d37da83f6af4d9087b813"},
+    {file = "cffi-1.14.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2894f2df484ff56d717bead0a5c2abb6b9d2bf26d6960c4604d5c48bbc30ee73"},
+    {file = "cffi-1.14.5-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0857f0ae312d855239a55c81ef453ee8fd24136eaba8e87a2eceba644c0d4c06"},
+    {file = "cffi-1.14.5-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:cd2868886d547469123fadc46eac7ea5253ea7fcb139f12e1dfc2bbd406427d1"},
+    {file = "cffi-1.14.5-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:35f27e6eb43380fa080dccf676dece30bef72e4a67617ffda586641cd4508d49"},
+    {file = "cffi-1.14.5-cp37-cp37m-win32.whl", hash = "sha256:9ff227395193126d82e60319a673a037d5de84633f11279e336f9c0f189ecc62"},
+    {file = "cffi-1.14.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9cf8022fb8d07a97c178b02327b284521c7708d7c71a9c9c355c178ac4bbd3d4"},
+    {file = "cffi-1.14.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8b198cec6c72df5289c05b05b8b0969819783f9418e0409865dac47288d2a053"},
+    {file = "cffi-1.14.5-cp38-cp38-manylinux1_i686.whl", hash = "sha256:ad17025d226ee5beec591b52800c11680fca3df50b8b29fe51d882576e039ee0"},
+    {file = "cffi-1.14.5-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6c97d7350133666fbb5cf4abdc1178c812cb205dc6f41d174a7b0f18fb93337e"},
+    {file = "cffi-1.14.5-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:8ae6299f6c68de06f136f1f9e69458eae58f1dacf10af5c17353eae03aa0d827"},
+    {file = "cffi-1.14.5-cp38-cp38-win32.whl", hash = "sha256:b85eb46a81787c50650f2392b9b4ef23e1f126313b9e0e9013b35c15e4288e2e"},
+    {file = "cffi-1.14.5-cp38-cp38-win_amd64.whl", hash = "sha256:1f436816fc868b098b0d63b8920de7d208c90a67212546d02f84fe78a9c26396"},
+    {file = "cffi-1.14.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1071534bbbf8cbb31b498d5d9db0f274f2f7a865adca4ae429e147ba40f73dea"},
+    {file = "cffi-1.14.5-cp39-cp39-manylinux1_i686.whl", hash = "sha256:9de2e279153a443c656f2defd67769e6d1e4163952b3c622dcea5b08a6405322"},
+    {file = "cffi-1.14.5-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6e4714cc64f474e4d6e37cfff31a814b509a35cb17de4fb1999907575684479c"},
+    {file = "cffi-1.14.5-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:158d0d15119b4b7ff6b926536763dc0714313aa59e320ddf787502c70c4d4bee"},
+    {file = "cffi-1.14.5-cp39-cp39-win32.whl", hash = "sha256:afb29c1ba2e5a3736f1c301d9d0abe3ec8b86957d04ddfa9d7a6a42b9367e396"},
+    {file = "cffi-1.14.5-cp39-cp39-win_amd64.whl", hash = "sha256:f2d45f97ab6bb54753eab54fffe75aaf3de4ff2341c9daee1987ee1837636f1d"},
+    {file = "cffi-1.14.5.tar.gz", hash = "sha256:fd78e5fee591709f32ef6edb9a015b4aa1a5022598e36227500c8f4e02328d9c"},
+]
+cssselect2 = [
+    {file = "cssselect2-0.4.1-py3-none-any.whl", hash = "sha256:2f4a9f20965367bae459e3bb42561f7927e0cfe5b7ea1692757cf67ef5d7dace"},
+    {file = "cssselect2-0.4.1.tar.gz", hash = "sha256:93fbb9af860e95dd40bf18c3b2b6ed99189a07c0f29ba76f9c5be71344664ec8"},
+]
+h11 = [
+    {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"},
+    {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"},
+]
+idna = [
+    {file = "idna-3.1-py3-none-any.whl", hash = "sha256:5205d03e7bcbb919cc9c19885f9920d622ca52448306f2377daede5cf3faac16"},
+    {file = "idna-3.1.tar.gz", hash = "sha256:c5b02147e01ea9920e6b0a3f1f7bb833612d507592c837a6c49552768f4054e1"},
+]
+lxml = [
+    {file = "lxml-4.6.2-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a9d6bc8642e2c67db33f1247a77c53476f3a166e09067c0474facb045756087f"},
+    {file = "lxml-4.6.2-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:791394449e98243839fa822a637177dd42a95f4883ad3dec2a0ce6ac99fb0a9d"},
+    {file = "lxml-4.6.2-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:68a5d77e440df94011214b7db907ec8f19e439507a70c958f750c18d88f995d2"},
+    {file = "lxml-4.6.2-cp27-cp27m-win32.whl", hash = "sha256:fc37870d6716b137e80d19241d0e2cff7a7643b925dfa49b4c8ebd1295eb506e"},
+    {file = "lxml-4.6.2-cp27-cp27m-win_amd64.whl", hash = "sha256:69a63f83e88138ab7642d8f61418cf3180a4d8cd13995df87725cb8b893e950e"},
+    {file = "lxml-4.6.2-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:42ebca24ba2a21065fb546f3e6bd0c58c3fe9ac298f3a320147029a4850f51a2"},
+    {file = "lxml-4.6.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:f83d281bb2a6217cd806f4cf0ddded436790e66f393e124dfe9731f6b3fb9afe"},
+    {file = "lxml-4.6.2-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:535f067002b0fd1a4e5296a8f1bf88193080ff992a195e66964ef2a6cfec5388"},
+    {file = "lxml-4.6.2-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:366cb750140f221523fa062d641393092813b81e15d0e25d9f7c6025f910ee80"},
+    {file = "lxml-4.6.2-cp35-cp35m-manylinux2014_aarch64.whl", hash = "sha256:97db258793d193c7b62d4e2586c6ed98d51086e93f9a3af2b2034af01450a74b"},
+    {file = "lxml-4.6.2-cp35-cp35m-win32.whl", hash = "sha256:648914abafe67f11be7d93c1a546068f8eff3c5fa938e1f94509e4a5d682b2d8"},
+    {file = "lxml-4.6.2-cp35-cp35m-win_amd64.whl", hash = "sha256:4e751e77006da34643ab782e4a5cc21ea7b755551db202bc4d3a423b307db780"},
+    {file = "lxml-4.6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:681d75e1a38a69f1e64ab82fe4b1ed3fd758717bed735fb9aeaa124143f051af"},
+    {file = "lxml-4.6.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:127f76864468d6630e1b453d3ffbbd04b024c674f55cf0a30dc2595137892d37"},
+    {file = "lxml-4.6.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4fb85c447e288df535b17ebdebf0ec1cf3a3f1a8eba7e79169f4f37af43c6b98"},
+    {file = "lxml-4.6.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:5be4a2e212bb6aa045e37f7d48e3e1e4b6fd259882ed5a00786f82e8c37ce77d"},
+    {file = "lxml-4.6.2-cp36-cp36m-win32.whl", hash = "sha256:8c88b599e226994ad4db29d93bc149aa1aff3dc3a4355dd5757569ba78632bdf"},
+    {file = "lxml-4.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:6e4183800f16f3679076dfa8abf2db3083919d7e30764a069fb66b2b9eff9939"},
+    {file = "lxml-4.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d8d3d4713f0c28bdc6c806a278d998546e8efc3498949e3ace6e117462ac0a5e"},
+    {file = "lxml-4.6.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:8246f30ca34dc712ab07e51dc34fea883c00b7ccb0e614651e49da2c49a30711"},
+    {file = "lxml-4.6.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:923963e989ffbceaa210ac37afc9b906acebe945d2723e9679b643513837b089"},
+    {file = "lxml-4.6.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:1471cee35eba321827d7d53d104e7b8c593ea3ad376aa2df89533ce8e1b24a01"},
+    {file = "lxml-4.6.2-cp37-cp37m-win32.whl", hash = "sha256:2363c35637d2d9d6f26f60a208819e7eafc4305ce39dc1d5005eccc4593331c2"},
+    {file = "lxml-4.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:f4822c0660c3754f1a41a655e37cb4dbbc9be3d35b125a37fab6f82d47674ebc"},
+    {file = "lxml-4.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0448576c148c129594d890265b1a83b9cd76fd1f0a6a04620753d9a6bcfd0a4d"},
+    {file = "lxml-4.6.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:60a20bfc3bd234d54d49c388950195d23a5583d4108e1a1d47c9eef8d8c042b3"},
+    {file = "lxml-4.6.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2e5cc908fe43fe1aa299e58046ad66981131a66aea3129aac7770c37f590a644"},
+    {file = "lxml-4.6.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:50c348995b47b5a4e330362cf39fc503b4a43b14a91c34c83b955e1805c8e308"},
+    {file = "lxml-4.6.2-cp38-cp38-win32.whl", hash = "sha256:94d55bd03d8671686e3f012577d9caa5421a07286dd351dfef64791cf7c6c505"},
+    {file = "lxml-4.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:7a7669ff50f41225ca5d6ee0a1ec8413f3a0d8aa2b109f86d540887b7ec0d72a"},
+    {file = "lxml-4.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e0bfe9bb028974a481410432dbe1b182e8191d5d40382e5b8ff39cdd2e5c5931"},
+    {file = "lxml-4.6.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:6fd8d5903c2e53f49e99359b063df27fdf7acb89a52b6a12494208bf61345a03"},
+    {file = "lxml-4.6.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7e9eac1e526386df7c70ef253b792a0a12dd86d833b1d329e038c7a235dfceb5"},
+    {file = "lxml-4.6.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:7ee8af0b9f7de635c61cdd5b8534b76c52cd03536f29f51151b377f76e214a1a"},
+    {file = "lxml-4.6.2-cp39-cp39-win32.whl", hash = "sha256:2e6fd1b8acd005bd71e6c94f30c055594bbd0aa02ef51a22bbfa961ab63b2d75"},
+    {file = "lxml-4.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:535332fe9d00c3cd455bd3dd7d4bacab86e2d564bdf7606079160fa6251caacf"},
+    {file = "lxml-4.6.2.tar.gz", hash = "sha256:cd11c7e8d21af997ee8079037fff88f16fda188a9776eb4b81c7e4c9c0a7d7fc"},
+]
+outcome = [
+    {file = "outcome-1.1.0-py2.py3-none-any.whl", hash = "sha256:c7dd9375cfd3c12db9801d080a3b63d4b0a261aa996c4c13152380587288d958"},
+    {file = "outcome-1.1.0.tar.gz", hash = "sha256:e862f01d4e626e63e8f92c38d1f8d5546d3f9cce989263c521b2e7990d186967"},
+]
+pdfrw = [
+    {file = "pdfrw-0.4-py2.py3-none-any.whl", hash = "sha256:758289edaa3b672e9a1a67504be73c18ec668d4e5b9d5ac9cbc0dc753d8d196b"},
+    {file = "pdfrw-0.4.tar.gz", hash = "sha256:0dc0494a0e6561b268542b28ede2280387c2728114f117d3bb5d8e4787b93ef4"},
+]
+pillow = [
+    {file = "Pillow-8.1.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:d355502dce85ade85a2511b40b4c61a128902f246504f7de29bbeec1ae27933a"},
+    {file = "Pillow-8.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:93a473b53cc6e0b3ce6bf51b1b95b7b1e7e6084be3a07e40f79b42e83503fbf2"},
+    {file = "Pillow-8.1.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:2353834b2c49b95e1313fb34edf18fca4d57446675d05298bb694bca4b194174"},
+    {file = "Pillow-8.1.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:1d208e670abfeb41b6143537a681299ef86e92d2a3dac299d3cd6830d5c7bded"},
+    {file = "Pillow-8.1.0-cp36-cp36m-win32.whl", hash = "sha256:dd9eef866c70d2cbbea1ae58134eaffda0d4bfea403025f4db6859724b18ab3d"},
+    {file = "Pillow-8.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:b09e10ec453de97f9a23a5aa5e30b334195e8d2ddd1ce76cc32e52ba63c8b31d"},
+    {file = "Pillow-8.1.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:b02a0b9f332086657852b1f7cb380f6a42403a6d9c42a4c34a561aa4530d5234"},
+    {file = "Pillow-8.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ca20739e303254287138234485579b28cb0d524401f83d5129b5ff9d606cb0a8"},
+    {file = "Pillow-8.1.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:604815c55fd92e735f9738f65dabf4edc3e79f88541c221d292faec1904a4b17"},
+    {file = "Pillow-8.1.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cf6e33d92b1526190a1de904df21663c46a456758c0424e4f947ae9aa6088bf7"},
+    {file = "Pillow-8.1.0-cp37-cp37m-win32.whl", hash = "sha256:47c0d93ee9c8b181f353dbead6530b26980fe4f5485aa18be8f1fd3c3cbc685e"},
+    {file = "Pillow-8.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:96d4dc103d1a0fa6d47c6c55a47de5f5dafd5ef0114fa10c85a1fd8e0216284b"},
+    {file = "Pillow-8.1.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:7916cbc94f1c6b1301ac04510d0881b9e9feb20ae34094d3615a8a7c3db0dcc0"},
+    {file = "Pillow-8.1.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:3de6b2ee4f78c6b3d89d184ade5d8fa68af0848f9b6b6da2b9ab7943ec46971a"},
+    {file = "Pillow-8.1.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cdbbe7dff4a677fb555a54f9bc0450f2a21a93c5ba2b44e09e54fcb72d2bd13d"},
+    {file = "Pillow-8.1.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f50e7a98b0453f39000619d845be8b06e611e56ee6e8186f7f60c3b1e2f0feae"},
+    {file = "Pillow-8.1.0-cp38-cp38-win32.whl", hash = "sha256:cb192176b477d49b0a327b2a5a4979552b7a58cd42037034316b8018ac3ebb59"},
+    {file = "Pillow-8.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:6c5275bd82711cd3dcd0af8ce0bb99113ae8911fc2952805f1d012de7d600a4c"},
+    {file = "Pillow-8.1.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:165c88bc9d8dba670110c689e3cc5c71dbe4bfb984ffa7cbebf1fac9554071d6"},
+    {file = "Pillow-8.1.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:5e2fe3bb2363b862671eba632537cd3a823847db4d98be95690b7e382f3d6378"},
+    {file = "Pillow-8.1.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7612520e5e1a371d77e1d1ca3a3ee6227eef00d0a9cddb4ef7ecb0b7396eddf7"},
+    {file = "Pillow-8.1.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d673c4990acd016229a5c1c4ee8a9e6d8f481b27ade5fc3d95938697fa443ce0"},
+    {file = "Pillow-8.1.0-cp39-cp39-win32.whl", hash = "sha256:dc577f4cfdda354db3ae37a572428a90ffdbe4e51eda7849bf442fb803f09c9b"},
+    {file = "Pillow-8.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:22d070ca2e60c99929ef274cfced04294d2368193e935c5d6febfd8b601bf865"},
+    {file = "Pillow-8.1.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:a3d3e086474ef12ef13d42e5f9b7bbf09d39cf6bd4940f982263d6954b13f6a9"},
+    {file = "Pillow-8.1.0-pp36-pypy36_pp73-manylinux2010_i686.whl", hash = "sha256:731ca5aabe9085160cf68b2dbef95fc1991015bc0a3a6ea46a371ab88f3d0913"},
+    {file = "Pillow-8.1.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:bba80df38cfc17f490ec651c73bb37cd896bc2400cfba27d078c2135223c1206"},
+    {file = "Pillow-8.1.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c3d911614b008e8a576b8e5303e3db29224b455d3d66d1b2848ba6ca83f9ece9"},
+    {file = "Pillow-8.1.0-pp37-pypy37_pp73-manylinux2010_i686.whl", hash = "sha256:39725acf2d2e9c17356e6835dccebe7a697db55f25a09207e38b835d5e1bc032"},
+    {file = "Pillow-8.1.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:81c3fa9a75d9f1afafdb916d5995633f319db09bd773cb56b8e39f1e98d90820"},
+    {file = "Pillow-8.1.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:b6f00ad5ebe846cc91763b1d0c6d30a8042e02b2316e27b05de04fa6ec831ec5"},
+    {file = "Pillow-8.1.0.tar.gz", hash = "sha256:887668e792b7edbfb1d3c9d8b5d8c859269a0f0eba4dda562adb95500f60dbba"},
+]
+pycparser = [
+    {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
+    {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
+]
+pyfuse3 = [
+    {file = "pyfuse3-3.2.0.tar.gz", hash = "sha256:45f0053ad601b03a36e2c283a5271403674245a66a0daf50e3deaab0ea4fa82f"},
+]
+reportlab = [
+    {file = "reportlab-3.5.59-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:1da3d7a35f918cee905facfa94bd00ae6091cadc06dca1b0b31b69ae02d41d1d"},
+    {file = "reportlab-3.5.59-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:792efba0c0c6e4ee94f6dc95f305451733ee9230a1c7d51cb8e5301a549e0dfb"},
+    {file = "reportlab-3.5.59-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f3d4a1a273dc141e03b72a553c11bc14dd7a27ec7654a071edcf83eb04f004bc"},
+    {file = "reportlab-3.5.59-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e2b4e33fea2ce9d3a14ea39191b169e41eb2ac995274f54ac8fd27519974bce8"},
+    {file = "reportlab-3.5.59-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:b1b20208ecdfffd7ca027955c4fe8972b28b30a4b3b80cf25099a08d3b20ed7c"},
+    {file = "reportlab-3.5.59-cp27-cp27m-win32.whl", hash = "sha256:5ed00894e0f8281c0b7c0494b4d3067c641fd90c8e5cf933089ec4cc9a48e491"},
+    {file = "reportlab-3.5.59-cp27-cp27m-win_amd64.whl", hash = "sha256:85650446538cd2f606ca234634142a7ccd74cb6db7cfec250f76a4242e0f2431"},
+    {file = "reportlab-3.5.59-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:79d63ca40231ca3860859b39a92daa5219035ba9553da89a5e1b218550744121"},
+    {file = "reportlab-3.5.59-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:a0c377bc45e73c3f15f55d7de69fab270d174749d5b454ab0de502b15430ec2a"},
+    {file = "reportlab-3.5.59-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:cfa854bea525f8c913cb77e2bda724d94b965a0eb3bcfc4a645a9baa29bb86e2"},
+    {file = "reportlab-3.5.59-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:3d7713dddaa8081ed709a1fa2456a43f6a74b0f07d605da8441fd53fef334f69"},
+    {file = "reportlab-3.5.59-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:ff547cf4c1de7e104cad1a378431ff81efcb03e90e40871ee686107da5b91442"},
+    {file = "reportlab-3.5.59-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19353aead39fc115a4d6c598d6fb9fa26da7e69160a0443ebb49b02903e704e8"},
+    {file = "reportlab-3.5.59-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6f3ad2b1afe99c436563cd436d8693d4a12e2c4bd45f70c7705759ff7837fe53"},
+    {file = "reportlab-3.5.59-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:b26d6f416891cef93411d6d478a25db275766081a5fb66368248293ef459f3be"},
+    {file = "reportlab-3.5.59-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:dd9687359e466086b9f6fe6d8069034017f8b6ca3080944fae5709767ca6814e"},
+    {file = "reportlab-3.5.59-cp36-cp36m-win32.whl", hash = "sha256:b71faf3b6e4d7058e1af1b8afedaf39a962db4a219affc8177009d8244ec10d4"},
+    {file = "reportlab-3.5.59-cp36-cp36m-win_amd64.whl", hash = "sha256:4ca5233a19a5ceca23546290f43addec2345789c7d65bb32f8b2668aa148351f"},
+    {file = "reportlab-3.5.59-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:9da445cb79e3f740756924c053edc952cde11a65ff5af8acfda3c0a1317136ef"},
+    {file = "reportlab-3.5.59-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:07bff6742fba612da8d1b1f783c436338c6fdc6962828159827d5ca7d2b67935"},
+    {file = "reportlab-3.5.59-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:52f8237654acbc78ea2fa6fb4a6a06e5b023b6da93f7889adfe2deba09473fad"},
+    {file = "reportlab-3.5.59-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:739b743b7ca1ba4b4d64c321de6fccb49b562d0507ea06c817d9cc4faed5cd22"},
+    {file = "reportlab-3.5.59-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:33f3cfdc492575f8af3225701301a7e62fc478358729820c9e0091aff5831378"},
+    {file = "reportlab-3.5.59-cp37-cp37m-win32.whl", hash = "sha256:3e2b4d69763103b9dc9b54c0952dc3cee05cedd06e28c0987fad7f84705b12c0"},
+    {file = "reportlab-3.5.59-cp37-cp37m-win_amd64.whl", hash = "sha256:18a876449c9000c391dd3415ebc8454cd7bb9e488977b894886a2d7d018f16cd"},
+    {file = "reportlab-3.5.59-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:04a08d284da86882ec3a41a7c719833362ef891b09ee8e2fbb47cee352aa684a"},
+    {file = "reportlab-3.5.59-cp38-cp38-manylinux1_i686.whl", hash = "sha256:83b28104edd58ad65748d2d0e60e0d97e3b91b3e90b4573ea6fe60de6811972c"},
+    {file = "reportlab-3.5.59-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9fabd5fbd24f5971085ffe53150d663f158f7d3050b25c95736e29ebf676d454"},
+    {file = "reportlab-3.5.59-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:b4ba4c30af7044ee987e61c88a5ffb76031ca0c53666bc85d823b7de55ddbc75"},
+    {file = "reportlab-3.5.59-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a315edef5c5610b0c75790142f49487e89ea34397fc247ae8aa890fe6d6dd057"},
+    {file = "reportlab-3.5.59-cp38-cp38-win32.whl", hash = "sha256:5214a289cf01ebbd65e49bae83709671dd9edb601891cf0ae8abf85f3c0b392f"},
+    {file = "reportlab-3.5.59-cp38-cp38-win_amd64.whl", hash = "sha256:009fa61710647cdc62eb373345248d8ebb93583a058990f7c4f9be46d90aa5b1"},
+    {file = "reportlab-3.5.59-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:09fb11ab1500e679fc1b01199d2fed24435499856e75043a9ac0d31dd48fd881"},
+    {file = "reportlab-3.5.59-cp39-cp39-manylinux1_i686.whl", hash = "sha256:18eec161411026dde49767bee4e5e8eeb8014879554811a62581dc7433628d5b"},
+    {file = "reportlab-3.5.59-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:a1d3f7022a920d4a5e165d264581f1862e1c1b877ceeabb96fe98cec98125ae5"},
+    {file = "reportlab-3.5.59-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:1b85c20e89c22ae902ca973df2afdd2d64d27dc4ffd2b29ebad8c805a213756b"},
+    {file = "reportlab-3.5.59-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:de0c675fc2998a7eaa929c356ba49c84f53a892e9ab25e8ee7d8ebbbdcb2ac16"},
+    {file = "reportlab-3.5.59-cp39-cp39-win32.whl", hash = "sha256:3b0026c1129147befd4e5a8cf25da8dea1096fce371e7b2412e36d7254019c06"},
+    {file = "reportlab-3.5.59-cp39-cp39-win_amd64.whl", hash = "sha256:6191961533d49c9d860964d42bada4d7ac3bb28502d984feb8034093f2012fa8"},
+    {file = "reportlab-3.5.59.tar.gz", hash = "sha256:a755cca2dcf023130b03bb671670301a992157d5c3151d838c0b68ef89894536"},
+]
+rmcl = [
+    {file = "rmcl-0.3.1-py3-none-any.whl", hash = "sha256:e4ebcc3e6ce7e9efb1dec4a2d0a44c463ef3854d44e1f8919c65a2b3f9312ec7"},
+    {file = "rmcl-0.3.1.tar.gz", hash = "sha256:5b5316adf53cca9e56273cad220cb7374cd56e7bac962c943868b05fc090e98c"},
+]
+rmfuse = []
+rmrl = [
+    {file = "rmrl-0.1.2-py3-none-any.whl", hash = "sha256:173231c7122a11201232ed8fe74e4a9a65192b87886ef8a98ae912aa9b875c26"},
+    {file = "rmrl-0.1.2.tar.gz", hash = "sha256:8c8e757af5ca3eb7475f56803f7f37256fe4c5cad3a9ea5ad7534b2ebd172447"},
+]
+sniffio = [
+    {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"},
+    {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"},
+]
+sortedcontainers = [
+    {file = "sortedcontainers-2.3.0-py2.py3-none-any.whl", hash = "sha256:37257a32add0a3ee490bb170b599e93095eed89a55da91fa9f48753ea12fd73f"},
+    {file = "sortedcontainers-2.3.0.tar.gz", hash = "sha256:59cc937650cf60d677c16775597c89a960658a09cf7c1a668f86e1e4464b10a1"},
+]
+svglib = [
+    {file = "svglib-1.0.1.tar.gz", hash = "sha256:ff01593e8c07ea462d3742e1f4141bfa261cbd4400ceb25dfb8fec3508ad0e50"},
+]
+tinycss2 = [
+    {file = "tinycss2-1.1.0-py3-none-any.whl", hash = "sha256:0353b5234bcaee7b1ac7ca3dea7e02cd338a9f8dcbb8f2dcd32a5795ec1e5f9a"},
+    {file = "tinycss2-1.1.0.tar.gz", hash = "sha256:fbdcac3044d60eb85fdb2aa840ece43cf7dbe798e373e6ee0be545d4d134e18a"},
+]
+trio = [
+    {file = "trio-0.18.0-py3-none-any.whl", hash = "sha256:a42af0634ba729cbfe8578be058750c6471dac19fbc7167ec6a3ca3f966fb424"},
+    {file = "trio-0.18.0.tar.gz", hash = "sha256:87a66ae61f27fe500c9024926a9ba482c07e1e0f56380b70a264d19c435ba076"},
+]
+webencodings = [
+    {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+    {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
+xdg = [
+    {file = "xdg-5.0.1-py3-none-any.whl", hash = "sha256:9ddd6649bee9148f952305603a08474e3ef37c909eb19dfcb9737d54ebcc407e"},
+    {file = "xdg-5.0.1.tar.gz", hash = "sha256:97a27058caa61b4ce04e05471643caa6bc8c563d2638f92c0516ac50208146d8"},
+]
diff --git a/pkgs/tools/filesystems/rmfuse/pyproject.toml b/pkgs/tools/filesystems/rmfuse/pyproject.toml
new file mode 100644
index 00000000000..1163e308e70
--- /dev/null
+++ b/pkgs/tools/filesystems/rmfuse/pyproject.toml
@@ -0,0 +1,15 @@
+[tool.poetry]
+name = "rmfuse-env"
+version = "0.1.0"
+description = ""
+authors = []
+
+[tool.poetry.dependencies]
+python = "^3.8"
+rmfuse = {git = "https://github.com/rschroll/rmfuse.git"}
+
+[tool.poetry.dev-dependencies]
+
+[build-system]
+requires = ["poetry-core>=1.0.0"]
+build-backend = "poetry.core.masonry.api"
diff --git a/pkgs/tools/filesystems/rmfuse/update b/pkgs/tools/filesystems/rmfuse/update
new file mode 100644
index 00000000000..77cfe9ff86d
--- /dev/null
+++ b/pkgs/tools/filesystems/rmfuse/update
@@ -0,0 +1,5 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p poetry poetry2nix.cli
+set -eu
+poetry lock
+poetry2nix lock
diff --git a/pkgs/tools/games/ajour/default.nix b/pkgs/tools/games/ajour/default.nix
index 291c783c914..a7893ac754f 100644
--- a/pkgs/tools/games/ajour/default.nix
+++ b/pkgs/tools/games/ajour/default.nix
@@ -34,16 +34,16 @@ let
 
 in rustPlatform.buildRustPackage rec {
   pname = "Ajour";
-  version = "0.7.0";
+  version = "0.7.1";
 
   src = fetchFromGitHub {
     owner = "casperstorm";
     repo = "ajour";
     rev = version;
-    sha256 = "1lwwj16q24k3d3vaj64zkai4cb15hxp6bzicp004q5az4gbriwih";
+    sha256 = "sha256-ZN62RIQEokailZRBQUq8nX4Eq/b9GGPmxln8j5KGW+8=";
   };
 
-  cargoSha256 = "17j6v796ahfn07yjj9xd9kygy0sllz93ac4gky8w0hcixdwjp3i5";
+  cargoSha256 = "sha256-tcC8GfEeHaM7XcAXw56/wdygfGPj4vOgn5sZd0KuGkA=";
 
   nativeBuildInputs = [
     autoPatchelfHook
diff --git a/pkgs/tools/graphics/lprof/default.nix b/pkgs/tools/graphics/lprof/default.nix
deleted file mode 100644
index a1c81f16f2b..00000000000
--- a/pkgs/tools/graphics/lprof/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{ lib, stdenv, fetchurl, sconsPackages, qt3, lcms1, libtiff, vigra }:
-
-/*  how to calibrate your monitor:
-    Eg see https://wiki.archlinux.org/index.php/ICC_Profiles#Loading_ICC_Profiles
-*/
-stdenv.mkDerivation {
-  name = "lprof-1.11.4.1";
-  nativeBuildInputs = [ sconsPackages.scons_3_0_1 ];
-  buildInputs = [ qt3 lcms1 libtiff vigra ];
-
-  hardeningDisable = [ "format" ];
-
-  preConfigure = ''
-    export QTDIR=${qt3}
-    export qt_directory=${qt3}
-  '';
-
-  src = fetchurl {
-    url = "mirror://sourceforge/lprof/lprof/lprof-1.11.4/lprof-1.11.4.1.tar.gz";
-    sha256 = "0q8x24fm5yyvm151xrl3l03p7hvvciqnkbviprfnvlr0lyg9wsrn";
-  };
-
-  sconsFlags = "SYSLIBS=1";
-  preBuild = ''
-    export CXX=g++
-  '';
-  prefixKey = "PREFIX=";
-
-  patches = [ ./lcms-1.17.patch  ./keep-environment.patch ];
-
-  meta = {
-    description = "Little CMS ICC profile construction set";
-    homepage = "https://sourceforge.net/projects/lprof";
-    license = lib.licenses.gpl2;
-    platforms = lib.platforms.linux;
-    broken = true; # Broken since 2020-07-28 (https://hydra.nixos.org/build/135234622)
-  };
-}
diff --git a/pkgs/tools/graphics/lprof/keep-environment.patch b/pkgs/tools/graphics/lprof/keep-environment.patch
deleted file mode 100644
index 7d0beaed587..00000000000
--- a/pkgs/tools/graphics/lprof/keep-environment.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- lprof-1.11.4.1.org/SConstruct	2006-06-06 02:11:32.000000000 +0100
-+++ lprof-1.11.4.1/SConstruct	2017-08-29 12:56:13.425654683 +0100
-@@ -22,12 +22,7 @@
- # opts.Add(BoolOption('qt-mt-lib', 'Flag used to set QT library to either qt-mt or qt. Value of 1 = qt-mt, 0 = qt.', 'yes'))
- 
- # setup base environment 
--env = Environment(
--    ENV = {
--      'PATH' : os.environ[ 'PATH' ],
--      'HOME' : os.environ[ 'HOME' ], # required for distcc
--      'LDFLAGS' : ''
--    }, options = opts)
-+env = Environment(ENV = os.environ, options = opts)
- 
- opts.Update(env)
- opts.Save('lprof.conf', env) # Save, so user doesn't have to 
diff --git a/pkgs/tools/graphics/lprof/lcms-1.17.patch b/pkgs/tools/graphics/lprof/lcms-1.17.patch
deleted file mode 100644
index a88471e143f..00000000000
--- a/pkgs/tools/graphics/lprof/lcms-1.17.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/src/liblprof/lcmsprf.h	2007-08-31 15:36:20.000000000 -0700
-+++ b/src/liblprof/lcmsprf.h	2007-08-31 15:37:39.000000000 -0700
-@@ -67,6 +67,9 @@
- #define mmax(a,b) ((a) > (b)?(a):(b))
- #endif
- 
-+#if LCMS_VERSION > 116
-+typedef int BOOL;
-+#endif
- 
- /* Misc operations ------------------------------------------------------------------------ */
- 
-
diff --git a/pkgs/tools/inputmethods/evscript/default.nix b/pkgs/tools/inputmethods/evscript/default.nix
index 66f264bc7a3..456a57a1351 100644
--- a/pkgs/tools/inputmethods/evscript/default.nix
+++ b/pkgs/tools/inputmethods/evscript/default.nix
@@ -12,7 +12,6 @@ rustPlatform.buildRustPackage rec {
   };
 
   cargoSha256 = "1dcyhxfyq0nrjl05g1s9pjkg7vqw63wbdhlskrdcvxncmci3s7rp";
-  verifyCargoDeps = true;
 
   meta = with lib; {
     homepage = "https://github.com/myfreeweb/${pname}";
diff --git a/pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix b/pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix
index 2af4061ae04..2767b4c7c0e 100644
--- a/pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix
+++ b/pkgs/tools/inputmethods/fcitx-engines/fcitx-libpinyin/default.nix
@@ -42,6 +42,8 @@ stdenv.mkDerivation rec {
       cp -rv ${store_path} $NIX_BUILD_TOP/$name/data/${ZHUYIN_DATA_FILE_NAME}
     '';
 
+  dontWrapQtApps = true;
+
   meta = with lib; {
     isFcitxEngine = true;
     description  = "Fcitx Wrapper for libpinyin, Library to deal with pinyin";
diff --git a/pkgs/tools/inputmethods/hime/default.nix b/pkgs/tools/inputmethods/hime/default.nix
index 8ec6146a020..988f8941d14 100644
--- a/pkgs/tools/inputmethods/hime/default.nix
+++ b/pkgs/tools/inputmethods/hime/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
 
   preConfigure = "patchShebangs configure";
   configureFlags = [ "--disable-lib64" "--disable-qt5-immodule" ];
-
+  dontWrapQtApps = true;
 
   meta = with lib; {
     homepage = "http://hime-ime.github.io/";
diff --git a/pkgs/tools/misc/bmap-tools/default.nix b/pkgs/tools/misc/bmap-tools/default.nix
index 79094dc9540..c78c0121ed0 100644
--- a/pkgs/tools/misc/bmap-tools/default.nix
+++ b/pkgs/tools/misc/bmap-tools/default.nix
@@ -1,16 +1,18 @@
-{ lib, fetchFromGitHub, python2Packages }:
+{ lib, fetchFromGitHub, python3Packages }:
 
-python2Packages.buildPythonApplication rec {
+python3Packages.buildPythonApplication rec {
   pname = "bmap-tools";
-  version = "3.4";
+  version = "3.6";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = "bmap-tools";
     rev = "v${version}";
-    sha256 = "0p0pdwvyf9b4czi1pnhclm1ih8kw78nk2sj4if5hwi7s5423wk5q";
+    sha256 = "01xzrv5nvd2nvj91lz4x9s91y9825j9pj96z0ap6yvy3w2dgvkkl";
   };
 
+  propagatedBuildInputs = with python3Packages; [ six ];
+
   # tests fail only on hydra.
   doCheck = false;
 
diff --git a/pkgs/tools/misc/cicero-tui/default.nix b/pkgs/tools/misc/cicero-tui/default.nix
new file mode 100644
index 00000000000..e00ceb9517f
--- /dev/null
+++ b/pkgs/tools/misc/cicero-tui/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, cmake
+, pkg-config
+, expat
+, fontconfig
+, freetype
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "cicero-tui";
+  version = "0.1.4";
+
+  src = fetchFromGitHub {
+    owner = "eyeplum";
+    repo = "cicero-tui";
+    rev = "v${version}";
+    sha256 = "1bz2y37qf9c3fxc73chb42rffdivp5krczhgd9rnwq5r6n6bdgq7";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+  buildInputs = [
+    expat
+    fontconfig
+    freetype
+  ];
+
+  cargoSha256 = "04359gf9mirczqwh8jv3rf0cc4pp05r8ncqyz0n8r7x5qv77kgcp";
+
+  meta = with lib; {
+    description = "Unicode tool with a terminal user interface";
+    homepage = "https://github.com/eyeplum/cicero-tui";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/cod/default.nix b/pkgs/tools/misc/cod/default.nix
index 6dad6173ed4..dfad9569d2a 100644
--- a/pkgs/tools/misc/cod/default.nix
+++ b/pkgs/tools/misc/cod/default.nix
@@ -13,7 +13,7 @@ buildGoModule rec {
 
   vendorSha256 = "1arllkiz1hk12hq5b2zpg3f8i9lxl66mil5sdv8gnhflmb37vbv3";
 
-  buildFlagsArray = [ "-ldflags=-X main.GitSha=${src.rev}" ];
+  buildFlagsArray = [ "-ldflags=-s -w -X main.GitSha=${src.rev}" ];
 
   doCheck = false;
 
diff --git a/pkgs/tools/misc/dua/default.nix b/pkgs/tools/misc/dua/default.nix
index 063442b75f2..b808d88888f 100644
--- a/pkgs/tools/misc/dua/default.nix
+++ b/pkgs/tools/misc/dua/default.nix
@@ -2,13 +2,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dua";
-  version = "2.10.10";
+  version = "2.11.0";
 
   src = fetchFromGitHub {
     owner = "Byron";
     repo = "dua-cli";
     rev = "v${version}";
-    sha256 = "sha256-Rt+60j1+uwL6g4HGc+xdUzGK6nanGfRYbekO54iKsPE=";
+    sha256 = "sha256-c+3zB0bxohQQsOjcTLHgRQamJfm7iUdz79t8q8wAFL8=";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     extraPostFetch = ''
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
     '';
   };
 
-  cargoSha256 = "sha256-6L1J5RHI657Z03rMmhwEzgpQ0//dykqGi8bI2Enc3N8=";
+  cargoSha256 = "sha256-ORkj6T9O/NKuaILm5NFGePYxKMaCAAydascelaEvYVw=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/misc/duf/default.nix b/pkgs/tools/misc/duf/default.nix
index 82cc7fa29e4..ee3573f9f45 100644
--- a/pkgs/tools/misc/duf/default.nix
+++ b/pkgs/tools/misc/duf/default.nix
@@ -13,7 +13,7 @@ buildGoModule rec {
 
   vendorSha256 = "0icxy6wbqjqawr6i5skwp1z37fq303p8f95crd8lwn6pjjiqzk4i";
 
-  buildFlagsArray = [ "-ldflags=" "-s -w -X=main.Version=${version}" ];
+  buildFlagsArray = [ "-ldflags=-s -w -X=main.Version=${version}" ];
 
   meta = with lib; {
     homepage = "https://github.com/muesli/duf/";
diff --git a/pkgs/tools/misc/dust/default.nix b/pkgs/tools/misc/dust/default.nix
index 7997f2119a2..781ee30deba 100644
--- a/pkgs/tools/misc/dust/default.nix
+++ b/pkgs/tools/misc/dust/default.nix
@@ -8,11 +8,11 @@ rustPlatform.buildRustPackage rec {
     owner = "bootandy";
     repo = "dust";
     rev = "v${version}";
-    sha256 = "sha256-JwGa1icwV1yqxy90Psd9bzM7VzM7HPA6kONkI3Y745Q=";
+    sha256 = "1knl7kwngmq598bnlvlq9x8sqp914sv1abfm55kw9f7mja2d6pw0";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     extraPostFetch = ''
-      rm -rf $out/src/test_dir3/
+      rm -r $out/tests/test_dir_unicode/
     '';
   };
 
@@ -24,6 +24,6 @@ rustPlatform.buildRustPackage rec {
     description = "du + rust = dust. Like du but more intuitive";
     homepage = "https://github.com/bootandy/dust";
     license = licenses.asl20;
-    maintainers = [ maintainers.infinisil ];
+    maintainers = with maintainers; [ infinisil SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/exa/default.nix b/pkgs/tools/misc/exa/default.nix
index 83aa6c505d3..f275d254677 100644
--- a/pkgs/tools/misc/exa/default.nix
+++ b/pkgs/tools/misc/exa/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, fetchpatch, rustPlatform, cmake, perl, pkg-config, zlib
-, darwin, libiconv, installShellFiles
+, Security, libiconv, installShellFiles
 }:
 
 with rustPlatform;
@@ -28,9 +28,7 @@ buildRustPackage rec {
 
   nativeBuildInputs = [ cmake pkg-config perl installShellFiles ];
   buildInputs = [ zlib ]
-  ++ lib.optionals stdenv.isDarwin [
-    libiconv darwin.apple_sdk.frameworks.Security ]
-  ;
+    ++ lib.optionals stdenv.isDarwin [ libiconv Security ];
 
   outputs = [ "out" "man" ];
 
diff --git a/pkgs/tools/misc/expect/default.nix b/pkgs/tools/misc/expect/default.nix
index 6e8bb7fd96c..718da8dca4a 100644
--- a/pkgs/tools/misc/expect/default.nix
+++ b/pkgs/tools/misc/expect/default.nix
@@ -1,8 +1,8 @@
 { lib, stdenv, fetchurl, tcl, makeWrapper, autoreconfHook }:
 
 stdenv.mkDerivation rec {
-  version = "5.45.4";
   pname = "expect";
+  version = "5.45.4";
 
   src = fetchurl {
     url = "mirror://sourceforge/expect/Expect/${version}/expect${version}.tar.gz";
@@ -33,10 +33,13 @@ stdenv.mkDerivation rec {
     done
   '';
 
+  outputs = [ "out" "dev" ];
+
   meta = with lib; {
     description = "A tool for automating interactive applications";
     homepage = "http://expect.sourceforge.net/";
-    license = "Expect";
+    license = licenses.publicDomain;
     platforms = platforms.unix;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/fend/default.nix b/pkgs/tools/misc/fend/default.nix
index 0ca5f42f74d..6028140234e 100644
--- a/pkgs/tools/misc/fend/default.nix
+++ b/pkgs/tools/misc/fend/default.nix
@@ -2,16 +2,22 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "fend";
-  version = "0.1.13";
+  version = "0.1.14";
 
   src = fetchFromGitHub {
     owner = "printfn";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dz6vGRsWc7ubc/drj2Qw/of8AciPgVzc4++Eozg0Luo=";
+    sha256 = "sha256-zKjYUkkm15YRF0YFJKi2A6twvmHuEyxdWcNs37r2dJg=";
   };
 
-  cargoSha256 = "sha256-/HBTmLZLhv89mvIVLocw9XbfOgxh9KsjA6KT60IuJeA=";
+  cargoSha256 = "sha256-e95DRhD22zvizUJOM2It45Bx05iK3KtaMgFPkMbR7iI=";
+
+  doInstallCheck = true;
+
+  installCheckPhase = ''
+    [[ "$($out/bin/fend "1 km to m")" = "1000 m" ]]
+  '';
 
   meta = with lib; {
     description = "Arbitrary-precision unit-aware calculator";
diff --git a/pkgs/tools/misc/fontfor/default.nix b/pkgs/tools/misc/fontfor/default.nix
new file mode 100644
index 00000000000..c77809ece1e
--- /dev/null
+++ b/pkgs/tools/misc/fontfor/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, cmake
+, pkg-config
+, expat
+, fontconfig
+, freetype
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "fontfor";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "7sDream";
+    repo = "fontfor";
+    rev = "v${version}";
+    sha256 = "1b07hd41blwsnb91vh2ax9zigm4lh8n0i5man0cjmxhavvbfy12b";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+  buildInputs = [
+    expat
+    fontconfig
+    freetype
+  ];
+
+  cargoSha256 = "194c4knjfb3pnpvw3zl1srwx3q1jp6z78vzln0q2mk5nf0a35yy0";
+
+  meta = with lib; {
+    description = "Find fonts which can show a specified character and preview them in browser";
+    homepage = "https://github.com/7sDream/fontfor";
+    license = with licenses; [ gpl3Plus ];
+    maintainers = with maintainers; [ shamilton ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/tools/misc/fontforge/default.nix b/pkgs/tools/misc/fontforge/default.nix
index 2140e405ff4..ffee232172c 100644
--- a/pkgs/tools/misc/fontforge/default.nix
+++ b/pkgs/tools/misc/fontforge/default.nix
@@ -1,5 +1,4 @@
-{ stdenv, fetchurl, lib
-, fetchpatch
+{ stdenv, fetchFromGitHub, lib
 , cmake, perl, uthash, pkg-config, gettext
 , python, freetype, zlib, glib, libungif, libpng, libjpeg, libtiff, libxml2, cairo, pango
 , readline, woff2, zeromq, libuninameslist
@@ -15,25 +14,15 @@ assert withGTK -> withGUI;
 
 stdenv.mkDerivation rec {
   pname = "fontforge";
-  version = "20200314";
+  version = "20201107";
 
-  src = fetchurl {
-    url = "https://github.com/${pname}/${pname}/releases/download/${version}/${pname}-${version}.tar.xz";
-    sha256 = "0qf88wd6riycq56d24brybyc93ns74s0nyyavm43zp2kfcihn6fd";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-Rl/5lbXaPgIndANaD0IakaDus6T53FjiBb45FIuGrvc=";
   };
 
-  patches = [
-    # Unreleased fix for https://github.com/fontforge/fontforge/issues/4229
-    # which is required to fix an uninterposated `${CMAKE_INSTALL_PREFIX}/lib`, see
-    # see https://github.com/nh2/static-haskell-nix/pull/98#issuecomment-665395399
-    # TODO: Remove https://github.com/fontforge/fontforge/pull/4232 is in a release.
-    (fetchpatch {
-      name = "fontforge-cmake-set-rpath-to-the-configure-time-CMAKE_INSTALL_PREFIX";
-      url = "https://github.com/fontforge/fontforge/commit/297ee9b5d6db5970ca17ebe5305189e79a1520a1.patch";
-      sha256 = "14qfp8pwh0vzzib4hq2nc6xhn8lc1cal1sb0lqwb2q5dijqx5kqk";
-    })
-  ];
-
   # use $SOURCE_DATE_EPOCH instead of non-deterministic timestamps
   postPatch = ''
     find . -type f -name '*.c' -exec sed -r -i 's#\btime\(&(.+)\)#if (getenv("SOURCE_DATE_EPOCH")) \1=atol(getenv("SOURCE_DATE_EPOCH")); else &#g' {} \;
diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix
index 837277a5c85..25542543d65 100644
--- a/pkgs/tools/misc/fzf/default.nix
+++ b/pkgs/tools/misc/fzf/default.nix
@@ -1,28 +1,20 @@
-{ lib, buildGoModule, fetchFromGitHub, writeText, runtimeShell, ncurses, perl, fetchpatch }:
+{ lib, buildGoModule, fetchFromGitHub, writeText, runtimeShell, ncurses, perl }:
 
 buildGoModule rec {
   pname = "fzf";
-  version = "0.25.0";
+  version = "0.25.1";
 
   src = fetchFromGitHub {
     owner = "junegunn";
     repo = pname;
     rev = version;
-    sha256 = "1j5bfxl4w8w3n89p051y8dhxg0py9l98v7r2gkr63bg4lj32faz8";
+    sha256 = "085apa4msw8v8f57942xh7wfw3dkavrl9d58yj6i3yr75l3vg05r";
   };
 
   vendorSha256 = "0dd0qm1fxp3jnlrhfaas8fw87cj7rygaac35a9nk3xh2xsk7q35p";
 
   outputs = [ "out" "man" ];
 
-  patches = [
-    # Fix test failure on go 1.15
-    (fetchpatch {
-      url = "https://github.com/junegunn/fzf/commit/82791f7efccde5b30da0b4d44f10d214ae5c0c0d.patch";
-      sha256 = "1nybsz09h8cnvxjnkmx9c52g8z0x6pvrn230hw1va5a3pvmg01z1";
-    })
-  ];
-
   fishHook = writeText "load-fzf-keybindings.fish" "fzf_key_bindings";
 
   buildInputs = [ ncurses ];
diff --git a/pkgs/tools/misc/grex/default.nix b/pkgs/tools/misc/grex/default.nix
index fca9cecc01c..d58661babc6 100644
--- a/pkgs/tools/misc/grex/default.nix
+++ b/pkgs/tools/misc/grex/default.nix
@@ -2,7 +2,7 @@
 , fetchFromGitHub
 , fetchpatch
 , rustPlatform
-, darwin
+, Security
 , libiconv
 }:
 
@@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "1viph7ki6f2akc5mpbgycacndmxnv088ybfji2bfdbi5jnpyavvs";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
   doInstallCheck = true;
   installCheckPhase = ''
diff --git a/pkgs/tools/misc/grub/2.0x.nix b/pkgs/tools/misc/grub/2.0x.nix
index bc933312afc..19d2e862ec4 100644
--- a/pkgs/tools/misc/grub/2.0x.nix
+++ b/pkgs/tools/misc/grub/2.0x.nix
@@ -1,10 +1,14 @@
 { lib, stdenv, fetchgit, flex, bison, python3, autoconf, automake, gnulib, libtool
 , gettext, ncurses, libusb-compat-0_1, freetype, qemu, lvm2, unifont, pkg-config
+, pkgsBuildBuild
+, nixosTests
 , fuse # only needed for grub-mount
+, runtimeShell
 , zfs ? null
 , efiSupport ? false
 , zfsSupport ? false
 , xenSupport ? false
+, kbdcompSupport ? false, ckbcomp
 }:
 
 with lib;
@@ -53,11 +57,20 @@ stdenv.mkDerivation rec {
     ./fix-bash-completion.patch
   ];
 
-  nativeBuildInputs = [ bison flex python3 pkg-config autoconf automake ];
-  buildInputs = [ ncurses libusb-compat-0_1 freetype gettext lvm2 fuse libtool ]
+  postPatch = if kbdcompSupport then ''
+    sed -i util/grub-kbdcomp.in -e 's@\bckbcomp\b@${ckbcomp}/bin/ckbcomp@'
+  '' else ''
+    echo '#! ${runtimeShell}' > util/grub-kbdcomp.in
+    echo 'echo "Compile grub2 with { kbdcompSupport = true; } to enable support for this command."' >> util/grub-kbdcomp.in
+  '';
+
+  nativeBuildInputs = [ bison flex python3 pkg-config autoconf automake gettext ];
+  buildInputs = [ ncurses libusb-compat-0_1 freetype lvm2 fuse libtool ]
     ++ optional doCheck qemu
     ++ optional zfsSupport zfs;
 
+  strictDeps = true;
+
   hardeningDisable = [ "all" ];
 
   # Work around a bug in the generated flex lexer (upstream flex bug?)
@@ -90,7 +103,10 @@ stdenv.mkDerivation rec {
       substituteInPlace ./configure --replace '/usr/share/fonts/unifont' '${unifont}/share/fonts'
     '';
 
-  configureFlags = [ "--enable-grub-mount" ] # dep of os-prober
+  configureFlags = [
+    "--enable-grub-mount" # dep of os-prober
+    "BUILD_CC=${pkgsBuildBuild.stdenv.cc}/bin/cc"
+  ]
     ++ optional zfsSupport "--enable-libzfs"
     ++ optionals efiSupport [ "--with-platform=efi" "--target=${efiSystemsBuild.${stdenv.hostPlatform.system}.target}" "--program-prefix=" ]
     ++ optionals xenSupport [ "--with-platform=xen" "--target=${efiSystemsBuild.${stdenv.hostPlatform.system}.target}"];
@@ -110,6 +126,14 @@ stdenv.mkDerivation rec {
     sed -i $out/lib/grub/*/modinfo.sh -e "/grub_target_cppflags=/ s|'.*'|' '|"
   '';
 
+  passthru.tests = {
+    nixos-grub = nixosTests.grub;
+    nixos-install-simple = nixosTests.installer.simple;
+    nixos-install-grub1 = nixosTests.installer.grub1;
+    nixos-install-grub-uefi = nixosTests.installer.simpleUefiGrub;
+    nixos-install-grub-uefi-spec = nixosTests.installer.simpleUefiGrubSpecialisation;
+  };
+
   meta = with lib; {
     description = "GNU GRUB, the Grand Unified Boot Loader (2.x beta)";
 
diff --git a/pkgs/tools/misc/kak-lsp/default.nix b/pkgs/tools/misc/kak-lsp/default.nix
index 1c2d7ab6717..343f2d0527e 100644
--- a/pkgs/tools/misc/kak-lsp/default.nix
+++ b/pkgs/tools/misc/kak-lsp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, darwin, fetchFromGitHub, rustPlatform }:
+{ stdenv, lib, fetchFromGitHub, rustPlatform, Security }:
 
 rustPlatform.buildRustPackage rec {
   pname = "kak-lsp";
@@ -13,7 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "174qy50m9487vv151vm8q6sby79dq3gbqjbz6h4326jwsc9wwi8c";
 
-  buildInputs = lib.optional stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
+  buildInputs = lib.optional stdenv.isDarwin [ Security ];
 
   meta = with lib; {
     description = "Kakoune Language Server Protocol Client";
diff --git a/pkgs/tools/misc/lice/default.nix b/pkgs/tools/misc/lice/default.nix
index 3322196d6ed..4cb3f794fd4 100644
--- a/pkgs/tools/misc/lice/default.nix
+++ b/pkgs/tools/misc/lice/default.nix
@@ -1,18 +1,17 @@
-{ lib, fetchFromGitHub, python3Packages }:
+{ lib, buildPythonPackage, fetchPypi , setuptools, pytestCheckHook }:
 
-python3Packages.buildPythonPackage rec {
+buildPythonPackage rec {
+  pname = "lice";
+  version = "0.6";
 
-  version = "0.4";
-  name = "lice-${version}";
-
-  src = fetchFromGitHub {
-    owner = "licenses";
-    repo = "lice";
-    rev = version;
-    sha256 = "0yxf70fi8ds3hmwjply2815k466r99k8n22r0ppfhwjvp3rn60qx";
-    fetchSubmodules = true;
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "0skyyirbidknfdzdvsjga8zb4ar6xpd5ilvz11dfm2a9yxh3d59d";
   };
 
+  propagatedBuildInputs = [ setuptools ];
+
+  checkInputs = [ pytestCheckHook ];
   meta = with lib; {
     description = "Print license based on selection and user options";
     homepage = "https://github.com/licenses/lice";
diff --git a/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch b/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch
index e92f5a46ae7..6bead60dc56 100755
--- a/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch
+++ b/pkgs/tools/misc/mcrypt/malloc_to_stdlib.patch
@@ -1,5 +1,5 @@
 From e295844e8ef5c13487996ab700e5f12a7fadb1a6 Mon Sep 17 00:00:00 2001
-From: Nima Vasseghi <nmv@fb.com>
+From: Private <private@private.priv>
 Date: Wed, 30 Dec 2020 16:06:46 -0800
 Subject: [PATCH] malloc.h to stdlib.h in rfc2440.c
 
diff --git a/pkgs/tools/misc/mpdscribble/default.nix b/pkgs/tools/misc/mpdscribble/default.nix
index 182e844eb84..fce376bb32e 100644
--- a/pkgs/tools/misc/mpdscribble/default.nix
+++ b/pkgs/tools/misc/mpdscribble/default.nix
@@ -1,22 +1,38 @@
-{ lib, stdenv, fetchurl, meson, ninja, pkg-config, boost, libgcrypt, systemd, mpd_clientlib, curl }:
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, meson
+, ninja
+, boost
+, curl
+, libgcrypt
+, libmpdclient
+, systemd
+}:
 
 stdenv.mkDerivation rec {
   pname = "mpdscribble";
   version = "0.23";
 
   src = fetchurl {
-    url =
-    "https://www.musicpd.org/download/mpdscribble/${version}/mpdscribble-${version}.tar.xz";
+    url = "https://www.musicpd.org/download/mpdscribble/${version}/mpdscribble-${version}.tar.xz";
     sha256 = "0s66zqscb44p88cl3kcv5jkjcqsskcnrv7xgrjhzrchf2kcpwf53";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config ];
-  buildInputs = [ mpd_clientlib curl boost libgcrypt systemd ];
+  nativeBuildInputs = [ pkg-config meson ninja ];
+  buildInputs = [
+    libmpdclient
+    curl
+    boost
+    libgcrypt
+    systemd
+  ];
 
   meta = with lib; {
-    description = "A Music Player Daemon (MPD) client which submits information about tracks being played to a scrobbler (e.g. last.fm)";
+    description = "A MPD client which submits info about tracks being played to a scrobbler";
     homepage = "https://www.musicpd.org/clients/mpdscribble/";
-    license = licenses.gpl2;
+    license = licenses.gpl2Plus;
     maintainers = [ maintainers.sohalt ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/tools/misc/neofetch/default.nix b/pkgs/tools/misc/neofetch/default.nix
index 1ed201802d5..1826d6846d4 100644
--- a/pkgs/tools/misc/neofetch/default.nix
+++ b/pkgs/tools/misc/neofetch/default.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchFromGitHub }:
+{ lib, stdenvNoCC, fetchFromGitHub, bash }:
 
-stdenv.mkDerivation rec {
+stdenvNoCC.mkDerivation rec {
   pname = "neofetch";
   version = "7.1.0";
 
@@ -11,7 +11,11 @@ stdenv.mkDerivation rec {
     sha256 = "0i7wpisipwzk0j62pzaigbiq42y1mn4sbraz4my2jlz6ahwf00kv";
   };
 
-  dontBuild = true;
+  strictDeps = true;
+  buildInputs = [ bash ];
+  postPatch = ''
+    patchShebangs --host neofetch
+  '';
 
   makeFlags = [
     "PREFIX=${placeholder "out"}"
diff --git a/pkgs/tools/misc/nix-direnv/default.nix b/pkgs/tools/misc/nix-direnv/default.nix
index efacd87d9a4..6aaf8cc8a52 100644
--- a/pkgs/tools/misc/nix-direnv/default.nix
+++ b/pkgs/tools/misc/nix-direnv/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "nix-direnv";
-  version = "1.2.1";
+  version = "1.2.3";
 
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = "nix-direnv";
     rev = version;
-    sha256 = "sha256-D31ORVdS8P1OkPShsfjEFLVCcv8Bff9OyexUKKHdguQ=";
+    sha256 = "sha256-a0OyIONKtVWh9g/FZ6H0JSRuA1U48HSOX53G9z/h7t8=";
   };
 
   # Substitute instead of wrapping because the resulting file is
diff --git a/pkgs/tools/misc/onefetch/default.nix b/pkgs/tools/misc/onefetch/default.nix
index 12cd9990779..5dab2044973 100644
--- a/pkgs/tools/misc/onefetch/default.nix
+++ b/pkgs/tools/misc/onefetch/default.nix
@@ -14,8 +14,7 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "sha256-TqWe4eARQmmWcwnvb6BIZrzGeKMpiIObPv0cW1JvWj4=";
 
-  buildInputs = with stdenv;
-    lib.optionals isDarwin [ CoreFoundation libiconv libresolv Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreFoundation libiconv libresolv Security ];
 
   meta = with lib; {
     description = "Git repository summary on your terminal";
diff --git a/pkgs/tools/misc/parallel/default.nix b/pkgs/tools/misc/parallel/default.nix
index 720b73f3fe2..aec80f0ede0 100644
--- a/pkgs/tools/misc/parallel/default.nix
+++ b/pkgs/tools/misc/parallel/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     substituteInPlace src/parallel --subst-var-by coreutils ${coreutils}
   '';
 
-  outputs = [ "out" "man" ];
+  outputs = [ "out" "man" "doc" ];
 
   nativeBuildInputs = [ makeWrapper ];
   buildInputs = [ perl procps ];
diff --git a/pkgs/tools/misc/pgcenter/default.nix b/pkgs/tools/misc/pgcenter/default.nix
index 8afaa61e35b..970a5bc8265 100644
--- a/pkgs/tools/misc/pgcenter/default.nix
+++ b/pkgs/tools/misc/pgcenter/default.nix
@@ -2,16 +2,24 @@
 
 buildGoModule rec {
   pname = "pgcenter";
-  version = "0.6.6";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner  = "lesovsky";
     repo   = "pgcenter";
     rev    = "v${version}";
-    sha256 = "1axwsclssxsg38ppdmd4v1lbs87ksrwj5z76ckjk8jjfni1xp9sr";
+    sha256 = "sha256-W/UUc0qwOvLSXYWepkCydst113BqR9EsZK0Es+6HSt8=";
   };
 
-  vendorSha256 = "1mzvpr12qh9668iz97p62zl4zhlrcyfgwr4a9zg9irj585pkb5x2";
+  vendorSha256 = "sha256-9hYiyZ34atmSL7JvuXyiGU7HR4E6qN7bGZlyU+hP+FU=";
+
+  subPackages = [ "cmd" ];
+
+  buildFlagsArray = [ "-ldflags=-w -s -X main.gitTag=${src.rev} -X main.gitCommit=${src.rev} -X main.gitBranch=master" ];
+
+  postInstall = ''
+    mv $out/bin/cmd $out/bin/pgcenter
+  '';
 
   doCheck = false;
 
diff --git a/pkgs/tools/misc/piston-cli/default.nix b/pkgs/tools/misc/piston-cli/default.nix
index bf9c7c9096c..73e3ca8d689 100644
--- a/pkgs/tools/misc/piston-cli/default.nix
+++ b/pkgs/tools/misc/piston-cli/default.nix
@@ -1,12 +1,12 @@
 { lib, python3Packages }:
 
-python3Packages.buildPythonPackage rec {
+python3Packages.buildPythonApplication rec {
   pname = "piston-cli";
-  version = "1.2.1";
+  version = "1.2.2";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "bf0hhKb+6+07HhrkFrsWCnUQfsQWOdK/dPTlt9iZTno=";
+    sha256 = "hhOistr5lHF6rIuMpudKwSuBQhaQDzTdelAOCjyVQZk=";
   };
 
   propagatedBuildInputs = with python3Packages; [ rich prompt_toolkit requests pygments ];
diff --git a/pkgs/tools/misc/pspg/default.nix b/pkgs/tools/misc/pspg/default.nix
index 9159de9fd8c..04f1c5ec33e 100644
--- a/pkgs/tools/misc/pspg/default.nix
+++ b/pkgs/tools/misc/pspg/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pspg";
-  version = "3.1.5";
+  version = "4.0.1";
 
   src = fetchFromGitHub {
     owner = "okbob";
     repo = pname;
     rev = version;
-    sha256 = "000h4yiaym7i5bcm268rvsjbs2brz2is9lhm6vm3dx0q7k1pcx45";
+    sha256 = "sha256-YQrANrCd0nFdn98LfHH/Ishm+fDb12cUAkxlwtZ1ng8=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/pkgs/tools/misc/pubs/default.nix b/pkgs/tools/misc/pubs/default.nix
index be5fd6d499c..3b6df828fda 100644
--- a/pkgs/tools/misc/pubs/default.nix
+++ b/pkgs/tools/misc/pubs/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, fetchpatch, python3Packages }:
+{ lib, fetchFromGitHub, python3Packages }:
 
 python3Packages.buildPythonApplication rec {
   pname = "pubs";
diff --git a/pkgs/tools/misc/rlwrap/default.nix b/pkgs/tools/misc/rlwrap/default.nix
index ac1431d3a1b..a78d6f143a1 100644
--- a/pkgs/tools/misc/rlwrap/default.nix
+++ b/pkgs/tools/misc/rlwrap/default.nix
@@ -1,26 +1,30 @@
-{ lib, stdenv, fetchurl, readline }:
+{ lib, stdenv, fetchFromGitHub, autoreconfHook, perl, readline }:
 
 stdenv.mkDerivation rec {
   pname = "rlwrap";
-  version = "0.43";
+  version = "0.45";
 
-  src = fetchurl {
-    url = "https://github.com/hanslub42/rlwrap/releases/download/v${version}/${pname}-${version}.tar.gz";
-    sha256 = "0bzb7ylk2770iv59v2d0gypb21y2xn87m299s9rqm6rdi2vx11lf";
+  src = fetchFromGitHub {
+    owner = "hanslub42";
+    repo = "rlwrap";
+    rev = "v${version}";
+    sha256 = "1ppkjdnxrxh99g4xaiaglm5bmp24006rfahci0cn1g7zwilkjy8s";
   };
 
-  buildInputs = [ readline ];
-
-  # Be high-bit-friendly
-  preBuild = ''
-    sed -i src/readline.c -e "s@[*]p [<] ' '@(*p >= 0) \\&\\& (*p < ' ')@"
+  postPatch = ''
+    substituteInPlace src/readline.c \
+      --replace "if(*p >= 0 && *p < ' ')" "if(*p >= 0 && (*p >= 0) && (*p < ' '))"
   '';
 
-  meta = {
+  nativeBuildInputs = [ autoreconfHook perl ];
+
+  buildInputs = [ readline ];
+
+  meta = with lib; {
     description = "Readline wrapper for console programs";
     homepage = "https://github.com/hanslub42/rlwrap";
-    license = lib.licenses.gpl2Plus;
-    platforms = lib.platforms.unix;
-    maintainers = with lib.maintainers; [ ];
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/rpm-ostree/default.nix b/pkgs/tools/misc/rpm-ostree/default.nix
index 0e094a4b2ad..38a43c7ac3d 100644
--- a/pkgs/tools/misc/rpm-ostree/default.nix
+++ b/pkgs/tools/misc/rpm-ostree/default.nix
@@ -40,13 +40,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rpm-ostree";
-  version = "2021.1";
+  version = "2021.2";
 
   outputs = [ "out" "dev" "man" "devdoc" ];
 
   src = fetchurl {
     url = "https://github.com/coreos/${pname}/releases/download/v${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-1GpM7IW27MgbXG6iVo5qnWaotwN1GgcXf7dFGRF8s0w=";
+    sha256 = "sha256-msu5LReTYupgoS6Rm2nrMz9jauciAD99hh+w8BhSYn4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/savepagenow/default.nix b/pkgs/tools/misc/savepagenow/default.nix
new file mode 100644
index 00000000000..d9166d07b74
--- /dev/null
+++ b/pkgs/tools/misc/savepagenow/default.nix
@@ -0,0 +1,25 @@
+{ lib, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "savepagenow";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "pastpages";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1lz6rc47cds9rb35jdf8n13gr61wdkh5jqzx4skikm1yrqkwjyhm";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ click requests ];
+
+  # requires network access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A simple Python wrapper for archive.org's \"Save Page Now\" capturing service";
+    homepage = "https://github.com/pastpages/savepagenow";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/misc/skim/default.nix b/pkgs/tools/misc/skim/default.nix
index 3a49876a860..7909aaa1a72 100644
--- a/pkgs/tools/misc/skim/default.nix
+++ b/pkgs/tools/misc/skim/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "skim";
-  version = "0.9.3";
+  version = "0.9.4";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "026mgqcp9sg6wwikghrc3rgh5p6wdbnvav5pb3xvs79lj85d5ga7";
+    sha256 = "0yvjzmz2vqc63l8911jflqf5aww7wxsav2yal5wg9ci9hzq6dl7j";
   };
 
   outputs = [ "out" "vim" ];
 
-  cargoSha256 = "07bs23x2vxzlrca5swwq8khmd9fbdhlhm0avwp9y231df6xdi2ys";
+  cargoSha256 = "0xh4f8c62kzj2fx7hyhdy13zhay13a6d2d7i9yz0n40dfgf70qx0";
 
   postPatch = ''
     sed -i -e "s|expand('<sfile>:h:h')|'$out'|" plugin/skim.vim
diff --git a/pkgs/tools/misc/smenu/default.nix b/pkgs/tools/misc/smenu/default.nix
index dbfb5fb1cf8..1d1ed78b2fa 100644
--- a/pkgs/tools/misc/smenu/default.nix
+++ b/pkgs/tools/misc/smenu/default.nix
@@ -5,25 +5,24 @@ stdenv.mkDerivation rec {
   pname = "smenu";
 
   src = fetchFromGitHub {
-    owner  = "p-gen";
-    repo   = "smenu";
-    rev    = "v${version}";
+    owner = "p-gen";
+    repo = "smenu";
+    rev = "v${version}";
     sha256 = "1p8y1fgrfb7jxmv5ycvvnqaz7ghdi50paisgzk71169fqwp1crfa";
   };
 
   buildInputs = [ ncurses ];
 
   meta = with lib; {
-    homepage        = "https://github.com/p-gen/smenu";
-    description     = "Terminal selection utility";
+    homepage = "https://github.com/p-gen/smenu";
+    description = "Terminal selection utility";
     longDescription = ''
       Terminal utility that allows you to use words coming from the standard
       input to create a nice selection window just below the cursor. Once done,
       your selection will be sent to standard output.
     '';
-    license     = licenses.gpl2;
-    maintainers = [ maintainers.matthiasbeyer ];
-    platforms   = platforms.unix;
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ matthiasbeyer SuperSandro2000 ];
+    platforms = platforms.unix;
   };
 }
-
diff --git a/pkgs/tools/misc/tab-rs/default.nix b/pkgs/tools/misc/tab-rs/default.nix
index b6c9b35ac87..affea98ea55 100644
--- a/pkgs/tools/misc/tab-rs/default.nix
+++ b/pkgs/tools/misc/tab-rs/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "tab-rs";
-  version = "0.5.6";
+  version = "0.5.7";
 
   src = fetchFromGitHub {
     owner = "austinjones";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1gyl2dxyhh4d2lpxg9s5cx734sfs1kys5z5hjqfgbiny28hp9sw6";
+    sha256 = "1crj0caimin667f9kz34c0sm77892dmqaf1kxryqakqm75az5wfr";
   };
 
-  cargoSha256 = "1apjzn164kakb2snrq1wfl7grm72hkddi3am6d01h5kkngkp68qm";
+  cargoSha256 = "0c2478c5gblvci0s68pv8386kxhs88dxzcpd2rq6l82bjn7yzymd";
 
   buildInputs = lib.optionals stdenv.isDarwin [ IOKit ];
 
diff --git a/pkgs/tools/misc/thefuck/default.nix b/pkgs/tools/misc/thefuck/default.nix
index d26c750a0c7..ff6a22cef8e 100644
--- a/pkgs/tools/misc/thefuck/default.nix
+++ b/pkgs/tools/misc/thefuck/default.nix
@@ -1,6 +1,6 @@
 { lib, fetchFromGitHub, buildPythonApplication
 , colorama, decorator, psutil, pyte, six
-, pytest, pytest-mock
+, go, mock, pytestCheckHook, pytest-mock
 }:
 
 buildPythonApplication rec {
@@ -16,22 +16,12 @@ buildPythonApplication rec {
 
   propagatedBuildInputs = [ colorama decorator psutil pyte six ];
 
-  checkInputs = [ pytest pytest-mock ];
-
-  checkPhase = ''
-    export HOME=$TMPDIR
-    export LANG=en_US.UTF-8
-    export XDG_CACHE_HOME=$TMPDIR/cache
-    export XDG_CONFIG_HOME=$TMPDIR/config
-    py.test
-  '';
-
-  doCheck = false; # The above is only enough for tests to pass outside the sandbox.
+  checkInputs = [ go mock pytestCheckHook pytest-mock ];
 
   meta = with lib; {
     homepage = "https://github.com/nvbn/thefuck";
     description = "Magnificent app which corrects your previous console command";
     license = licenses.mit;
-    maintainers = with maintainers; [ ma27 ];
+    maintainers = with maintainers; [ ma27 SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/topgrade/default.nix b/pkgs/tools/misc/topgrade/default.nix
index 2412541352f..014fdad13dc 100644
--- a/pkgs/tools/misc/topgrade/default.nix
+++ b/pkgs/tools/misc/topgrade/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "topgrade";
-  version = "6.4.0";
+  version = "6.5.2";
 
   src = fetchFromGitHub {
     owner = "r-darwish";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-xrp2oGqJRhjYYZ0dDvYiUfgKM2mazOAlkJQyawDk2y4=";
+    sha256 = "sha256-7tgYVxZ4E6qi/HLgfC0ZreHuXgtd3JMg4ENQL50YWr4=";
   };
 
-  cargoSha256 = "sha256-EK48mrTYgh0AgC53rvVRFfdZP/FS9LOZWr8TF13qEl0=";
+  cargoSha256 = "sha256-xxJfNFegvtHJno7o54Rqai9DvvffrkxTFci673Yq/NI=";
 
   buildInputs = lib.optional stdenv.isDarwin Foundation;
 
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Upgrade all the things";
     homepage = "https://github.com/r-darwish/topgrade";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ Br1ght0ne hugoreeves ];
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ Br1ght0ne hugoreeves SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/misc/ttfautohint/default.nix b/pkgs/tools/misc/ttfautohint/default.nix
index 9e88e5da4f8..fe121c2d51c 100644
--- a/pkgs/tools/misc/ttfautohint/default.nix
+++ b/pkgs/tools/misc/ttfautohint/default.nix
@@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
 
   enableParallelBuilding = true;
 
+  dontWrapQtApps = true;
+
   meta = with lib; {
     description = "An automatic hinter for TrueType fonts";
     longDescription = ''
diff --git a/pkgs/tools/misc/uhubctl/default.nix b/pkgs/tools/misc/uhubctl/default.nix
index c1dfae68050..f5bbe2de73f 100644
--- a/pkgs/tools/misc/uhubctl/default.nix
+++ b/pkgs/tools/misc/uhubctl/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "uhubctl";
-  version = "2.3.0";
+  version = "2.4.0";
 
   src = fetchFromGitHub {
     owner = "mvp";
     repo = "uhubctl";
     rev = "v${version}";
-    sha256 = "1wxsiygw6gwv1h90yassnxylkyi2dfz7y59qkmb7rs8a8javj7nv";
+    sha256 = "sha256-F3fOoZYnfIWMrESyVJ/9z6Vou1279avhs600rQayUVA=";
   };
 
   buildInputs = [ libusb1 ];
diff --git a/pkgs/tools/misc/yubikey-manager-qt/default.nix b/pkgs/tools/misc/yubikey-manager-qt/default.nix
index 0f81f132abd..02982f9cc4a 100644
--- a/pkgs/tools/misc/yubikey-manager-qt/default.nix
+++ b/pkgs/tools/misc/yubikey-manager-qt/default.nix
@@ -11,8 +11,6 @@
 , qtgraphicaleffects
 , qtquickcontrols
 , qtquickcontrols2
-, qtdeclarative
-, qtsvg
 , yubikey-manager
 , yubikey-personalization
 }:
@@ -34,8 +32,6 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ pythonPackages.python qtbase qtgraphicaleffects qtquickcontrols qtquickcontrols2 pyotherside ];
 
-  enableParallelBuilding = true;
-
   pythonPath = [ yubikey-manager ];
 
   dontWrapQtApps = true;
diff --git a/pkgs/tools/misc/zoxide/default.nix b/pkgs/tools/misc/zoxide/default.nix
index c5ca2965e9d..1e1ec8723bf 100644
--- a/pkgs/tools/misc/zoxide/default.nix
+++ b/pkgs/tools/misc/zoxide/default.nix
@@ -4,7 +4,6 @@
 , rustPlatform
 , withFzf ? true
 , fzf
-
   # checkInputs
 , fish
 , powershell
@@ -13,12 +12,10 @@
 , xonsh
 , zsh
 }:
-let
-  version = "0.5.0";
-in
-rustPlatform.buildRustPackage {
+
+rustPlatform.buildRustPackage rec {
   pname = "zoxide";
-  inherit version;
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "ajeetdsouza";
@@ -55,6 +52,6 @@ rustPlatform.buildRustPackage {
     description = "A fast cd command that learns your habits";
     homepage = "https://github.com/ajeetdsouza/zoxide";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ ysndr cole-h ];
+    maintainers = with maintainers; [ ysndr cole-h SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/networking/boundary/default.nix b/pkgs/tools/networking/boundary/default.nix
index 6c653125c33..37cb23f9876 100644
--- a/pkgs/tools/networking/boundary/default.nix
+++ b/pkgs/tools/networking/boundary/default.nix
@@ -14,12 +14,12 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "boundary";
-  version = "0.1.5";
+  version = "0.1.7";
 
   src = fetchsrc version {
-    x86_64-linux = "sha256-A8dfmFjvOHDwotCyRq9QQ9uHJIkq1JkIwtHsqDqTSNo=";
-    aarch64-linux = "sha256-i2qc4bmoSzUwNCQmnXLFQ+W4VZjVwXzEBSF3NeTju3M=";
-    x86_64-darwin = "sha256-lKGTpS2TmgxFdjUsBXKg8Mu6oJA0VidHc/noWWEuUVo=";
+    x86_64-linux = "sha256-cSD9V/Hj/eEc6k+LMNRnSEA94fA6bQUfCgA+XdqAR4k=";
+    aarch64-linux = "sha256-MG97PhG/t1rdmTF3n2YHYsTo8VODCaY3cfnv8YHgAY8=";
+    x86_64-darwin = "sha256-p60UiIy9DGx7AaEvmyo4FLa0Z67MQRNJkw1nHaM6eww=";
   };
 
   dontConfigure = true;
@@ -29,6 +29,14 @@ stdenv.mkDerivation rec {
     install -D boundary $out/bin/boundary
   '';
 
+  doInstallCheck = true;
+  installCheckPhase = ''
+    runHook preInstallCheck
+    $out/bin/boundary --help
+    $out/bin/boundary version
+    runHook postInstallCheck
+  '';
+
   dontPatchELF = true;
   dontPatchShebangs = true;
 
diff --git a/pkgs/tools/networking/chisel/default.nix b/pkgs/tools/networking/chisel/default.nix
index 56868e07688..8533958ac2b 100644
--- a/pkgs/tools/networking/chisel/default.nix
+++ b/pkgs/tools/networking/chisel/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "chisel";
-  version = "1.7.4";
+  version = "1.7.6";
 
   src = fetchFromGitHub {
     owner = "jpillora";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-1vg9tJLYbW8pfPpw3gQ15c9Kwj2lFfblMRhOK4yWKb8=";
+    sha256 = "sha256-hUurgwbSUcNZiSi+eVTG/Ija/yxPeWuvEE5pUiG7Dls=";
   };
 
   vendorSha256 = "sha256-GzsQ6LXxe9UQc13XbsYFOWPe0EzlyHechchKc6xDkAc=";
diff --git a/pkgs/tools/networking/ferm/default.nix b/pkgs/tools/networking/ferm/default.nix
index f344dec6186..29f9481fe32 100644
--- a/pkgs/tools/networking/ferm/default.nix
+++ b/pkgs/tools/networking/ferm/default.nix
@@ -3,12 +3,12 @@
 let
   inherit (lib.versions) majorMinor;
 in stdenv.mkDerivation rec {
-  version = "2.5.1";
+  version = "2.6";
   pname = "ferm";
 
   src = fetchurl {
     url = "http://ferm.foo-projects.org/download/${majorMinor version}/ferm-${version}.tar.xz";
-    sha256 = "0awl9s243sxgayr2fcmfks8xydhrmb9gy8bd9sfq738dgq7vybjb";
+    sha256 = "sha256-aJVBRl58Bzy9YEyc0Y8RPDHAtBuxJhRyalmxfkQFiIU=";
   };
 
   # perl is used at build time to gather the ferm version.
diff --git a/pkgs/tools/networking/ht-rust/default.nix b/pkgs/tools/networking/ht-rust/default.nix
deleted file mode 100644
index 629cf4ed11e..00000000000
--- a/pkgs/tools/networking/ht-rust/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, lib, rustPlatform, fetchFromGitHub, Security }:
-
-rustPlatform.buildRustPackage rec {
-  pname = "ht-rust";
-  version = "0.5.0";
-
-  src = fetchFromGitHub {
-    owner = "ducaale";
-    repo = "ht";
-    rev = "v${version}";
-    sha256 = "cr/iavCRdFYwVR6Iemm1hLKqd0OFG1iDmxpQ9fiwOmU=";
-  };
-
-  cargoSha256 = "uB23/9AjPwCwf9ljE8ai7zJQZqE0SoBPzRqqBOXa9QA=";
-
-  buildInputs = [ ] ++ lib.optional stdenv.isDarwin Security;
-
-  # Symlink to avoid conflict with pre-existing ht package
-  postInstall = ''
-    ln -s $out/bin/ht $out/bin/ht-rust
-  '';
-
-  doInstallCheck = true;
-  postInstallCheck = ''
-    $out/bin/ht-rust --help > /dev/null
-  '';
-
-  meta = with lib; {
-    description = "Yet another HTTPie clone in Rust";
-    homepage = "https://github.com/ducaale/ht";
-    license = licenses.mit;
-    maintainers = [ maintainers.payas ];
-  };
-}
diff --git a/pkgs/tools/networking/i2pd/default.nix b/pkgs/tools/networking/i2pd/default.nix
index ab215952091..92465a9fc72 100644
--- a/pkgs/tools/networking/i2pd/default.nix
+++ b/pkgs/tools/networking/i2pd/default.nix
@@ -9,17 +9,18 @@ assert upnpSupport -> miniupnpc != null;
 
 stdenv.mkDerivation rec {
   pname = "i2pd";
-  version = "2.35.0";
+  version = "2.36.0";
 
   src = fetchFromGitHub {
     owner = "PurpleI2P";
     repo = pname;
     rev = version;
-    sha256 = "0bpkgq7srwpjmadsz3nsd14jpr19b1zfrpc074lzjaq15icxxgxc";
+    sha256 = "sha256-f1ew2i/tgRdIAo/oOgFIFquKve+ImRzqoZqmlzfwpz8=";
   };
 
   buildInputs = with lib; [ boost zlib openssl ]
     ++ optional upnpSupport miniupnpc;
+
   makeFlags =
     let ynf = a: b: a + "=" + (if b then "yes" else "no"); in
     [ (ynf "USE_AESNI" aesniSupport)
@@ -27,6 +28,8 @@ stdenv.mkDerivation rec {
       (ynf "USE_UPNP"  upnpSupport)
     ];
 
+  enableParallelBuilding = true;
+
   installPhase = ''
     install -D i2pd $out/bin/i2pd
   '';
@@ -36,6 +39,6 @@ stdenv.mkDerivation rec {
     description = "Minimal I2P router written in C++";
     license = licenses.bsd3;
     maintainers = with maintainers; [ edwtjo ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/mailutils/default.nix b/pkgs/tools/networking/mailutils/default.nix
index f4ef542a960..6c1f454ca8c 100644
--- a/pkgs/tools/networking/mailutils/default.nix
+++ b/pkgs/tools/networking/mailutils/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   pname = "mailutils";
-  version = "3.10";
+  version = "3.12";
 
   src = fetchurl {
     url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz";
-    sha256 = "17smrxjdgbbzbzakik30vj46q4iib85ksqhb82jr4vjp57akszh9";
+    sha256 = "0n51ng1f8yf5zfsnh8s0pj9bnw6icb2r0y78gl2kzijaghhzlhvd";
   };
 
   postPatch = ''
@@ -31,12 +31,6 @@ stdenv.mkDerivation rec {
   patches = [
     ./fix-build-mb-len-max.patch
     ./path-to-cat.patch
-    # mailquota.c:277: undefined reference to `get_size'
-    # https://lists.gnu.org/archive/html/bug-mailutils/2020-08/msg00002.html
-    (fetchpatch {
-      url = "http://git.savannah.gnu.org/cgit/mailutils.git/patch/?id=37713b42a501892469234b90454731d8d8b7a3e6";
-      sha256 = "1mwj77nxvf4xvqf26yjs59jyksnizj0lmbymbzg4kmqynzq3zjny";
-    })
     # Fix cross-compilation
     # https://lists.gnu.org/archive/html/bug-mailutils/2020-11/msg00038.html
     (fetchpatch {
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index 130a7a18ae0..7335a7a5536 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-02-10T07-32-57Z";
+  version = "2021-02-14T04-28-06Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "mc";
     rev = "RELEASE.${version}";
-    sha256 = "sha256-dwgQ322KV1aR1RYSowHkb7Q0Pn7vuiV6Me1s6cMyaEs=";
+    sha256 = "sha256-Wef8HyJVffDb+ZdVPZOxguIFBC0B9s/1u39j7uXWSnw=";
   };
 
-  vendorSha256 = "sha256-MXCZZZ7NGDu8NMBzfIiNdRduvj7d7nboN2r8ObGx4dQ=";
+  vendorSha256 = "sha256-V/fsFfc1QbPR/ouW/9AqGeVhLSbDg6NHPqZYa4Fpx6I=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/mosh/default.nix b/pkgs/tools/networking/mosh/default.nix
index b03678858ad..5ddbf24bb6a 100644
--- a/pkgs/tools/networking/mosh/default.nix
+++ b/pkgs/tools/networking/mosh/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchurl, fetchpatch, zlib, protobuf, ncurses, pkg-config
 , makeWrapper, perlPackages, openssl, autoreconfHook, openssh, bash-completion
-, libutempter ? null, withUtempter ? stdenv.isLinux }:
+, withUtempter ? stdenv.isLinux, libutempter }:
 
 stdenv.mkDerivation rec {
   pname = "mosh";
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
 
   CXXFLAGS = lib.optionalString stdenv.cc.isClang "-std=c++11";
 
-  meta = {
+  meta = with lib; {
     homepage = "https://mosh.org/";
     description = "Mobile shell (ssh replacement)";
     longDescription = ''
@@ -56,8 +56,8 @@ stdenv.mkDerivation rec {
       Mosh is a replacement for SSH. It's more robust and responsive,
       especially over Wi-Fi, cellular, and long-distance links.
     '';
-    license = lib.licenses.gpl3Plus;
-    maintainers = with lib.maintainers; [viric];
-    platforms = lib.platforms.unix;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ viric ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/mtr/default.nix b/pkgs/tools/networking/mtr/default.nix
index 8296bc47919..1257c167e76 100644
--- a/pkgs/tools/networking/mtr/default.nix
+++ b/pkgs/tools/networking/mtr/default.nix
@@ -1,17 +1,15 @@
 { stdenv, lib, fetchFromGitHub, autoreconfHook, pkg-config
 , libcap, ncurses
-, withGtk ? false, gtk3 ? null }:
-
-assert withGtk -> gtk3 != null;
+, withGtk ? false, gtk3 }:
 
 stdenv.mkDerivation rec {
   pname = "mtr${lib.optionalString withGtk "-gui"}";
   version = "0.94";
 
   src = fetchFromGitHub {
-    owner  = "traviscross";
-    repo   = "mtr";
-    rev    = "v${version}";
+    owner = "traviscross";
+    repo = "mtr";
+    rev = "v${version}";
     sha256 = "0wnz87cr2lcl74bj8qxq9xgai40az3pk9k0z893scyc8svd61xz6";
   };
 
@@ -38,9 +36,9 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A network diagnostics tool";
-    homepage    = "https://www.bitwizard.nl/mtr/";
-    license     = licenses.gpl2;
+    homepage = "https://www.bitwizard.nl/mtr/";
+    license = licenses.gpl2;
     maintainers = with maintainers; [ koral orivej raskin globin ];
-    platforms   = platforms.unix;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/networking/mu/default.nix b/pkgs/tools/networking/mu/default.nix
index 03e19d5cb7a..8f46e657edb 100644
--- a/pkgs/tools/networking/mu/default.nix
+++ b/pkgs/tools/networking/mu/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mu";
-  version = "1.4.13";
+  version = "1.4.15";
 
   src = fetchFromGitHub {
     owner  = "djcb";
     repo   = "mu";
     rev    = version;
-    sha256 = "03cp2ppj07xpb0c43d3cr8m9jps07mfm8clmlk03sjbxg1widsh0";
+    sha256 = "sha256-VIUA0W+AmEbvGWatv4maBGILvUTGhBgO3iQtjIc3vG8=";
   };
 
   postPatch = lib.optionalString (batchSize != null) ''
diff --git a/pkgs/tools/networking/pritunl-ssh/default.nix b/pkgs/tools/networking/pritunl-ssh/default.nix
new file mode 100644
index 00000000000..586fc780699
--- /dev/null
+++ b/pkgs/tools/networking/pritunl-ssh/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchFromGitHub, python3 }:
+
+stdenv.mkDerivation rec {
+  pname   = "pritunl-ssh";
+  version = "1.0.1674.4";
+
+  src = fetchFromGitHub {
+    owner = "pritunl";
+    repo = "pritunl-zero-client";
+    rev = version;
+    sha256 = "07z60lipbwm0p7s2bxcij21jid8w4nyh6xk2qq5qdm4acq4k1i88";
+  };
+
+  buildInputs = [ python3 ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    install ssh_client.py $out/bin/pritunl-ssh
+    install ssh_host_client.py $out/bin/pritunl-ssh-host
+  '';
+
+  meta = with lib; {
+    description = "Pritunl Zero SSH client";
+    homepage = "https://github.com/pritunl/pritunl-zero-client";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ Thunderbottom ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/networking/proxychains/default.nix b/pkgs/tools/networking/proxychains/default.nix
index 8eb20538ea9..56a553c0c80 100644
--- a/pkgs/tools/networking/proxychains/default.nix
+++ b/pkgs/tools/networking/proxychains/default.nix
@@ -1,27 +1,33 @@
-{ lib, stdenv, fetchFromGitHub } :
+{ lib
+, stdenv
+, fetchFromGitHub
+}:
+
 stdenv.mkDerivation rec {
   pname = "proxychains";
-  version = "4.2.0";
+  version = "4.4.0";
 
   src = fetchFromGitHub {
     owner = "haad";
-    repo = "proxychains";
+    repo = pname;
     rev = "${pname}-${version}";
-    sha256 = "015skh3z1jmm8kxbm3nkqv1w56kcvabdmcbmpwzywxr4xnh3x3pc";
+    sha256 = "083xdg6fsn8c2ns93lvy794rixxq8va6jdf99w1z0xi4j7f1nyjw";
   };
 
   postPatch = ''
-    # Temporary work-around; most likely fixed by next upstream release
-    sed -i Makefile -e '/-lpthread/a LDFLAGS+=-ldl'
+    # Suppress compiler warning. Remove it when upstream fix arrives
+    substituteInPlace Makefile --replace "-Werror" "-Werror -Wno-stringop-truncation"
   '';
+
   postInstall = ''
     cp src/proxychains.conf $out/etc
   '';
 
-  meta = {
+  meta = with lib; {
     description = "Proxifier for SOCKS proxies";
     homepage = "http://proxychains.sourceforge.net";
-    license = lib.licenses.gpl2Plus;
-    platforms = lib.platforms.linux;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ fab ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/networking/spoofer/default.nix b/pkgs/tools/networking/spoofer/default.nix
index 23b3f2688c9..a983ef9c42c 100644
--- a/pkgs/tools/networking/spoofer/default.nix
+++ b/pkgs/tools/networking/spoofer/default.nix
@@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
   buildInputs = [ openssl protobuf libpcap traceroute ]
                 ++ optional withGUI qt5.qtbase ;
 
+  dontWrapQtApps = true;
+
   meta = with lib; {
     homepage = "https://www.caida.org/projects/spoofer";
     description = "Assess and report on deployment of source address validation";
diff --git a/pkgs/tools/networking/tendermint/default.nix b/pkgs/tools/networking/tendermint/default.nix
index 059c531cc61..13c7f6a1d5b 100644
--- a/pkgs/tools/networking/tendermint/default.nix
+++ b/pkgs/tools/networking/tendermint/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "tendermint";
-  version = "0.34.3";
+  version = "0.34.7";
 
   src = fetchFromGitHub {
     owner = "tendermint";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-tkIoLYfqlnyyAAgEKyQgE317uwyhc8xRTCTUXi+9r9s=";
+    sha256 = "sha256-nucfxQYjUKm9c1vn7c4w0Mxkf+rU1qEZ1bjzcL258MQ=";
   };
 
-  vendorSha256 = "sha256-DviK+MkJwcv2Dhwmqra5G/fTaWxXFbUSUVnAkSHjeII=";
+  vendorSha256 = "sha256-0Y9QDBVNYE2x3nY3loRKTCtYWXRnK7v+drRVvTMY4Dg=";
 
   doCheck = false;
 
diff --git a/pkgs/tools/networking/wakeonlan/default.nix b/pkgs/tools/networking/wakeonlan/default.nix
new file mode 100644
index 00000000000..48b99cadf2b
--- /dev/null
+++ b/pkgs/tools/networking/wakeonlan/default.nix
@@ -0,0 +1,29 @@
+{ lib, perlPackages, fetchFromGitHub, installShellFiles }:
+
+perlPackages.buildPerlPackage rec {
+  pname = "wakeonlan";
+  version = "0.41";
+
+  src = fetchFromGitHub {
+    owner = "jpoliv";
+    repo = pname;
+    rev = "wakeonlan-${version}";
+    sha256 = "0m48b39lz0yc5ckx2jx8y2p4c8npjngxl9wy86k43xgsd8mq1g3c";
+  };
+
+  outputs = [ "out" ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  installPhase = ''
+    install -Dt $out/bin wakeonlan
+    installManPage blib/man1/wakeonlan.1
+  '';
+
+  meta = with lib; {
+    description = "Perl script for waking up computers via Wake-On-LAN magic packets";
+    homepage = "https://github.com/jpoliv/wakeonlan";
+    license = licenses.artistic1;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/wget2/default.nix b/pkgs/tools/networking/wget2/default.nix
new file mode 100644
index 00000000000..1537da36163
--- /dev/null
+++ b/pkgs/tools/networking/wget2/default.nix
@@ -0,0 +1,100 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, fetchpatch
+  # build support
+, autoreconfHook
+, flex
+, gnulib
+, lzip
+, pkg-config
+, python3
+, texinfo
+  # libraries
+, brotli
+, bzip2
+, gpgme
+, libhsts
+, libidn2
+, libpsl
+, lzma
+, nghttp2
+, sslSupport ? true
+, openssl
+, pcre2
+, zlib
+, zstd
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wget2";
+  version = "1.99.2";
+
+  src = fetchFromGitLab {
+    owner = "gnuwget";
+    repo = pname;
+    rev = version;
+    sha256 = "1gws8y3z8xzi46c48n7jb162mr3ar4c34s7yy8kjcs14yzq951qz";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-autotools-2.70.patch";
+      url = "https://gitlab.com/gnuwget/wget2/-/commit/580af869093cfda6bc8a9d5901850354a16b3666.patch";
+      sha256 = "1x6wq4wxvvy6174d52qrhxkcgmv366f8smxyki49zb6rs4gqhskd";
+    })
+    (fetchpatch {
+      name = "update-potfiles-for-gnulib-2020-11-28.patch";
+      url = "https://gitlab.com/gnuwget/wget2/-/commit/368deb9fcca0c281f9c76333607cc878c3945ad0.patch";
+      sha256 = "1qsz8hbzbgg14wikxsbjjlq0cp3jw4pajbaz9wdn6ny617hdvi8y";
+    })
+  ];
+
+  # wget2_noinstall contains forbidden reference to /build/
+  postPatch = ''
+    substituteInPlace src/Makefile.am \
+      --replace 'bin_PROGRAMS = wget2 wget2_noinstall' 'bin_PROGRAMS = wget2'
+  '';
+
+  nativeBuildInputs = [ autoreconfHook flex lzip pkg-config python3 texinfo ];
+
+  buildInputs = [ brotli bzip2 gpgme libhsts libidn2 libpsl lzma nghttp2 pcre2 zlib zstd ]
+    ++ lib.optional sslSupport openssl;
+
+  # TODO: include translation files
+  autoreconfPhase = ''
+    # copy gnulib into build dir and make writable.
+    # Otherwise ./bootstrap copies the non-writable files from nix store and fails to modify them
+    rmdir gnulib
+    cp -r ${gnulib} gnulib
+    chmod -R u+w gnulib/{build-aux,lib}
+
+    # fix bashisms can be removed when https://gitlab.com/gnuwget/wget2/-/commit/c9499dcf2f58983d03e659e2a1a7f21225141edf is in the release
+    sed 's|==|=|g' -i configure.ac
+
+    ./bootstrap --no-git --gnulib-srcdir=gnulib --skip-po
+  '';
+
+  configureFlags = [
+    "--disable-static"
+    # TODO: https://gitlab.com/gnuwget/wget2/-/issues/537
+    (lib.withFeatureAs sslSupport "ssl" "openssl")
+  ];
+
+  outputs = [ "out" "lib" "dev" ];
+
+  meta = with lib; {
+    description = "successor of GNU Wget, a file and recursive website downloader.";
+    longDescription = ''
+      Designed and written from scratch it wraps around libwget, that provides the basic
+      functions needed by a web client.
+      Wget2 works multi-threaded and uses many features to allow fast operation.
+      In many cases Wget2 downloads much faster than Wget1.x due to HTTP2, HTTP compression,
+      parallel connections and use of If-Modified-Since HTTP header.
+    '';
+    homepage = "https://gitlab.com/gnuwget/wget2";
+    # wget2 GPLv3+; libwget LGPLv3+
+    license = with licenses; [ gpl3Plus lgpl3Plus ];
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/xh/default.nix b/pkgs/tools/networking/xh/default.nix
new file mode 100644
index 00000000000..1d1736cd816
--- /dev/null
+++ b/pkgs/tools/networking/xh/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, rustPlatform, fetchFromGitHub, Security }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "xh";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "ducaale";
+    repo = "xh";
+    rev = "v${version}";
+    sha256 = "0b7q0xbfbrhvpnxbm9bd1ncdza9k2kcmcir3qhqzb2pgsb5b5njx";
+  };
+
+  cargoSha256 = "02fgqys9qf0jzs2n230pyj151v6xbm6wm2rd9qm5gsib6zaq7gfa";
+
+  buildInputs = lib.optional stdenv.isDarwin Security;
+
+  checkFlagsArray = [ "--skip=basic_options" ];
+
+  doInstallCheck = true;
+  postInstallCheck = ''
+    $out/bin/xh --help > /dev/null
+  '';
+
+  meta = with lib; {
+    description = "Yet another HTTPie clone in Rust";
+    homepage = "https://github.com/ducaale/xh";
+    changelog = "https://github.com/ducaale/xh/blob/v${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ payas SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/networking/zap/default.nix b/pkgs/tools/networking/zap/default.nix
index 183f226f84b..bccc840a27a 100644
--- a/pkgs/tools/networking/zap/default.nix
+++ b/pkgs/tools/networking/zap/default.nix
@@ -1,31 +1,38 @@
-{ lib, stdenv, fetchFromGitHub, jdk8, ant, runtimeShell }:
+{ lib, stdenv, fetchurl, jre, runtimeShell }:
 
-let jdk = jdk8; in
 stdenv.mkDerivation rec {
   pname = "zap";
-  version = "2.7.0";
-  src = fetchFromGitHub {
-    owner = "zaproxy";
-    repo = "zaproxy";
-    rev =version;
-    sha256 = "1bz4pgq66v6kxmgj99llacm1d85vj8z78jlgc2z9hv0ha5i57y32";
+  version = "2.10.0";
+  src = fetchurl {
+    url = "https://github.com/zaproxy/zaproxy/releases/download/v${version}/ZAP_${version}_Linux.tar.gz";
+    sha256 = "1mz9s56pbs62g4pnd1ml8y6jpf9ilisdwwvjv5kn6yxrcdi2zzqh";
   };
 
-  buildInputs = [ jdk ant ];
+  buildInputs = [ jre ];
 
-  buildPhase = ''
-    cd build
-    echo -n "${version}" > version.txt
-    ant -f build.xml setup init  compile dist copy-source-to-build package-linux
-  '';
+  # From https://github.com/zaproxy/zaproxy/blob/master/zap/src/main/java/org/parosproxy/paros/Constant.java
+  version_tag = "2010000";
 
+  # Copying config and adding version tag before first use to avoid permission
+  # issues if zap tries to copy config on it's own.
   installPhase = ''
-    mkdir -p "$out/share"
-    tar xvf  "ZAP_${version}_Linux.tar.gz" -C "$out/share/"
-    mkdir -p "$out/bin"
-    echo "#!${runtimeShell}" > "$out/bin/zap"
-    echo \"$out/share/ZAP_${version}/zap.sh\" >> "$out/bin/zap"
-    chmod +x "$out/bin/zap"
+    mkdir -p "$out/bin" "$out/share"
+    cp -pR . "$out/share/${pname}/"
+
+    cat >> "$out/bin/${pname}" << EOF
+    #!${runtimeShell}
+    export PATH="${lib.makeBinPath [ jre ]}:\$PATH"
+    export JAVA_HOME='${jre}'
+    if ! [ -f "~/.ZAP/config.xml" ];then
+      mkdir -p "\$HOME/.ZAP"
+      head -n 2 $out/share/${pname}/xml/config.xml > "\$HOME/.ZAP/config.xml"
+      echo "<version>${version_tag}</version>" >> "\$HOME/.ZAP/config.xml"
+      tail -n +3 $out/share/${pname}/xml/config.xml >> "\$HOME/.ZAP/config.xml"
+    fi
+    exec "$out/share/${pname}/zap.sh"  "\$@"
+    EOF
+
+    chmod u+x  "$out/bin/${pname}"
   '';
 
   meta = with lib; {
diff --git a/pkgs/tools/networking/zerotierone/default.nix b/pkgs/tools/networking/zerotierone/default.nix
index c17023103f8..04711b3d861 100644
--- a/pkgs/tools/networking/zerotierone/default.nix
+++ b/pkgs/tools/networking/zerotierone/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zerotierone";
-  version = "1.6.3";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "zerotier";
     repo = "ZeroTierOne";
     rev = version;
-    sha256 = "0a9sjcri96pv4pvvi94g7jyldwfhqqsi1k58maymm0jnqnj91z25";
+    sha256 = "06b6k1rzqkd7cdl7n0gz5ky48fs2nhn0q2qxx1rww38vbfc7lpmf";
   };
 
   preConfigure = ''
diff --git a/pkgs/tools/package-management/dpkg/default.nix b/pkgs/tools/package-management/dpkg/default.nix
index 7eee52f8efa..459b9550b7c 100644
--- a/pkgs/tools/package-management/dpkg/default.nix
+++ b/pkgs/tools/package-management/dpkg/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "dpkg";
-  version = "1.20.5";
+  version = "1.20.7.1";
 
   src = fetchurl {
     url = "mirror://debian/pool/main/d/dpkg/dpkg_${version}.tar.xz";
-    sha256 = "1pg0yd1q9l5cx7pr0853yds1n3mh5b28zkw79gjqjzcmjwqkzwpj";
+    sha256 = "sha256-Cq0t5of3l++OvavHuv0W3BSX8c4jvZFG+apz85alY28=";
   };
 
   configureFlags = [
diff --git a/pkgs/tools/package-management/emplace/default.nix b/pkgs/tools/package-management/emplace/default.nix
index d70d7af30b0..e5da9a1d7b4 100644
--- a/pkgs/tools/package-management/emplace/default.nix
+++ b/pkgs/tools/package-management/emplace/default.nix
@@ -2,21 +2,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "emplace";
-  version = "0.4.4";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "tversteeg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-OKKAYZz2ytiuc/U4fOZepBDvupzQdWC0Wk3wDi+Ih6w=";
+    sha256 = "sha256-dDFc13IVD4f5UgiHXAcqRKoZEPTn/iBOogT3XfdstK0=";
   };
 
-  cargoSha256 = "sha256-jEplQ/r/XPvLIQrQAiR1Fde5yfE98UuqDazPcEgvo+w=";
+  cargoSha256 = "sha256-QsYOR7tk5cRCF0+xkpJ/F+Z3pjBPxTDFvA1gEi82AOQ=";
 
   meta = with lib; {
     description = "Mirror installed software on multiple machines";
     homepage = "https://github.com/tversteeg/emplace";
-    license = licenses.agpl3;
+    license = licenses.agpl3Plus;
     maintainers = with maintainers; [ Br1ght0ne ];
   };
 }
diff --git a/pkgs/tools/package-management/holo-build/default.nix b/pkgs/tools/package-management/holo-build/default.nix
new file mode 100644
index 00000000000..8f88ae08762
--- /dev/null
+++ b/pkgs/tools/package-management/holo-build/default.nix
@@ -0,0 +1,59 @@
+{ lib, buildGoModule, fetchFromGitHub, installShellFiles, perl, file }:
+
+buildGoModule rec {
+  pname = "holo-build";
+  version = "1.6.1";
+
+  src = fetchFromGitHub {
+    owner = "holocm";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0lypbgf96bcc4m3968xa4il1zwprsdyc0pw6pl9mqq7djxabikd0";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace 'VERSION :=' 'VERSION ?='
+    substituteInPlace src/holo-build.sh \
+      --replace '/usr/lib/holo/holo-build' '${placeholder "out"}/lib/holo/holo-build'
+  '';
+
+  vendorSha256 = null;
+
+  nativeBuildInputs = [ installShellFiles perl ];
+
+  subPackages = [ "src/holo-build" ];
+
+  buildFlagsArray = [ "-ldflags=-s -w -X github.com/holocm/holo-build/src/holo-build/common.version=${version}" ];
+
+  postBuild = ''
+    make build/man/holo-build.8 VERSION=${version}
+  '';
+
+  checkInputs = [ file ];
+
+  checkPhase = ''
+    ln -s ../../go/bin/holo-build build/holo-build
+    go build -ldflags "-s -w -X github.com/holocm/holo-build/src/holo-build/common.version=${version}" -o build/dump-package ./src/dump-package
+    bash test/compiler/run_tests.sh
+    bash test/interface/run_tests.sh
+  '';
+
+  postInstall = ''
+    installManPage build/man/*
+    installShellCompletion --bash --name holo-build util/autocomplete.bash
+    installShellCompletion --zsh --name _holo-build util/autocomplete.zsh
+
+    # install wrapper script
+    mkdir -p $out/lib/holo
+    mv $out/bin/holo-build $out/lib/holo/holo-build
+    cp src/holo-build.sh $out/bin/holo-build
+  '';
+
+  meta = with lib; {
+    description = "Cross-distribution system package compiler";
+    homepage = "http://holocm.org/";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/package-management/packagekit/qt.nix b/pkgs/tools/package-management/packagekit/qt.nix
index f87ce8258fa..d1d135c1579 100644
--- a/pkgs/tools/package-management/packagekit/qt.nix
+++ b/pkgs/tools/package-management/packagekit/qt.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake pkg-config qttools ];
 
+  dontWrapQtApps = true;
+
   meta = packagekit.meta // {
     description = "System to facilitate installing and updating packages - Qt";
   };
diff --git a/pkgs/tools/security/bitwarden_rs/default.nix b/pkgs/tools/security/bitwarden_rs/default.nix
index 3b623cefd0d..2cce00693a4 100644
--- a/pkgs/tools/security/bitwarden_rs/default.nix
+++ b/pkgs/tools/security/bitwarden_rs/default.nix
@@ -8,13 +8,13 @@ let
 
 in rustPlatform.buildRustPackage rec {
   pname = "bitwarden_rs";
-  version = "1.17.0";
+  version = "1.19.0";
 
   src = fetchFromGitHub {
     owner = "dani-garcia";
     repo = pname;
     rev = version;
-    sha256 = "0hi29vy23a5r23pgzdssd2gvim8vw2vmykck5cl5phq11a3az31p";
+    sha256 = "1iww8fhh4indmgw1j35whqyakd4bppmiyjpcdf2qrzg52x5binh0";
   };
 
   nativeBuildInputs = [ pkg-config ];
@@ -25,7 +25,7 @@ in rustPlatform.buildRustPackage rec {
 
   RUSTC_BOOTSTRAP = 1;
 
-  cargoSha256 = "0hv3k5l85nz4syzamranhi237fiwkjnda8v5ssnm2nsmcm7ih9k8";
+  cargoSha256 = "0ga7ahlszja8ilng8xsrwdy7zy6bbci4mf00lknladjhlw16wibf";
   cargoBuildFlags = [ featuresFlag ];
 
   checkPhase = ''
@@ -40,7 +40,7 @@ in rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Unofficial Bitwarden compatible server written in Rust";
     homepage = "https://github.com/dani-garcia/bitwarden_rs";
-    license = licenses.gpl3;
+    license = licenses.gpl3Only;
     maintainers = with maintainers; [ msteen ];
   };
 }
diff --git a/pkgs/tools/security/doppler/default.nix b/pkgs/tools/security/doppler/default.nix
index 1222ade4ad7..f3aabb4a9f3 100644
--- a/pkgs/tools/security/doppler/default.nix
+++ b/pkgs/tools/security/doppler/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "doppler";
-  version = "3.22.0";
+  version = "3.22.1";
 
   src = fetchFromGitHub {
     owner = "dopplerhq";
     repo = "cli";
     rev = version;
-    sha256 = "sha256-Vx+f2IgCOdRxCVppkJNzVDBnsWjt4X96PyCJl9MmfWI=";
+    sha256 = "sha256-f0kj9JgF49WsZm+c3oFA2+bDI5hTPRGRr1Ts4zdcutI=";
   };
 
   vendorSha256 = "sha256-rQrlnIYYnRc+cqyiyJoh1YqxD61doyjte7ehrX4RDTI=";
diff --git a/pkgs/tools/security/gen-oath-safe/default.nix b/pkgs/tools/security/gen-oath-safe/default.nix
index 51ff5b0e81e..20ee69eeaea 100644
--- a/pkgs/tools/security/gen-oath-safe/default.nix
+++ b/pkgs/tools/security/gen-oath-safe/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ makeWrapper ];
 
-  buildPhase = ":";
+  dontBuild = true;
 
   installPhase =
     let
diff --git a/pkgs/tools/security/gopass/jsonapi.nix b/pkgs/tools/security/gopass/jsonapi.nix
new file mode 100644
index 00000000000..5070cbe3f0d
--- /dev/null
+++ b/pkgs/tools/security/gopass/jsonapi.nix
@@ -0,0 +1,43 @@
+{ lib
+, makeWrapper
+, buildGoModule
+, fetchFromGitHub
+, installShellFiles
+, gopass
+}:
+
+buildGoModule rec {
+  pname = "gopass-jsonapi";
+  version = "1.11.1";
+
+  src = fetchFromGitHub {
+    owner = "gopasspw";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "03xhza7n92xg12z83as9qdvvc0yx1qy6q0c7i4njvng594f9a8x2";
+  };
+
+  vendorSha256 = "0d4fyppsdfzvmjb0qvpnfnw0vl6z256bly7hfb0whk6rldks60wr";
+
+  subPackages = [ "." ];
+
+  nativeBuildInputs = [ installShellFiles makeWrapper ];
+
+  preBuild = ''
+    buildFlagsArray+=(
+      "-ldflags=-s -w -X main.version=${version} -X main.commit=${src.rev}"
+    )
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/gopass-jsonapi --prefix PATH : "${lib.makeBinPath [ gopass ]}"
+  '';
+
+  meta = with lib; {
+    description = "Enables communication with gopass via JSON messages";
+    homepage = "https://www.gopass.pw/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ maxhbr ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/security/hcxtools/default.nix b/pkgs/tools/security/hcxtools/default.nix
index a1ba32b35ed..20e28fa1253 100644
--- a/pkgs/tools/security/hcxtools/default.nix
+++ b/pkgs/tools/security/hcxtools/default.nix
@@ -1,16 +1,17 @@
-{ lib, stdenv, fetchFromGitHub, curl, openssl, zlib }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, curl, openssl, zlib }:
 
 stdenv.mkDerivation rec {
   pname = "hcxtools";
-  version = "6.0.3";
+  version = "6.1.5";
 
   src = fetchFromGitHub {
     owner = "ZerBea";
     repo = pname;
     rev = version;
-    sha256 = "0s9l5mvzcv6hnj7h28piabnm66b09hk2l57vb85ny35w99hzpkc0";
+    sha256 = "1xvr89r6287788bx5qbw9sr8jvmajps0rpc7fvh9bfzb6zw2rq6w";
   };
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = [ curl openssl zlib ];
 
   makeFlags = [
diff --git a/pkgs/tools/security/metasploit/Gemfile b/pkgs/tools/security/metasploit/Gemfile
index 7ffbb5c0323..86c44ef0953 100644
--- a/pkgs/tools/security/metasploit/Gemfile
+++ b/pkgs/tools/security/metasploit/Gemfile
@@ -1,4 +1,4 @@
 # frozen_string_literal: true
 source "https://rubygems.org"
 
-gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.0.29"
+gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.0.30"
diff --git a/pkgs/tools/security/metasploit/Gemfile.lock b/pkgs/tools/security/metasploit/Gemfile.lock
index 926d955d2e8..dd5d4dc2f6b 100644
--- a/pkgs/tools/security/metasploit/Gemfile.lock
+++ b/pkgs/tools/security/metasploit/Gemfile.lock
@@ -1,9 +1,9 @@
 GIT
   remote: https://github.com/rapid7/metasploit-framework
-  revision: f54a838fa686f495854a71cb32fadcb1853b6201
-  ref: refs/tags/6.0.29
+  revision: f444c3995f21f9e9eaba63d465fac7d60ba88ebb
+  ref: refs/tags/6.0.30
   specs:
-    metasploit-framework (6.0.29)
+    metasploit-framework (6.0.30)
       actionpack (~> 5.2.2)
       activerecord (~> 5.2.2)
       activesupport (~> 5.2.2)
@@ -93,26 +93,26 @@ GEM
   remote: https://rubygems.org/
   specs:
     Ascii85 (1.1.0)
-    actionpack (5.2.4.4)
-      actionview (= 5.2.4.4)
-      activesupport (= 5.2.4.4)
+    actionpack (5.2.4.5)
+      actionview (= 5.2.4.5)
+      activesupport (= 5.2.4.5)
       rack (~> 2.0, >= 2.0.8)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.2)
-    actionview (5.2.4.4)
-      activesupport (= 5.2.4.4)
+    actionview (5.2.4.5)
+      activesupport (= 5.2.4.5)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.0.3)
-    activemodel (5.2.4.4)
-      activesupport (= 5.2.4.4)
-    activerecord (5.2.4.4)
-      activemodel (= 5.2.4.4)
-      activesupport (= 5.2.4.4)
+    activemodel (5.2.4.5)
+      activesupport (= 5.2.4.5)
+    activerecord (5.2.4.5)
+      activemodel (= 5.2.4.5)
+      activesupport (= 5.2.4.5)
       arel (>= 9.0)
-    activesupport (5.2.4.4)
+    activesupport (5.2.4.5)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
@@ -124,22 +124,22 @@ GEM
     arel-helpers (2.12.0)
       activerecord (>= 3.1.0, < 7)
     aws-eventstream (1.1.0)
-    aws-partitions (1.424.0)
+    aws-partitions (1.427.0)
     aws-sdk-core (3.112.0)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.239.0)
       aws-sigv4 (~> 1.1)
       jmespath (~> 1.0)
-    aws-sdk-ec2 (1.224.0)
+    aws-sdk-ec2 (1.225.0)
       aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-iam (1.47.0)
+    aws-sdk-iam (1.48.0)
       aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
     aws-sdk-kms (1.42.0)
       aws-sdk-core (~> 3, >= 3.112.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.88.0)
+    aws-sdk-s3 (1.88.1)
       aws-sdk-core (~> 3, >= 3.112.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.1)
@@ -149,7 +149,7 @@ GEM
     bcrypt_pbkdf (1.1.0)
     bindata (2.4.8)
     bit-struct (0.16)
-    bson (4.11.1)
+    bson (4.12.0)
     builder (3.2.4)
     concurrent-ruby (1.0.5)
     cookiejar (0.3.3)
@@ -168,7 +168,7 @@ GEM
       eventmachine (>= 1.0.0.beta.4)
     erubi (1.10.0)
     eventmachine (1.2.7)
-    faker (2.15.1)
+    faker (2.16.0)
       i18n (>= 1.6, < 2)
     faraday (1.3.0)
       faraday-net_http (~> 1.0)
@@ -183,9 +183,9 @@ GEM
     hrr_rb_ssh (0.3.0.pre2)
       ed25519 (~> 1.2)
     http_parser.rb (0.6.0)
-    i18n (1.8.8)
+    i18n (1.8.9)
       concurrent-ruby (~> 1.0)
-    io-console (0.5.7)
+    io-console (0.5.8)
     irb (1.3.3)
       reline (>= 0.1.5)
     jmespath (1.4.0)
@@ -273,9 +273,9 @@ GEM
       nokogiri (>= 1.6)
     rails-html-sanitizer (1.3.0)
       loofah (~> 2.3)
-    railties (5.2.4.4)
-      actionpack (= 5.2.4.4)
-      activesupport (= 5.2.4.4)
+    railties (5.2.4.5)
+      actionpack (= 5.2.4.5)
+      activesupport (= 5.2.4.5)
       method_source
       rake (>= 0.8.7)
       thor (>= 0.19.0, < 2.0)
@@ -294,17 +294,18 @@ GEM
       rex-core
       rex-struct2
       rex-text
-    rex-core (0.1.15)
+    rex-core (0.1.16)
     rex-encoder (0.1.5)
       metasm
       rex-arch
       rex-text
-    rex-exploitation (0.1.26)
+    rex-exploitation (0.1.27)
       jsobfu
       metasm
       rex-arch
       rex-encoder
       rex-text
+      rexml
     rex-java (0.1.6)
     rex-mime (0.1.6)
       rex-text
@@ -333,6 +334,7 @@ GEM
     rex-text (0.2.31)
     rex-zip (0.1.4)
       rex-text
+    rexml (3.2.4)
     rkelly-remix (0.0.7)
     ruby-macho (2.5.0)
     ruby-rc4 (0.1.5)
diff --git a/pkgs/tools/security/metasploit/default.nix b/pkgs/tools/security/metasploit/default.nix
index e11b1dd2990..619cc9c3192 100644
--- a/pkgs/tools/security/metasploit/default.nix
+++ b/pkgs/tools/security/metasploit/default.nix
@@ -8,13 +8,13 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "metasploit-framework";
-  version = "6.0.29";
+  version = "6.0.30";
 
   src = fetchFromGitHub {
     owner = "rapid7";
     repo = "metasploit-framework";
     rev = version;
-    sha256 = "sha256-QDgInLW/uOBGf0ioPPBMUZv/c9tA7OtTOfp2CEAjf24=";
+    sha256 = "sha256-DD/nFbSNs3nVNe+W+5zAmDlvMCseYuWWpKX9Dp+9Etc=";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/metasploit/gemset.nix b/pkgs/tools/security/metasploit/gemset.nix
index d33ca7ce03f..72f60a90ea4 100644
--- a/pkgs/tools/security/metasploit/gemset.nix
+++ b/pkgs/tools/security/metasploit/gemset.nix
@@ -4,50 +4,50 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0d8gxymshjhva5fyv33iy2hzp4jm3i44asdbma9pv9wzpl5fwhn0";
+      sha256 = "1dh83klnrhfi94s066ahfl2bxaqxqc0sqga71bvcgn8xmcl56bhq";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   actionview = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0k8dgkplqj76i3q1f8897m8svj2xggd1knhy3bcwfl4nh7998kw6";
+      sha256 = "0kxf9gd52hh33z6015gsfsnyavly29f15lbsljlai68r7qc2j89c";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   activemodel = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1g79l7v0ddpxcj5r2s9kii6h4r4nbpy5bksbqi5lxvivrb3pkz1m";
+      sha256 = "0qc4bjxnkjrlqpz2k7hllqk30ydad5m2q7pbqzdr0hxzycavxz7m";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   activerecord = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "05b9l85a31cq6g7v4b4ifrj798q49rlidcvvfasmb3bk412wlp03";
+      sha256 = "1smg691az7r2bsydfj2d46mr2d5sm0lq3ydwvfv6hl5c3y1y5jfg";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   activesupport = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0dpnk20s754fz6jfz9sp3ri49hn46ksw4hf6ycnlw7s3hsdxqgcd";
+      sha256 = "0fp4gr3g25qgl01y3pd88wfh4pjc5zj3bz4v7rkxxwaxdjg7a9cc";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   addressable = {
     groups = ["default"];
@@ -114,10 +114,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1dxyx3pnih7g23hq794ldapsszddcmldxf6pq3z99q4d8rg8rrqp";
+      sha256 = "1v7dwyqkwdbp4f627y459lj22vimjzwhk2z987bcncq2ml7ldrfz";
       type = "gem";
     };
-    version = "1.424.0";
+    version = "1.427.0";
   };
   aws-sdk-core = {
     groups = ["default"];
@@ -134,20 +134,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1lg8vh124viba77b0qhi5j8xx8b4wxdiyycl4kaawmddwhr33zx9";
+      sha256 = "1x2f3jp8p7ag9kw7glkiq60ypqq26ra79qnhms4apqz5www86d4d";
       type = "gem";
     };
-    version = "1.224.0";
+    version = "1.225.0";
   };
   aws-sdk-iam = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "16152qidkisakl2iqvghrjnccq279pahb953q5a4q0ipk5imw2c1";
+      sha256 = "02xsqb66r7a53a9nnwrhpvd5s9n7wdrvd51c56gs1hlb38j45y0j";
       type = "gem";
     };
-    version = "1.47.0";
+    version = "1.48.0";
   };
   aws-sdk-kms = {
     groups = ["default"];
@@ -164,10 +164,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "029iqr52fxxz8d6jb2g4k76i7nnjyspvjdlx52xah25zzhp3bx7v";
+      sha256 = "01zlv2icx3m0pq94z9fcsp1r9ivdqhfpnpbrv63fpr6m7yqww24y";
       type = "gem";
     };
-    version = "1.88.0";
+    version = "1.88.1";
   };
   aws-sigv4 = {
     groups = ["default"];
@@ -224,10 +224,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "12v95l3v7n7lh3mk8k1jdrkpn2vjnkb8k636hcygaczzv4jdsdfp";
+      sha256 = "0gny4n34gwfc6x04x7vli5my6cdl90n4i0wsxm758q81hfmkqxd7";
       type = "gem";
     };
-    version = "4.11.1";
+    version = "4.12.0";
   };
   builder = {
     groups = ["default"];
@@ -344,10 +344,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1l0dvswigzxaz9558wmfix3v8cmwwkgdvrx1fmpd3qnr5hky1qrk";
+      sha256 = "1jc6wffxnl7rbhg4hpj572f38fkxgrkgvv5imgzamrdmw55h206b";
       type = "gem";
     };
-    version = "2.15.1";
+    version = "2.16.0";
   };
   faraday = {
     groups = ["default"];
@@ -424,20 +424,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0k7q3pwm0l1qvx6sc3d4dxmdxqx2pc63lbfjwv0k0higq94rinvs";
+      sha256 = "08p6b13p99j1rrcrw1l3v0kb9mxbsvy6nk31r8h4rnszdgzpga32";
       type = "gem";
     };
-    version = "1.8.8";
+    version = "1.8.9";
   };
   io-console = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1gp1xx2g1x81wsh929x7rzsm0c8qgkhr2mkjn79fbdwyfnk4s04l";
+      sha256 = "0prpvq05wzp8n7vk44zcwmn53p1akn4r105n5py6bmbxsmmkvyhr";
       type = "gem";
     };
-    version = "0.5.7";
+    version = "0.5.8";
   };
   irb = {
     groups = ["default"];
@@ -524,12 +524,12 @@
     platforms = [];
     source = {
       fetchSubmodules = false;
-      rev = "f54a838fa686f495854a71cb32fadcb1853b6201";
-      sha256 = "0vkz4d00hxps759ypv20vdrzz6si9kq3ra28gx3f1f5znnf0hf20";
+      rev = "f444c3995f21f9e9eaba63d465fac7d60ba88ebb";
+      sha256 = "1mqjpnghxzd5ljbfaqhy5cq6yfcqq2fgp5pg6papkcwdnhayfgqc";
       type = "git";
       url = "https://github.com/rapid7/metasploit-framework";
     };
-    version = "6.0.29";
+    version = "6.0.30";
   };
   metasploit-model = {
     groups = ["default"];
@@ -886,10 +886,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "089kiwmv8fxyfk0zp57q74nyd5i6d5x5ihlrzbzwl041v94s2zx9";
+      sha256 = "1qwgjwfzkm4q7wby30c9r724w1sp1bywbqfmpv20lq3zdcrf1rfd";
       type = "gem";
     };
-    version = "5.2.4.4";
+    version = "5.2.4.5";
   };
   rake = {
     groups = ["default"];
@@ -966,10 +966,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1bjz0mhxijvfq535hpzswr83yrq3ghkkmqna63yjsabh61qpxx16";
+      sha256 = "08krnf05mbq6x2d92fv34bl8xdz1d3yq2m0mp8bfbq5kd6a13l2w";
       type = "gem";
     };
-    version = "0.1.15";
+    version = "0.1.16";
   };
   rex-encoder = {
     groups = ["default"];
@@ -986,10 +986,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0z4dn579mxl22qdxcnbmxp0diia6kr7c20giv0bn4r0viavz49gc";
+      sha256 = "1b10rcrw52nj2aswsn0kwv0s601rbn077k0r6n5lblip6fbrqz9i";
       type = "gem";
     };
-    version = "0.1.26";
+    version = "0.1.27";
   };
   rex-java = {
     groups = ["default"];
@@ -1121,6 +1121,16 @@
     };
     version = "0.1.4";
   };
+  rexml = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mkvkcw9fhpaizrhca0pdgjcrbns48rlz4g6lavl5gjjq3rk2sq3";
+      type = "gem";
+    };
+    version = "3.2.4";
+  };
   rkelly-remix = {
     groups = ["default"];
     platforms = [];
diff --git a/pkgs/tools/security/nmap-unfree/default.nix b/pkgs/tools/security/nmap-unfree/default.nix
new file mode 100644
index 00000000000..1e6ed42bae4
--- /dev/null
+++ b/pkgs/tools/security/nmap-unfree/default.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchurl
+, libpcap
+, pkg-config
+, openssl
+, lua5_3
+, pcre
+, liblinear
+, libssh2
+, zlib
+, withLua ? true
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nmap-unfree";
+  version = "7.91";
+
+  src = fetchurl {
+    url = "https://nmap.org/dist/nmap-${version}.tar.bz2";
+    sha256 = "001kb5xadqswyw966k2lqi6jr6zz605jpp9w4kmm272if184pk0q";
+  };
+
+  prePatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace libz/configure \
+        --replace /usr/bin/libtool ar \
+        --replace 'AR="libtool"' 'AR="ar"' \
+        --replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
+  '';
+
+  configureFlags = [
+    (if withLua then "--with-liblua=${lua5_3}" else "--without-liblua")
+  ];
+
+  makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    "AR=${stdenv.cc.bintools.targetPrefix}ar"
+    "RANLIB=${stdenv.cc.bintools.targetPrefix}ranlib"
+    "CC=${stdenv.cc.targetPrefix}gcc"
+  ];
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    pcre
+    liblinear
+    libssh2
+    libpcap
+    openssl
+    zlib
+  ];
+
+  enableParallelBuilding = true;
+
+  # Tests require network access
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Open source utility for network discovery and security auditing";
+    homepage = "http://www.nmap.org";
+    # Nmap Public Source License Version 0.93
+    # https://github.com/nmap/nmap/blob/master/LICENSE
+    license = licenses.unfree;
+    maintainers = with maintainers; [ fab SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/tools/security/proxmark3/default.nix b/pkgs/tools/security/proxmark3/default.nix
index 3b1f21ac718..b52e7279fa9 100644
--- a/pkgs/tools/security/proxmark3/default.nix
+++ b/pkgs/tools/security/proxmark3/default.nix
@@ -15,6 +15,8 @@ let
       nativeBuildInputs = [ pkg-config gcc-arm-embedded ];
       buildInputs = [ ncurses readline pcsclite qt5.qtbase ];
 
+      dontWrapQtApps = true;
+
       postPatch = ''
         substituteInPlace client/Makefile --replace '-ltermcap' ' '
         substituteInPlace liblua/Makefile --replace '-ltermcap' ' '
diff --git a/pkgs/tools/security/shhgit/default.nix b/pkgs/tools/security/shhgit/default.nix
new file mode 100644
index 00000000000..a05eba1282c
--- /dev/null
+++ b/pkgs/tools/security/shhgit/default.nix
@@ -0,0 +1,26 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "shhgit";
+  version = "0.4-${lib.strings.substring 0 7 rev}";
+  rev = "7e55062d10d024f374882817692aa2afea02ff84";
+
+  src = fetchFromGitHub {
+    owner = "eth0izzle";
+    repo = pname;
+    inherit rev;
+    sha256 = "1b7r4ivfplm4crlvx571nyz2rc6djy0xvl14nz7m0ngh6206df9k";
+  };
+
+  vendorSha256 = "0isa9faaknm8c9mbyj5dvf1dfnyv44d1pjd2nbkyfi6b22hcci3d";
+
+  meta = with lib; {
+    description = "Tool to detect secrets in repositories";
+    homepage = "https://github.com/eth0izzle/shhgit";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/security/teler/default.nix b/pkgs/tools/security/teler/default.nix
index 4a971243ad1..2ca92c909b3 100644
--- a/pkgs/tools/security/teler/default.nix
+++ b/pkgs/tools/security/teler/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "teler";
-  version = "1.0.1";
+  version = "1.0.2-dev";
 
   src = fetchFromGitHub {
     owner = "kitabisa";
     repo = "teler";
     rev = "v${version}";
-    sha256 = "07pfqgms5cj4y6zm984qjmmw1c8j9yjbgrp2spi9vzk96s3k3qn3";
+    sha256 = "sha256-Hmoj44/rprM9oSFAsRWLszew0RvCTjdHISUSrx/4IPs=";
   };
 
-  vendorSha256 = "06szi2jw3nayd7pljjlww2gsllgnfg8scnjmc6qv5xl6gf797kdz";
+  vendorSha256 = "sha256-L+wjurURpesCA2IK0r1sxvOUvNJT1wiRp75kpe6LH5s=";
 
   # test require internet access
   doCheck = false;
diff --git a/pkgs/tools/security/tor/default.nix b/pkgs/tools/security/tor/default.nix
index 8766e957aaf..f040b17f892 100644
--- a/pkgs/tools/security/tor/default.nix
+++ b/pkgs/tools/security/tor/default.nix
@@ -30,11 +30,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "tor";
-  version = "0.4.4.7";
+  version = "0.4.5.6";
 
   src = fetchurl {
     url = "https://dist.torproject.org/${pname}-${version}.tar.gz";
-    sha256 = "1vh5kdx7s74il8a6gr7jydbpv0an01nla4y2r8w7h33z2wk2jv9j";
+    sha256 = "0cz78pjw2bc3kl3ziip1nhhbq89crv315rf1my3zmmgd9xws7jr2";
   };
 
   outputs = [ "out" "geoip" ];
diff --git a/pkgs/tools/security/tpm2-tools/default.nix b/pkgs/tools/security/tpm2-tools/default.nix
index 6b33d1d4d59..73368f40476 100644
--- a/pkgs/tools/security/tpm2-tools/default.nix
+++ b/pkgs/tools/security/tpm2-tools/default.nix
@@ -1,19 +1,19 @@
 { stdenv, fetchurl, lib
-, pandoc, pkg-config, makeWrapper, curl, openssl, tpm2-tss
+, pandoc, pkg-config, makeWrapper, curl, openssl, tpm2-tss, libuuid
 , abrmdSupport ? true, tpm2-abrmd ? null }:
 
 stdenv.mkDerivation rec {
   pname = "tpm2-tools";
-  version = "4.1.3";
+  version = "5.0";
 
   src = fetchurl {
     url = "https://github.com/tpm2-software/${pname}/releases/download/${version}/${pname}-${version}.tar.gz";
-    sha256 = "0117r0zzdnblkibv81y71v3limixsw5m7g9xwf7lcx8fc8836pdv";
+    sha256 = "sha256-4bkH/imHdigFLgithO68bD92RtKVBe1IYulhYqjJG6E=";
   };
 
   nativeBuildInputs = [ pandoc pkg-config makeWrapper ];
   buildInputs = [
-    curl openssl tpm2-tss
+    curl openssl tpm2-tss libuuid
   ];
 
   preFixup = let
diff --git a/pkgs/tools/security/wafw00f/default.nix b/pkgs/tools/security/wafw00f/default.nix
new file mode 100644
index 00000000000..dae4f5a5ad0
--- /dev/null
+++ b/pkgs/tools/security/wafw00f/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonApplication
+, fetchFromGitHub
+, pluginbase
+, requests
+}:
+
+buildPythonApplication rec {
+  pname = "wafw00f";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "EnableSecurity";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0526kz6ypww9nxc2vddkhpn1gqvn25mzj3wmi91wwxwxjjb6w4qj";
+  };
+
+  propagatedBuildInputs = [
+    requests
+    pluginbase
+  ];
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "wafw00f" ];
+
+  meta = with lib; {
+    description = "Tool to identify and fingerprint Web Application Firewalls (WAF)";
+    homepage = "https://github.com/EnableSecurity/wafw00f";
+    license = with licenses; [ bsd3 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/tools/system/auto-cpufreq/default.nix b/pkgs/tools/system/auto-cpufreq/default.nix
index b4bef5fc5e3..f86ac47fdde 100644
--- a/pkgs/tools/system/auto-cpufreq/default.nix
+++ b/pkgs/tools/system/auto-cpufreq/default.nix
@@ -2,13 +2,13 @@
 
 python3Packages.buildPythonPackage rec {
   pname = "auto-cpufreq";
-  version = "1.5.3";
+  version = "1.6.1";
 
   src = fetchFromGitHub {
     owner = "AdnanHodzic";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-NDIdQ4gUN2jG+VWXsv3fdUogZxOOiNtnbekD30+jx6M=";
+    sha256 = "sha256-oz3C1150CPfT0kkx1x7VIX/Rm06dkjyxeDPFCRJaWNc=";
   };
 
   propagatedBuildInputs = with python3Packages; [ click distro psutil ];
diff --git a/pkgs/tools/system/auto-cpufreq/prevent-install-and-copy.patch b/pkgs/tools/system/auto-cpufreq/prevent-install-and-copy.patch
index 232ac780341..7f86f6eda0e 100644
--- a/pkgs/tools/system/auto-cpufreq/prevent-install-and-copy.patch
+++ b/pkgs/tools/system/auto-cpufreq/prevent-install-and-copy.patch
@@ -1,8 +1,17 @@
 diff --git a/auto_cpufreq/core.py b/auto_cpufreq/core.py
-index 482a544..d142013 100644
+index a685db8..1ca1ca1 100644
 --- a/auto_cpufreq/core.py
 +++ b/auto_cpufreq/core.py
-@@ -163,31 +163,13 @@ def get_current_gov():
+@@ -72,7 +72,7 @@ def app_version():
+             print("Git commit:", check_output(["git", "describe", "--always"]).strip().decode())
+         else:
+             print(getoutput("pacman -Qi auto-cpufreq | grep Version"))
+-    else:        
++    else:
+         # source code (auto-cpufreq-installer)
+         try:
+             print("Git commit:", check_output(["git", "describe", "--always"]).strip().decode())
+@@ -179,31 +179,13 @@ def get_current_gov():
      return print("Currently using:", getoutput("cpufreqctl.auto-cpufreq --governor").strip().split(" ")[0], "governor")
  
  def cpufreqctl():
@@ -38,8 +47,8 @@ index 482a544..d142013 100644
  
  def footer(l=79):
      print("\n" + "-" * l + "\n")
-@@ -212,74 +194,12 @@ def remove_complete_msg():
- 
+@@ -233,74 +215,12 @@ def remove_complete_msg():
+     footer()
  
  def deploy_daemon():
 -    print("\n" + "-" * 21 + " Deploying auto-cpufreq as a daemon " + "-" * 22 + "\n")
@@ -60,7 +69,7 @@ index 482a544..d142013 100644
 -    except:
 -        print("\nERROR:\nWas unable to turn off bluetooth on boot")
 -
--    auto_cpufreq_log_path.touch(exist_ok=True)
+-    auto_cpufreq_stats_path.touch(exist_ok=True)
 -
 -    print("\n* Deploy auto-cpufreq install script")
 -    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/bin/auto-cpufreq-install")
@@ -102,12 +111,12 @@ index 482a544..d142013 100644
 -    # remove auto-cpufreq-remove
 -    os.remove("/usr/bin/auto-cpufreq-remove")
 -
--    # delete log file
--    if auto_cpufreq_log_path.exists():
--        if auto_cpufreq_log_file is not None:
--            auto_cpufreq_log_file.close()
+-    # delete stats file
+-    if auto_cpufreq_stats_path.exists():
+-        if auto_cpufreq_stats_file is not None:
+-            auto_cpufreq_stats_file.close()
 -
--        auto_cpufreq_log_path.unlink()
+-        auto_cpufreq_stats_path.unlink()
 -
 -    # restore original cpufrectl script
 -    cpufreqctl_restore()
@@ -116,6 +125,15 @@ index 482a544..d142013 100644
  
  def gov_check():
      for gov in get_avail_gov():
+@@ -331,7 +251,7 @@ def countdown(s):
+     if auto_cpufreq_stats_file is not None:
+         auto_cpufreq_stats_file.seek(0)
+         auto_cpufreq_stats_file.truncate(0)
+-                
++
+         # execution timestamp
+         from datetime import datetime
+         now = datetime.now()
 diff --git a/scripts/cpufreqctl.sh b/scripts/cpufreqctl.sh
 index 63a2b5b..e157efe 100755
 --- a/scripts/cpufreqctl.sh
diff --git a/pkgs/tools/system/bpytop/default.nix b/pkgs/tools/system/bpytop/default.nix
index 6754d0806b6..6c0143a34b6 100644
--- a/pkgs/tools/system/bpytop/default.nix
+++ b/pkgs/tools/system/bpytop/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "bpytop";
-  version = "1.0.61";
+  version = "1.0.62";
 
   src = fetchFromGitHub {
     owner = "aristocratos";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-E6blMhDkZa3Wbdbsw7f8jdHwHFINOQ48XC5pQdkVPtQ=";
+    sha256 = "sha256-ds+N0z7Vfw7xv+nE8RIfFjel81mJgIo1u1KspOHLxKc=";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/system/facter/default.nix b/pkgs/tools/system/facter/default.nix
index 1ece53203b1..906ca618e46 100644
--- a/pkgs/tools/system/facter/default.nix
+++ b/pkgs/tools/system/facter/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   pname = "facter";
-  version = "3.14.15";
+  version = "3.14.16";
 
   src = fetchFromGitHub {
-    sha256 = "sha256-vRtDctiulR5YmcwNCZtSU/tsRjs1+DP07NFVSL1TSuI=";
+    sha256 = "sha256-VZIeyLJBlh5/r0EHinSiPiQyCNUBFBYjDZ6nTVnZBbE=";
     rev = version;
     repo = pname;
     owner = "puppetlabs";
diff --git a/pkgs/tools/system/freeipmi/default.nix b/pkgs/tools/system/freeipmi/default.nix
index 9529ccad399..f7e041a849d 100644
--- a/pkgs/tools/system/freeipmi/default.nix
+++ b/pkgs/tools/system/freeipmi/default.nix
@@ -1,12 +1,12 @@
 { fetchurl, lib, stdenv, libgcrypt, readline, libgpgerror }:
 
 stdenv.mkDerivation rec {
-  version = "1.6.6";
+  version = "1.6.7";
   pname = "freeipmi";
 
   src = fetchurl {
     url = "mirror://gnu/freeipmi/${pname}-${version}.tar.gz";
-    sha256 = "1ava5s0babfwx6dqi87phzyzjjgyah7avhljrxrjwn2cniwh38yg";
+    sha256 = "1gyyx99q02p3v2nqm3h53mkjd33l0hrapwg4alg6qr9k74qik1dv";
   };
 
   buildInputs = [ libgcrypt readline libgpgerror ];
diff --git a/pkgs/tools/system/gdu/default.nix b/pkgs/tools/system/gdu/default.nix
index 0c63bf651ba..7b0b45fedb0 100644
--- a/pkgs/tools/system/gdu/default.nix
+++ b/pkgs/tools/system/gdu/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "gdu";
-  version = "4.3.2";
+  version = "4.6.2";
 
   src = fetchFromGitHub {
     owner = "dundee";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-m4J797bmQzKuyA01JgDLVlf+PbXDVXWtYbID/0QVLxE=";
+    sha256 = "sha256-q26NnHSnJ8vVWHwXtFJ90/8xr772x/gW6BRG29wsIeI=";
   };
 
   vendorSha256 = "sha256-kIMd0xzQ+c+jCpX2+qdD/GcFEirR15PMInbEV184EBU=";
diff --git a/pkgs/tools/system/gptfdisk/default.nix b/pkgs/tools/system/gptfdisk/default.nix
index b5f7c369dfd..b3b084fbe71 100644
--- a/pkgs/tools/system/gptfdisk/default.nix
+++ b/pkgs/tools/system/gptfdisk/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gptfdisk";
-  version = "1.0.5";
+  version = "1.0.6";
 
   src = fetchurl {
     # https://www.rodsbooks.com/gdisk/${name}.tar.gz also works, but the home
     # page clearly implies a preference for using SourceForge's bandwidth:
     url = "mirror://sourceforge/gptfdisk/${pname}-${version}.tar.gz";
-    sha256 = "0bybgp30pqxb6x5krxazkq4drca0gz4inxj89fpyr204rn3kjz8f";
+    sha256 = "sha256-3cVR1kOlPwvURANF064yxJsEp5fpwBA26kYLa7QWjKg=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/system/logrotate/default.nix b/pkgs/tools/system/logrotate/default.nix
index 513b48c6630..e91cd6da6b9 100644
--- a/pkgs/tools/system/logrotate/default.nix
+++ b/pkgs/tools/system/logrotate/default.nix
@@ -14,27 +14,21 @@ stdenv.mkDerivation rec {
   };
 
   # Logrotate wants to access the 'mail' program; to be done.
-  patchPhase = ''
-    sed -i -e 's,[a-z/]\+gzip,${gzip}/bin/gzip,' \
-           -e 's,[a-z/]\+gunzip,${gzip}/bin/gunzip,' configure.ac
-
-    ${lib.optionalString (mailutils != null) ''
-    sed -i -e 's,[a-z/]\+mail,${mailutils}/bin/mail,' configure.ac
-    ''}
-  '';
-
-  autoreconfPhase = ''
-    ./autogen.sh
-  '';
+  configureFlags = [
+    "--with-compress-command=${gzip}/bin/gzip"
+    "--with-uncompress-command=${gzip}/bin/gunzip"
+  ] ++ lib.optionals (mailutils != null) [
+    "--with-default-mail-command=${mailutils}/bin/mail"
+  ];
 
   nativeBuildInputs = [ autoreconfHook ];
   buildInputs = [ popt ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://fedorahosted.org/releases/l/o/logrotate/";
     description = "Rotates and compresses system logs";
-    license = lib.licenses.gpl2Plus;
-    maintainers = [ lib.maintainers.viric ];
-    platforms = lib.platforms.all;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.viric ];
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/system/pciutils/default.nix b/pkgs/tools/system/pciutils/default.nix
index a89de032abd..20a96311176 100644
--- a/pkgs/tools/system/pciutils/default.nix
+++ b/pkgs/tools/system/pciutils/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchurl, pkg-config, zlib, kmod, which
 , static ? stdenv.hostPlatform.isStatic
-, darwin ? null
+, IOKit
 }:
 
 stdenv.mkDerivation rec {
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = [ zlib kmod which ] ++
-    lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk.frameworks.IOKit;
+    lib.optional stdenv.hostPlatform.isDarwin IOKit;
 
   preConfigure = if stdenv.cc.isGNU then null else ''
     substituteInPlace Makefile --replace 'CC=$(CROSS_COMPILE)gcc' ""
diff --git a/pkgs/tools/system/stressapptest/default.nix b/pkgs/tools/system/stressapptest/default.nix
new file mode 100644
index 00000000000..9b7eb0a6f3e
--- /dev/null
+++ b/pkgs/tools/system/stressapptest/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, libaio
+}:
+
+stdenv.mkDerivation rec {
+  pname = "stressapptest";
+  version = "1.0.9";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1qzj6h6adx042rb9aiz916jna269whibvj5ys4p5nwdp17fqh922";
+  };
+
+  buildInputs = [ libaio ];
+
+  meta = with lib; {
+    description = "Userspace memory and IO stress test tool";
+    homepage = "https://github.com/stressapptest/stressapptest";
+    license = with licenses; [ asl20 ];
+    maintainers = with lib.maintainers; [ fab ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/text/colordiff/default.nix b/pkgs/tools/text/colordiff/default.nix
index 04d41b74db0..364d3c6edc4 100644
--- a/pkgs/tools/text/colordiff/default.nix
+++ b/pkgs/tools/text/colordiff/default.nix
@@ -1,26 +1,36 @@
-{ lib, stdenv, fetchurl, perl /*, xmlto */}:
+{ lib, stdenv, fetchFromGitHub, docbook_xml_dtd_412, docbook_xsl, perl, w3m, xmlto }:
 
 stdenv.mkDerivation rec {
-  name = "colordiff-1.0.19";
+  pname = "colordiff";
+  version = "1.0.19";
 
-  src = fetchurl {
-    urls = [
-      "https://www.colordiff.org/${name}.tar.gz"
-      "http://www.colordiff.org/archive/${name}.tar.gz"
-    ];
-    sha256 = "069vzzgs7b44bmfh3ks2psrdb26s1w19gp9w4xxbgi7nhx6w3s26";
+  src = fetchFromGitHub {
+    owner = "daveewart";
+    repo = "colordiff";
+    rev = "v${version}";
+    sha256 = "1v7s1yn0qvn08iwm5js8mxn442392qyr7s9ij506byfd497ag7qk";
   };
 
-  buildInputs = [ perl /* xmlto */ ];
+  nativeBuildInputs = [ docbook_xml_dtd_412 docbook_xsl perl w3m xmlto ];
 
-  dontBuild = 1; # do not build doc yet.
+  buildInputs = [ perl ];
 
-  installPhase = ''make INSTALL_DIR=/bin MAN_DIR=/share/man/man1 DESTDIR="$out" install'';
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace 'TMPDIR=colordiff-''${VERSION}' ""
+  '';
+
+  installFlags = [
+    "INSTALL_DIR=/bin"
+    "MAN_DIR=/share/man/man1"
+    "DESTDIR=${placeholder "out"}"
+  ];
 
   meta = with lib; {
     description = "Wrapper for 'diff' that produces the same output but with pretty 'syntax' highlighting";
     homepage = "https://www.colordiff.org/";
-    license = licenses.gpl3;
-    platforms = platforms.linux ++ platforms.darwin;
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/text/ledger2beancount/default.nix b/pkgs/tools/text/ledger2beancount/default.nix
index fe2078222d2..b3f48085d1d 100644
--- a/pkgs/tools/text/ledger2beancount/default.nix
+++ b/pkgs/tools/text/ledger2beancount/default.nix
@@ -4,21 +4,26 @@ with lib;
 
 let
   perlDeps = with perlPackages; [
-    ConfigOnion DateCalc
-    FileBaseDir YAMLLibYAML
-    GetoptLongDescriptive DateTimeFormatStrptime
+    DateCalc
+    DateTimeFormatStrptime
+    enum
+    FileBaseDir
+    GetoptLongDescriptive
+    ListMoreUtils
+    RegexpCommon
     StringInterpolate
+    YAMLLibYAML
   ];
 
 in stdenv.mkDerivation rec {
   pname = "ledger2beancount";
-  version = "2.1";
+  version = "2.5";
 
   src = fetchFromGitHub {
-    owner = "zacchiro";
+    owner = "beancount";
     repo = "ledger2beancount";
     rev = version;
-    sha256 = "0w88jb1x0w02jwwf6ipx3cxr89kzffrrdqws3556zrvvs01bh84j";
+    sha256 = "0kimp8l9ax37grfv5r5iw0g0xnrpkak022fl10y3i7kc4nyi1s99";
   };
 
   phases = [
@@ -50,7 +55,7 @@ in stdenv.mkDerivation rec {
 
       Conversion is based on (concrete) syntax, so that information that is not meaningful for accounting reasons but still valuable (e.g., comments, formatting, etc.) can be preserved.
     '';
-    homepage = "https://github.com/zacchiro/ledger2beancount";
+    homepage = "https://github.com/beancount/ledger2beancount";
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ pablovsky ];
diff --git a/pkgs/tools/text/markdown-pp/default.nix b/pkgs/tools/text/markdown-pp/default.nix
index 50ef560f6c3..c6e937eab27 100644
--- a/pkgs/tools/text/markdown-pp/default.nix
+++ b/pkgs/tools/text/markdown-pp/default.nix
@@ -1,13 +1,15 @@
-{ fetchFromGitHub, pythonPackages, lib }:
+{ lib
+, fetchFromGitHub
+, python3
+}:
 
-with pythonPackages;
-buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "MarkdownPP";
   version = "1.5.1";
-  propagatedBuildInputs = [ pillow watchdog ];
+  propagatedBuildInputs = with python3.pkgs; [ pillow watchdog ];
   checkPhase = ''
     cd test
-    PATH=$out/bin:$PATH ${python}/bin/${python.executable} test.py
+    PATH=$out/bin:$PATH ${python3}/bin/${python3.executable} test.py
   '';
   src = fetchFromGitHub {
     owner = "jreese";
diff --git a/pkgs/tools/text/ripgrep/default.nix b/pkgs/tools/text/ripgrep/default.nix
index 61e534fa732..04f0cb59c03 100644
--- a/pkgs/tools/text/ripgrep/default.nix
+++ b/pkgs/tools/text/ripgrep/default.nix
@@ -4,6 +4,7 @@
 , rustPlatform
 , asciidoctor
 , installShellFiles
+, pkg-config
 , Security
 , withPCRE2 ? true
 , pcre2 ? null
@@ -24,9 +25,10 @@ rustPlatform.buildRustPackage rec {
 
   cargoBuildFlags = lib.optional withPCRE2 "--features pcre2";
 
-  nativeBuildInputs = [ asciidoctor installShellFiles ];
+  nativeBuildInputs = [ asciidoctor installShellFiles ]
+    ++ lib.optional withPCRE2 pkg-config;
   buildInputs = (lib.optional withPCRE2 pcre2)
-  ++ (lib.optional stdenv.isDarwin Security);
+    ++ (lib.optional stdenv.isDarwin Security);
 
   preFixup = ''
     installManPage $releaseDir/build/ripgrep-*/out/rg.1
@@ -35,7 +37,13 @@ rustPlatform.buildRustPackage rec {
     installShellCompletion --zsh complete/_rg
   '';
 
-  passthru.tests = { inherit (nixosTests) ripgrep; };
+  doInstallCheck = true;
+  installCheckPhase = ''
+    file="$(mktemp)"
+    echo "abc\nbcd\ncde" > "$file"
+    $out/bin/rg -N 'bcd' "$file"
+    $out/bin/rg -N 'cd' "$file"
+  '';
 
   meta = with lib; {
     description = "A utility that combines the usability of The Silver Searcher with the raw speed of grep";
diff --git a/pkgs/tools/text/source-highlight/default.nix b/pkgs/tools/text/source-highlight/default.nix
index 2e60d2a31c0..6e1a7b24b59 100644
--- a/pkgs/tools/text/source-highlight/default.nix
+++ b/pkgs/tools/text/source-highlight/default.nix
@@ -1,14 +1,11 @@
 { lib, stdenv, fetchurl, boost }:
 
-let
-  name = "source-highlight";
+stdenv.mkDerivation rec {
+  pname = "source-highlight";
   version = "3.1.9";
-in
-stdenv.mkDerivation {
-  name = "${name}-${version}";
 
   src = fetchurl {
-    url = "mirror://gnu/src-highlite/${name}-${version}.tar.gz";
+    url = "mirror://gnu/src-highlite/${pname}-${version}.tar.gz";
     sha256 = "148w47k3zswbxvhg83z38ifi85f9dqcpg7icvvw1cm6bg21x4zrs";
   };
 
@@ -26,15 +23,17 @@ stdenv.mkDerivation {
 
   enableParallelBuilding = false;
 
-  meta = {
+  outputs = [ "out" "doc" "dev" ];
+
+  meta = with lib; {
     description = "Source code renderer with syntax highlighting";
+    longDescription = ''
+      GNU Source-highlight, given a source file, produces a document
+      with syntax highlighting.
+    '';
     homepage = "https://www.gnu.org/software/src-highlite/";
-    license = lib.licenses.gpl3Plus;
-    platforms = with lib.platforms; linux ++ darwin;
-    longDescription =
-      ''
-        GNU Source-highlight, given a source file, produces a document
-        with syntax highlighting.
-      '';
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ SuperSandro2000 ];
   };
 }
diff --git a/pkgs/tools/text/wdiff/default.nix b/pkgs/tools/text/wdiff/default.nix
index afcb649d921..4d0f87354ad 100644
--- a/pkgs/tools/text/wdiff/default.nix
+++ b/pkgs/tools/text/wdiff/default.nix
@@ -1,10 +1,11 @@
 { lib, stdenv, fetchurl, texinfo, which }:
 
 stdenv.mkDerivation rec {
-  name = "wdiff-1.2.2";
+  pname = "wdiff";
+  version = "1.2.2";
 
   src = fetchurl {
-    url = "mirror://gnu/wdiff/${name}.tar.gz";
+    url = "mirror://gnu/wdiff/${pname}-${version}.tar.gz";
     sha256 = "0sxgg0ms5lhi4aqqvz1rj4s77yi9wymfm3l3gbjfd1qchy66kzrl";
   };
 
@@ -12,11 +13,11 @@ stdenv.mkDerivation rec {
 
   checkInputs = [ which ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://www.gnu.org/software/wdiff/";
     description = "Comparing files on a word by word basis";
-    license = lib.licenses.gpl3Plus;
-    maintainers = [ lib.maintainers.eelco ];
-    platforms = lib.platforms.unix;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ eelco SuperSandro2000 ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/typesetting/asciidoc/default.nix b/pkgs/tools/typesetting/asciidoc/default.nix
index 61af8102f51..849da7e606c 100644
--- a/pkgs/tools/typesetting/asciidoc/default.nix
+++ b/pkgs/tools/typesetting/asciidoc/default.nix
@@ -147,6 +147,8 @@ stdenv.mkDerivation rec {
   pname = "asciidoc";
   version = "9.0.4";
 
+  # Note: a substitution to improve reproducibility should be updated once 10.0.0 is
+  # released. See the comment in `patchPhase` for more information.
   src = fetchFromGitHub {
     owner = "asciidoc";
     repo = "asciidoc-py3";
@@ -261,7 +263,15 @@ stdenv.mkDerivation rec {
   '') + ''
     patchShebangs .
 
-    sed -i -e "s,/etc/vim,,g" Makefile.in
+    # Note: this substitution will not work in the planned 10.0.0 release:
+    #
+    # https://github.com/asciidoc/asciidoc-py3/commit/dfffda23381014481cd13e8e9d8f131e1f93f08a
+    #
+    # Update this substitution to:
+    #
+    # --replace "python3 -m asciidoc.a2x" "python3 -m asciidoc.a2x -a revdate=01/01/1980"
+    substituteInPlace Makefile.in \
+      --replace "python3 a2x.py" "python3 a2x.py -a revdate=01/01/1980"
   '';
 
   preInstall = "mkdir -p $out/etc/vim";
diff --git a/pkgs/tools/typesetting/fop/default.nix b/pkgs/tools/typesetting/fop/default.nix
index a572ce216ee..1c5e7b0079d 100644
--- a/pkgs/tools/typesetting/fop/default.nix
+++ b/pkgs/tools/typesetting/fop/default.nix
@@ -2,22 +2,25 @@
 
 stdenv.mkDerivation rec {
   pname = "fop";
-  version = "2.1";
+  version = "2.6";
 
   src = fetchurl {
     url = "mirror://apache/xmlgraphics/fop/source/${pname}-${version}-src.tar.gz";
-    sha256 = "165rx13q47l6qc29ppr7sg1z26vw830s3rkklj5ap7wgvy0ivbz5";
+    sha256 = "145qph3c0m4bmb342qxq1hwsg594lndmfs9ga1v7pk53s34sckq8";
   };
 
   buildInputs = [ ant jdk ];
 
-  buildPhase = "ant";
+  # build only the "package" target, which generates the fop command.
+  buildPhase = ''
+     export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
+     ant -f fop/build.xml package
+  '';
 
   installPhase = ''
     mkdir -p $out/bin $out/lib $out/share/doc/fop
-
-    cp build/*.jar lib/*.jar $out/lib/
-    cp -r README examples/ $out/share/doc/fop/
+    cp fop/build/*.jar fop/lib/*.jar $out/lib/
+    cp -r README fop/examples/ $out/share/doc/fop/
 
     # There is a fop script in the source archive, but it has many impurities.
     # Instead of patching out 90 % of the script, we write our own.
diff --git a/pkgs/tools/video/atomicparsley/default.nix b/pkgs/tools/video/atomicparsley/default.nix
index 41d4dd63d58..d07d6e53429 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 = "20210114.184825.1dbe1be";
+  version = "20210124.204813.840499f";
 
   src = fetchFromGitHub {
     owner = "wez";
     repo = pname;
     rev = version;
-    sha256 = "sha256-dyrfr3bsRzEWaAr9K+7SchFVl63cZawyIjmstOI9e5I=";
+    sha256 = "sha256-/bkfgIWlQobaiad2WD7DUUrTwfYurP7YAINaLTwBEcE=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/tools/misc/clipman/default.nix b/pkgs/tools/wayland/clipman/default.nix
index 80a0afe68d3..3a2c2ca6015 100644
--- a/pkgs/tools/misc/clipman/default.nix
+++ b/pkgs/tools/wayland/clipman/default.nix
@@ -1,4 +1,9 @@
-{ buildGoModule, fetchFromGitHub, lib, wl-clipboard, makeWrapper }:
+{ buildGoModule
+, fetchFromGitHub
+, lib
+, wl-clipboard
+, makeWrapper
+}:
 
 buildGoModule rec {
   pname = "clipman";
@@ -24,9 +29,9 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/yory8/clipman";
-    license = licenses.gpl3;
-    maintainers = with maintainers; [ ma27 ];
     description = "A simple clipboard manager for Wayland";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ ma27 ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/misc/kanshi/default.nix b/pkgs/tools/wayland/kanshi/default.nix
index 90ee2a3446b..c661c98a24b 100644
--- a/pkgs/tools/misc/kanshi/default.nix
+++ b/pkgs/tools/wayland/kanshi/default.nix
@@ -1,4 +1,12 @@
-{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, scdoc, wayland }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, scdoc
+, wayland
+}:
 
 stdenv.mkDerivation rec {
   pname = "kanshi";
@@ -15,6 +23,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ wayland ];
 
   meta = with lib; {
+    homepage = "https://github.com/emersion/kanshi";
     description = "Dynamic display configuration tool";
     longDescription = ''
       kanshi allows you to define output profiles that are automatically enabled
@@ -24,8 +33,6 @@ stdenv.mkDerivation rec {
       kanshi can be used on Wayland compositors supporting the
       wlr-output-management protocol.
     '';
-    homepage = "https://github.com/emersion/kanshi";
-    downloadPage = "https://github.com/emersion/kanshi";
     license = licenses.mit;
     maintainers = with maintainers; [ balsoft ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/wayland/oguri/default.nix b/pkgs/tools/wayland/oguri/default.nix
new file mode 100644
index 00000000000..458ea310a01
--- /dev/null
+++ b/pkgs/tools/wayland/oguri/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, cairo
+, gdk-pixbuf
+, wayland
+, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "oguri";
+  version = "unstable-2020-12-19";
+
+  src = fetchFromGitHub {
+    owner = "vilhalmer";
+    repo = pname;
+    rev = "6937fee10a9b0ef3ad8f94f606c0e0d9e7dec564";
+    sha256 = "sXNvpI/YPDPd2cXQAfRO4ut21gSCXxbo1DpaZmHJDYQ=";
+  };
+
+  nativeBuildInputs = [ pkg-config meson ninja ];
+  buildInputs = [
+    cairo
+    gdk-pixbuf
+    wayland
+    wayland-protocols
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/vilhalmer/oguri/";
+    description = "A very nice animated wallpaper daemon for Wayland compositors";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/tools/misc/slurp/default.nix b/pkgs/tools/wayland/slurp/default.nix
index ed4bb0037fb..107ef68da56 100644
--- a/pkgs/tools/misc/slurp/default.nix
+++ b/pkgs/tools/wayland/slurp/default.nix
@@ -1,5 +1,13 @@
-{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config
-, cairo, libxkbcommon, wayland, wayland-protocols
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, cairo
+, libxkbcommon
+, wayland
+, wayland-protocols
 , buildDocs ? true, scdoc
 }:
 
@@ -33,7 +41,7 @@ stdenv.mkDerivation rec {
     description = "Select a region in a Wayland compositor";
     homepage = "https://github.com/emersion/slurp";
     license = licenses.mit;
-    platforms = platforms.linux;
     maintainers = with maintainers; [ buffet ];
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/tools/misc/wev/default.nix b/pkgs/tools/wayland/wev/default.nix
index c1debfd924d..83e4113f7ea 100644
--- a/pkgs/tools/misc/wev/default.nix
+++ b/pkgs/tools/wayland/wev/default.nix
@@ -1,6 +1,11 @@
-{ lib, stdenv, fetchurl
-, pkg-config, scdoc, wayland
-, wayland-protocols, libxkbcommon
+{ lib
+, stdenv
+, fetchurl
+, pkg-config
+, scdoc
+, wayland
+, wayland-protocols
+, libxkbcommon
 }:
 
 stdenv.mkDerivation rec {
@@ -18,14 +23,14 @@ stdenv.mkDerivation rec {
   installFlags = [ "PREFIX=$(out)" ];
 
   meta = with lib; {
+    homepage = "https://git.sr.ht/~sircmpwn/wev";
     description = "Wayland event viewer";
     longDescription = ''
       This is a tool for debugging events on a Wayland window, analagous to the
       X11 tool xev.
     '';
-    homepage = "https://git.sr.ht/~sircmpwn/wev";
     license = licenses.mit;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ primeos ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/misc/wl-clipboard/default.nix b/pkgs/tools/wayland/wl-clipboard/default.nix
index 676ff03ad9b..0bc195e9626 100644
--- a/pkgs/tools/misc/wl-clipboard/default.nix
+++ b/pkgs/tools/wayland/wl-clipboard/default.nix
@@ -1,5 +1,12 @@
-{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config
-, wayland, wayland-protocols }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wayland
+, wayland-protocols
+}:
 
 stdenv.mkDerivation rec {
   pname = "wl-clipboard";
@@ -16,10 +23,11 @@ stdenv.mkDerivation rec {
   buildInputs = [ wayland ];
 
   meta = with lib; {
-    description = "Command-line copy/paste utilities for Wayland";
     homepage = "https://github.com/bugaevc/wl-clipboard";
-    license = licenses.gpl3;
+    description = "Command-line copy/paste utilities for Wayland";
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dywedir ];
     platforms = platforms.linux;
   };
 }
+# TODO: is wayland-protocols a nativeBuildInput or a buildInput?
diff --git a/pkgs/tools/wayland/wlogout/default.nix b/pkgs/tools/wayland/wlogout/default.nix
new file mode 100644
index 00000000000..2625405808c
--- /dev/null
+++ b/pkgs/tools/wayland/wlogout/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, scdoc
+, gtk3
+, libxkbcommon
+, wayland
+, wayland-protocols
+}:
+
+stdenv.mkDerivation rec {
+  pname = "wlogout";
+  version = "1.1.1";
+
+  src = fetchFromGitHub {
+    owner = "ArtsyMacaw";
+    repo = "wlogout";
+    rev = version;
+    sha256 = "cTscfx+erHVFHwwYpN7pADQWt5sq75sQSyXSP/H8kOs=";
+  };
+
+  nativeBuildInputs = [ pkg-config meson ninja scdoc ];
+  buildInputs = [
+    gtk3
+    libxkbcommon
+    wayland
+    wayland-protocols
+  ];
+
+  postPatch = ''
+    substituteInPlace style.css \
+      --replace "/usr/share/wlogout" "$out/share/${pname}"
+
+    substituteInPlace main.c \
+      --replace "/etc/wlogout" "$out/etc/${pname}"
+  '';
+
+  mesonFlags = [
+    "--datadir=${placeholder "out"}/share"
+    "--sysconfdir=${placeholder "out"}/etc"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/ArtsyMacaw/wlogout";
+    description = "A wayland based logout menu";
+    license = licenses.mit;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.unix;
+  };
+}
+# TODO: shell completions
diff --git a/pkgs/tools/misc/wlr-randr/default.nix b/pkgs/tools/wayland/wlr-randr/default.nix
index b635316bf77..e2c941998a9 100644
--- a/pkgs/tools/misc/wlr-randr/default.nix
+++ b/pkgs/tools/wayland/wlr-randr/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, fetchFromGitHub, meson, ninja, cmake, pkg-config, wayland }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, wayland
+}:
 
 stdenv.mkDerivation rec {
   pname = "wlr-randr";
@@ -11,13 +18,14 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-JeSxFXSFxcTwJz9EaLb18wtD4ZIT+ATeYM5OyDTJhDQ=";
   };
 
-  nativeBuildInputs = [ meson ninja cmake pkg-config ];
+  nativeBuildInputs = [ meson ninja pkg-config ];
   buildInputs = [ wayland ];
 
   meta = with lib; {
-    license = licenses.mit;
     description = "An xrandr clone for wlroots compositors";
     homepage = "https://github.com/emersion/wlr-randr";
+    license = licenses.mit;
     maintainers = with maintainers; [ ma27 ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/misc/wob/default.nix b/pkgs/tools/wayland/wob/default.nix
index e0622e5416a..3567ed6eea4 100644
--- a/pkgs/tools/misc/wob/default.nix
+++ b/pkgs/tools/wayland/wob/default.nix
@@ -1,6 +1,13 @@
-{ lib, stdenv, fetchFromGitHub
-, meson, ninja, pkg-config, scdoc, wayland # wayland-scanner
-, wayland-protocols, libseccomp
+{ lib
+, stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkg-config
+, scdoc
+, libseccomp
+, wayland # wayland-scanner
+, wayland-protocols
 }:
 
 stdenv.mkDerivation rec {
@@ -21,15 +28,15 @@ stdenv.mkDerivation rec {
   mesonFlags = lib.optional stdenv.isLinux "-Dseccomp=enabled";
 
   meta = with lib; {
+    inherit (src.meta) homepage;
     description = "A lightweight overlay bar for Wayland";
     longDescription = ''
       A lightweight overlay volume/backlight/progress/anything bar for Wayland,
       inspired by xob.
     '';
-    inherit (src.meta) homepage;
     changelog = "https://github.com/francma/wob/releases/tag/${version}";
     license = licenses.isc;
-    platforms = platforms.unix;
     maintainers = with maintainers; [ primeos ];
+    platforms = platforms.unix;
   };
 }