about 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/azure-cli/default.nix12
-rw-r--r--pkgs/tools/admin/balena-cli/default.nix6
-rw-r--r--pkgs/tools/admin/pulumi-packages/base.nix8
-rw-r--r--pkgs/tools/admin/pulumi-packages/default.nix1
-rw-r--r--pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix27
-rw-r--r--pkgs/tools/admin/qovery-cli/default.nix6
-rw-r--r--pkgs/tools/admin/trivy/default.nix36
-rw-r--r--pkgs/tools/backup/borgbackup/default.nix42
-rw-r--r--pkgs/tools/backup/borgmatic/default.nix4
-rw-r--r--pkgs/tools/backup/zfs-replicate/default.nix4
-rw-r--r--pkgs/tools/backup/zfsbackup/default.nix2
-rw-r--r--pkgs/tools/compression/flips/default.nix2
-rw-r--r--pkgs/tools/filesystems/mount-zip/default.nix4
-rw-r--r--pkgs/tools/filesystems/stratis-cli/default.nix6
-rw-r--r--pkgs/tools/graphics/asymptote/default.nix82
-rw-r--r--pkgs/tools/misc/broadlink-cli/default.nix4
-rw-r--r--pkgs/tools/misc/diffoscope/default.nix4
-rw-r--r--pkgs/tools/misc/ntfy-sh/default.nix1
-rw-r--r--pkgs/tools/misc/phrase-cli/default.nix6
-rw-r--r--pkgs/tools/misc/shelldap/default.nix10
-rw-r--r--pkgs/tools/misc/tbls/default.nix6
-rw-r--r--pkgs/tools/misc/upterm/default.nix6
-rw-r--r--pkgs/tools/misc/vtm/default.nix4
-rw-r--r--pkgs/tools/networking/calendar-cli/default.nix8
-rw-r--r--pkgs/tools/networking/ddns-go/default.nix4
-rw-r--r--pkgs/tools/networking/getmail6/default.nix15
-rw-r--r--pkgs/tools/networking/knock/package.nix13
-rw-r--r--pkgs/tools/networking/maubot/default.nix1
-rw-r--r--pkgs/tools/networking/maubot/plugins/generated.json165
-rwxr-xr-xpkgs/tools/networking/maubot/plugins/update.py2
-rw-r--r--pkgs/tools/networking/minio-client/default.nix6
-rw-r--r--pkgs/tools/networking/shadowsocks-rust/default.nix6
-rw-r--r--pkgs/tools/package-management/disnix/DisnixWebService/default.nix45
-rw-r--r--pkgs/tools/security/afl/README.md19
-rw-r--r--pkgs/tools/security/afl/default.nix82
-rw-r--r--pkgs/tools/security/afl/libdislocator.nix35
-rw-r--r--pkgs/tools/security/afl/qemu-patches/no-etc-install.patch13
-rw-r--r--pkgs/tools/security/afl/qemu-patches/syscall-glibc2_30.diff51
-rw-r--r--pkgs/tools/security/afl/qemu.nix77
-rw-r--r--pkgs/tools/security/cnquery/default.nix6
-rw-r--r--pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--pkgs/tools/security/grype/default.nix4
-rw-r--r--pkgs/tools/security/osv-scanner/default.nix17
-rw-r--r--pkgs/tools/security/rbw/default.nix6
-rw-r--r--pkgs/tools/security/snow/default.nix4
-rw-r--r--pkgs/tools/security/step-cli/default.nix2
-rw-r--r--pkgs/tools/system/gdu/default.nix34
-rw-r--r--pkgs/tools/text/ov/default.nix6
-rw-r--r--pkgs/tools/text/vale/default.nix32
-rw-r--r--pkgs/tools/text/vale/styles.nix144
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix33
-rw-r--r--pkgs/tools/typesetting/tex/texpresso/default.nix6
-rw-r--r--pkgs/tools/video/lux/default.nix6
-rw-r--r--pkgs/tools/virtualization/cri-tools/default.nix4
-rw-r--r--pkgs/tools/wayland/clipman/default.nix6
55 files changed, 624 insertions, 515 deletions
diff --git a/pkgs/tools/admin/azure-cli/default.nix b/pkgs/tools/admin/azure-cli/default.nix
index d55258485de50..93ba305ae8948 100644
--- a/pkgs/tools/admin/azure-cli/default.nix
+++ b/pkgs/tools/admin/azure-cli/default.nix
@@ -352,6 +352,18 @@ py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage rec {
       command-line tool to connect to Azure and execute administrative
       commands on Azure resources. It allows the execution of commands
       through a terminal using interactive command-line prompts or a script.
+
+      `azure-cli` has extension support. For example, to install the `aks-preview` extension, use
+
+      ```nix
+      environment.systemPackages = [
+        (azure-cli.withExtensions [ azure-cli.extensions.aks-preview ])
+      ];
+      ```
+
+      To make the `azure-cli` immutable and prevent clashes in case `azure-cli` is also installed via other package managers,
+      some configuration files were moved into the derivation. This can be disabled by overriding `withImmutableConfig = false`
+      when building `azure-cli`.
     '';
     changelog = "https://github.com/MicrosoftDocs/azure-docs-cli/blob/main/docs-ref-conceptual/release-notes-azure-cli.md";
     sourceProvenance = [ sourceTypes.fromSource ];
diff --git a/pkgs/tools/admin/balena-cli/default.nix b/pkgs/tools/admin/balena-cli/default.nix
index cc4674bcd2c9b..0229c81953780 100644
--- a/pkgs/tools/admin/balena-cli/default.nix
+++ b/pkgs/tools/admin/balena-cli/default.nix
@@ -18,16 +18,16 @@ let
   };
 in buildNpmPackage' rec {
   pname = "balena-cli";
-  version = "18.1.9";
+  version = "18.2.0";
 
   src = fetchFromGitHub {
     owner = "balena-io";
     repo = "balena-cli";
     rev = "v${version}";
-    hash = "sha256-yf4QkuFt5Fpegyru05S79Q3hFaLc45unxrk+SJzwWg0=";
+    hash = "sha256-8T+6j2wIsCn27I7V6u5bXIjjbkU2soGI3rBfIzb4IxY=";
   };
 
-  npmDepsHash = "sha256-lTaKW5Tsw9df0bd/chr8nSL2PROp1sSs+fuMr3Cz+a4=";
+  npmDepsHash = "sha256-XTCdrb5qwyaSnxjJOGOvpn22YsoS4WNXRwFTjPXzf5U=";
 
   postPatch = ''
     ln -s npm-shrinkwrap.json package-lock.json
diff --git a/pkgs/tools/admin/pulumi-packages/base.nix b/pkgs/tools/admin/pulumi-packages/base.nix
index 8327e41dcd5f2..5f5857f1a1fd2 100644
--- a/pkgs/tools/admin/pulumi-packages/base.nix
+++ b/pkgs/tools/admin/pulumi-packages/base.nix
@@ -10,9 +10,10 @@ let
     , vendorHash
     , cmd
     , extraLdflags
+    , env
     , ...
     }@args: buildGoModule (rec {
-      inherit pname src vendorHash version;
+      inherit pname src vendorHash version env;
 
       sourceRoot = "${src.name}/provider";
 
@@ -88,6 +89,7 @@ in
 , cmdGen
 , cmdRes
 , extraLdflags
+, env ? { }
 , meta
 , fetchSubmodules ? false
 , ...
@@ -99,14 +101,14 @@ let
   };
 
   pulumi-gen = mkBasePackage rec {
-    inherit src version vendorHash extraLdflags;
+    inherit src version vendorHash extraLdflags env;
 
     cmd = cmdGen;
     pname = cmdGen;
   };
 in
 mkBasePackage ({
-  inherit meta src version vendorHash extraLdflags;
+  inherit meta src version vendorHash extraLdflags env;
 
   pname = repo;
 
diff --git a/pkgs/tools/admin/pulumi-packages/default.nix b/pkgs/tools/admin/pulumi-packages/default.nix
index 5aed6b1717833..9e232a1f45bf4 100644
--- a/pkgs/tools/admin/pulumi-packages/default.nix
+++ b/pkgs/tools/admin/pulumi-packages/default.nix
@@ -11,4 +11,5 @@ in
   pulumi-language-nodejs = callPackage ./pulumi-language-nodejs.nix { };
   pulumi-language-python = callPackage ./pulumi-language-python.nix { };
   pulumi-random = callPackage' ./pulumi-random.nix { };
+  pulumi-yandex-unofficial = callPackage' ./pulumi-yandex-unofficial.nix { };
 }
diff --git a/pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix b/pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix
new file mode 100644
index 0000000000000..52079fbda066e
--- /dev/null
+++ b/pkgs/tools/admin/pulumi-packages/pulumi-yandex-unofficial.nix
@@ -0,0 +1,27 @@
+{ lib
+, mkPulumiPackage
+}:
+# Note that we are not using https://github.com/pulumi/pulumi-yandex because
+# it has been archived in 2022.
+mkPulumiPackage rec {
+  owner = "Regrau";
+  repo = "pulumi-yandex";
+  version = "0.98.0";
+  rev = "v${version}";
+  hash = "sha256-Olwl4JNrJUiJaGha7ZT0Qb0+6hRKxOOy06eKMJfYf0I=";
+  vendorHash = "sha256-8mu0msSq59f5GZNo7YIGuNTYealGyEL9kwk0jCcSO68=";
+  cmdGen = "pulumi-tfgen-yandex";
+  cmdRes = "pulumi-resource-yandex";
+  extraLdflags = [
+    "-X github.com/regrau/${repo}/provider/pkg/version.Version=v${version}"
+  ];
+  __darwinAllowLocalNetworking = true;
+  env.GOWORK = "off";
+  meta = with lib; {
+    description = "Unofficial Yandex Cloud Resource Provider";
+    homepage = "https://github.com/Regrau/pulumi-yandex";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ tie veehaitch trundle ];
+    mainProgram = cmdRes;
+  };
+}
diff --git a/pkgs/tools/admin/qovery-cli/default.nix b/pkgs/tools/admin/qovery-cli/default.nix
index ae0690e56c7a0..95ce88d06946a 100644
--- a/pkgs/tools/admin/qovery-cli/default.nix
+++ b/pkgs/tools/admin/qovery-cli/default.nix
@@ -9,16 +9,16 @@
 
 buildGoModule rec {
   pname = "qovery-cli";
-  version = "0.87.0";
+  version = "0.89.0";
 
   src = fetchFromGitHub {
     owner = "Qovery";
     repo = "qovery-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-JUyhVq3xMPV9s4OCfkKgCnSMjztYDPJgS4A+jJOZofE=";
+    hash = "sha256-3guMKAxDxv/R60pKP0y+XTTaxHZSTfnXtNO2RC74/xE=";
   };
 
-  vendorHash = "sha256-Lwg3PFmSipaaYtu88c1qI/Ws50TQOqEu4mSuxcpx3zI=";
+  vendorHash = "sha256-/wm/KCO/oYJkjh0AuUi9rUyrqen/otC4KVVXhROz9Ro=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/admin/trivy/default.nix b/pkgs/tools/admin/trivy/default.nix
index ade905ec189e3..f29cf3b0046fc 100644
--- a/pkgs/tools/admin/trivy/default.nix
+++ b/pkgs/tools/admin/trivy/default.nix
@@ -1,28 +1,29 @@
-{ lib
-, stdenv
-, buildPackages
-, buildGoModule
-, fetchFromGitHub
-, installShellFiles
-, testers
-, trivy
+{
+  lib,
+  stdenv,
+  buildPackages,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  testers,
+  trivy,
 }:
 
 buildGoModule rec {
   pname = "trivy";
-  version = "0.50.1";
+  version = "0.50.2";
 
   src = fetchFromGitHub {
     owner = "aquasecurity";
-    repo = pname;
+    repo = "trivy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TcSWgEdk0hjckY5ZGm2/jg9C4yiTTtgQjZEihXBi+fA=";
+    hash = "sha256-0FV67+m09PCkPZfnkepkvBA4mFYIkJSMT5v0tDwalW8=";
   };
 
   # Hash mismatch on across Linux and Darwin
   proxyVendor = true;
 
-  vendorHash = "sha256-FkyGqZSEKWCI7tRmTBI+dmiqZPPPMUlqbCxs59N1syY=";
+  vendorHash = "sha256-aki+kwjZxPPD/K3k8wJMc2HNB6DzFf92mcOOQFwsbXU=";
 
   subPackages = [ "cmd/trivy" ];
 
@@ -39,7 +40,11 @@ buildGoModule rec {
 
   postInstall =
     let
-      trivy = if stdenv.buildPlatform.canExecute stdenv.hostPlatform then placeholder "out" else buildPackages.trivy;
+      trivy =
+        if stdenv.buildPlatform.canExecute stdenv.hostPlatform then
+          placeholder "out"
+        else
+          buildPackages.trivy;
     in
     ''
       installShellCompletion --cmd trivy \
@@ -69,6 +74,9 @@ buildGoModule rec {
     '';
     mainProgram = "trivy";
     license = licenses.asl20;
-    maintainers = with maintainers; [ fab jk ];
+    maintainers = with maintainers; [
+      fab
+      jk
+    ];
   };
 }
diff --git a/pkgs/tools/backup/borgbackup/default.nix b/pkgs/tools/backup/borgbackup/default.nix
index d7853d0506f64..778f5a5aad9f5 100644
--- a/pkgs/tools/backup/borgbackup/default.nix
+++ b/pkgs/tools/backup/borgbackup/default.nix
@@ -2,54 +2,46 @@
 , stdenv
 , acl
 , e2fsprogs
+, fetchFromGitHub
 , libb2
 , lz4
 , openssh
 , openssl
-, python3Packages
+, python3
 , xxHash
 , zstd
 , installShellFiles
 , nixosTests
-, fetchPypi
 }:
 
 let
-  python = python3Packages.python.override {
-    packageOverrides = self: super: {
-      msgpack = super.msgpack.overrideAttrs (oldAttrs: rec {
-        version ="1.0.4";
-
-        src = fetchPypi {
-          pname = "msgpack";
-          inherit version;
-          hash = "sha256-9dhpwY8DAgLrQS8Iso0q/upVPWYTruieIA16yn7wH18=";
-        };
-      });
-    };
-  };
+  python = python3;
 in
 python.pkgs.buildPythonApplication rec {
   pname = "borgbackup";
-  version = "1.2.7";
-  format = "pyproject";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-9j8oozg8BBlxzsh7BhyjmoFbX9RF2ySqgXLKxBfZQRo=";
+  version = "1.2.8";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "borgbackup";
+    repo = "borg";
+    rev = "refs/tags/${version}";
+    hash = "sha256-+FHqOVuHlY9QUjCrYVnrMBZPMFH9Z2U7eZ6eUSINSrw=";
   };
 
   postPatch = ''
     # sandbox does not support setuid/setgid/sticky bits
     substituteInPlace src/borg/testsuite/archiver.py \
-      --replace "0o4755" "0o0755"
+      --replace-fail "0o4755" "0o0755"
   '';
 
-  nativeBuildInputs = with python.pkgs; [
+  build-system = with python.pkgs; [
     cython
     setuptools-scm
     pkgconfig
+  ];
 
+  nativeBuildInputs = with python.pkgs; [
     # docs
     sphinxHook
     guzzle-sphinx-theme
@@ -70,7 +62,7 @@ python.pkgs.buildPythonApplication rec {
     acl
   ];
 
-  propagatedBuildInputs = with python.pkgs; [
+  dependencies = with python.pkgs; [
     msgpack
     packaging
     (if stdenv.isLinux then pyfuse3 else llfuse)
@@ -130,7 +122,7 @@ python.pkgs.buildPythonApplication rec {
   outputs = [ "out" "doc" "man" ];
 
   meta = with lib; {
-    changelog = "https://github.com/borgbackup/borg/blob/${version}/docs/changes.rst";
+    changelog = "https://github.com/borgbackup/borg/blob/${src.rev}/docs/changes.rst";
     description = "Deduplicating archiver with compression and encryption";
     homepage = "https://www.borgbackup.org";
     license = licenses.bsd3;
diff --git a/pkgs/tools/backup/borgmatic/default.nix b/pkgs/tools/backup/borgmatic/default.nix
index 0268fae6a185a..1845ea99def96 100644
--- a/pkgs/tools/backup/borgmatic/default.nix
+++ b/pkgs/tools/backup/borgmatic/default.nix
@@ -13,11 +13,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "borgmatic";
-  version = "1.8.9";
+  version = "1.8.10";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-YfDV2BJzi2DVi/eoWg3KeqmJjUv5+TrLpYdF8R7YuPY=";
+    sha256 = "sha256-hR2q49gCD9BZsk+jQ90EfKkkq7mX9qAO+gRsvdnuDec=";
   };
 
   nativeCheckInputs = with python3Packages; [ flexmock pytestCheckHook pytest-cov ] ++ passthru.optional-dependencies.apprise;
diff --git a/pkgs/tools/backup/zfs-replicate/default.nix b/pkgs/tools/backup/zfs-replicate/default.nix
index c5a4d2f0317f2..1ae5c0de79fa3 100644
--- a/pkgs/tools/backup/zfs-replicate/default.nix
+++ b/pkgs/tools/backup/zfs-replicate/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonApplication rec {
   pname = "zfs_replicate";
-  version = "3.2.12";
+  version = "3.2.13";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Pyn/ehXVb5knHS1A/MFTYE0t+IVgtBe1dAnYdaHutyk=";
+    hash = "sha256-Xmg33bqs3gQJWqkCNiWYUem3o6XsxpfbHIVvLs/2D94=";
   };
 
   postPatch = ''
diff --git a/pkgs/tools/backup/zfsbackup/default.nix b/pkgs/tools/backup/zfsbackup/default.nix
index d0f8972434a82..12bc55a543977 100644
--- a/pkgs/tools/backup/zfsbackup/default.nix
+++ b/pkgs/tools/backup/zfsbackup/default.nix
@@ -26,7 +26,7 @@ buildGoModule rec {
     description = "Backup ZFS snapshots to cloud storage such as Google, Amazon, Azure, etc";
     homepage = "https://github.com/someone1/zfsbackup-go";
     license = licenses.mit;
-    maintainers = with maintainers; [ xfix ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
     mainProgram = "zfsbackup-go";
   };
diff --git a/pkgs/tools/compression/flips/default.nix b/pkgs/tools/compression/flips/default.nix
index 6ee1c03cabce5..e061459ece269 100644
--- a/pkgs/tools/compression/flips/default.nix
+++ b/pkgs/tools/compression/flips/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
     description = "A patcher for IPS and BPS files";
     homepage = "https://github.com/Alcaro/Flips";
     license = licenses.gpl3Plus;
-    maintainers = [ maintainers.xfix ];
+    maintainers = [ ];
     platforms = platforms.linux;
     mainProgram = "flips";
   };
diff --git a/pkgs/tools/filesystems/mount-zip/default.nix b/pkgs/tools/filesystems/mount-zip/default.nix
index 362ca4e2743e3..8bff2e4fb47e1 100644
--- a/pkgs/tools/filesystems/mount-zip/default.nix
+++ b/pkgs/tools/filesystems/mount-zip/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "mount-zip";
-  version = "1.0.13";
+  version = "1.0.14";
 
   src = fetchFromGitHub {
     owner = "google";
     repo = "mount-zip";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-/iPq/v7ap5livYR5tA90JiaGxQfR9VG+FONECeCFdOQ=";
+    hash = "sha256-S2snseC9JAjYRberL2/CyRQTcZQ8GtGQNU3WuTqSRl4=";
   };
 
   nativeBuildInputs = [ boost gcc icu pandoc pkg-config ];
diff --git a/pkgs/tools/filesystems/stratis-cli/default.nix b/pkgs/tools/filesystems/stratis-cli/default.nix
index 4c27b888bbaab..4de51f0ff8d3d 100644
--- a/pkgs/tools/filesystems/stratis-cli/default.nix
+++ b/pkgs/tools/filesystems/stratis-cli/default.nix
@@ -6,14 +6,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "stratis-cli";
-  version = "3.6.0";
+  version = "3.6.2";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "stratis-storage";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-mLmjMofdr0U+Bfnkde7lJqPXkd1ICPYdlcsOm2nOcQA=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-f2Bjv7Z7+FZejS5plUGKTlGUixgF2pGN1SeszTDh4Ko=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/pkgs/tools/graphics/asymptote/default.nix b/pkgs/tools/graphics/asymptote/default.nix
index aeb51d66bf6f0..4af2e3be53719 100644
--- a/pkgs/tools/graphics/asymptote/default.nix
+++ b/pkgs/tools/graphics/asymptote/default.nix
@@ -4,29 +4,26 @@
 , boehmgc, libGLU, libGL, mesa, ncurses, readline, gsl, libsigsegv
 , python3, qtbase, qtsvg, boost
 , zlib, perl, curl
-, texliveSmall, texinfo
+, texinfo
+, texlive
+, texliveSmall
 , darwin
 }:
 
-stdenv.mkDerivation rec {
-  version = "2.88";
+stdenv.mkDerivation (finalAttrs: {
+  version = "2.89";
   pname = "asymptote";
 
   outputs = [ "out" "man" "info" "doc" "tex" ];
 
   src = fetchurl {
-    url = "mirror://sourceforge/asymptote/${version}/asymptote-${version}.src.tgz";
-    hash = "sha256-DecadD+m7pORuH3Sdcs/5M3vUbN6rhSkFoNN0Soq9bs=";
+    url = "mirror://sourceforge/asymptote/${finalAttrs.version}/asymptote-${finalAttrs.version}.src.tgz";
+    hash = "sha256-9k5itO5PhfGnhkDE8eim+Y6R9U7ayrGXJ8fKvpSlf1s=";
   };
 
-  patches = [
-    (fetchpatch {
-      # partial fix for macOS XDR/V3D support (LDFLAGS change seems like an unrelated bugfix)
-      name = "restore-LDFLAGS-dont-look-for-tirpc-under-MacOS.patch";
-      url = "https://github.com/vectorgraphics/asymptote/commit/7e17096b22d18d133d1bc5916b6e32c0cb24ad10.patch";
-      hash = "sha256-olCFzqfZwWOAjqlB5lDPXYRHU9i3VQNgoR0cO5TmW98=";
-    })
-  ];
+  # override with TeX Live containers to avoid building sty, docs from source
+  texContainer = null;
+  texdocContainer = null;
 
   nativeBuildInputs = [
     autoreconfHook
@@ -37,13 +34,13 @@ stdenv.mkDerivation rec {
     wrapQtAppsHook
     cmake
     pkg-config
-  ];
+  ] ++ lib.optional (finalAttrs.texContainer == null || finalAttrs.texdocContainer == null)
+    (texliveSmall.withPackages (ps: with ps; [ epsf cm-super ps.texinfo media9 ocgx2 collection-latexextra ]));
 
   buildInputs = [
     ghostscriptX imagemagick fftw eigen
     boehmgc ncurses readline gsl libsigsegv
     zlib perl curl qtbase qtsvg boost
-    (texliveSmall.withPackages (ps: with ps; [ epsf cm-super ps.texinfo media9 ocgx2 collection-latexextra ]))
     (python3.withPackages (ps: with ps; [ cson numpy pyqt5 ]))
   ] ++ lib.optionals stdenv.isLinux [ libtirpc ];
 
@@ -57,12 +54,25 @@ stdenv.mkDerivation rec {
 
   dontWrapQtApps = true;
 
-  # Do not build $tex/ls-R which will be generated by texlive.combine
+  # do not build $tex/ls-R which will be generated by texlive.withPackages
+  # do not build and install sty and docs, if provided by tex/texdoc texlive containers
+  # (this is an optimisation to make texliveMedium and texliveFull independent of texliveSmall)
   preConfigure = ''
     HOME=$TMP
     substituteInPlace Makefile.in \
-      --replace-fail 'install: install-notexhash install-texhash' 'install: install-notexhash install-asy'
-    prependToVar configureFlags "--with-latex=$tex/tex/latex" "--with-context=$tex/tex/context/third"
+      --replace-fail ' install-texhash' '''
+    if [[ -n $texContainer ]] ; then
+      sed -i Makefile.in -e '/(\(latex\|context\)dir)/d'
+      substituteInPlace Makefile.in \
+        --replace-fail 'asy sty' 'asy'
+    else
+      prependToVar configureFlags "--with-latex=$tex/tex/latex" "--with-context=$tex/tex/context/third"
+    fi
+    if [[ -n $texdocContainer ]] ; then
+      substituteInPlace Makefile.in \
+        --replace-fail ' install-man' ''' \
+        --replace-fail 'docdir = $(DESTDIR)@docdir@' 'docdir = $(TMP)/doc'
+    fi
   '';
 
   # do not use bundled libgc.so
@@ -76,12 +86,36 @@ stdenv.mkDerivation rec {
     rm "$out"/bin/xasy
     makeQtWrapper "$out"/share/asymptote/GUI/xasy.py "$out"/bin/xasy --prefix PATH : "$out"/bin
 
-    mv "$info"/share/info/asymptote/*.info "$info"/share/info/
-    sed -i -e 's|(asymptote/asymptote)|(asymptote)|' "$info"/share/info/asymptote.info
-    rmdir "$info"/share/info/asymptote
-    rm -f "$info"/share/info/dir
+    if [[ -z $texdocContainer ]] ; then
+      mv "$info"/share/info/asymptote/*.info "$info"/share/info/
+      sed -i -e 's|(asymptote/asymptote)|(asymptote)|' "$info"/share/info/asymptote.info
+      rmdir "$info"/share/info/asymptote
+      rm -f "$info"/share/info/dir
+    fi
+    install -Dt $out/share/emacs/site-lisp/${finalAttrs.pname} $out/share/asymptote/*.el
+  '';
+
+  # fixupPhase crashes if the outputs are not directories
+  preFixup = ''
+    if [[ -n $texContainer ]] ; then
+      mkdir -p "$tex"
+    fi
+    if [[ -n $texdocContainer ]] ; then
+      mkdir -p "$doc" "$man" "$info"
+    fi
+  '';
 
-    install -Dt $out/share/emacs/site-lisp/${pname} $out/share/asymptote/*.el
+  postFixup = ''
+    if [[ -n $texContainer ]] ; then
+      rmdir "$tex"
+      ln -s "$texContainer" "$tex"
+    fi
+    if [[ -n $texdocContainer ]] ; then
+      mkdir -p "$man/share" "$info/share"
+      ln -s "$texdocContainer" "$doc/share"
+      ln -s "$texdocContainer/doc/man" "$man/share"
+      ln -s "$texdocContainer/doc/info" "$info/share"
+    fi
   '';
 
   dontUseCmakeConfigure = true;
@@ -98,4 +132,4 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.raskin ];
     platforms = platforms.linux ++ platforms.darwin;
   };
-}
+})
diff --git a/pkgs/tools/misc/broadlink-cli/default.nix b/pkgs/tools/misc/broadlink-cli/default.nix
index 087b56c9d1a3a..c9438ff3583f3 100644
--- a/pkgs/tools/misc/broadlink-cli/default.nix
+++ b/pkgs/tools/misc/broadlink-cli/default.nix
@@ -2,7 +2,7 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "broadlink-cli";
-  version = "0.18.3";
+  version = "0.19.0";
 
   # the tools are available as part of the source distribution from GH but
   # not pypi, so we have to fetch them here.
@@ -10,7 +10,7 @@ python3Packages.buildPythonApplication rec {
     owner  = "mjg59";
     repo   = "python-broadlink";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-8bSlMA5Nb3hqpVMeHlgb8AkKt5JrfEiyKjobxRBdmNM=";
+    sha256 = "sha256-fqhi4K8Ceh8Rs0ExteCfAuVfEamFjMCjCFm6DRAJDmI=";
   };
 
   format = "other";
diff --git a/pkgs/tools/misc/diffoscope/default.nix b/pkgs/tools/misc/diffoscope/default.nix
index 69f25a35c7397..580d01376eb87 100644
--- a/pkgs/tools/misc/diffoscope/default.nix
+++ b/pkgs/tools/misc/diffoscope/default.nix
@@ -79,11 +79,11 @@
 # Note: when upgrading this package, please run the list-missing-tools.sh script as described below!
 python3.pkgs.buildPythonApplication rec {
   pname = "diffoscope";
-  version = "263";
+  version = "265";
 
   src = fetchurl {
     url = "https://diffoscope.org/archive/diffoscope-${version}.tar.bz2";
-    hash = "sha256-tKGPit8rPn/fMdEWP3cC93qakU5d7mBeRiKNQT3DBJ4=";
+    hash = "sha256-YE81R8lTOM3wmv/GIaIBqUq2O6UvnUaHjuXZ00yDU8U=";
   };
 
   outputs = [
diff --git a/pkgs/tools/misc/ntfy-sh/default.nix b/pkgs/tools/misc/ntfy-sh/default.nix
index 44a82b4253cc1..cf429da9cad0a 100644
--- a/pkgs/tools/misc/ntfy-sh/default.nix
+++ b/pkgs/tools/misc/ntfy-sh/default.nix
@@ -43,7 +43,6 @@ buildGoModule rec {
     python3
     python3Packages.mkdocs-material
     python3Packages.mkdocs-minify-plugin
-    python3Packages.mkdocs-simple-hooks
   ];
 
   postPatch = ''
diff --git a/pkgs/tools/misc/phrase-cli/default.nix b/pkgs/tools/misc/phrase-cli/default.nix
index e780f451040b4..c06b1d386768d 100644
--- a/pkgs/tools/misc/phrase-cli/default.nix
+++ b/pkgs/tools/misc/phrase-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "phrase-cli";
-  version = "2.23.2";
+  version = "2.24.0";
 
   src = fetchFromGitHub {
     owner = "phrase";
     repo = "phrase-cli";
     rev = version;
-    sha256 = "sha256-CzDkIFlStfCJpF82pqD8hTxbjH9Nu+0/uygTR0xxxV4=";
+    sha256 = "sha256-i1gf/xTdZaseUiu70i0Yh+DZlRoJjKYG1Q+D7uUyMl8=";
   };
 
-  vendorHash = "sha256-r07nHJqFWHAMTkmQmy0/jK7N/lDzpnHqmuGTG1FTUiI=";
+  vendorHash = "sha256-+UjUk2Uf4ESHkUSM9X+a3fBF05cVsQ4JwPn93hbELLs=";
 
   ldflags = [ "-X=github.com/phrase/phrase-cli/cmd.PHRASE_CLIENT_VERSION=${version}" ];
 
diff --git a/pkgs/tools/misc/shelldap/default.nix b/pkgs/tools/misc/shelldap/default.nix
index 045c5732c3e09..09901368c8701 100644
--- a/pkgs/tools/misc/shelldap/default.nix
+++ b/pkgs/tools/misc/shelldap/default.nix
@@ -1,6 +1,8 @@
 { lib
+, stdenv
 , fetchFromGitHub
 , perlPackages
+, shortenPerlShebang
 }:
 
 perlPackages.buildPerlPackage rec {
@@ -26,6 +28,8 @@ perlPackages.buildPerlPackage rec {
     YAMLSyck
   ];
 
+  nativeBuildInputs = lib.optional stdenv.isDarwin shortenPerlShebang;
+
   prePatch = ''
     touch Makefile.PL
   '';
@@ -33,7 +37,11 @@ perlPackages.buildPerlPackage rec {
   installPhase = ''
     runHook preInstall
     install -Dm555 -t $out/bin shelldap
-    runHook preInstall
+    runHook postInstall
+  '';
+
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    shortenPerlShebang $out/bin/shelldap
   '';
 
   # no make target 'test', not tests provided by source
diff --git a/pkgs/tools/misc/tbls/default.nix b/pkgs/tools/misc/tbls/default.nix
index 4672adfc97c9d..067c40aab8db8 100644
--- a/pkgs/tools/misc/tbls/default.nix
+++ b/pkgs/tools/misc/tbls/default.nix
@@ -9,16 +9,16 @@
 
 buildGoModule rec {
   pname = "tbls";
-  version = "1.73.3";
+  version = "1.74.0";
 
   src = fetchFromGitHub {
     owner = "k1LoW";
     repo = "tbls";
     rev = "v${version}";
-    hash = "sha256-mAGEJ+FISPRrIz3dWwuf9EYbTNdaMj7tbHgthSYBiIU=";
+    hash = "sha256-diMg47aZvMpVtvSbg1nA2Sva7JnEBfh8ZU9AHcz+xno=";
   };
 
-  vendorHash = "sha256-oMGAsVRSyndCJ3QXfrI02XrsOXkzljTNro6ygal6mDk=";
+  vendorHash = "sha256-UbMR3yTabGSUqT30T81R/fGnWI4Mz7/utCjZ5Fq0MWU=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/tools/misc/upterm/default.nix b/pkgs/tools/misc/upterm/default.nix
index 135fa5dcec692..1cd4d1d606bf4 100644
--- a/pkgs/tools/misc/upterm/default.nix
+++ b/pkgs/tools/misc/upterm/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "upterm";
-  version = "0.13.2";
+  version = "0.13.3";
 
   src = fetchFromGitHub {
     owner = "owenthereal";
     repo = "upterm";
     rev = "v${version}";
-    hash = "sha256-GpD8OUZWN2myADHjpIBUzu2adkE9eFLENxpybX+k9Zg=";
+    hash = "sha256-VGLQ0NtXHIBKyTjW+7rPbmRdhcY9CMUYAnUu3qbqv9A=";
   };
 
-  vendorHash = "sha256-Rh3xgxaCPj9CbiNy8AycuCPvD/HCiLohcdiCQwPduDM=";
+  vendorHash = "sha256-rbdYXRxnkl0v+bICSusGiyxb5TIGREiKuylycV3dcx4=";
 
   subPackages = [ "cmd/upterm" "cmd/uptermd" ];
 
diff --git a/pkgs/tools/misc/vtm/default.nix b/pkgs/tools/misc/vtm/default.nix
index 2e0434a2a6e41..e1bc945772616 100644
--- a/pkgs/tools/misc/vtm/default.nix
+++ b/pkgs/tools/misc/vtm/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "vtm";
-  version = "0.9.77";
+  version = "0.9.78";
 
   src = fetchFromGitHub {
     owner = "netxs-group";
     repo = "vtm";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-usY8JvoTtGfA8nnl6w7r1sft8F/19fHeSl9kMWM60i4=";
+    hash = "sha256-sYRBx60G/3ErBDeUJWPEaWD51B23nBseB2wDE4Tn2NA=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/networking/calendar-cli/default.nix b/pkgs/tools/networking/calendar-cli/default.nix
index 45b3afbf895e2..7cac9f4ae0f32 100644
--- a/pkgs/tools/networking/calendar-cli/default.nix
+++ b/pkgs/tools/networking/calendar-cli/default.nix
@@ -7,6 +7,7 @@
 python3.pkgs.buildPythonApplication rec {
   pname = "calendar-cli";
   version = "1.0.1";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tobixen";
@@ -15,7 +16,11 @@ python3.pkgs.buildPythonApplication rec {
     hash = "sha256-w35ySLnfxXZR/a7BrPLYqXs2kqkuYhh5PcgNxJqjDtE=";
   };
 
-  propagatedBuildInputs = with python3.pkgs; [
+  build-system = with python3.pkgs; [
+    setuptools
+  ];
+
+  dependencies = with python3.pkgs; [
     icalendar
     caldav
     pytz
@@ -36,6 +41,7 @@ python3.pkgs.buildPythonApplication rec {
     description = "Simple command-line CalDav client";
     homepage = "https://github.com/tobixen/calendar-cli";
     license = licenses.gpl3Plus;
+    mainProgram = "calendar-cli";
     maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/pkgs/tools/networking/ddns-go/default.nix b/pkgs/tools/networking/ddns-go/default.nix
index 725468e1e6b30..2207fa5baae42 100644
--- a/pkgs/tools/networking/ddns-go/default.nix
+++ b/pkgs/tools/networking/ddns-go/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "ddns-go";
-  version = "6.3.2";
+  version = "6.3.3";
 
   src = fetchFromGitHub {
     owner = "jeessy2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-efuz27N/culO5vxgWKXawD+yqxjDsAr0Hpv2I9YQePs=";
+    hash = "sha256-LsJAuEVJy4jTvFEOgbH6ZiiqbMoGXuMNDhHx4phwd5k=";
   };
 
   vendorHash = "sha256-ckgX+gftWJROe/RpxjuBmXSDxW/PlCOIkrx+erxCP40=";
diff --git a/pkgs/tools/networking/getmail6/default.nix b/pkgs/tools/networking/getmail6/default.nix
index cf3d5402898e7..7f758527d1c92 100644
--- a/pkgs/tools/networking/getmail6/default.nix
+++ b/pkgs/tools/networking/getmail6/default.nix
@@ -5,17 +5,20 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "getmail6";
-  version = "6.18.13";
-
-  format = "setuptools";
+  version = "6.18.14";
+  pyproject = true;
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "getmail6";
+    repo = "getmail6";
     rev = "refs/tags/v${version}";
-    hash = "sha256-cyX+3LsXqBpAvaOPVpT4EuPzqJm9kki1uNTG+7k3Q28=";
+    hash = "sha256-NcUGIddbIjwMyE/6fR8lqs90/chzqROQDftF/cNkxOs=";
   };
 
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools
+  ];
+
   # needs a Docker setup
   doCheck = false;
 
diff --git a/pkgs/tools/networking/knock/package.nix b/pkgs/tools/networking/knock/package.nix
index b9879859722a6..1197bec808cff 100644
--- a/pkgs/tools/networking/knock/package.nix
+++ b/pkgs/tools/networking/knock/package.nix
@@ -1,6 +1,6 @@
 { lib
 , buildGoModule
-, fetchFromGitHub
+, fetchFromGitea
 , installShellFiles
 }:
 
@@ -8,11 +8,12 @@ buildGoModule rec {
   pname = "knock";
   version = "0.0.2";
 
-  src = fetchFromGitHub {
+  src = fetchFromGitea {
+    domain = "codeberg.org";
     owner = "nat-418";
     repo ="knock";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-VXrWphfBDGDNsz4iuUdwwd46oqnmhJ9i3TtzMqHoSJk=";
+    rev = "v${version}";
+    hash = "sha256-K+L4F4bTERQSqISAmfyps/U5GJ2N0FdJ3RmpiUmt4uA=";
   };
 
   vendorHash = "sha256-wkSXdIgfkHbVJYsgm/hLAeKA9geof92U3mzSzt7eJE8=";
@@ -27,9 +28,9 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A simple CLI network reachability tester";
-    homepage = "https://github.com/nat-418/knock";
+    homepage = "https://codeberg.org/nat-418/knock";
     license = licenses.bsd0;
-    changelog = "https://github.com/nat-418/knock/blob/${version}/CHANGELOG.md";
+    changelog = "https://codeberg.org/nat-418/knock/raw/branch/trunk/CHANGELOG.md";
     maintainers = with maintainers; [ nat-418 ];
   };
 }
diff --git a/pkgs/tools/networking/maubot/default.nix b/pkgs/tools/networking/maubot/default.nix
index acee6f1dedb3b..7794395180db1 100644
--- a/pkgs/tools/networking/maubot/default.nix
+++ b/pkgs/tools/networking/maubot/default.nix
@@ -59,6 +59,7 @@ let
     ];
 
     propagatedBuildInputs = with python.pkgs; [
+      setuptools
       # requirements.txt
       mautrix
       aiohttp
diff --git a/pkgs/tools/networking/maubot/plugins/generated.json b/pkgs/tools/networking/maubot/plugins/generated.json
index 555de6c05821c..7051bf3e5b508 100644
--- a/pkgs/tools/networking/maubot/plugins/generated.json
+++ b/pkgs/tools/networking/maubot/plugins/generated.json
@@ -1,37 +1,4 @@
 {
-  "URLDownload": {
-    "attrs": {
-      "meta": {
-        "changelog": "https://codeberg.org/LukeLR/matrix-url-download/releases",
-        "description": "A plugin for the maubot bot framework implementing URL downloads in matrix rooms.",
-        "downloadPage": "https://codeberg.org/LukeLR/matrix-url-download/releases",
-        "homepage": "https://codeberg.org/LukeLR/matrix-url-download"
-      }
-    },
-    "gitea": {
-      "domain": "codeberg.org",
-      "hash": "sha256-JLYhoQKxsYO46mqRJZEcWTHck6bli6itYGu8ZPbxyjg=",
-      "owner": "LukeLR",
-      "repo": "matrix-url-download",
-      "rev": "3a006d98faa6950edab1a45b7a8c6a6d7d908bff"
-    },
-    "manifest": {
-      "config": true,
-      "database": true,
-      "database_type": "asyncpg",
-      "extra_files": [
-        "base-config.yaml"
-      ],
-      "id": "de.lukelr.urldownload",
-      "license": "LGPL-3.0-only",
-      "main_class": "URLDownloadBot",
-      "maubot": "0.1.0",
-      "modules": [
-        "urldownload"
-      ],
-      "version": "0.0.3"
-    }
-  },
   "activity-tracker": {
     "attrs": {
       "meta": {
@@ -312,10 +279,10 @@
       }
     },
     "github": {
-      "hash": "sha256-iRo4oFOOXgISALFskPZUonV4cBn7HmBACdi5uhgQq8o=",
+      "hash": "sha256-XOhjSrgbVUwMO6/v/Znoc5l/k2n6Zi42Ydhv9/vyX7E=",
       "owner": "williamkray",
       "repo": "maubot-chatgpt",
-      "rev": "f3974dc3818da170a3f1e091359d31f3140245e0"
+      "rev": "d313920165f8fca7a04314a73bb1dca30c67d9f5"
     },
     "manifest": {
       "config": true,
@@ -329,7 +296,7 @@
       "modules": [
         "gpt"
       ],
-      "version": "0.0.9"
+      "version": "0.0.10"
     }
   },
   "choose": {
@@ -955,7 +922,7 @@
   "ldap-ad-inviterbot": {
     "attrs": {
       "meta": {
-        "changelog": "https://github.com/SAPUCC/inviterbot/blob/v0.1.5/CHANGELOG.md",
+        "changelog": "https://github.com/SAPUCC/inviterbot/blob/v0.1.6/CHANGELOG.md",
         "description": "A plugin to sync users from Microsoft Azure AD and LDAP into matrix rooms. (Membership, Power-Levels)",
         "downloadPage": "https://github.com/SAPUCC/inviterbot/releases",
         "homepage": "https://github.com/SAPUCC/inviterbot",
@@ -963,10 +930,10 @@
       }
     },
     "github": {
-      "hash": "sha256-Ve420Mfa+Ikxp0P/8b6rZIu54VOfKhH3sWDNNMClj9E=",
+      "hash": "sha256-vnSOYdIbUnR9O6pCYO+TdA2qBbgrrc9RaomdWuVKW8o=",
       "owner": "SAPUCC",
       "repo": "inviterbot",
-      "rev": "v0.1.5"
+      "rev": "v0.1.6"
     },
     "manifest": {
       "config": true,
@@ -984,7 +951,7 @@
       "modules": [
         "inviter"
       ],
-      "version": "0.1.5"
+      "version": "0.1.6"
     }
   },
   "local-stt": {
@@ -1139,6 +1106,36 @@
       "version": "0.1.0"
     }
   },
+  "openai-translate": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/tcpipuk/maubot-openai-translate/releases",
+        "description": "Translate messages using OpenAI's GPT API",
+        "downloadPage": "https://github.com/tcpipuk/maubot-openai-translate/releases",
+        "homepage": "https://github.com/tcpipuk/maubot-openai-translate"
+      }
+    },
+    "github": {
+      "hash": "sha256-+aDQF/hW66M25zsvIsjNt7K2l32rV1g3fPrb45XdHVU=",
+      "owner": "tcpipuk",
+      "repo": "maubot-openai-translate",
+      "rev": "v0.3.0"
+    },
+    "manifest": {
+      "config": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.openaitranslate",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "OpenAITranslate",
+      "maubot": "0.1.0",
+      "modules": [
+        "openaitranslate"
+      ],
+      "version": "0.3.0"
+    }
+  },
   "ovgumensabot": {
     "attrs": {
       "meta": {
@@ -1324,6 +1321,35 @@
       "version": "0.3.6"
     }
   },
+  "reacjibot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ajkessel/reacjibot/releases",
+        "description": "Allows users to define emoji-reactions that cause messages to be cross-posted to arbitrary rooms",
+        "downloadPage": "https://github.com/ajkessel/reacjibot/releases",
+        "homepage": "https://github.com/ajkessel/reacjibot"
+      }
+    },
+    "github": {
+      "hash": "sha256-GfroQ7iaBfN8WClORrkYccPHq8FsKupZtYKJvHGZg1o=",
+      "owner": "ajkessel",
+      "repo": "reacjibot",
+      "rev": "v0.7.4"
+    },
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.rosi-kessel.reacjibot",
+      "license": "MIT",
+      "main_class": "ReacjiBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "reacjibot"
+      ],
+      "version": "0.7.4"
+    }
+  },
   "reactbot": {
     "attrs": {
       "meta": {
@@ -1801,6 +1827,32 @@
       "version": "0.1.0.6"
     }
   },
+  "timer": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/pedantic-git/maubot-timer/releases",
+        "description": "Start a countdown timer for the specified number of seconds",
+        "downloadPage": "https://github.com/pedantic-git/maubot-timer/releases",
+        "homepage": "https://github.com/pedantic-git/maubot-timer"
+      }
+    },
+    "github": {
+      "hash": "sha256-cAS/4092O6d4ok8T2dbpvvgzpejQUPYM6mBtSvUaUpw=",
+      "owner": "pedantic-git",
+      "repo": "maubot-timer",
+      "rev": "ff656142feb018f33290113ca09facf0a45eab6e"
+    },
+    "manifest": {
+      "id": "mx.quinn.timer",
+      "license": "MIT",
+      "main_class": "Timer",
+      "maubot": "0.1.0",
+      "modules": [
+        "timer"
+      ],
+      "version": "1.0.0"
+    }
+  },
   "tmdb": {
     "attrs": {
       "meta": {
@@ -2032,6 +2084,39 @@
       "version": "1.0.2"
     }
   },
+  "urldownload": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://codeberg.org/LukeLR/matrix-url-download/releases",
+        "description": "A plugin for the maubot bot framework implementing URL downloads in matrix rooms.",
+        "downloadPage": "https://codeberg.org/LukeLR/matrix-url-download/releases",
+        "homepage": "https://codeberg.org/LukeLR/matrix-url-download"
+      }
+    },
+    "gitea": {
+      "domain": "codeberg.org",
+      "hash": "sha256-JLYhoQKxsYO46mqRJZEcWTHck6bli6itYGu8ZPbxyjg=",
+      "owner": "LukeLR",
+      "repo": "matrix-url-download",
+      "rev": "3a006d98faa6950edab1a45b7a8c6a6d7d908bff"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "de.lukelr.urldownload",
+      "license": "LGPL-3.0-only",
+      "main_class": "URLDownloadBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "urldownload"
+      ],
+      "version": "0.0.3"
+    }
+  },
   "urlpreview": {
     "attrs": {
       "meta": {
diff --git a/pkgs/tools/networking/maubot/plugins/update.py b/pkgs/tools/networking/maubot/plugins/update.py
index a430753870fb9..d787f1f250952 100755
--- a/pkgs/tools/networking/maubot/plugins/update.py
+++ b/pkgs/tools/networking/maubot/plugins/update.py
@@ -31,7 +31,7 @@ def process_repo(path: str, official: bool):
     origurl = repourl
     if '/' in name or ' ' in name:
         name = os.path.split(path)[-1].removesuffix('.yaml')
-    name = name.replace('_', '-')
+    name = name.replace('_', '-').lower()
     if name in PLUGINS.keys():
         raise ValueError(f'Duplicate plugin {name}, refusing to continue')
     repodir = os.path.join(TMP, 'maubot-plugins', name)
diff --git a/pkgs/tools/networking/minio-client/default.nix b/pkgs/tools/networking/minio-client/default.nix
index 9e27fd8e3f93b..3b09ddf5694d6 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 = "2024-03-30T15-29-52Z";
+  version = "2024-04-18T16-45-29Z";
 
   src = fetchFromGitHub {
     owner = "minio";
     repo = "mc";
     rev = "RELEASE.${version}";
-    sha256 = "sha256-xt/WDQFE4uw/eno8RSIjxgjpahjbJVMMOapleuv5avE=";
+    sha256 = "sha256-aEhkk1nB8CGzuZfD8a62RwzcvF2HZTm1LPfb13c6x9Q=";
   };
 
-  vendorHash = "sha256-RwhkR3uQreSO1tq8R7ip7CY7E88MRa151HV8rT68YdQ=";
+  vendorHash = "sha256-qb4gR//8UzJAJ5WthfyxYwhR3YCwUGxfy8aRMW2MXks=";
 
   subPackages = [ "." ];
 
diff --git a/pkgs/tools/networking/shadowsocks-rust/default.nix b/pkgs/tools/networking/shadowsocks-rust/default.nix
index 25829872b8aea..4f1885c2d7f2a 100644
--- a/pkgs/tools/networking/shadowsocks-rust/default.nix
+++ b/pkgs/tools/networking/shadowsocks-rust/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "shadowsocks-rust";
-  version = "1.18.2";
+  version = "1.18.3";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "shadowsocks";
     repo = pname;
-    hash = "sha256-wbbh4IpAla3I/xgmiuzy9E9npS/PUtRFCZS4dl7JYRQ=";
+    hash = "sha256-eqN6Qwq+ofQ9Ed7Viz+DoJQkVTvUTo1U5rVqO1YDp2w=";
   };
 
-  cargoHash = "sha256-TPW+dic9KdtGXGlcEi7YAmt442ZJRifumnrmcX8+unM=";
+  cargoHash = "sha256-yJ2Ql6Fo2KaZRmvRB0C14fEcVwbBbsUlcqT3vFKHn58=";
 
   nativeBuildInputs = lib.optionals stdenv.isLinux [ pkg-config ];
 
diff --git a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
index 38aa1c2e261df..752af3a432253 100644
--- a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
+++ b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
@@ -1,13 +1,13 @@
-{lib, stdenv, fetchFromGitHub, fetchpatch, apacheAnt, jdk, axis2, dbus_java }:
+{ lib, stdenv, fetchFromGitHub, fetchpatch, ant, jdk, xmlstarlet, axis2, dbus_java }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "DisnixWebService";
   version = "0.10.1";
 
   src = fetchFromGitHub {
     owner = "svanderburg";
     repo = "DisnixWebService";
-    rev = "refs/tags/DisnixWebService-${version}";
+    rev = "DisnixWebService-${finalAttrs.version}";
     hash = "sha256-zcYr2Ytx4pevSthTQLpnQ330wDxN9dWsZA20jbO6PxQ=";
   };
 
@@ -20,26 +20,47 @@ stdenv.mkDerivation rec {
     })
   ];
 
-  buildInputs = [ apacheAnt jdk ];
-  PREFIX = "\${env.out}";
-  AXIS2_LIB = "${axis2}/lib";
-  AXIS2_WEBAPP = "${axis2}/webapps/axis2";
-  DBUS_JAVA_LIB = "${dbus_java}/share/java";
+  nativeBuildInputs = [
+    ant
+    jdk
+    xmlstarlet
+  ];
+
+  env = {
+    PREFIX = "\${env.out}";
+    AXIS2_LIB = "${axis2}/lib";
+    AXIS2_WEBAPP = "${axis2}/webapps/axis2";
+    DBUS_JAVA_LIB = "${dbus_java}/share/java";
+  };
+
   prePatch = ''
+    # add modificationtime="0" to the <jar> and <war> tasks to achieve reproducibility
+    xmlstarlet ed -L -a "//jar|//war" -t attr -n "modificationtime" -v "0" build.xml
+
     sed -i -e "s|#JAVA_HOME=|JAVA_HOME=${jdk}|" \
        -e "s|#AXIS2_LIB=|AXIS2_LIB=${axis2}/lib|" \
         scripts/disnix-soap-client
   '';
-  buildPhase = "ant";
-  installPhase = "ant install";
+
+  buildPhase = ''
+    runHook preBuild
+    ant
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    ant install
+    runHook postIntall
+  '';
 
   meta = {
     description = "A SOAP interface and client for Disnix";
     mainProgram = "disnix-soap-client";
     homepage = "https://github.com/svanderburg/DisnixWebService";
-    changelog = "https://github.com/svanderburg/DisnixWebService/blob/DisnixWebService-${version}/NEWS.txt";
+    changelog = "https://github.com/svanderburg/DisnixWebService/blob/${finalAttrs.src.rev}/NEWS.txt";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.sander ];
     platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/pkgs/tools/security/afl/README.md b/pkgs/tools/security/afl/README.md
deleted file mode 100644
index 180cad6bc4ca6..0000000000000
--- a/pkgs/tools/security/afl/README.md
+++ /dev/null
@@ -1,19 +0,0 @@
-Updating the QEMU patches
-=========================
-
-When updating to the latest American Fuzzy Lop, make sure to check for
-any new patches to qemu for binary fuzzing support:
-
-https://github.com/google/AFL/tree/master/qemu_mode
-
-Be sure to check the build script and make sure it's also using the
-right QEMU version and options in `qemu.nix`:
-
-https://github.com/google/AFL/blob/master/qemu_mode/build_qemu_support.sh
-
-`afl-config.h`, `afl-types.h`, and `afl-qemu-cpu-inl.h` are part of
-the afl source code, and copied from `config.h`, `types.h` and
-`afl-qemu-cpu-inl.h` appropriately. These files and the QEMU patches
-need to be slightly adjusted to fix their `#include`s (the patches
-try to otherwise include files like `../../config.h` which causes the
-build to fail).
diff --git a/pkgs/tools/security/afl/default.nix b/pkgs/tools/security/afl/default.nix
deleted file mode 100644
index ccdbd78716d96..0000000000000
--- a/pkgs/tools/security/afl/default.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ lib, stdenv, fetchFromGitHub, callPackage, makeWrapper
-, clang, llvm, which, libcgroup
-}:
-
-let
-  afl-qemu = callPackage ./qemu.nix { inherit afl; };
-  qemu-exe-name = if stdenv.hostPlatform.system == "x86_64-linux" then "qemu-x86_64"
-    else if stdenv.hostPlatform.system == "i686-linux" then "qemu-i386"
-    else throw "afl: no support for ${stdenv.hostPlatform.system}!";
-  afl = stdenv.mkDerivation rec {
-    pname = "afl";
-    version = "2.57b";
-
-    src = fetchFromGitHub {
-      owner = "google";
-      repo = pname;
-      rev = "v${version}";
-      sha256 = "0fqj3g6ds1f21kxz7m9mc1fspi9r4jg9jcmi60inwxijrc5ncvr6";
-    };
-    enableParallelBuilding = true;
-
-    # Note: libcgroup isn't needed for building, just for the afl-cgroup
-    # script.
-    nativeBuildInputs = [ makeWrapper which llvm.dev ];
-    buildInputs = [ llvm ];
-
-    makeFlags = [ "PREFIX=$(out)" ];
-    postBuild = ''
-      make -C llvm_mode $makeFlags -j$NIX_BUILD_CORES
-    '';
-    postInstall = ''
-      # Install the custom QEMU emulator for binary blob fuzzing.
-      cp ${afl-qemu}/bin/${qemu-exe-name} $out/bin/afl-qemu-trace
-
-      # Install the cgroups wrapper for asan-based fuzzing.
-      cp experimental/asan_cgroups/limit_memory.sh $out/bin/afl-cgroup
-      chmod +x $out/bin/afl-cgroup
-      substituteInPlace $out/bin/afl-cgroup \
-        --replace "cgcreate" "${libcgroup}/bin/cgcreate" \
-        --replace "cgexec"   "${libcgroup}/bin/cgexec" \
-        --replace "cgdelete" "${libcgroup}/bin/cgdelete"
-
-      # Patch shebangs before wrapping
-      patchShebangs $out/bin
-
-      # Wrap afl-clang-fast(++) with a *different* AFL_PATH, because it
-      # has totally different semantics in that case(?) - and also set a
-      # proper AFL_CC and AFL_CXX so we don't pick up the wrong one out
-      # of $PATH.
-      # first though we need to replace the afl-clang-fast++ symlink with
-      # a real copy to prevent wrapProgram skipping the symlink and confusing
-      # nix's cc wrapper
-      rm $out/bin/afl-clang-fast++
-      cp $out/bin/afl-clang-fast $out/bin/afl-clang-fast++
-      for x in $out/bin/afl-clang-fast $out/bin/afl-clang-fast++; do
-        wrapProgram $x \
-          --prefix AFL_PATH : "$out/lib/afl" \
-          --run 'export AFL_CC=''${AFL_CC:-${clang}/bin/clang} AFL_CXX=''${AFL_CXX:-${clang}/bin/clang++}'
-      done
-    '';
-
-    passthru.qemu = afl-qemu;
-
-    meta = {
-      description = "Powerful fuzzer via genetic algorithms and instrumentation";
-      longDescription = ''
-        American fuzzy lop is a fuzzer that employs a novel type of
-        compile-time instrumentation and genetic algorithms to
-        automatically discover clean, interesting test cases that
-        trigger new internal states in the targeted binary. This
-        substantially improves the functional coverage for the fuzzed
-        code. The compact synthesized corpora produced by the tool are
-        also useful for seeding other, more labor or resource-intensive
-        testing regimes down the road.
-      '';
-      homepage    = "https://lcamtuf.coredump.cx/afl/";
-      license     = lib.licenses.asl20;
-      platforms   = ["x86_64-linux" "i686-linux"];
-      maintainers = with lib.maintainers; [ thoughtpolice ris ];
-    };
-  };
-in afl
diff --git a/pkgs/tools/security/afl/libdislocator.nix b/pkgs/tools/security/afl/libdislocator.nix
deleted file mode 100644
index 1030ffaf9eb85..0000000000000
--- a/pkgs/tools/security/afl/libdislocator.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, stdenv, afl}:
-
-stdenv.mkDerivation {
-  version = lib.getVersion afl;
-  pname = "libdislocator";
-
-  src = afl.src;
-  sourceRoot = "${afl.src.name}/libdislocator";
-
-  makeFlags = [ "PREFIX=$(out)" ];
-
-  preInstall = ''
-    mkdir -p $out/lib/afl
-  '';
-  postInstall = ''
-    mkdir $out/bin
-    cat > $out/bin/get-libdislocator-so <<END
-    #!${stdenv.shell}
-    echo $out/lib/afl/libdislocator.so
-    END
-    chmod +x $out/bin/get-libdislocator-so
-  '';
-
-  meta = with lib; {
-    homepage = "https://lcamtuf.coredump.cx/afl/";
-    description = ''
-      Drop-in replacement for the libc allocator which improves
-      the odds of bumping into heap-related security bugs in
-      several ways.
-    '';
-    mainProgram = "get-libdislocator-so";
-    license = lib.licenses.asl20;
-    maintainers = with maintainers; [ ris ];
-  };
-}
diff --git a/pkgs/tools/security/afl/qemu-patches/no-etc-install.patch b/pkgs/tools/security/afl/qemu-patches/no-etc-install.patch
deleted file mode 100644
index 5dfbfd780f1ca..0000000000000
--- a/pkgs/tools/security/afl/qemu-patches/no-etc-install.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Makefile b/Makefile
-index d6b9dc1..ce7c493 100644
---- a/Makefile
-+++ b/Makefile
-@@ -601,7 +601,7 @@ install-localstatedir:
- endif
- 
- 
--install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
-+install: all $(if $(BUILD_DOCS),install-doc) install-datadir
- ifneq ($(TOOLS),)
- 	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
- endif
diff --git a/pkgs/tools/security/afl/qemu-patches/syscall-glibc2_30.diff b/pkgs/tools/security/afl/qemu-patches/syscall-glibc2_30.diff
deleted file mode 100644
index aa2950bf157c7..0000000000000
--- a/pkgs/tools/security/afl/qemu-patches/syscall-glibc2_30.diff
+++ /dev/null
@@ -1,51 +0,0 @@
---- qemu-2.10.0-clean/linux-user/syscall.c	2020-03-12 18:47:47.898592169 +0100
-+++ qemu-2.10.0/linux-user/syscall.c	2020-03-13 09:13:42.461809699 +0100
-@@ -34,6 +34,7 @@
- #include <sys/resource.h>
- #include <sys/swap.h>
- #include <linux/capability.h>
-+#include <linux/sockios.h> // https://lkml.org/lkml/2019/6/3/988
- #include <sched.h>
- #include <sys/timex.h>
- #ifdef __ia64__
-@@ -256,7 +257,9 @@ static type name (type1 arg1,type2 arg2,
- #endif
- 
- #ifdef __NR_gettid
--_syscall0(int, gettid)
-+// taken from https://patchwork.kernel.org/patch/10862231/
-+#define __NR_sys_gettid __NR_gettid
-+_syscall0(int, sys_gettid)
- #else
- /* This is a replacement for the host gettid() and must return a host
-    errno. */
-@@ -6219,7 +6222,7 @@ static void *clone_func(void *arg)
-     cpu = ENV_GET_CPU(env);
-     thread_cpu = cpu;
-     ts = (TaskState *)cpu->opaque;
--    info->tid = gettid();
-+    info->tid = sys_gettid();
-     task_settid(ts);
-     if (info->child_tidptr)
-         put_user_u32(info->tid, info->child_tidptr);
-@@ -6363,9 +6366,9 @@ static int do_fork(CPUArchState *env, un
-                mapping.  We can't repeat the spinlock hack used above because
-                the child process gets its own copy of the lock.  */
-             if (flags & CLONE_CHILD_SETTID)
--                put_user_u32(gettid(), child_tidptr);
-+                put_user_u32(sys_gettid(), child_tidptr);
-             if (flags & CLONE_PARENT_SETTID)
--                put_user_u32(gettid(), parent_tidptr);
-+                put_user_u32(sys_gettid(), parent_tidptr);
-             ts = (TaskState *)cpu->opaque;
-             if (flags & CLONE_SETTLS)
-                 cpu_set_tls (env, newtls);
-@@ -11402,7 +11405,7 @@ abi_long do_syscall(void *cpu_env, int n
-         break;
- #endif
-     case TARGET_NR_gettid:
--        ret = get_errno(gettid());
-+        ret = get_errno(sys_gettid());
-         break;
- #ifdef TARGET_NR_readahead
-     case TARGET_NR_readahead:
diff --git a/pkgs/tools/security/afl/qemu.nix b/pkgs/tools/security/afl/qemu.nix
deleted file mode 100644
index 845d9fa3e6f15..0000000000000
--- a/pkgs/tools/security/afl/qemu.nix
+++ /dev/null
@@ -1,77 +0,0 @@
-{ lib, stdenv, fetchurl, afl, python2, zlib, pkg-config, glib, perl
-, texinfo, libuuid, flex, bison, pixman, autoconf
-}:
-
-let
-  cpuTarget = if stdenv.hostPlatform.system == "x86_64-linux" then "x86_64-linux-user"
-    else if stdenv.hostPlatform.system == "i686-linux" then "i386-linux-user"
-    else throw "afl: no support for ${stdenv.hostPlatform.system}!";
-in
-stdenv.mkDerivation rec {
-  pname = "afl-qemu";
-  version = "2.10.0";
-
-  srcs = [
-    (fetchurl {
-      url = "https://download.qemu.org/qemu-${version}.tar.bz2";
-      sha256 = "0j3dfxzrzdp1w21k21fjvmakzc6lcha1rsclaicwqvbf63hkk7vy";
-    })
-    afl.src
-  ];
-
-  sourceRoot = "qemu-${version}";
-
-  postUnpack = ''
-    cp ${afl.src.name}/types.h $sourceRoot/afl-types.h
-    substitute ${afl.src.name}/config.h $sourceRoot/afl-config.h \
-      --replace "types.h" "afl-types.h"
-    substitute ${afl.src.name}/qemu_mode/patches/afl-qemu-cpu-inl.h $sourceRoot/afl-qemu-cpu-inl.h \
-      --replace "../../config.h" "afl-config.h"
-    substituteInPlace ${afl.src.name}/qemu_mode/patches/cpu-exec.diff \
-      --replace "../patches/afl-qemu-cpu-inl.h" "afl-qemu-cpu-inl.h"
-  '';
-
-  nativeBuildInputs = [
-    python2 perl pkg-config flex bison autoconf texinfo
-  ];
-
-  buildInputs = [
-    zlib glib pixman libuuid
-  ];
-
-  enableParallelBuilding = true;
-
-  patches = [
-    # patches extracted from afl source
-    "../${afl.src.name}/qemu_mode/patches/cpu-exec.diff"
-    "../${afl.src.name}/qemu_mode/patches/elfload.diff"
-    "../${afl.src.name}/qemu_mode/patches/syscall.diff"
-    "../${afl.src.name}/qemu_mode/patches/configure.diff"
-    "../${afl.src.name}/qemu_mode/patches/memfd.diff"
-    # nix-specific patches to make installation more well-behaved
-    ./qemu-patches/no-etc-install.patch
-    # patch for fixing qemu build on glibc >= 2.30
-    ./qemu-patches/syscall-glibc2_30.diff
-  ];
-
-  configureFlags =
-    [ "--disable-system"
-      "--enable-linux-user"
-      "--disable-gtk"
-      "--disable-sdl"
-      "--disable-vnc"
-      "--disable-kvm"
-      "--target-list=${cpuTarget}"
-      "--enable-pie"
-      "--sysconfdir=/etc"
-      "--localstatedir=/var"
-    ];
-
-  meta = with lib; {
-    homepage = "https://www.qemu.org/";
-    description = "Fork of QEMU with AFL instrumentation support";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ thoughtpolice ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/tools/security/cnquery/default.nix b/pkgs/tools/security/cnquery/default.nix
index f8f1467074bea..a5dafec184fd5 100644
--- a/pkgs/tools/security/cnquery/default.nix
+++ b/pkgs/tools/security/cnquery/default.nix
@@ -6,18 +6,18 @@
 
 buildGoModule rec {
   pname = "cnquery";
-  version = "10.12.2";
+  version = "11.0.2";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnquery";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TqbE94JmewkYxulF8ePKxQLb2NvQ6FNpfqqedtYM4aY=";
+    hash = "sha256-hWZXt9hUK0IXnmqKvKdowR42NVu+guMPW3krzgI1KqU=";
   };
 
   subPackages = [ "apps/cnquery" ];
 
-  vendorHash = "sha256-dS62XJFdL3Js2i6JwksvU8hEme6+6NojfjdzUZnY1wI=";
+  vendorHash = "sha256-Q1Wz3zHow4UeqgZVP9s9xHuLwrG2LE/tsDUdgs6xMNo=";
 
   ldflags = [
     "-w"
diff --git a/pkgs/tools/security/exploitdb/default.nix b/pkgs/tools/security/exploitdb/default.nix
index 5c3019eb7979f..20bc244781a4d 100644
--- a/pkgs/tools/security/exploitdb/default.nix
+++ b/pkgs/tools/security/exploitdb/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2024-04-20";
+  version = "2024-04-22";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
     repo = "exploitdb";
     rev = "refs/tags/${version}";
-    hash = "sha256-mz82w3maizWnaWcBqMFYgCNN9uwhSgo9D4j+XCvZDW0=";
+    hash = "sha256-lWWAZwoUFA54uy0qo4H5+MgSv7tYJOerU9X3Or+AhSg=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix
index 927059a248fcf..7d9a7b4bc02b9 100644
--- a/pkgs/tools/security/grype/default.nix
+++ b/pkgs/tools/security/grype/default.nix
@@ -9,13 +9,13 @@
 
 buildGoModule rec {
   pname = "grype";
-  version = "0.76.0";
+  version = "0.77.0";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = "grype";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FdxtJVLeH7UQBYjoOuimCoswvIkz/2sBJ4Kn5NGBDWY=";
+    hash = "sha256-EnAMAmoP8rbkOkdPPxkN14lOPVYPqVpmaekfXBboeyI=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
diff --git a/pkgs/tools/security/osv-scanner/default.nix b/pkgs/tools/security/osv-scanner/default.nix
index e51ce66ad0240..70393cb9aad8c 100644
--- a/pkgs/tools/security/osv-scanner/default.nix
+++ b/pkgs/tools/security/osv-scanner/default.nix
@@ -4,18 +4,19 @@
 , testers
 , osv-scanner
 }:
+
 buildGoModule rec {
   pname = "osv-scanner";
-  version = "1.7.1";
+  version = "1.7.2";
 
   src = fetchFromGitHub {
     owner = "google";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-JlTD8el4hXVYI76+cxGNemkUu0n2QxCqisr6R9aPqdI=";
+    repo = "osv-scanner";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-UE6iCvv/ByODZX+FoLvIw+EeyISWFkHb4xK5L33w1hU=";
   };
 
-  vendorHash = "sha256-J5qLs4EirBOfjnLv8eQBSd9w9nzpxBW5GS28CgQMsN8=";
+  vendorHash = "sha256-c/Wjhpa7upSRMaU+rheGF9dbvK0MQe3ZmPLpR5bRiUI=";
 
   subPackages = [
     "cmd/osv-scanner"
@@ -24,9 +25,9 @@ buildGoModule rec {
   ldflags = [
     "-s"
     "-w"
-    "-X github.com/google/osv-scanner/internal/version.OSVVersion=${version}"
-    "-X main.commit=n/a"
-    "-X main.date=1970-01-01T00:00:00Z"
+    "-X=github.com/google/osv-scanner/internal/version.OSVVersion=${version}"
+    "-X=main.commit=n/a"
+    "-X=main.date=1970-01-01T00:00:00Z"
   ];
 
   # Tests require network connectivity to query https://api.osv.dev.
diff --git a/pkgs/tools/security/rbw/default.nix b/pkgs/tools/security/rbw/default.nix
index 22efd33c6abe1..929282d51276f 100644
--- a/pkgs/tools/security/rbw/default.nix
+++ b/pkgs/tools/security/rbw/default.nix
@@ -25,14 +25,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rbw";
-  version = "1.9.0";
+  version = "1.10.0";
 
   src = fetchzip {
     url = "https://git.tozt.net/rbw/snapshot/rbw-${version}.tar.gz";
-    sha256 = "sha256-NjMH99rmJYbCxDdc7e0iOFoslSrIuwIBxuHxADp0Ks4=";
+    hash = "sha256-uJ1QLEaab/Vb5GiAmbwjve3Y/3SM2XbNTRTvl2vPDYc=";
   };
 
-  cargoHash = "sha256-AH35v61FgUQe9BwDgVnXwoVTSQduxeMbXWy4ga3WU3k=";
+  cargoHash = "sha256-tDgkANbUmNLe3us+05gD9IS0f+RTQBXTGvuz2cr2zYY=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/pkgs/tools/security/snow/default.nix b/pkgs/tools/security/snow/default.nix
index dbea144cb1ba6..5e7cb013a4edc 100644
--- a/pkgs/tools/security/snow/default.nix
+++ b/pkgs/tools/security/snow/default.nix
@@ -9,7 +9,9 @@ stdenv.mkDerivation rec {
     sha256 = "0r9q45y55z4i0askkxmxrx0jr1620ypd870vz0hx2a6n9skimdy0";
   };
 
-  makeFlags = [ "CFLAGS=-O2" ];
+  preBuild = ''
+    makeFlagsArray+=(CFLAGS="-O2 -std=c89")
+  '';
 
   installPhase = ''
     install -Dm755 snow -t $out/bin
diff --git a/pkgs/tools/security/step-cli/default.nix b/pkgs/tools/security/step-cli/default.nix
index 2afbec7f9069d..0b7271b5b67a2 100644
--- a/pkgs/tools/security/step-cli/default.nix
+++ b/pkgs/tools/security/step-cli/default.nix
@@ -32,7 +32,7 @@ buildGoModule rec {
     homepage = "https://smallstep.com/cli/";
     changelog = "https://github.com/smallstep/cli/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ xfix ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux ++ platforms.darwin;
     mainProgram = "step";
   };
diff --git a/pkgs/tools/system/gdu/default.nix b/pkgs/tools/system/gdu/default.nix
index 9e84f2d8edfe4..19389acd4e143 100644
--- a/pkgs/tools/system/gdu/default.nix
+++ b/pkgs/tools/system/gdu/default.nix
@@ -1,28 +1,27 @@
-{ lib
-, stdenv
-, buildGoModule
-, fetchFromGitHub
-, installShellFiles
-, testers
-, gdu
+{
+  lib,
+  stdenv,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  testers,
+  gdu,
 }:
 
 buildGoModule rec {
   pname = "gdu";
-  version = "5.27.0";
+  version = "5.28.0";
 
   src = fetchFromGitHub {
     owner = "dundee";
     repo = "gdu";
     rev = "refs/tags/v${version}";
-    hash = "sha256-hQyvYLegGimYTRz0J/2tmaC6N4LfjB1ivWgN29DwNhA=";
+    hash = "sha256-HfWJVO62UeKE513fq1PaXyaldmrnQ/Fh5bXWSa0xGls=";
   };
 
-  vendorHash = "sha256-weNcJjofI7Aoy0Eya0KprXHAn7aTA0rQJYrJ4+t65hI=";
+  vendorHash = "sha256-SlVJDb24txy7DPsL0cG7LeGUjngXaUQ1SusgBfgf4PE=";
 
-  nativeBuildInputs = [
-    installShellFiles
-  ];
+  nativeBuildInputs = [ installShellFiles ];
 
   ldflags = [
     "-s"
@@ -41,9 +40,7 @@ buildGoModule rec {
 
   doCheck = !stdenv.isDarwin;
 
-  passthru.tests.version = testers.testVersion {
-    package = gdu;
-  };
+  passthru.tests.version = testers.testVersion { package = gdu; };
 
   meta = with lib; {
     description = "Disk usage analyzer with console interface";
@@ -55,7 +52,10 @@ buildGoModule rec {
     homepage = "https://github.com/dundee/gdu";
     changelog = "https://github.com/dundee/gdu/releases/tag/v${version}";
     license = with licenses; [ mit ];
-    maintainers = with maintainers; [ fab zowoq ];
+    maintainers = with maintainers; [
+      fab
+      zowoq
+    ];
     mainProgram = "gdu";
   };
 }
diff --git a/pkgs/tools/text/ov/default.nix b/pkgs/tools/text/ov/default.nix
index d74d4bc061826..e0ccf023a5ae7 100644
--- a/pkgs/tools/text/ov/default.nix
+++ b/pkgs/tools/text/ov/default.nix
@@ -10,16 +10,16 @@
 
 buildGoModule rec {
   pname = "ov";
-  version = "0.33.3";
+  version = "0.34.0";
 
   src = fetchFromGitHub {
     owner = "noborus";
     repo = "ov";
     rev = "refs/tags/v${version}";
-    hash = "sha256-dKAZ8rcm1J3jRfOyLz74YuVv0hZ3iWXR1slBTu5CtYU=";
+    hash = "sha256-2Qk94xaDD+O8jO7Pq1MUWieEjUlVLxYxMMcsrEUwP4M=";
   };
 
-  vendorHash = "sha256-6Ik//r6JJ2n9lXr6JZ6BGIIL7yXXray+flEwQ0IKyA4=";
+  vendorHash = "sha256-USMDIgB4LhI4kzSg2kkCXfbN9t49WEg0fUtAcZkngac=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/text/vale/default.nix b/pkgs/tools/text/vale/default.nix
index 9fa3c12ccc88a..5bb73a50f9e64 100644
--- a/pkgs/tools/text/vale/default.nix
+++ b/pkgs/tools/text/vale/default.nix
@@ -1,11 +1,18 @@
-{ lib, buildGoModule, fetchFromGitHub }:
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, makeBinaryWrapper
+, runCommand
+, symlinkJoin
+, vale
+, valeStyles
+}:
 
 buildGoModule rec {
   pname = "vale";
   version = "3.4.1";
 
   subPackages = [ "cmd/vale" ];
-  outputs = [ "out" "data" ];
 
   src = fetchFromGitHub {
     owner = "errata-ai";
@@ -16,18 +23,29 @@ buildGoModule rec {
 
   vendorHash = "sha256-HMzFLSmO6sBDNU89UoIvHcPPd3ubpti2ii4sFMKUDmI=";
 
-  postInstall = ''
-    mkdir -p $data/share/vale
-    cp -r testdata/styles $data/share/vale
-  '';
-
   ldflags = [ "-s" "-w" "-X main.version=${version}" ];
 
   # Tests require network access
   doCheck = false;
 
+  passthru.withStyles = selector: symlinkJoin {
+    name = "vale-with-styles-${vale.version}";
+    paths = [ vale ] ++ selector valeStyles;
+    nativeBuildInputs = [ makeBinaryWrapper ];
+    postBuild = ''
+      wrapProgram "$out/bin/vale" \
+        --set VALE_STYLES_PATH "$out/share/vale/styles/"
+    '';
+  };
+
   meta = with lib; {
     description = "A syntax-aware linter for prose built with speed and extensibility in mind";
+    longDescription = ''
+      Vale in Nixpkgs offers the helper `.withStyles` allow you to install it
+      predefined styles:
+
+          vale.withStyles (s: [ s.alex s.google ])
+    '';
     homepage = "https://vale.sh/";
     changelog = "https://github.com/errata-ai/vale/releases/tag/v${version}";
     mainProgram = "vale";
diff --git a/pkgs/tools/text/vale/styles.nix b/pkgs/tools/text/vale/styles.nix
new file mode 100644
index 0000000000000..f2513289a5488
--- /dev/null
+++ b/pkgs/tools/text/vale/styles.nix
@@ -0,0 +1,144 @@
+{ lib, stdenvNoCC, fetchFromGitHub, fetchzip, nix-update-script }:
+
+let
+  buildStyle =
+    { name
+    , stylePath ? name
+    , ...
+    }@args:
+    stdenvNoCC.mkDerivation ({
+      pname = "vale-style-${lib.toLower name}";
+
+      dontConfigure = true;
+      dontBuild = true;
+      doCheck = false;
+      dontFixup = true;
+
+      installPhase = ''
+        runHook preInstall
+        mkdir -p $out/share/vale/styles
+        cp -R ${stylePath} "$out/share/vale/styles/${name}"
+        runHook postInstall
+      '';
+
+      passthru.updateScript = nix-update-script { };
+
+      meta = {
+        platforms = lib.platforms.all;
+        maintainers = with lib.maintainers; [ katexochen ];
+      } // (args.meta or { });
+    } // removeAttrs args [ "meta" "name" ]);
+in
+{
+  alex = buildStyle rec {
+    name = "alex";
+    version = "0.2.1";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "alex";
+      rev = "v${version}";
+      hash = "sha256-xNF7se2FwKgNe5KYx/zvGWpIwBsBADYGH4JV1lUww+Q=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of the guidelines enforced by the alex linter";
+      homepage = "https://github.com/errata-ai/alex";
+      license = lib.licenses.mit;
+    };
+  };
+
+  google = buildStyle rec {
+    name = "Google";
+    version = "0.6.0";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "Google";
+      rev = "v${version}";
+      hash = "sha256-TQS/hgS6tEWPSuZpEbX65MdYSE/+HJVcnzIuQbhIG2M=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of the Google Developer Documentation Style Guide";
+      homepage = "https://github.com/errata-ai/Google";
+      license = lib.licenses.mit;
+    };
+  };
+
+  joblint = buildStyle rec {
+    name = "Joblint";
+    version = "0.4.1";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "Joblint";
+      rev = "v${version}";
+      hash = "sha256-zRz5ThOg5RLTZj3dYPe0PDvOF5DjO31lduSpi2Us87U=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of the Joblint linter";
+      homepage = "https://github.com/errata-ai/Joblint";
+      license = lib.licenses.mit;
+    };
+  };
+
+  microsoft = buildStyle rec {
+    name = "Microsoft";
+    version = "0.14.0";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "Microsoft";
+      rev = "v${version}";
+      hash = "sha256-22rGNLZOsWYQ+H3CcM2b1zOXV3kNPcgYqDpaCg1iv9o=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of the Microsoft Writing Style Guide";
+      homepage = "https://github.com/errata-ai/Microsoft";
+      license = lib.licenses.mit;
+    };
+  };
+
+  proselint = buildStyle rec {
+    name = "proselint";
+    version = "0.3.3";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "proselint";
+      rev = "v${version}";
+      hash = "sha256-faeWr1bRhnKsycJY89WqnRv8qIowUmz3EQvDyjtl63w=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of Python's proselint linter";
+      homepage = "https://github.com/errata-ai/proselint";
+      license = lib.licenses.bsd3;
+    };
+  };
+
+  readability = buildStyle rec {
+    name = "Readability";
+    version = "0.1.1";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "readability";
+      rev = "v${version}";
+      hash = "sha256-5Y9v8QsZjC2w3/pGIcL5nBdhpogyJznO5IFa0s8VOOI=";
+    };
+    meta = {
+      description = "Vale-compatible implementations of many popular \"readability\" metrics";
+      homepage = "https://github.com/errata-ai/readability";
+      license = lib.licenses.mit;
+    };
+  };
+
+  write-good = buildStyle rec {
+    name = "write-good";
+    version = "0.4.0";
+    src = fetchFromGitHub {
+      owner = "errata-ai";
+      repo = "write-good";
+      rev = "v${version}";
+      hash = "sha256-KQzY6MeHV/owPVmUAfzGUO0HmFPkD7wdQqOvBkipwP8=";
+    };
+    meta = {
+      description = "A Vale-compatible implementation of the write-good linter";
+      homepage = "https://github.com/errata-ai/write-good";
+      license = lib.licenses.mit;
+    };
+  };
+}
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index 06449d8ff1c53..af810aa51d316 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -8,7 +8,7 @@
 , makeWrapper, shortenPerlShebang, useFixedHashes, asymptote
 , biber-ms
 , tlpdb
-}:
+}@args:
 
 # Useful resource covering build options:
 # http://tug.org/texlive/doc/tlbuild.html
@@ -420,7 +420,28 @@ pygmentex = python3Packages.buildPythonApplication rec {
   };
 };
 
-inherit asymptote;
+asymptote = args.asymptote.overrideAttrs (finalAttrs: prevAttrs: {
+  version = texlive.pkgs.asymptote.version;
+
+  # keep local src and patches even if duplicated in the top level asymptote
+  # so that top level updates do not break texlive
+  src = fetchurl {
+    url = "mirror://sourceforge/asymptote/${finalAttrs.version}/asymptote-${finalAttrs.version}.src.tgz";
+    hash = "sha256-DecadD+m7pORuH3Sdcs/5M3vUbN6rhSkFoNN0Soq9bs=";
+  };
+
+  texContainer = texlive.pkgs.asymptote.tex;
+  texdocContainer = texlive.pkgs.asymptote.texdoc;
+
+  patches = [
+    (fetchpatch {
+      # partial fix for macOS XDR/V3D support (LDFLAGS change seems like an unrelated bugfix)
+      name = "restore-LDFLAGS-dont-look-for-tirpc-under-MacOS.patch";
+      url = "https://github.com/vectorgraphics/asymptote/commit/7e17096b22d18d133d1bc5916b6e32c0cb24ad10.patch";
+      hash = "sha256-olCFzqfZwWOAjqlB5lDPXYRHU9i3VQNgoR0cO5TmW98=";
+    })
+  ];
+});
 
 inherit biber;
 inherit biber-ms;
@@ -499,23 +520,23 @@ xindy = stdenv.mkDerivation {
   postPatch = ''
     substituteInPlace xindy-*/user-commands/xindy.in \
       --replace-fail "our \$clisp = ( \$is_windows ? 'clisp.exe' : 'clisp' ) ;" \
-                     "our \$clisp = '$(type -P clisp)';"
+                     "our \$clisp = '$(type -P clisp)';" \
+      --replace-fail 'die "$cmd: Cannot locate xindy modules directory";' \
+                     '$modules_dir = "${texlive.pkgs.xindy.tex}/xindy/modules"; die "$cmd: Cannot locate xindy modules directory" unless -d $modules_dir;'
   '';
 
   nativeBuildInputs = [
     pkg-config perl
-    (texlive.combine { inherit (texlive) scheme-basic cyrillic ec; })
   ];
   buildInputs = [ clisp libiconv perl ];
 
-  configureFlags = [ "--with-clisp-runtime=system" "--disable-xindy-docs" ];
+  configureFlags = [ "--with-clisp-runtime=system" "--disable-xindy-docs" "--disable-xindy-rules" ];
 
   preInstall = ''mkdir -p "$out/bin" '';
   # fixup various file-location errors of: lib/xindy/{xindy.mem,modules/}
   postInstall = ''
     mkdir -p "$out/lib/xindy"
     mv "$out"/{bin/xindy.mem,lib/xindy/}
-    ln -s ../../share/texmf-dist/xindy/modules "$out/lib/xindy/"
   '';
 };
 
diff --git a/pkgs/tools/typesetting/tex/texpresso/default.nix b/pkgs/tools/typesetting/tex/texpresso/default.nix
index ccbc43a1c6151..e2e244ceda69d 100644
--- a/pkgs/tools/typesetting/tex/texpresso/default.nix
+++ b/pkgs/tools/typesetting/tex/texpresso/default.nix
@@ -17,7 +17,7 @@
 
 stdenv.mkDerivation rec {
   pname = "texpresso";
-  version = "0-unstable-2024-04-08";
+  version = "0-unstable-2024-04-18";
 
   nativeBuildInputs = [
     makeWrapper
@@ -35,8 +35,8 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "let-def";
     repo = "texpresso";
-    rev = "9db77502f238c75ef03ce94f34cc5170d0b2a833";
-    hash = "sha256-YK4+GqjBjKui4J7YkNyeF1GyquMQMLMhp9o5u4Z8Bmc=";
+    rev = "62b2b5913420d92bb2863d9c92ac2072f7aaa5f9";
+    hash = "sha256-kVGRuFVkJvQfl1bEjBU0pyx+SB+k5yI9C6XFiKZRpLQ=";
   };
 
   buildFlags = [ "texpresso" ];
diff --git a/pkgs/tools/video/lux/default.nix b/pkgs/tools/video/lux/default.nix
index ecd0ae17c558b..7d1c969959a6f 100644
--- a/pkgs/tools/video/lux/default.nix
+++ b/pkgs/tools/video/lux/default.nix
@@ -7,18 +7,18 @@
 
 buildGoModule rec {
   pname = "lux";
-  version = "0.23.0";
+  version = "0.24.0";
 
   src = fetchFromGitHub {
     owner = "iawia002";
     repo = "lux";
     rev = "v${version}";
-    hash = "sha256-lZrsrBO3sAn4wAMMgxrVwky7HmKxnQQcLe1POYTAmoE=";
+    hash = "sha256-FwHoxTcEr0u7GPSdl1A8gsx9GCb9QuD/5ospaPOxZrI=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
 
-  vendorHash = "sha256-1VZFKDoSuSUmYw7g6SwB/dXnFaw7+cGHKfgT96HaI/o=";
+  vendorHash = "sha256-RCZzcycUKqJgwBZZQBD1UEZCZCitpiqNpD51oKm6IvI=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/tools/virtualization/cri-tools/default.nix b/pkgs/tools/virtualization/cri-tools/default.nix
index 70991742e789d..f59e0d2730eb5 100644
--- a/pkgs/tools/virtualization/cri-tools/default.nix
+++ b/pkgs/tools/virtualization/cri-tools/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "cri-tools";
-  version = "1.29.0";
+  version = "1.30.0";
 
   src = fetchFromGitHub {
     owner = "kubernetes-sigs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-64vjN0tm6P+nXjrNPeTviXOQdibuH7YbQm/LjYLxatM=";
+    hash = "sha256-MuyXcdV29sLn9Vt0WE31nXtY9ofjEC0b5zSrmGXR0mw=";
   };
 
   vendorHash = null;
diff --git a/pkgs/tools/wayland/clipman/default.nix b/pkgs/tools/wayland/clipman/default.nix
index b1641d16051a7..a00c9cc58dec6 100644
--- a/pkgs/tools/wayland/clipman/default.nix
+++ b/pkgs/tools/wayland/clipman/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "clipman";
-  version = "1.6.3";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "chmouel";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-htMApyGuDCjQR+2pgi6KPk+K+GbO63fJWFxl9GW8yfg=";
+    sha256 = "sha256-kuW74iUVLfIUWf3gaKM7IuMU1nfpU9SbSsfeZDbYGhY=";
   };
 
-  vendorHash = "sha256-Z/sVCJz/igPDdeczC6pemLub6X6z4ZGlBwBmRsEnXKI=";
+  vendorHash = "sha256-I1RWyjyOfppGi+Z5nvAei5zEvl0eQctcH8NP0MYSTbg=";
 
   outputs = [ "out" "man" ];