about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix6
-rw-r--r--pkgs/applications/audio/spotify/linux.nix7
-rw-r--r--pkgs/applications/blockchains/lndhub-go/default.nix4
-rw-r--r--pkgs/applications/editors/android-studio/common.nix2
-rwxr-xr-xpkgs/applications/editors/android-studio/update.sh68
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/elpa-devel-generated.nix6
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix20
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix20
-rw-r--r--pkgs/applications/editors/emacs/sources.nix6
-rw-r--r--pkgs/applications/editors/jetbrains/plugins/plugins.json161
-rw-r--r--pkgs/applications/editors/ldtk/default.nix2
-rw-r--r--pkgs/applications/editors/vim/plugins/generated.nix24
-rwxr-xr-xpkgs/applications/editors/vim/plugins/nvim-treesitter/update.py2
-rw-r--r--pkgs/applications/editors/vim/plugins/overrides.nix7
-rw-r--r--pkgs/applications/editors/vim/plugins/vim-plugin-names2
-rw-r--r--pkgs/applications/graphics/ImageMagick/default.nix13
-rw-r--r--pkgs/applications/graphics/monado/default.nix10
-rw-r--r--pkgs/applications/graphics/monado/force-enable-steamvr_lh.patch12
-rw-r--r--pkgs/applications/logging/sosreport/default.nix4
-rw-r--r--pkgs/applications/misc/lscolors/default.nix6
-rw-r--r--pkgs/applications/misc/tuba/default.nix23
-rw-r--r--pkgs/applications/networking/cluster/linkerd/edge.nix6
-rw-r--r--pkgs/applications/networking/ktailctl/default.nix24
-rw-r--r--pkgs/applications/networking/ktailctl/install-missing-libraries.diff9
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/packages.nix4
-rw-r--r--pkgs/applications/networking/soapui/default.nix29
-rw-r--r--pkgs/applications/science/logic/klee/default.nix58
-rw-r--r--pkgs/applications/science/logic/klee/klee-uclibc.nix32
-rw-r--r--pkgs/applications/video/kodi/addons/future/default.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix4
-rw-r--r--pkgs/applications/video/obs-studio/plugins/obs-teleport/default.nix6
-rw-r--r--pkgs/applications/video/webtorrent_desktop/default.nix14
-rw-r--r--pkgs/applications/virtualization/crosvm/default.nix11
-rw-r--r--pkgs/applications/window-managers/e16/default.nix4
-rw-r--r--pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh13
-rw-r--r--pkgs/by-name/al/alertmanager-webhook-logger/package.nix33
-rw-r--r--pkgs/by-name/at/atlauncher/package.nix4
-rw-r--r--pkgs/by-name/be/beekeeper-studio/package.nix15
-rw-r--r--pkgs/by-name/bo/boxbuddy/package.nix8
-rw-r--r--pkgs/by-name/ch/chezmoi/package.nix6
-rw-r--r--pkgs/by-name/de/devenv/package.nix2
-rw-r--r--pkgs/by-name/ge/gerbolyze/package.nix20
-rw-r--r--pkgs/by-name/gh/gh-gei/deps.nix37
-rw-r--r--pkgs/by-name/gh/gh-gei/package.nix27
-rw-r--r--pkgs/by-name/gp/gpsprune/package.nix4
-rw-r--r--pkgs/by-name/gp/gpt4all/package.nix2
-rw-r--r--pkgs/by-name/ja/jan/package.nix2
-rw-r--r--pkgs/by-name/ku/kubectl-validate/package.nix7
-rw-r--r--pkgs/by-name/le/lefthook/package.nix4
-rw-r--r--pkgs/by-name/mi/miru/darwin.nix33
-rw-r--r--pkgs/by-name/mi/miru/linux.nix31
-rw-r--r--pkgs/by-name/mi/miru/package.nix43
-rw-r--r--pkgs/by-name/np/npm-lockfile-fix/package.nix3
-rw-r--r--pkgs/by-name/pa/panvimdoc/package.nix50
-rw-r--r--pkgs/by-name/pd/pdftitle/package.nix37
-rw-r--r--pkgs/by-name/pr/protoc-gen-connect-es/package.nix39
-rwxr-xr-xpkgs/by-name/pr/protoc-gen-connect-es/update.sh30
-rw-r--r--pkgs/by-name/pr/protoc-gen-es/package.nix44
-rwxr-xr-xpkgs/by-name/pr/protoc-gen-es/update.sh30
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost-crate/package.nix (renamed from pkgs/development/tools/protoc-gen-prost-crate/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost-serde/package.nix (renamed from pkgs/development/tools/protoc-gen-prost-serde/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-prost/package.nix (renamed from pkgs/development/tools/protoc-gen-prost/default.nix)22
-rw-r--r--pkgs/by-name/pr/protoc-gen-tonic/package.nix (renamed from pkgs/development/tools/protoc-gen-tonic/default.nix)22
-rw-r--r--pkgs/by-name/qu/quarkus/package.nix4
-rw-r--r--pkgs/by-name/qu/quickemu/package.nix21
-rw-r--r--pkgs/by-name/rc/rclip/package.nix4
-rw-r--r--pkgs/by-name/so/solo5/package.nix6
-rw-r--r--pkgs/by-name/sp/spip/package.nix67
-rw-r--r--pkgs/by-name/st/stalwart-mail/package.nix4
-rw-r--r--pkgs/by-name/su/substudy/Cargo.lock4781
-rw-r--r--pkgs/by-name/su/substudy/package.nix52
-rw-r--r--pkgs/by-name/sv/svix-cli/package.nix39
-rw-r--r--pkgs/by-name/te/technitium-dns-server/package.nix8
-rw-r--r--pkgs/by-name/te/tenv/package.nix6
-rw-r--r--pkgs/by-name/vi/victoriametrics/package.nix79
-rw-r--r--pkgs/by-name/vm/vmagent/package.nix12
-rw-r--r--pkgs/common-updater/generic-updater.nix25
-rw-r--r--pkgs/development/androidndk-pkgs/default.nix76
-rw-r--r--pkgs/development/interpreters/babashka/clojure-tools.nix4
-rw-r--r--pkgs/development/interpreters/babashka/default.nix4
-rw-r--r--pkgs/development/libraries/db/db-4.8.nix6
-rw-r--r--pkgs/development/libraries/db/generic.nix5
-rw-r--r--pkgs/development/libraries/gtest/default.nix24
-rw-r--r--pkgs/development/libraries/libva-vdpau-driver/default.nix (renamed from pkgs/development/libraries/vaapi-vdpau/default.nix)0
-rw-r--r--pkgs/development/libraries/pugixml/default.nix4
-rw-r--r--pkgs/development/python-modules/aioraven/default.nix8
-rw-r--r--pkgs/development/python-modules/amaranth-boards/default.nix4
-rw-r--r--pkgs/development/python-modules/bdffont/default.nix27
-rw-r--r--pkgs/development/python-modules/character-encoding-utils/default.nix23
-rw-r--r--pkgs/development/python-modules/coffea/default.nix10
-rw-r--r--pkgs/development/python-modules/dask-expr/default.nix4
-rw-r--r--pkgs/development/python-modules/dask/default.nix24
-rw-r--r--pkgs/development/python-modules/distributed/default.nix8
-rw-r--r--pkgs/development/python-modules/drawsvg/default.nix4
-rw-r--r--pkgs/development/python-modules/eigenpy/default.nix15
-rw-r--r--pkgs/development/python-modules/hatch-regex-commit/default.nix46
-rw-r--r--pkgs/development/python-modules/pcffont/default.nix26
-rw-r--r--pkgs/development/python-modules/pixel-font-builder/default.nix38
-rw-r--r--pkgs/development/python-modules/private-gpt/default.nix2
-rw-r--r--pkgs/development/python-modules/pygame-gui/default.nix4
-rw-r--r--pkgs/development/python-modules/pyloadapi/default.nix58
-rw-r--r--pkgs/development/python-modules/pymilter/default.nix29
-rw-r--r--pkgs/development/python-modules/pyside6/default.nix21
-rw-r--r--pkgs/development/python-modules/pyside6/qt-6.7.1.patch87
-rw-r--r--pkgs/development/python-modules/rfc8785/default.nix40
-rw-r--r--pkgs/development/python-modules/shiboken6/default.nix48
-rw-r--r--pkgs/development/python-modules/slackclient/default.nix4
-rw-r--r--pkgs/development/python-modules/textual/default.nix4
-rw-r--r--pkgs/development/python-modules/unidata-blocks/default.nix22
-rw-r--r--pkgs/development/python-modules/yalexs/default.nix4
-rw-r--r--pkgs/development/rocm-modules/5/clr/default.nix4
-rw-r--r--pkgs/development/rocm-modules/6/clr/default.nix4
-rw-r--r--pkgs/development/tools/analysis/lcov/default.nix61
-rw-r--r--pkgs/development/tools/coder/default.nix20
-rw-r--r--pkgs/development/tools/codespell/default.nix8
-rw-r--r--pkgs/development/tools/language-servers/csharp-ls/default.nix4
-rw-r--r--pkgs/development/tools/language-servers/neocmakelsp/default.nix6
-rw-r--r--pkgs/development/tools/protoc-gen-dart/default.nix2
-rwxr-xr-xpkgs/development/tools/protoc-gen-dart/update.sh33
-rw-r--r--pkgs/development/tools/rye/Cargo.lock2
-rw-r--r--pkgs/development/tools/rye/default.nix18
-rw-r--r--pkgs/games/path-of-building/default.nix69
-rw-r--r--pkgs/misc/drivers/epson-escpr2/default.nix6
-rw-r--r--pkgs/os-specific/linux/selinux-python/default.nix1
-rw-r--r--pkgs/os-specific/linux/selinux-sandbox/default.nix1
-rw-r--r--pkgs/servers/gotify/default.nix6
-rw-r--r--pkgs/servers/home-assistant/custom-components/default.nix2
-rw-r--r--pkgs/servers/home-assistant/custom-components/spook/default.nix38
-rw-r--r--pkgs/servers/home-assistant/custom-components/spook/remove-sub-integration-symlink-hack.patch109
-rw-r--r--pkgs/servers/janus-gateway/default.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/alertmanager.nix3
-rw-r--r--pkgs/servers/monitoring/prometheus/default.nix8
-rw-r--r--pkgs/servers/monitoring/prometheus/pushgateway.nix9
-rw-r--r--pkgs/servers/monitoring/thanos/default.nix2
-rw-r--r--pkgs/servers/monitoring/vmagent/default.nix27
-rw-r--r--pkgs/servers/pocketbase/default.nix6
-rw-r--r--pkgs/servers/web-apps/bookstack/default.nix4
-rw-r--r--pkgs/servers/web-apps/bookstack/php-packages.nix144
-rw-r--r--pkgs/servers/web-apps/sogo/default.nix10
-rw-r--r--pkgs/tools/archivers/unzip/default.nix1
-rw-r--r--pkgs/tools/audio/openai-whisper-cpp/default.nix14
-rw-r--r--pkgs/tools/audio/openai-whisper-cpp/download-models.patch48
-rw-r--r--pkgs/tools/filesystems/dwarfs/default.nix68
-rw-r--r--pkgs/tools/filesystems/dwarfs/version_info.patch58
-rw-r--r--pkgs/tools/misc/immich-cli/default.nix71
-rw-r--r--pkgs/tools/misc/panoply/default.nix4
-rw-r--r--pkgs/tools/misc/wyrd/default.nix2
-rw-r--r--pkgs/tools/networking/containerlab/default.nix4
-rw-r--r--pkgs/tools/networking/haproxy/default.nix8
-rw-r--r--pkgs/tools/networking/netcat/default.nix1
-rw-r--r--pkgs/tools/package-management/nix/default.nix4
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix30
-rw-r--r--pkgs/top-level/perl-packages.nix46
-rw-r--r--pkgs/top-level/python-packages.nix8
-rw-r--r--pkgs/top-level/release-python.nix6
-rw-r--r--pkgs/top-level/release.nix8
157 files changed, 7020 insertions, 986 deletions
diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix
index 6ff0217c59ead..92ee1de47e7c7 100644
--- a/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix
+++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix
@@ -27,11 +27,11 @@
 
 stdenv.mkDerivation rec {
   pname = "bitwig-studio";
-  version = "5.1.8";
+  version = "5.1.9";
 
   src = fetchurl {
-    url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb";
-    sha256 = "sha256-KxNLae/uTYL1m/X+/7wr7hhKfw31NpB9Mw9RzfrTuus=";
+    url = "https://www.bitwig.com/dl/Bitwig%20Studio/${version}/installer_linux/";
+    hash = "sha256-J5kLqXCMnGb0ZMhES6PQIPjN51ptlBGj4Fy8qSzJ6Qg=";
   };
 
   nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook3 ];
diff --git a/pkgs/applications/audio/spotify/linux.nix b/pkgs/applications/audio/spotify/linux.nix
index 12487ef3e86e1..8886e851c3c95 100644
--- a/pkgs/applications/audio/spotify/linux.nix
+++ b/pkgs/applications/audio/spotify/linux.nix
@@ -14,14 +14,14 @@ let
   # If an update breaks things, one of those might have valuable info:
   # https://aur.archlinux.org/packages/spotify/
   # https://community.spotify.com/t5/Desktop-Linux
-  version = "1.2.31.1205.g4d59ad7c";
+  version = "1.2.37.701.ge66eb7bc";
   # To get the latest stable revision:
   # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
   # To get general information:
   # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
   # More examples of api usage:
   # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-  rev = "75";
+  rev = "76";
 
   deps = [
     alsa-lib
@@ -86,8 +86,9 @@ stdenv.mkDerivation {
   # spotify ourselves:
   # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
   src = fetchurl {
+    name = "spotify-${version}-${rev}.snap";
     url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-    hash = "sha512-o4iLcbNqbsxo9YJMy0SXO7Udv4CMhhBcsf53UuqWKFFWY/jKVN+Lb+dB7Jf9+UowpmbrP44w97Oi+dnbfFXYjQ==";
+    hash = "sha512-k7aw1QM3NCFkm0tXcHgYyeEBagGFpCL6JdWlFruJszPloiCy5vopOsD4PdqyiSEs0rSUP0rLxX2UBs3XuI5cUA==";
   };
 
   nativeBuildInputs = [ wrapGAppsHook3 makeShellWrapper squashfsTools ];
diff --git a/pkgs/applications/blockchains/lndhub-go/default.nix b/pkgs/applications/blockchains/lndhub-go/default.nix
index cb6774fdc3fc1..b4056283c50e3 100644
--- a/pkgs/applications/blockchains/lndhub-go/default.nix
+++ b/pkgs/applications/blockchains/lndhub-go/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "lndhub-go";
-  version = "1.0.0";
+  version = "1.0.1";
 
   src = fetchFromGitHub {
     owner = "getAlby";
     repo = "lndhub.go";
     rev = version;
-    sha256 = "sha256-PHBzM/lYYu6hXa5jiFQR/K5j+vmxaYH7xuoxOhFbhMk=";
+    sha256 = "sha256-YOLqMIfZSGD+AOng1XWCBlzaHkPnQc+2kmDXF2fh+ps=";
   };
 
   vendorHash = "sha256-Vo29w04cRW0syD2tjieKVeZ3srFNuEC3T17birVWn6k=";
diff --git a/pkgs/applications/editors/android-studio/common.nix b/pkgs/applications/editors/android-studio/common.nix
index 9a247d0bc870b..74f7d3c8f7a47 100644
--- a/pkgs/applications/editors/android-studio/common.nix
+++ b/pkgs/applications/editors/android-studio/common.nix
@@ -257,10 +257,12 @@ let
     passthru = let
       withSdk = androidSdk: mkAndroidStudioWrapper { inherit androidStudio androidSdk; };
     in {
+      inherit version;
       unwrapped = androidStudio;
       full = withSdk androidenv.androidPkgs.androidsdk;
       inherit withSdk;
       sdk = androidSdk;
+      updateScript = [ ./update.sh "${channel}" ];
     };
     meta = {
       description = "Official IDE for Android (${channel} channel)";
diff --git a/pkgs/applications/editors/android-studio/update.sh b/pkgs/applications/editors/android-studio/update.sh
new file mode 100755
index 0000000000000..04efbb3667540
--- /dev/null
+++ b/pkgs/applications/editors/android-studio/update.sh
@@ -0,0 +1,68 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -I nixpkgs=./. -i bash -p jq nix-prefetch-scripts
+
+set -euo pipefail
+
+DEFAULT_NIX="$(realpath "./pkgs/applications/editors/android-studio/default.nix")"
+RELEASES_JSON="$(curl --silent -L https://jb.gg/android-studio-releases-list.json)"
+
+# Available channels: Release/Patch (stable), Beta, Canary
+getLatest() {
+    local attribute="$1"
+    local channel="$2"
+    case "$channel" in
+        "stable") local select='.channel == "Release" or .channel == "Patch"' ;;
+        "beta") local select='.channel == "Beta" or .channel == "RC"' ;;
+        *) local select=".channel == \"${channel^}\"" ;;
+    esac
+    local result="$(echo "$RELEASES_JSON" \
+        | jq -r ".content.item[] | select(${select}) | [.version, .${attribute}] | join(\" \")" \
+        | sort --version-sort \
+        | cut -d' ' -f 2- \
+        | tail -n 1)"
+
+    if [[ -n "$result" ]]; then
+        echo "$result"
+    else
+        echo "could not find the latest $attribute for $channel"
+        exit 1
+    fi
+}
+
+updateChannel() {
+    local channel="$1"
+    local latestVersion="$(getLatest "version" "$channel")"
+
+    local localVersion="$(nix --extra-experimental-features nix-command eval --raw --file . androidStudioPackages."${channel}".version)"
+    if [[ "${latestVersion}" == "${localVersion}" ]]; then
+        echo "$channel is already up to date at $latestVersion"
+        return 0
+    fi
+    echo "updating $channel from $localVersion to $latestVersion"
+
+    local latestHash="$(nix-prefetch-url "https://dl.google.com/dl/android/studio/ide-zips/${latestVersion}/android-studio-${latestVersion}-linux.tar.gz")"
+    local latestSri="$(nix --extra-experimental-features nix-command hash to-sri --type sha256 "$latestHash")"
+    local localHash="$(nix --extra-experimental-features nix-command eval --raw --file . androidStudioPackages."${channel}".unwrapped.src.drvAttrs.outputHash)"
+    sed -i "s~${localHash}~${latestSri}~g" "${DEFAULT_NIX}"
+
+    # Match the formatting of default.nix: `version = "2021.3.1.14"; # "Android Studio Dolphin (2021.3.1) Beta 5"`
+    local versionString="${latestVersion}\"; # \"$(getLatest "name" "${channel}")\""
+    sed -i "s~${localVersion}.*~${versionString}~g" "${DEFAULT_NIX}"
+    echo "updated ${channel} to ${latestVersion}"
+}
+
+if (( $# == 0 )); then
+    for channel in "beta" "canary" "stable"; do
+        updateChannel "$channel"
+    done
+else
+    while (( "$#" )); do
+        case "$1" in
+            beta|canary|stable)
+                updateChannel "$1" ;;
+            *)
+                echo "unknown channel: $1" && exit 1 ;;
+        esac
+        shift 1
+    done
+fi
diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-generated.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-generated.nix
index 8d25c1ec2c2f1..1ba0ea1519b06 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-generated.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-generated.nix
@@ -4453,10 +4453,10 @@
       elpaBuild {
         pname = "org";
         ename = "org";
-        version = "9.7pre0.20240521.135840";
+        version = "9.7pre0.20240530.133120";
         src = fetchurl {
-          url = "https://elpa.gnu.org/devel/org-9.7pre0.20240521.135840.tar";
-          sha256 = "06j7kjbpd390i0kqvvnlkpdzqkwiicbdgjymif338l0qx2kl4sg5";
+          url = "https://elpa.gnu.org/devel/org-9.7pre0.20240530.133120.tar";
+          sha256 = "sha256-DuuLDBJKI2LwC0PH9PtujcPvaqaKLWYij+KzP1U7o9M=";
         };
         packageRequires = [ emacs ];
         meta = {
diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
index 00f50233d50f1..9550969adbbe2 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-devel-packages.nix
@@ -64,6 +64,26 @@ self: let
         '';
       });
 
+      org = super.org.overrideAttrs (old: {
+        dontUnpack = false;
+        patches = old.patches or [ ] ++ [
+          # security fix backported from 9.7.5
+          (pkgs.fetchpatch {
+            url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
+            hash = "sha256-bGgsnTSn6SMu1J8P2BfJjrKx2845FCsUB2okcIrEjDg=";
+            stripLen = 1;
+          })
+        ];
+        postPatch = old.postPatch or "" + "\n" + ''
+          pushd ..
+          local content_directory=${old.ename}-${old.version}
+          src=$PWD/$content_directory.tar
+          tar --create --verbose --file=$src $content_directory
+          popd
+        '';
+        dontBuild = true;
+      });
+
       pq = super.pq.overrideAttrs (old: {
         buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.postgresql ];
       });
diff --git a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
index 18a0a36fc06cb..a3d729b636eee 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/elpa-packages.nix
@@ -141,6 +141,26 @@ self: let
         };
       });
 
+      org = super.org.overrideAttrs (old: {
+        dontUnpack = false;
+        patches = old.patches or [ ] ++ [
+          # security fix backported from 9.7.5
+          (pkgs.fetchpatch {
+            url = "https://git.savannah.gnu.org/cgit/emacs/org-mode.git/patch/?id=f4cc61636947b5c2f0afc67174dd369fe3277aa8";
+            hash = "sha256-bGgsnTSn6SMu1J8P2BfJjrKx2845FCsUB2okcIrEjDg=";
+            stripLen = 1;
+          })
+        ];
+        postPatch = old.postPatch or "" + "\n" + ''
+          pushd ..
+          local content_directory=${old.ename}-${old.version}
+          src=$PWD/$content_directory.tar
+          tar --create --verbose --file=$src $content_directory
+          popd
+        '';
+        dontBuild = true;
+      });
+
       plz = super.plz.overrideAttrs (
         old: {
           dontUnpack = false;
diff --git a/pkgs/applications/editors/emacs/sources.nix b/pkgs/applications/editors/emacs/sources.nix
index aecd0b1fd66dc..487d8a3680a6d 100644
--- a/pkgs/applications/editors/emacs/sources.nix
+++ b/pkgs/applications/editors/emacs/sources.nix
@@ -93,6 +93,12 @@ in
         url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/28.2/12_all_org-remote-unsafe.patch?id=af40e12cb742510e5d40a06ffc6dfca97e340dd6";
         hash = "sha256-b6WU1o3PfDV/6BTPfPNUFny6oERJCNsDrvflxX3Yvek=";
       })
+
+      # security fix from Emacs 29.4
+      (fetchpatch {
+        url = "https://git.savannah.gnu.org/cgit/emacs.git/patch/?id=c645e1d8205f0f0663ec4a2d27575b238c646c7c";
+        hash = "sha256-G+gGQx5w3KuWMotR1n/sYYL8WyAABYW3fUPeffMMs38=";
+      })
     ];
   });
 
diff --git a/pkgs/applications/editors/jetbrains/plugins/plugins.json b/pkgs/applications/editors/jetbrains/plugins/plugins.json
index 48b9fed7f85ab..2441c8a545cf1 100644
--- a/pkgs/applications/editors/jetbrains/plugins/plugins.json
+++ b/pkgs/applications/editors/jetbrains/plugins/plugins.json
@@ -40,6 +40,37 @@
       },
       "name": "python"
     },
+    "2162": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip"
+      },
+      "name": "string-manipulation"
+    },
     "6954": {
       "compatible": [
         "clion",
@@ -102,6 +133,37 @@
       },
       "name": "ini"
     },
+    "7086": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip"
+      },
+      "name": "acejump"
+    },
     "7219": {
       "compatible": [
         "idea-ultimate",
@@ -145,6 +207,37 @@
       },
       "name": "python-community-edition"
     },
+    "7391": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip"
+      },
+      "name": "asciidoc"
+    },
     "8182": {
       "compatible": [
         "clion",
@@ -293,6 +386,37 @@
       },
       "name": "csv-editor"
     },
+    "11349": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/11349/556097/aws-toolkit-jetbrains-standalone-3.11-233.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip"
+      },
+      "name": "aws-toolkit"
+    },
     "12062": {
       "compatible": [
         "clion",
@@ -479,6 +603,37 @@
       },
       "name": "netbeans-6-5-keymap"
     },
+    "20146": {
+      "compatible": [
+        "clion",
+        "datagrip",
+        "goland",
+        "idea-community",
+        "idea-ultimate",
+        "mps",
+        "phpstorm",
+        "pycharm-community",
+        "pycharm-professional",
+        "rider",
+        "ruby-mine",
+        "rust-rover",
+        "webstorm"
+      ],
+      "builds": {
+        "233.13135.1068": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.15989.206": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17011.166": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.1": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.13": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.14": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.15": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.19": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.21": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.24": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip",
+        "241.17890.8": "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip"
+      },
+      "name": "mermaid"
+    },
     "22407": {
       "compatible": [
         "clion",
@@ -496,6 +651,8 @@
   "files": {
     "https://plugins.jetbrains.com/files/10037/493010/CSVEditor-3.3.0-241.zip": "sha256-P8AFMVp/rFi7zTh9f/i45q/QalvI37itnK57Dz/W/z4=",
     "https://plugins.jetbrains.com/files/10037/493012/CSVEditor-3.3.0-233.zip": "sha256-C3l3Z9a7maCrMjc2Fk/wf3AoExRbvN+fn2mAtXigt0A=",
+    "https://plugins.jetbrains.com/files/11349/556093/aws-toolkit-jetbrains-standalone-3.11-241.zip": "sha256-wFC3nKCCHRxxAmhxF66BtuNrzXUByG7jfG6cVs2TqXQ=",
+    "https://plugins.jetbrains.com/files/11349/556097/aws-toolkit-jetbrains-standalone-3.11-233.zip": "sha256-78N3rm1l4l1OJpT1tg1cASOBc2Wt3IXs0hdjOtdF/Xg=",
     "https://plugins.jetbrains.com/files/12062/445740/keymap-vscode-233.11799.188.zip": "sha256-9keDJ73bSHkzAEq8nT96I5sp05BgMZ08/4BzarOjO5g=",
     "https://plugins.jetbrains.com/files/12062/508223/keymap-vscode-241.14494.150.zip": "sha256-LeQ5vi9PCJYmWNmT/sutWjSlwZaAYYuEljVJBYG2VpY=",
     "https://plugins.jetbrains.com/files/12559/445772/keymap-eclipse-233.11799.165.zip": "sha256-IsmoWuUroAp1LLuphp4F1dun4tQOOitZxoG+Nxs5pYk=",
@@ -506,15 +663,19 @@
     "https://plugins.jetbrains.com/files/164/546759/IdeaVim-2.12.0-signed.zip": "sha256-6ibo1vdwO4olQTCWpWAefT3QCwgtzTo1ojilDes8Rvg=",
     "https://plugins.jetbrains.com/files/17718/551329/github-copilot-intellij-1.5.6.5692.zip": "sha256-p2xY8eN3tOvlXhuZm4R7zl67lnKbaJwKwPZSolDTaX0=",
     "https://plugins.jetbrains.com/files/18444/165585/NetBeans6.5Keymap.zip": "sha256-KrzZTKZMQqoEMw+vDUv2jjs0EX0leaPBkU8H/ecq/oI=",
+    "https://plugins.jetbrains.com/files/20146/537545/Mermaid-0.0.22_IJ.232.zip": "sha256-DUiIQYIzYoXmgtBakSLtMB+xxJMaR70Jgg9erySa3wQ=",
+    "https://plugins.jetbrains.com/files/2162/542984/StringManipulation-9.14.1.zip": "sha256-OqeQCqFe8iW/8NPg+9i+UKh+twIPQ9uLZrItMukCi7k=",
     "https://plugins.jetbrains.com/files/22407/542571/intellij-rust-241.25989.199.zip": "sha256-ACeMU2llicj8VHBJJSAk2SIQaZrD2ykmY0b3VDiedV4=",
     "https://plugins.jetbrains.com/files/631/552809/python-241.17890.1.zip": "sha256-ASnW9SteKd88h2tAuZSHjnK+NMV7lm/3MN1tMqRvtmg=",
     "https://plugins.jetbrains.com/files/6981/547306/ini-241.17011.124.zip": "sha256-6EU2ExUMvXG2pJ77ZgZIsPC6gWX8MTZB0rRttYNRfX4=",
     "https://plugins.jetbrains.com/files/6981/552764/ini-241.17890.13.zip": "sha256-7JQpKNttNfTvzfZ2Qj42FZAtSqx6GjWHhT0WRecK3tc=",
+    "https://plugins.jetbrains.com/files/7086/518678/AceJump.zip": "sha256-kVUEgfEKUupV/qlB4Dpzi5pFHjhVvX74XIPetKtjysM=",
     "https://plugins.jetbrains.com/files/7219/542990/Symfony_Plugin-2024.1.274.zip": "sha256-92uUIFz5kEjrbgPnomi0VXc9Du17evzGsO5ApsrtHrA=",
     "https://plugins.jetbrains.com/files/7320/507957/PHP_Annotations-10.0.0.zip": "sha256-JIZ6Iq3sOcAm8fBXnjRrG9dqCZuD/WajyVmn1JjYMBA=",
     "https://plugins.jetbrains.com/files/7322/530366/python-ce-241.15989.150.zip": "sha256-VJWFzUk/lloFCfHbXX7lQRV6bGseCqEPA8XOLlkqNho=",
     "https://plugins.jetbrains.com/files/7322/540027/python-ce-241.17011.48.zip": "sha256-UrvhbGhcqxGke5tZTktyaWVYIWO5NhOU/WiswMYr83Y=",
     "https://plugins.jetbrains.com/files/7322/552840/python-ce-241.17890.1.zip": "sha256-njHcuJmpc/5JsfZ6mmjcRK2j78J0E4bu68T1A0DNdVU=",
+    "https://plugins.jetbrains.com/files/7391/531687/asciidoctor-intellij-plugin-0.41.14.zip": "sha256-icVvR79Ut6RopPKqvUQf4ZHKg14LV8/KWUZfQh/BYV8=",
     "https://plugins.jetbrains.com/files/8182/466854/intellij-rust-233.15445.zip": "sha256-+Lc/avYBLpyIV63DlbhAJtieHDv4HdggqdGFDw9iqN0=",
     "https://plugins.jetbrains.com/files/8554/535094/featuresTrainer-241.17011.14.zip": "sha256-p26GW1NyVI8OR1VypeWUFWW8qlwB+LtzrEoKyXBwiCw=",
     "https://plugins.jetbrains.com/files/8607/555059/NixIDEA-0.4.0.14.zip": "sha256-oP/tvAqzMSDLJ0Jah1eLJDZIm9WhOZas7lPWrvjWFMM=",
diff --git a/pkgs/applications/editors/ldtk/default.nix b/pkgs/applications/editors/ldtk/default.nix
index f93e0c62e3857..4e05fc2b39117 100644
--- a/pkgs/applications/editors/ldtk/default.nix
+++ b/pkgs/applications/editors/ldtk/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
     install -Dm644 'LDtk ${finalAttrs.version} installer.AppImage' $out/share/ldtk.AppImage
     makeWrapper ${appimage-run}/bin/appimage-run $out/bin/ldtk \
       --add-flags $out/share/ldtk.AppImage
-    install -Dm644 src/ldtk.png $out/share/icons/hicolor/1024x1024/apps/ldtk.png
+    install -Dm644 src/ldtk.png $out/share/icons/hicolor/512x512/apps/ldtk.png
 
     runHook postInstall
   '';
diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix
index 29e087d801fe1..1a5d3f50044e7 100644
--- a/pkgs/applications/editors/vim/plugins/generated.nix
+++ b/pkgs/applications/editors/vim/plugins/generated.nix
@@ -9676,18 +9676,6 @@ final: prev:
     meta.homepage = "https://github.com/mfukar/robotframework-vim/";
   };
 
-  rocks-nvim = buildNeovimPlugin {
-    pname = "rocks.nvim";
-    version = "2024-06-19";
-    src = fetchFromGitHub {
-      owner = "nvim-neorocks";
-      repo = "rocks.nvim";
-      rev = "6737e01a76eaaae06d11b45c8b5b774fa97c283b";
-      sha256 = "0vl6rm3rv1730iw3bwzrwjsgr1hw5h4ksdgpir5spd3vqj7i97lz";
-    };
-    meta.homepage = "https://github.com/nvim-neorocks/rocks.nvim/";
-  };
-
   ron-vim = buildVimPlugin {
     pname = "ron.vim";
     version = "2022-08-19";
@@ -10894,6 +10882,18 @@ final: prev:
     meta.homepage = "https://github.com/Marskey/telescope-sg/";
   };
 
+  telescope-smart-history-nvim = buildVimPlugin {
+    pname = "telescope-smart-history.nvim";
+    version = "2022-12-15";
+    src = fetchFromGitHub {
+      owner = "nvim-telescope";
+      repo = "telescope-smart-history.nvim";
+      rev = "81a4cceaa54d65d5f7c7c26178ee63b634d3e26d";
+      sha256 = "sha256-riBl0vSkRtM9Gtw/FNSKodSmqgGUpDnH7d5w+uU4ReQ=";
+    };
+    meta.homepage = "https://github.com/nvim-telescope/telescope-smart-history.nvim/";
+  };
+
   telescope-symbols-nvim = buildVimPlugin {
     pname = "telescope-symbols.nvim";
     version = "2023-11-24";
diff --git a/pkgs/applications/editors/vim/plugins/nvim-treesitter/update.py b/pkgs/applications/editors/vim/plugins/nvim-treesitter/update.py
index 4b70d8555dd2e..8ed3cbffa1d3f 100755
--- a/pkgs/applications/editors/vim/plugins/nvim-treesitter/update.py
+++ b/pkgs/applications/editors/vim/plugins/nvim-treesitter/update.py
@@ -94,5 +94,5 @@ def update_grammars(nvim_treesitter_dir: str):
 
 
 if __name__ == "__main__":
-    generated = update_grammars(sys.args[1])
+    generated = update_grammars(sys.argv[1])
     open(join(os.path.dirname(__file__), "generated.nix"), "w").write(generated)
diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix
index dc7fe9b2303d1..1eb32501131a8 100644
--- a/pkgs/applications/editors/vim/plugins/overrides.nix
+++ b/pkgs/applications/editors/vim/plugins/overrides.nix
@@ -7,6 +7,7 @@
 , fetchFromSourcehut
 , fetchpatch
 , fetchurl
+, neovimUtils
 , substituteAll
 , # Language dependencies
   fetchYarnDeps
@@ -449,6 +450,8 @@
 
       doInstallCheck = true;
       nvimRequireCheck = "codesnap";
+
+      meta.homepage = "https://github.com/mistricky/codesnap.nvim/";
     };
 
   command-t = super.command-t.overrideAttrs {
@@ -1284,6 +1287,10 @@
     ];
   };
 
+  rocks-nvim = neovimUtils.buildNeovimPlugin { luaAttr = "rocks-nvim"; };
+
+  rocks-config-nvim = neovimUtils.buildNeovimPlugin { luaAttr = "rocks-config-nvim"; };
+
   roslyn-nvim = super.roslyn-nvim.overrideAttrs {
     dependencies = with self; [ nvim-lspconfig ];
   };
diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names
index 2f1c42fe67f2f..c31ea3ee4df14 100644
--- a/pkgs/applications/editors/vim/plugins/vim-plugin-names
+++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names
@@ -814,7 +814,6 @@ https://github.com/vim-scripts/restore_view.vim/,HEAD,restore-view-vim
 https://github.com/gu-fan/riv.vim/,,
 https://github.com/kevinhwang91/rnvimr/,,
 https://github.com/mfukar/robotframework-vim/,,
-https://github.com/nvim-neorocks/rocks.nvim/,,
 https://github.com/ron-rs/ron.vim/,,
 https://github.com/jmederosalvarado/roslyn.nvim/,HEAD,
 https://github.com/keith/rspec.vim/,,
@@ -915,6 +914,7 @@ https://github.com/MrcJkb/telescope-manix/,HEAD,
 https://github.com/nvim-telescope/telescope-media-files.nvim/,HEAD,
 https://github.com/nvim-telescope/telescope-project.nvim/,,
 https://github.com/Marskey/telescope-sg/,HEAD,
+https://github.com/nvim-telescope/telescope-smart-history.nvim/,HEAD,
 https://github.com/nvim-telescope/telescope-symbols.nvim/,,
 https://github.com/nvim-telescope/telescope-ui-select.nvim/,,
 https://github.com/fhill2/telescope-ultisnips.nvim/,,
diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix
index 4b941b4d043be..671affec32d53 100644
--- a/pkgs/applications/graphics/ImageMagick/default.nix
+++ b/pkgs/applications/graphics/ImageMagick/default.nix
@@ -51,24 +51,15 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "imagemagick";
-  version = "7.1.1-33";
+  version = "7.1.1-34";
 
   src = fetchFromGitHub {
     owner = "ImageMagick";
     repo = "ImageMagick";
     rev = finalAttrs.version;
-    hash = "sha256-URGcJDgvRdpYZoECyVeSd0ut1Nkl0Sx2pDhYpi8Yf6o=";
+    hash = "sha256-rECU/dp8HQKFs1PW6QeTZIMxCIzzh1w7CckapnxdzxU=";
   };
 
-  patches = [
-    # Fixes 7.1.1-32 -> 7.1.1-33 regression that, notably, affects
-    # perlPackages.ImageMagick tests. Should be in the next release.
-    (fetchpatch {
-      url = "https://github.com/ImageMagick/ImageMagick/commit/bdc6c09cec64fd8e1570ee3edf5647acde336272.patch";
-      hash = "sha256-cfmti9DXFhvn0UasmW0vwrNp+Lfepyrnp6ijk+1sJo8=";
-    })
-  ];
-
   outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
   outputMan = "out"; # it's tiny
 
diff --git a/pkgs/applications/graphics/monado/default.nix b/pkgs/applications/graphics/monado/default.nix
index a79b112780504..95889ffff4d51 100644
--- a/pkgs/applications/graphics/monado/default.nix
+++ b/pkgs/applications/graphics/monado/default.nix
@@ -41,6 +41,7 @@
 , python3
 , SDL2
 , shaderc
+, tracy
 , udev
 , vulkan-headers
 , vulkan-loader
@@ -80,6 +81,9 @@ stdenv.mkDerivation {
   cmakeFlags = [
     "-DXRT_FEATURE_SERVICE=${if serviceSupport then "ON" else "OFF"}"
     "-DXRT_OPENXR_INSTALL_ABSOLUTE_RUNTIME_PATH=ON"
+    "-DXRT_HAVE_TRACY=ON"
+    "-DXRT_FEATURE_TRACING=ON"
+    "-DXRT_HAVE_STEAM=ON"
   ];
 
   buildInputs = [
@@ -117,6 +121,7 @@ stdenv.mkDerivation {
     pcre2
     SDL2
     shaderc
+    tracy
     udev
     vulkan-headers
     vulkan-loader
@@ -138,11 +143,6 @@ stdenv.mkDerivation {
     export XDG_CONFIG_DIRS=@out@/etc/xdg''${XDG_CONFIG_DIRS:+:''${XDG_CONFIG_DIRS}}
   '';
 
-  patches = [
-    # We don't have $HOME/.steam when building
-    ./force-enable-steamvr_lh.patch
-  ];
-
   passthru.tests = {
     basic-service = nixosTests.monado;
   };
diff --git a/pkgs/applications/graphics/monado/force-enable-steamvr_lh.patch b/pkgs/applications/graphics/monado/force-enable-steamvr_lh.patch
deleted file mode 100644
index eac92675ebd96..0000000000000
--- a/pkgs/applications/graphics/monado/force-enable-steamvr_lh.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 4308d73d..0081d536 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -219,6 +219,7 @@ option(BUILD_TESTING "Enable building of the test suite?" ON)
- if(EXISTS "$ENV{HOME}/.steam/root")
- 	set(XRT_HAVE_STEAM YES)
- endif()
-+set(XRT_HAVE_STEAM YES)
- 
- if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
- 	set(XRT_HAVE_INTERNAL_HID ON)
diff --git a/pkgs/applications/logging/sosreport/default.nix b/pkgs/applications/logging/sosreport/default.nix
index 2e63737deef59..53c071dcc4cb1 100644
--- a/pkgs/applications/logging/sosreport/default.nix
+++ b/pkgs/applications/logging/sosreport/default.nix
@@ -10,13 +10,13 @@
 
 buildPythonPackage rec {
   pname = "sosreport";
-  version = "4.7.1";
+  version = "4.7.2";
 
   src = fetchFromGitHub {
     owner = "sosreport";
     repo = "sos";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-usa4xSNAv0AaML7qv5kCQDA3VMz4IneLFDVyv7uPUcQ=";
+    sha256 = "sha256-67YRmD3kaJbRR7g3w57EwFg7duhcI6zov7gQ4H1MkR8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/misc/lscolors/default.nix b/pkgs/applications/misc/lscolors/default.nix
index 104f1baa037d8..2778db3ca8b25 100644
--- a/pkgs/applications/misc/lscolors/default.nix
+++ b/pkgs/applications/misc/lscolors/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lscolors";
-  version = "0.17.0";
+  version = "0.18.0";
 
   src = fetchCrate {
     inherit version pname;
-    hash = "sha256-efkSiwxL7sZIwFXJZunddAb4lTOfhj8oOEOUW3kyRXI=";
+    hash = "sha256-m9S8fG0c+67/msdWaN8noazEdsdLk1aswUJ+8hkjhxo=";
   };
 
-  cargoHash = "sha256-1Cyg4WT4xYqc3s5AOXR9GfcS3qKOgscYujGXR9fzuCA=";
+  cargoHash = "sha256-6d/v89Yqn9FioWQTb5513kPbO9lnzBxaubfcdCzwUP4=";
 
   buildFeatures = [ "nu-ansi-term" ];
 
diff --git a/pkgs/applications/misc/tuba/default.nix b/pkgs/applications/misc/tuba/default.nix
index b99b76511be47..a3033bcd07dbb 100644
--- a/pkgs/applications/misc/tuba/default.nix
+++ b/pkgs/applications/misc/tuba/default.nix
@@ -23,17 +23,22 @@
 , libspelling
 , icu
 , gst_all_1
+, clapper
+# clapper support is still experimental and has bugs.
+# See https://github.com/GeopJr/Tuba/pull/931
+, clapperSupport? false
 , nix-update-script
 }:
 
 stdenv.mkDerivation rec {
   pname = "tuba";
-  version = "0.7.2";
+  version = "0.8.1";
+
   src = fetchFromGitHub {
     owner = "GeopJr";
     repo = "Tuba";
     rev = "v${version}";
-    hash = "sha256-PRbepitFSvdw/7y5VlnSdsQwnlTQg4ktM4t1/x6SmAY=";
+    hash = "sha256-dN915sPBttnrcOuhUJjEtdojOQi9VRLmc+t1RvWmx64=";
   };
 
   nativeBuildInputs = [
@@ -67,7 +72,13 @@ stdenv.mkDerivation rec {
     gst-plugins-base
     (gst-plugins-good.override { gtkSupport = true; })
     gst-plugins-bad
-  ]);
+  ]) ++ lib.optionals clapperSupport [
+    clapper
+  ];
+
+  mesonFlags = [
+    (lib.mesonBool "clapper" clapperSupport)
+  ];
 
   env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=int-conversion";
 
@@ -75,12 +86,12 @@ stdenv.mkDerivation rec {
     updateScript = nix-update-script { };
   };
 
-  meta = with lib; {
+  meta = {
     description = "Browse the Fediverse";
     homepage = "https://tuba.geopjr.dev/";
     mainProgram = "dev.geopjr.Tuba";
-    license = licenses.gpl3Only;
+    license = lib.licenses.gpl3Only;
     changelog = "https://github.com/GeopJr/Tuba/releases/tag/v${version}";
-    maintainers = with maintainers; [ chuangzhu aleksana ];
+    maintainers = with lib.maintainers; [ chuangzhu aleksana ];
   };
 }
diff --git a/pkgs/applications/networking/cluster/linkerd/edge.nix b/pkgs/applications/networking/cluster/linkerd/edge.nix
index 57d16d577dfc6..e82cde01ec20f 100644
--- a/pkgs/applications/networking/cluster/linkerd/edge.nix
+++ b/pkgs/applications/networking/cluster/linkerd/edge.nix
@@ -2,7 +2,7 @@
 
 (callPackage ./generic.nix { }) {
   channel = "edge";
-  version = "24.6.2";
-  sha256 = "0qghp8v4lz51yv5j5k8dps4qv58hjdjdc3jzrrq3g239x8b2h6ys";
-  vendorHash = "sha256-7Q6V9DKROkSTxU7n511aOpaMDRfhP88p6PJ89Sr6kOQ=";
+  version = "24.6.3";
+  sha256 = "1mlbb8qkx71anwqi027p9lv10kfck811ikfvc5gpnavfaaiwrrd1";
+  vendorHash = "sha256-nIDbwUvu1e/1ImVQMj4eOaPeFHM7HCcJMFk/ackdJSE=";
 }
diff --git a/pkgs/applications/networking/ktailctl/default.nix b/pkgs/applications/networking/ktailctl/default.nix
index 88caf1a5f43e3..0536fa2fdea61 100644
--- a/pkgs/applications/networking/ktailctl/default.nix
+++ b/pkgs/applications/networking/ktailctl/default.nix
@@ -10,6 +10,7 @@
 , qtbase
 , qtdeclarative
 , qtsvg
+, qtwayland
 , kconfig
 , kcoreaddons
 , kguiaddons
@@ -18,31 +19,37 @@
 , kirigami-addons
 , knotifications
 , nlohmann_json
+, qqc2-desktop-style
 }:
 
 let
-  version = "0.16.0";
+  version = "0.16.1";
 
   src = fetchFromGitHub {
     owner = "f-koehler";
     repo = "KTailctl";
     rev = "v${version}";
-    hash = "sha256-fIx6XfNGK+jDpeaoCzTKwv3J01yWoHOgWxjbwTGVK1U=";
+    hash = "sha256-rMvFwWTrYWZUAMWd6H/SXE26q5ASjwsa8bD1tFC6yBI=";
   };
 
   goDeps = (buildGoModule {
-    pname = "tailwrap";
+    pname = "ktailctl-go-wrapper";
     inherit src version;
-    modRoot = "tailwrap";
-    vendorHash = "sha256-egTzSdOKrhdEBKarIfROxZUsxbnR9F1JDbdoKzGf9UM=";
+    modRoot = "src/wrapper";
+    vendorHash = "sha256-GD+G+7b8GBwR3OrRPJbGJVom+kLC67VvlGFIA0S7UF8=";
   }).goModules;
 in
 stdenv.mkDerivation {
   pname = "ktailctl";
   inherit version src;
 
+  patches = [
+    # Install libktailctl_config.so https://github.com/f-koehler/KTailctl/pull/212
+    ./install-missing-libraries.diff
+  ];
+
   postPatch = ''
-    cp -r --reflink=auto ${goDeps} tailwrap/vendor
+    cp -r --reflink=auto ${goDeps} src/wrapper/vendor
   '';
 
   # needed for go build to work
@@ -67,13 +74,16 @@ stdenv.mkDerivation {
     qtbase
     qtdeclarative
     qtsvg
+    qtwayland
     kconfig
     kcoreaddons
     kguiaddons
     ki18n
     kirigami
+    kirigami-addons
     knotifications
     nlohmann_json
+    qqc2-desktop-style
   ];
 
   meta = with lib; {
@@ -82,6 +92,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ k900 ];
     mainProgram = "ktailctl";
-    platforms = platforms.all;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/applications/networking/ktailctl/install-missing-libraries.diff b/pkgs/applications/networking/ktailctl/install-missing-libraries.diff
new file mode 100644
index 0000000000000..6153199a66638
--- /dev/null
+++ b/pkgs/applications/networking/ktailctl/install-missing-libraries.diff
@@ -0,0 +1,9 @@
+diff --git a/src/config/CMakeLists.txt b/src/config/CMakeLists.txt
+index ed0a64a..970e509 100644
+--- a/src/config/CMakeLists.txt
++++ b/src/config/CMakeLists.txt
+@@ -7,3 +7,4 @@ target_link_libraries(ktailctl_config
+     KF6::ConfigGui
+     ktailctl_wrapper
+ )
++install(TARGETS ktailctl_config)
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix
index 307a805ddf1ee..e4da05046a9a2 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/packages.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/packages.nix
@@ -5,13 +5,13 @@ rec {
 
   thunderbird-115 = (buildMozillaMach rec {
     pname = "thunderbird";
-    version = "115.12.0";
+    version = "115.12.2";
     application = "comm/mail";
     applicationName = "Mozilla Thunderbird";
     binaryName = pname;
     src = fetchurl {
       url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
-      sha512 = "d262ec2cea3fd003e66974b0bd8d61fb268ad2a233e54a6aea4803c5520e235ea308267f0484581ce235063c4fb90e621cdc1eea3f62212574b90427ede1c289";
+      sha512 = "182f35e8e5ece98d18dfefe106c73bc97fbc619f59772d9b3455b7c8af412021ecc5eae97a12515224e91deb814abb7a6ef7f538c450e9e77fdfd84078678038";
     };
     extraPatches = [
       # The file to be patched is different from firefox's `no-buildconfig-ffx90.patch`.
diff --git a/pkgs/applications/networking/soapui/default.nix b/pkgs/applications/networking/soapui/default.nix
index 38032509c95dc..8b7aca3524683 100644
--- a/pkgs/applications/networking/soapui/default.nix
+++ b/pkgs/applications/networking/soapui/default.nix
@@ -1,16 +1,23 @@
-{ fetchurl, lib, stdenv, writeText, jdk, makeWrapper, nixosTests }:
-
+{
+  fetchurl,
+  lib,
+  stdenv,
+  writeText,
+  jdk,
+  makeWrapper,
+  nixosTests,
+}:
 stdenv.mkDerivation rec {
   pname = "soapui";
-  version = "5.7.0";
+  version = "5.7.2";
 
   src = fetchurl {
-    url = "https://s3.amazonaws.com/downloads.eviware/soapuios/${version}/SoapUI-${version}-linux-bin.tar.gz";
-    sha256 = "sha256-qzhy4yHmOk13dFUd2KEZhXtWY86QwyjJgYxx9GGoN80=";
+    url = "https://dl.eviware.com/soapuios/${version}/SoapUI-${version}-linux-bin.tar.gz";
+    sha256 = "sha256-pT0ZANVC7Sv7zxMDPY86aclIUGZeazOZadiVVsmEjtw=";
   };
 
-  nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ jdk ];
+  nativeBuildInputs = [makeWrapper];
+  buildInputs = [jdk];
 
   installPhase = ''
     runHook preInstall
@@ -46,15 +53,15 @@ stdenv.mkDerivation rec {
     '')
   ];
 
-  passthru.tests = { inherit (nixosTests) soapui; };
+  passthru.tests = {inherit (nixosTests) soapui;};
 
   meta = with lib; {
     description = "Most Advanced REST & SOAP Testing Tool in the World";
     homepage = "https://www.soapui.org/";
-    sourceProvenance = with sourceTypes; [ binaryBytecode ];
+    sourceProvenance = with sourceTypes; [binaryBytecode];
     license = "SoapUI End User License Agreement";
-    maintainers = with maintainers; [ gerschtli ];
-    platforms = platforms.all;
+    maintainers = with maintainers; [gerschtli];
+    platforms = platforms.linux; # we don't fetch the dmg yet
     mainProgram = "soapui";
   };
 }
diff --git a/pkgs/applications/science/logic/klee/default.nix b/pkgs/applications/science/logic/klee/default.nix
index b610ce558605d..fb02c6d40b9dc 100644
--- a/pkgs/applications/science/logic/klee/default.nix
+++ b/pkgs/applications/science/logic/klee/default.nix
@@ -1,10 +1,8 @@
 { lib
-, stdenv
+, llvmPackages
 , callPackage
 , fetchFromGitHub
 , cmake
-, clang
-, llvm
 , python3
 , z3
 , stp
@@ -13,6 +11,7 @@
 , sqlite
 , gtest
 , lit
+, nix-update-script
 
 # Build KLEE in debug mode. Defaults to false.
 , debug ? false
@@ -30,19 +29,35 @@
 # Enable runtime asserts. Default false.
 , runtimeAsserts ? false
 
-# Extra klee-uclibc config.
+# Klee uclibc. Defaults to the bundled version.
+, kleeuClibc ? null
+
+# Extra klee-uclibc config for the default klee-uclibc.
 , extraKleeuClibcConfig ? {}
 }:
 
+# Klee supports these LLVM versions.
+let
+  llvmVersion = llvmPackages.llvm.version;
+  inherit (lib.strings) versionAtLeast versionOlder;
+in
+assert versionAtLeast llvmVersion "11" && versionOlder llvmVersion "17";
+
 let
+  # The chosen version of klee-uclibc.
+  chosenKleeuClibc =
+    if kleeuClibc == null then
+      callPackage ./klee-uclibc.nix {
+        llvmPackages = llvmPackages;
+        inherit extraKleeuClibcConfig debugRuntime runtimeAsserts;
+      }
+    else
+      kleeuClibc;
+
   # Python used for KLEE tests.
   kleePython = python3.withPackages (ps: with ps; [ tabulate ]);
-
-  # The klee-uclibc derivation.
-  kleeuClibc = callPackage ./klee-uclibc.nix {
-    inherit stdenv clang llvm extraKleeuClibcConfig debugRuntime runtimeAsserts;
-  };
-in stdenv.mkDerivation rec {
+in
+llvmPackages.stdenv.mkDerivation rec {
   pname = "klee";
   version = "3.1";
 
@@ -54,14 +69,16 @@ in stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ cmake ];
+
   buildInputs = [
+    llvmPackages.llvm
     cryptominisat
     gperftools
-    llvm
     sqlite
     stp
     z3
   ];
+
   nativeCheckInputs = [
     gtest
 
@@ -77,10 +94,10 @@ in stdenv.mkDerivation rec {
     onOff = val: if val then "ON" else "OFF";
   in [
     "-DKLEE_RUNTIME_BUILD_TYPE=${if debugRuntime then "Debug" else "Release"}"
-    "-DLLVMCC=${clang}/bin/clang"
-    "-DLLVMCXX=${clang}/bin/clang++"
+    "-DLLVMCC=${llvmPackages.clang}/bin/clang"
+    "-DLLVMCXX=${llvmPackages.clang}/bin/clang++"
     "-DKLEE_ENABLE_TIMESTAMP=${onOff false}"
-    "-DKLEE_UCLIBC_PATH=${kleeuClibc}"
+    "-DKLEE_UCLIBC_PATH=${chosenKleeuClibc}"
     "-DENABLE_KLEE_ASSERTS=${onOff asserts}"
     "-DENABLE_POSIX_RUNTIME=${onOff true}"
     "-DENABLE_UNIT_TESTS=${onOff true}"
@@ -94,20 +111,25 @@ in stdenv.mkDerivation rec {
   env.NIX_CFLAGS_COMPILE = toString ["-Wno-macro-redefined"];
 
   prePatch = ''
-    patchShebangs .
+    patchShebangs --build .
   '';
 
   # https://github.com/klee/klee/issues/1690
   hardeningDisable = [ "fortify" ];
 
+  enableParallelBuilding = true;
   doCheck = true;
 
   passthru = {
-    # Let the user depend on `klee.uclibc` for klee-uclibc
-    uclibc = kleeuClibc;
+    updateScript = nix-update-script {
+      extraArgs = [ "--version-regex" "v(\d\.\d)" ];
+    };
+    # Let the user access the chosen uClibc outside the derivation.
+    uclibc = chosenKleeuClibc;
   };
 
   meta = with lib; {
+    mainProgram = "klee";
     description = "Symbolic virtual machine built on top of LLVM";
     longDescription = ''
       KLEE is a symbolic virtual machine built on top of the LLVM compiler
@@ -128,7 +150,7 @@ in stdenv.mkDerivation rec {
       that matches a computed test input, including setting up files, pipes,
       environment variables, and passing command line arguments.
     '';
-    homepage = "https://klee.github.io/";
+    homepage = "https://klee.github.io";
     license = licenses.ncsa;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ numinit ];
diff --git a/pkgs/applications/science/logic/klee/klee-uclibc.nix b/pkgs/applications/science/logic/klee/klee-uclibc.nix
index 5bbd8e69a46fa..c87a881e75336 100644
--- a/pkgs/applications/science/logic/klee/klee-uclibc.nix
+++ b/pkgs/applications/science/logic/klee/klee-uclibc.nix
@@ -1,13 +1,12 @@
 { lib
-, stdenv
+, llvmPackages
 , fetchurl
 , fetchFromGitHub
-, which
 , linuxHeaders
-, clang
-, llvm
 , python3
 , curl
+, which
+, nix-update-script
 , debugRuntime ? true
 , runtimeAsserts ? false
 , extraKleeuClibcConfig ? {}
@@ -24,21 +23,22 @@ let
     "RUNTIME_PREFIX" = "/";
     "DEVEL_PREFIX" = "/";
   });
-in stdenv.mkDerivation rec {
+in
+llvmPackages.stdenv.mkDerivation rec {
   pname = "klee-uclibc";
   version = "1.4";
   src = fetchFromGitHub {
     owner = "klee";
     repo = "klee-uclibc";
     rev = "klee_uclibc_v${version}";
-    sha256 = "sha256-sogQK5Ed0k5tf4rrYwCKT4YRKyEovgT25p0BhGvJ1ok=";
+    hash = "sha256-sogQK5Ed0k5tf4rrYwCKT4YRKyEovgT25p0BhGvJ1ok=";
   };
 
   nativeBuildInputs = [
-    clang
-    curl
-    llvm
+    llvmPackages.clang
+    llvmPackages.llvm
     python3
+    curl
     which
   ];
 
@@ -47,11 +47,11 @@ in stdenv.mkDerivation rec {
 
   # HACK: needed for cross-compile.
   # See https://www.mail-archive.com/klee-dev@imperial.ac.uk/msg03141.html
-  KLEE_CFLAGS = "-idirafter ${clang}/resource-root/include";
+  KLEE_CFLAGS = "-idirafter ${llvmPackages.clang}/resource-root/include";
 
   prePatch = ''
-    patchShebangs ./configure
-    patchShebangs ./extra
+    patchShebangs --build ./configure
+    patchShebangs --build ./extra
   '';
 
   # klee-uclibc configure does not support --prefix, so we override configurePhase entirely
@@ -88,13 +88,19 @@ in stdenv.mkDerivation rec {
 
   makeFlags = ["HAVE_DOT_CONFIG=y"];
 
+  enableParallelBuilding = true;
+
+  passthru.updateScript = nix-update-script {
+    extraArgs = [ "--version-regex" "v(\d\.\d)" ];
+  };
+
   meta = with lib; {
     description = "Modified version of uClibc for KLEE";
     longDescription = ''
       klee-uclibc is a bitcode build of uClibc meant for compatibility with the
       KLEE symbolic virtual machine.
     '';
-    homepage = "https://klee.github.io/";
+    homepage = "https://github.com/klee/klee-uclibc";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ numinit ];
   };
diff --git a/pkgs/applications/video/kodi/addons/future/default.nix b/pkgs/applications/video/kodi/addons/future/default.nix
index 91b7d3996c577..c96f28ab9037d 100644
--- a/pkgs/applications/video/kodi/addons/future/default.nix
+++ b/pkgs/applications/video/kodi/addons/future/default.nix
@@ -3,11 +3,11 @@
 buildKodiAddon rec {
   pname = "future";
   namespace = "script.module.future";
-  version = "0.18.3+matrix.1";
+  version = "1.0.0+matrix.1";
 
   src = fetchzip {
     url = "https://mirrors.kodi.tv/addons/${lib.toLower rel}/${namespace}/${namespace}-${version}.zip";
-    sha256 = "sha256-jKO2Qxi54z6UiCmMkxU+2pog40K2yb8/KYbNPFYuSsQ=";
+    sha256 = "sha256-BsDgCAZuJBRBpe6EmfSynhrXS3ktQRZsEwf9CdF0VCg=";
   };
 
   passthru = {
diff --git a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
index 3b2f2139875c0..ec19f26e8a156 100644
--- a/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/advanced-scene-switcher/default.nix
@@ -23,13 +23,13 @@
 
 stdenv.mkDerivation rec {
   pname = "advanced-scene-switcher";
-  version = "1.26.2";
+  version = "1.26.4";
 
   src = fetchFromGitHub {
     owner = "WarmUpTill";
     repo = "SceneSwitcher";
     rev = version;
-    hash = "sha256-x9wk4tqCXufHSb/ssUxjm0o6JrZzXnIk+adIn/YI9Qk=";
+    hash = "sha256-qUKywOfUiGKBmyREns2LnWECGeFhdA4ecpgGJQAIKpU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/video/obs-studio/plugins/obs-teleport/default.nix b/pkgs/applications/video/obs-studio/plugins/obs-teleport/default.nix
index b7d28caadf899..a057b88dbfc55 100644
--- a/pkgs/applications/video/obs-studio/plugins/obs-teleport/default.nix
+++ b/pkgs/applications/video/obs-studio/plugins/obs-teleport/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "obs-teleport";
-  version = "0.7.1";
+  version = "0.7.2";
 
   src = fetchFromGitHub {
     owner = "fzwoch";
     repo = "obs-teleport";
     rev = version;
-    sha256 = "sha256-vT5GhZQFunQURgnFI3RSGVlwvcWEW588MuJ+Ev7IZ7w=";
+    sha256 = "sha256-71fvaqjesLhCdK3dHodAtMNYhU6LGX4wkHSPgQJPYqo=";
   };
 
-  vendorHash = "sha256-Po7Oj+wdBOOFI2Ws9MLZQxk4N6mE58M+3q+qNlUrqOY=";
+  vendorHash = "sha256-INJvecUwHMauoqqyd6S2JvZ/oqnwonbdbGhV8hdqiH8=";
 
   buildInputs = [
     libjpeg
diff --git a/pkgs/applications/video/webtorrent_desktop/default.nix b/pkgs/applications/video/webtorrent_desktop/default.nix
index 60ef7c57cdc8a..9fd34a1eed1fc 100644
--- a/pkgs/applications/video/webtorrent_desktop/default.nix
+++ b/pkgs/applications/video/webtorrent_desktop/default.nix
@@ -2,20 +2,14 @@
 
 buildNpmPackage {
   pname = "webtorrent-desktop";
-  version = "0.25-pre-1eb612";
+  version = "0.25-pre-ac7f16";
   src = fetchFromGitHub {
     owner = "webtorrent";
     repo = "webtorrent-desktop";
-    rev = "1eb61201d6360698a2cc4ea72bf0fa7ee78b457c";
-    sha256 = "sha256-DBEFOamncyidMXypvKNnUmDIPUq1LzYjDgox7fa4+Gg=";
+    rev = "ac7f16e71c96c5ad670bfcb8728df5af78ae21a1";
+    sha256 = "sha256-UEN5NhLVSQEO8rsiTW1hJPjNFL9KobW/Bho98FzKaf4=";
   };
   patches = [
-    # electron 27 fix
-    (fetchpatch {
-      name = "2388.patch"; # https://github.com/webtorrent/webtorrent-desktop/pull/2388
-      url = "https://github.com/webtorrent/webtorrent-desktop/compare/ebaf9cf8487dbd9e14a9a0c5adc3eab23b199e58...0c3e55d1f091bf66a342e2732550ebeccc2e4169.patch";
-      hash = "sha256-gam5oAZtsaiCNFwecA5ff0nhraySLx3SOHlb/js+cPM=";
-    })
     # startup fix
     (fetchpatch {
       name = "2389.patch"; # https://github.com/webtorrent/webtorrent-desktop/pull/2389
@@ -23,7 +17,7 @@ buildNpmPackage {
       hash = "sha256-hBJGLNNjcGRhYOFlLm/RL0po+70tEeJtR6Y/CfacPAI=";
     })
   ];
-  npmDepsHash = "sha256-tqhp3jDb1xtyV/n9kJtzkiznLQfqeYWeZiTnTVV0ibE=";
+  npmDepsHash = "sha256-otAes6GkqoAVvfeWhWgyY4IVZIZxw3WtkrVdEWIk1Lk=";
   makeCacheWritable = true;
   npmRebuildFlags = [ "--ignore-scripts" ];
   installPhase = ''
diff --git a/pkgs/applications/virtualization/crosvm/default.nix b/pkgs/applications/virtualization/crosvm/default.nix
index 40d940a6904d6..9ba769dfd7ed7 100644
--- a/pkgs/applications/virtualization/crosvm/default.nix
+++ b/pkgs/applications/virtualization/crosvm/default.nix
@@ -1,4 +1,4 @@
-{ lib, rustPlatform, fetchgit
+{ lib, rustPlatform, fetchgit, fetchpatch
 , pkg-config, protobuf, python3, wayland-scanner
 , libcap, libdrm, libepoxy, minijail, virglrenderer, wayland, wayland-protocols
 }:
@@ -14,6 +14,15 @@ rustPlatform.buildRustPackage rec {
     fetchSubmodules = true;
   };
 
+  patches = [
+    (fetchpatch {
+      name = "musl.patch";
+      url = "https://chromium.googlesource.com/chromiumos/platform/crosvm/+/128e591037c0be0362ed814d0b5583aa65ff09e1%5E%21/?format=TEXT";
+      decode = "base64 -d";
+      hash = "sha256-p5VzHRb0l0vCJNe48cRl/uBYHwTQMEykMcBOMzL3yaY=";
+    })
+  ];
+
   separateDebugInfo = true;
 
   cargoHash = "sha256-1AUfd9dhIZvVVUsVbnGoLKc0lBfccwM4wqWgU4yZWOE=";
diff --git a/pkgs/applications/window-managers/e16/default.nix b/pkgs/applications/window-managers/e16/default.nix
index d47b63dda4d04..7a2aa724d3534 100644
--- a/pkgs/applications/window-managers/e16/default.nix
+++ b/pkgs/applications/window-managers/e16/default.nix
@@ -16,6 +16,7 @@
 , libsndfile
 , pango
 , perl
+, python3
 , gitUpdater
 }:
 
@@ -47,10 +48,13 @@ stdenv.mkDerivation rec {
     libsndfile
     pango
     perl
+    python3
   ];
 
   postPatch = ''
     substituteInPlace scripts/e_gen_menu --replace "/usr/local:" "/run/current-system/sw:/usr/local:"
+    substituteInPlace scripts/e_gen_menu --replace "'/opt'" "'/opt', '/run/current-system/sw'"
+    substituteInPlace scripts/e_gen_menu --replace "'/.local'" "'/.nix-profile', '/.local'"
   '';
 
   passthru.updateScript = gitUpdater {
diff --git a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh
index f9aba29a43555..a9701f2898b27 100644
--- a/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh
+++ b/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh
@@ -1,3 +1,12 @@
+# For compatibility, convert makeWrapperArgs to an array unless we are using
+# structured attributes. That is, we ensure that makeWrapperArgs is always an
+# array.
+# See https://github.com/NixOS/nixpkgs/blob/858f4db3048c5be3527e183470e93c1a72c5727c/pkgs/build-support/dotnet/build-dotnet-module/hooks/dotnet-fixup-hook.sh#L1-L3
+# and https://github.com/NixOS/nixpkgs/pull/313005#issuecomment-2175482920
+if [[ -z $__structuredAttrs ]]; then
+    makeWrapperArgs=( ${makeWrapperArgs-} )
+fi
+
 # First argument is the executable you want to wrap,
 # the second is the destination for the wrapper.
 wrapDotnetProgram() {
@@ -17,10 +26,8 @@ dotnetFromEnv'
 
     if [[ -n $__structuredAttrs ]]; then
         local -r dotnetRuntimeDepsArray=( "${dotnetRuntimeDeps[@]}" )
-        local -r makeWrapperArgsArray=( "${makeWrapperArgs[@]}" )
     else
         local -r dotnetRuntimeDepsArray=($dotnetRuntimeDeps)
-        local -r makeWrapperArgsArray=($makeWrapperArgs)
     fi
 
     local dotnetRuntimeDepsFlags=()
@@ -49,7 +56,7 @@ dotnetFromEnv'
         "${dotnetRuntimeDepsFlags[@]}" \
         "${dotnetRootFlagsArray[@]}" \
         "${gappsWrapperArgs[@]}" \
-        "${makeWrapperArgsArray[@]}"
+        "${makeWrapperArgs[@]}"
 
     echo "installed wrapper to "$2""
 }
diff --git a/pkgs/by-name/al/alertmanager-webhook-logger/package.nix b/pkgs/by-name/al/alertmanager-webhook-logger/package.nix
new file mode 100644
index 0000000000000..e04759dda7d37
--- /dev/null
+++ b/pkgs/by-name/al/alertmanager-webhook-logger/package.nix
@@ -0,0 +1,33 @@
+{ lib
+, stdenv
+, buildGoModule
+, fetchFromGitHub
+, nixosTests
+}:
+
+buildGoModule rec {
+  pname = "alertmanager-webhook-logger";
+  version = "1.0";
+  rev = "${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "tomtom-international";
+    repo = "alertmanager-webhook-logger";
+    hash = "sha256-mJbpDiTwUsFm0lDKz8UE/YF6sBvcSSR6WWLrfKvtri4=";
+  };
+
+  vendorHash = "sha256-gKtOoM9TuEIHgvSjZhqWmdexG2zDjlPuM0HjjP52DOI=";
+
+  doCheck = true;
+
+  passthru.tests = { inherit (nixosTests.prometheus) alertmanager; };
+
+  meta = with lib; {
+    description = "Generates (structured) log messages from Prometheus AlertManager webhook notifier";
+    mainProgram = "alertmanager-webhook-logger";
+    homepage = "https://github.com/tomtom-international/alertmanager-webhook-logger";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ jpds ];
+  };
+}
diff --git a/pkgs/by-name/at/atlauncher/package.nix b/pkgs/by-name/at/atlauncher/package.nix
index 32a22493b1fa0..9142c0dad9d13 100644
--- a/pkgs/by-name/at/atlauncher/package.nix
+++ b/pkgs/by-name/at/atlauncher/package.nix
@@ -21,11 +21,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "atlauncher";
-  version = "3.4.36.6";
+  version = "3.4.36.9";
 
   src = fetchurl {
     url = "https://github.com/ATLauncher/ATLauncher/releases/download/v${finalAttrs.version}/ATLauncher-${finalAttrs.version}.jar";
-    hash = "sha256-uux5m9GI+F5yCLF4nk5tk6FJjF4Wc81Uw8xfvt2TE4c=";
+    hash = "sha256-2kO7CRkA3RlWcNqv2d5sJIaLPupUU0ox2wc3T16i7e8=";
   };
 
   env.ICON = fetchurl {
diff --git a/pkgs/by-name/be/beekeeper-studio/package.nix b/pkgs/by-name/be/beekeeper-studio/package.nix
index 9f6f9ff3d8bee..e8637a0e3a5a1 100644
--- a/pkgs/by-name/be/beekeeper-studio/package.nix
+++ b/pkgs/by-name/be/beekeeper-studio/package.nix
@@ -7,7 +7,7 @@
 
 let
   pname = "beekeeper-studio";
-  version = "4.4.0";
+  version = "4.6.0";
 
   plat = {
     aarch64-linux = "-arm64";
@@ -15,8 +15,8 @@ let
   }.${stdenv.hostPlatform.system};
 
   hash = {
-    aarch64-linux = "sha256-RzPw+jsHecOYSBn/TrEFew5V0LvYS15dUuscS7+GraM=";
-    x86_64-linux = "sha256-fWr0ezPU5U8G9M3JEjUdBFZksbJL5CUjdNbAyT5dwI8=";
+    aarch64-linux = "sha256-ZxqwxCON21S+RPG0/M2TtcI2Ave7ZT05lKQdyysQFUk=";
+    x86_64-linux = "sha256-y4Muap7X4YyeIftRGC+NrDt3wjqOPi1lt+tsHhKmx4M=";
   }.${stdenv.hostPlatform.system};
 
   src = fetchurl {
@@ -36,16 +36,17 @@ appimageTools.wrapType2 {
     install -Dm444 ${appimageContents}/${pname}.desktop -t $out/share/applications/
     install -Dm444 ${appimageContents}/${pname}.png -t $out/share/pixmaps/
     substituteInPlace $out/share/applications/${pname}.desktop \
-      --replace 'Exec=AppRun --no-sandbox' 'Exec=${pname}'
+      --replace-fail 'Exec=AppRun --no-sandbox' 'Exec=${pname}'
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows";
     homepage = "https://www.beekeeperstudio.io";
     changelog = "https://github.com/beekeeper-studio/beekeeper-studio/releases/tag/v${version}";
-    license = licenses.gpl3Only;
+    license = lib.licenses.gpl3Only;
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     mainProgram = "beekeeper-studio";
-    maintainers = with maintainers; [ milogert alexnortung ];
+    maintainers = with lib.maintainers; [ milogert alexnortung ];
     platforms = [ "aarch64-linux" "x86_64-linux" ];
   };
 }
diff --git a/pkgs/by-name/bo/boxbuddy/package.nix b/pkgs/by-name/bo/boxbuddy/package.nix
index 2801b6415243b..683e4f4527ef5 100644
--- a/pkgs/by-name/bo/boxbuddy/package.nix
+++ b/pkgs/by-name/bo/boxbuddy/package.nix
@@ -9,23 +9,23 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "boxbuddy";
-  version = "2.2.5";
+  version = "2.2.8";
 
   src = fetchFromGitHub {
     owner = "Dvlv";
     repo = "BoxBuddyRS";
     rev = version;
-    hash = "sha256-Dy7mSBraMHAno8cIk9f6/Ofsm2ZGSb7VS5Wy1o+ZoC8=";
+    hash = "sha256-AW2RKtxvF4WxCyb6QEDuTEAOy/DqBxoZrtc2JGeKFtk=";
   };
 
-  cargoHash = "sha256-NB93bw2mMCVmZWpxCJGusXp2DgotjrlHUlsd0mb+fBA=";
+  cargoHash = "sha256-J7VJSOY7Cj9Dsq0jj9uVTGJOessyx3WOlDbg7dS+1dg=";
 
   # The software assumes it is installed either in flatpak or in the home directory
   # so the xdg data path needs to be patched here
   postPatch = ''
     substituteInPlace src/utils.rs \
       --replace-fail '{data_home}/locale' "$out/share/locale" \
-      --replace-fail '{data_home}/icons/boxbuddy/{}' "$out/share/icons/boxbuddy/{}"
+      --replace-fail '{data_home}/icons/boxbuddy/{icon}' "$out/share/icons/boxbuddy/{icon}"
   '';
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ch/chezmoi/package.nix b/pkgs/by-name/ch/chezmoi/package.nix
index 10c7410b68626..46035e0f5b403 100644
--- a/pkgs/by-name/ch/chezmoi/package.nix
+++ b/pkgs/by-name/ch/chezmoi/package.nix
@@ -8,16 +8,16 @@
 let
   argset = {
     pname = "chezmoi";
-    version = "2.49.0";
+    version = "2.49.1";
 
     src = fetchFromGitHub {
       owner = "twpayne";
       repo = "chezmoi";
       rev = "v${argset.version}";
-      hash = "sha256-9VMNeWJzbfpHL9u6fYF1HzQGlREU6eQmF9mwqxosTGI=";
+      hash = "sha256-DrilLcV6wyUVPPiDs5KiC8kztNCH4Fug5h35+xerLZU=";
     };
 
-    vendorHash = "sha256-0gM2C8vXFOFDNJVnjq0Qbm2urhenWcH8F+ExAtjMVc0=";
+    vendorHash = "sha256-3nufF280WuDNvhKn9xP9dnxNX2VC59nifuJp+ebUSvk=";
 
     nativeBuildInputs = [
       installShellFiles
diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix
index aef566f030ebd..8a39f5715ae14 100644
--- a/pkgs/by-name/de/devenv/package.nix
+++ b/pkgs/by-name/de/devenv/package.nix
@@ -66,6 +66,6 @@ in rustPlatform.buildRustPackage {
     homepage = "https://github.com/cachix/devenv";
     license = lib.licenses.asl20;
     mainProgram = "devenv";
-    maintainers = with lib.maintainers; [ domenkozar drupol ];
+    maintainers = with lib.maintainers; [ domenkozar ];
   };
 }
diff --git a/pkgs/by-name/ge/gerbolyze/package.nix b/pkgs/by-name/ge/gerbolyze/package.nix
index 0e61a64dd94b4..2ce40c3772342 100644
--- a/pkgs/by-name/ge/gerbolyze/package.nix
+++ b/pkgs/by-name/ge/gerbolyze/package.nix
@@ -43,6 +43,22 @@ let
       platforms = platforms.linux;
     };
   };
+
+  # FIXME: check if this downgrade is still required when bumping gerbolyze
+  # https://github.com/jaseg/gerbolyze/issues/47
+  resvg' = resvg.overrideAttrs (old: rec {
+    version = "0.41.0";
+    src = old.src.override {
+      rev = "v${version}";
+      hash = "sha256-plZiyEiBWeV2mwTsNK5Je8Axs/hcHH8aV2VpOix6QCY=";
+    };
+    cargoDeps = old.cargoDeps.overrideAttrs (lib.const {
+      name = "${old.pname}-${version}-vendor.tar.gz";
+      inherit src;
+      outputHash = "sha256-U7xzb9e9wh9XbLvlYQ0ofIjH8FuSzVcrXnrehQmZgww=";
+    });
+  });
+
 in python3Packages.buildPythonApplication rec {
   inherit version src;
   pname = "gerbolyze";
@@ -61,7 +77,7 @@ in python3Packages.buildPythonApplication rec {
     python3Packages.python-slugify
     python3Packages.lxml
     python3Packages.gerbonara
-    resvg
+    resvg'
     svg-flatten
   ];
 
@@ -79,7 +95,7 @@ in python3Packages.buildPythonApplication rec {
 
   pythonImportsCheck = [ "gerbolyze" ];
 
-  nativeCheckInputs = [ python3Packages.pytestCheckHook resvg svg-flatten ];
+  nativeCheckInputs = [ python3Packages.pytestCheckHook resvg' svg-flatten ];
 
   meta = with lib; {
     description = "Directly render SVG overlays into Gerber and Excellon files";
diff --git a/pkgs/by-name/gh/gh-gei/deps.nix b/pkgs/by-name/gh/gh-gei/deps.nix
new file mode 100644
index 0000000000000..1f9bc071f17a7
--- /dev/null
+++ b/pkgs/by-name/gh/gh-gei/deps.nix
@@ -0,0 +1,37 @@
+# This file was automatically generated by passthru.fetch-deps.
+# Please dont edit it manually, your changes might get overwritten!
+
+{ fetchNuGet }: [
+  (fetchNuGet { pname = "AWSSDK.Core"; version = "3.7.300.11"; sha256 = "1460yndb9gfy4qx36g4lxaqxzb3p19kfqp7czi28i1p7z7nh38vi"; })
+  (fetchNuGet { pname = "AWSSDK.S3"; version = "3.7.304"; sha256 = "0hjls7477rm3g7bvd8m7ch37lmllnsv71x1lhjjn8g2nk7d3lk0q"; })
+  (fetchNuGet { pname = "Azure.Core"; version = "1.36.0"; sha256 = "14lsc6zik7s5by3gp86pf77wh58fcqrjy2xhx5p03gmhdn6iz2cn"; })
+  (fetchNuGet { pname = "Azure.Storage.Blobs"; version = "12.19.1"; sha256 = "0rdgvlbqkcyc356xs0wzwbm92lf95621mf2shk30i3ahp0k0gd0k"; })
+  (fetchNuGet { pname = "Azure.Storage.Common"; version = "12.18.1"; sha256 = "1hjzggfv24598601jhcdfcaflbd5b97aglhxy7a5ymy1aszhwp9k"; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.1"; sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw"; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "6.0.0"; sha256 = "15gqy2m14fdlvy1g59207h5kisznm355kbw010gy19vh47z8gpz3"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.4"; sha256 = "0wd6v57p53ahz5z9zg4iyzmy3src7rlsncyqpcag02jjj1yx6g58"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.7.0"; sha256 = "1zj4wwsad2j7y1byigm3c386rv56xr05mwxjlgqh0h0n5w5yjc4w"; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.7.0"; sha256 = "1lz3ha3pp58hd4y031z64slcf9rh7g1cgkrlrbhi4vpa67xhynnh"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "7.0.0"; sha256 = "121zs4jp8iimgbpzm3wsglhjwkc06irg1pxy8c1zcdlsg34cfq1p"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "7.0.0"; sha256 = "181d7mp9307fs17lyy42f8cxnjwysddmpsalky4m0pqxcimnr6g7"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Http"; version = "7.0.0"; sha256 = "196b13zkkq0fhfgigkhwcw1hhaj4dj5pc27z7d5niaizzx6ycwiw"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "7.0.0"; sha256 = "1bqd3pqn5dacgnkq0grc17cgb2i0w8z1raw12nwm3p3zhrfcvgxf"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "7.0.0"; sha256 = "1gn7d18i1wfy13vrwhmdv1rmsb4vrk26kqdld4cgvh77yigj90xs"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "7.0.0"; sha256 = "0b90zkrsk5dw3wr749rbynhpxlg4bgqdnd7d5vdlw2g9c7zlhgx6"; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "7.0.0"; sha256 = "1b4km9fszid9vp2zb3gya5ni9fn8bq62bzaas2ck2r7gs0sdys80"; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
+  (fetchNuGet { pname = "Polly"; version = "7.2.4"; sha256 = "0lvhi2a18p6ay780lbw18656297s9i45cvpp4dr9k5lhg7fwl2y1"; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "7.0.0"; sha256 = "1n9122cy6v3qhsisc9lzwa1m1j62b8pi2678nsmnlyvfpk0zdagm"; })
+  (fetchNuGet { pname = "System.CommandLine"; version = "2.0.0-beta4.22272.1"; sha256 = "1iy5hwwgvx911g3yq65p4zsgpy08w4qz9j3h0igcf7yci44vw8yd"; })
+  (fetchNuGet { pname = "System.CommandLine.NamingConventionBinder"; version = "2.0.0-beta4.22272.1"; sha256 = "07hcz8jcqla4fs7cd2r0lanqsa13nl9l37spby9bc5p2apkyrz0m"; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "6.0.1"; sha256 = "17h8bkcv0vf9a7gp9ajkd107zid98wql5kzlzwrjm5nm92nk0bsy"; })
+  (fetchNuGet { pname = "System.IO.Hashing"; version = "6.0.0"; sha256 = "0lga30s3cllg2jkwldgabwrb0jg3dzj859bwj95xhnm3zcklnb41"; })
+  (fetchNuGet { pname = "System.Linq.Async"; version = "6.0.1"; sha256 = "10ira8hmv0i54yp9ggrrdm1c06j538sijfjpn1kmnh9j2xk5yzmq"; })
+  (fetchNuGet { pname = "System.Memory.Data"; version = "1.0.2"; sha256 = "1p8qdg0gzxhjvabryc3xws2629pj8w5zz2iqh86kw8sh0rann9ay"; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "7.0.0"; sha256 = "1wilasn2qmj870h2bhw348lspamm7pbinpb4m89icg113510l00v"; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "4.7.2"; sha256 = "0ap286ykazrl42if59bxhzv81safdfrrmfqr3112siwyajx4wih9"; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.2"; sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4"; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
+]
diff --git a/pkgs/by-name/gh/gh-gei/package.nix b/pkgs/by-name/gh/gh-gei/package.nix
new file mode 100644
index 0000000000000..bf0ac23a7b0f9
--- /dev/null
+++ b/pkgs/by-name/gh/gh-gei/package.nix
@@ -0,0 +1,27 @@
+{ lib
+, fetchFromGitHub
+, buildDotnetModule
+}:
+
+buildDotnetModule rec {
+  pname = "gh-gei";
+  version = "1.7.1";
+
+  src = fetchFromGitHub {
+    owner = "github";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "sha256-cz301JzGZTAu0DcxmFpEmBemEij1+OIw4dB2PpwyYS0=";
+  };
+
+  projectFile = "src/gei/gei.csproj";
+  nugetDeps = ./deps.nix; # File generated with `nix-build -A gh-gei.passthru.fetch-deps`.
+
+  meta = with lib; {
+    homepage = "https://github.com/github/gh-gei";
+    description = "Migration CLI for GitHub to GitHub migrations";
+    license = licenses.mit;
+    maintainers = with maintainers; [ lafrenierejm ];
+    mainProgram = "gei";
+  };
+}
diff --git a/pkgs/by-name/gp/gpsprune/package.nix b/pkgs/by-name/gp/gpsprune/package.nix
index 10975337b66e2..20b5dc15d6ce4 100644
--- a/pkgs/by-name/gp/gpsprune/package.nix
+++ b/pkgs/by-name/gp/gpsprune/package.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gpsprune";
-  version = "24.1";
+  version = "24.2";
 
   src = fetchurl {
     url = "https://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar";
-    sha256 = "sha256-k7aRuz/FOqQe2C0luiUwoFxnIvgM6opwsGZV7+hxJSM=";
+    sha256 = "sha256-wGg7WPj61yx7zMBIdH9ls18BnD1R713U5Vgc/kL9qYs=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/by-name/gp/gpt4all/package.nix b/pkgs/by-name/gp/gpt4all/package.nix
index 93524bd30340b..fbf652297a25e 100644
--- a/pkgs/by-name/gp/gpt4all/package.nix
+++ b/pkgs/by-name/gp/gpt4all/package.nix
@@ -79,6 +79,6 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/nomic-ai/gpt4all";
     license = lib.licenses.mit;
     mainProgram = "gpt4all";
-    maintainers = with lib.maintainers; [ drupol polygon ];
+    maintainers = with lib.maintainers; [ polygon ];
   };
 })
diff --git a/pkgs/by-name/ja/jan/package.nix b/pkgs/by-name/ja/jan/package.nix
index 1be4d3c5bc8c2..982f6fc91503b 100644
--- a/pkgs/by-name/ja/jan/package.nix
+++ b/pkgs/by-name/ja/jan/package.nix
@@ -29,7 +29,7 @@ appimageTools.wrapType2 {
     homepage = "https://github.com/janhq/jan";
     license = lib.licenses.agpl3Plus;
     mainProgram = "jan";
-    maintainers = with lib.maintainers; [ drupol ];
+    maintainers = with lib.maintainers; [ ];
     platforms = lib.platforms.linux;
   };
 }
diff --git a/pkgs/by-name/ku/kubectl-validate/package.nix b/pkgs/by-name/ku/kubectl-validate/package.nix
index a37ecbdf92160..5d18e567edd93 100644
--- a/pkgs/by-name/ku/kubectl-validate/package.nix
+++ b/pkgs/by-name/ku/kubectl-validate/package.nix
@@ -4,7 +4,7 @@
 , nix-update-script
 }:
 let
-  version = "0.0.3";
+  version = "0.0.4";
 in
 buildGoModule {
   inherit version;
@@ -14,7 +14,7 @@ buildGoModule {
     owner = "kubernetes-sigs";
     repo = "kubectl-validate";
     rev = "v${version}";
-    hash = "sha256-k2+2QIPjNw6C/Do1WhPN39VZhZX4PZ6ZsKDKGJ9E5QA=";
+    hash = "sha256-0r3ffrZSRtSe5CgvocRhoJz0zqUsx9vtABP2h1o9vCw=";
   };
 
   vendorHash = null;
@@ -24,6 +24,9 @@ buildGoModule {
   preBuild = ''
     mv cmd/download-builtin-schemas/main.go cmd/download-builtin-schemas/_main.go
     mv pkg/openapiclient/github_builtins_test.go pkg/openapiclient/_github_builtins_test.go
+
+    # https://github.com/kubernetes-sigs/kubectl-validate/issues/134
+    mv pkg/openapiclient/hardcoded_builtins_test.go pkg/openapiclient/_hardcoded_builtins_test.go
   '';
 
   passthru.updateScript = nix-update-script { };
diff --git a/pkgs/by-name/le/lefthook/package.nix b/pkgs/by-name/le/lefthook/package.nix
index 2931a41cc3efd..160029bae89d2 100644
--- a/pkgs/by-name/le/lefthook/package.nix
+++ b/pkgs/by-name/le/lefthook/package.nix
@@ -6,7 +6,7 @@
 
 let
   pname = "lefthook";
-  version = "1.6.16";
+  version = "1.6.18";
 in
 buildGoModule {
   inherit pname version;
@@ -15,7 +15,7 @@ buildGoModule {
     owner = "evilmartians";
     repo = "lefthook";
     rev = "v${version}";
-    hash = "sha256-5sGhm+ioH9hQLDuk7a0oUB1CqiiTt88UKAmBqUeCfic=";
+    hash = "sha256-jJKnBQ+49LtwSNTzX2xsL/lFFlaBBvJtIL9ltODPhEk=";
   };
 
   vendorHash = "sha256-ralnfqrP6R58Wjc/AWRf1motWZICPagZxHCkqVcwYoo=";
diff --git a/pkgs/by-name/mi/miru/darwin.nix b/pkgs/by-name/mi/miru/darwin.nix
new file mode 100644
index 0000000000000..af841bb43bbd6
--- /dev/null
+++ b/pkgs/by-name/mi/miru/darwin.nix
@@ -0,0 +1,33 @@
+{
+  stdenvNoCC,
+  fetchurl,
+  unzip,
+  makeWrapper,
+
+  pname,
+  version,
+  meta,
+}:
+stdenvNoCC.mkDerivation rec {
+  inherit pname version meta;
+
+  src = fetchurl {
+    url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/mac-Miru-${version}-mac.zip";
+    hash = "sha256-OakGB5Fz1Tlxa/Uu7xHlKoEF9VRfWFQ9CjsR0eCRyQw=";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [
+    unzip
+    makeWrapper
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/{bin,Applications}
+    cp -r Miru.app $out/Applications/
+    makeWrapper $out/Applications/Miru.app/Contents/MacOS/Miru $out/bin/miru
+    runHook postInstall
+  '';
+}
diff --git a/pkgs/by-name/mi/miru/linux.nix b/pkgs/by-name/mi/miru/linux.nix
new file mode 100644
index 0000000000000..f86aee30bfd1e
--- /dev/null
+++ b/pkgs/by-name/mi/miru/linux.nix
@@ -0,0 +1,31 @@
+{
+  fetchurl,
+  appimageTools,
+
+  pname,
+  version,
+  meta,
+}:
+
+appimageTools.wrapType2 rec {
+  inherit pname version meta;
+
+  src = fetchurl {
+    url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/linux-Miru-${version}.AppImage";
+    name = "${pname}-${version}.AppImage";
+    sha256 = "sha256-aPutbJthUhZtBYkYuUB5v88OdhOrcnqw4AhnepfO1B4=";
+  };
+
+  extraInstallCommands =
+    let
+      contents = appimageTools.extractType2 { inherit pname version src; };
+    in
+    ''
+      mkdir -p "$out/share/applications"
+      mkdir -p "$out/share/lib/miru"
+      cp -r ${contents}/{locales,resources} "$out/share/lib/miru"
+      cp -r ${contents}/usr/* "$out"
+      cp "${contents}/${pname}.desktop" "$out/share/applications/"
+      substituteInPlace $out/share/applications/${pname}.desktop --replace 'Exec=AppRun' 'Exec=${pname}'
+    '';
+}
diff --git a/pkgs/by-name/mi/miru/package.nix b/pkgs/by-name/mi/miru/package.nix
index 75eb7b4823c5e..eeb1b0688dbc3 100644
--- a/pkgs/by-name/mi/miru/package.nix
+++ b/pkgs/by-name/mi/miru/package.nix
@@ -1,39 +1,22 @@
-{ lib
-, fetchurl
-, appimageTools
+{
+  stdenv,
+  lib,
+  callPackage,
 }:
-
-appimageTools.wrapType2 rec {
+let
   pname = "miru";
   version = "5.1.4";
-
-  src = fetchurl {
-    url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/linux-Miru-${version}.AppImage";
-    name = "${pname}-${version}.AppImage";
-    sha256 = "sha256-aPutbJthUhZtBYkYuUB5v88OdhOrcnqw4AhnepfO1B4=";
-  };
-
-  extraInstallCommands =
-    let
-      contents = appimageTools.extractType2 { inherit pname version src; };
-    in
-    ''
-      mkdir -p "$out/share/applications"
-      mkdir -p "$out/share/lib/miru"
-      cp -r ${contents}/{locales,resources} "$out/share/lib/miru"
-      cp -r ${contents}/usr/* "$out"
-      cp "${contents}/${pname}.desktop" "$out/share/applications/"
-      substituteInPlace $out/share/applications/${pname}.desktop --replace 'Exec=AppRun' 'Exec=${pname}'
-    '';
-
   meta = with lib; {
     description = "Stream anime torrents, real-time with no waiting for downloads";
     homepage = "https://miru.watch";
     license = licenses.gpl3Plus;
-    maintainers = [ maintainers.d4ilyrun ];
+    maintainers = with maintainers; [
+      d4ilyrun
+      matteopacini
+    ];
     mainProgram = "miru";
 
-    platforms = [ "x86_64-linux" ];
+    platforms = [ "x86_64-linux" ] ++ platforms.darwin;
     sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
 
     longDescription = ''
@@ -49,4 +32,8 @@ appimageTools.wrapType2 rec {
       instead of flat out closing MPV.
     '';
   };
-}
+in
+if stdenv.isDarwin then
+  callPackage ./darwin.nix { inherit pname version meta; }
+else
+  callPackage ./linux.nix { inherit pname version meta; }
diff --git a/pkgs/by-name/np/npm-lockfile-fix/package.nix b/pkgs/by-name/np/npm-lockfile-fix/package.nix
index 8e5564172dafa..69c5d40756b7b 100644
--- a/pkgs/by-name/np/npm-lockfile-fix/package.nix
+++ b/pkgs/by-name/np/npm-lockfile-fix/package.nix
@@ -26,8 +26,9 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Add missing integrity and resolved fields to a package-lock.json file";
+    homepage = "https://github.com/jeslie0/npm-lockfile-fix";
     mainProgram = "npm-lockfile-fix";
     license = lib.licenses.mit;
-    maintainers = [ maintainers.lucasew ];
+    maintainers = with maintainers; [ lucasew felschr ];
   };
 }
diff --git a/pkgs/by-name/pa/panvimdoc/package.nix b/pkgs/by-name/pa/panvimdoc/package.nix
new file mode 100644
index 0000000000000..d31260975a94a
--- /dev/null
+++ b/pkgs/by-name/pa/panvimdoc/package.nix
@@ -0,0 +1,50 @@
+{
+  lib,
+  fetchFromGitHub,
+  stdenvNoCC,
+  pandoc,
+  vim,
+  neovim-unwrapped,
+  makeWrapper,
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "panvimdoc";
+  version = "4.0.1";
+
+  src = fetchFromGitHub {
+    owner = "kdheepak";
+    repo = "panvimdoc";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-HmEBPkNELHC7Xy0v730sQWZyPPwFdIBUcELzNtrWwzQ=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildPhase = ''
+    runHook preBuild
+    install -Dm444 scripts/* -t $out/share/scripts
+    install -Dm444 lib/* -t $out/share/lib
+    install -Dm755 panvimdoc.sh -t $out/share
+    runHook postBuild
+  '';
+
+  postFixup = ''
+    makeWrapper $out/share/panvimdoc.sh $out/bin/panvimdoc --prefix PATH : ${
+      lib.makeBinPath [
+        pandoc
+        vim
+        neovim-unwrapped
+      ]
+    }
+  '';
+
+  meta = {
+    description = "Write documentation in pandoc markdown. Generate documentation in vimdoc";
+    homepage = "https://github.com/kdheepak/panvimdoc";
+    license = lib.licenses.mit;
+    platforms = lib.platforms.unix;
+    maintainers = with lib.maintainers; [ mrcjkb ];
+    mainProgram = "panvimdoc";
+  };
+})
diff --git a/pkgs/by-name/pd/pdftitle/package.nix b/pkgs/by-name/pd/pdftitle/package.nix
new file mode 100644
index 0000000000000..e3267a58abae4
--- /dev/null
+++ b/pkgs/by-name/pd/pdftitle/package.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  fetchFromGitHub,
+  python3Packages,
+  pdfminer
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "pdftitle";
+  version = "0.11";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "metebalci";
+    repo = "pdftitle";
+    rev = "v${version}";
+    hash = "sha256-kj1pJpyWRgEaAADF6YqzdD8QnJ6iu0eXFMR4NGM4/+Y=";
+  };
+
+  build-system = with python3Packages; [
+    setuptools
+  ];
+
+  dependencies = with python3Packages; [
+    pdfminer
+  ];
+
+  pythonImportsCheck = [ "pdftitle" ];
+
+  meta = {
+    description = "Utility to extract the title from a PDF file";
+    homepage = "https://github.com/metebalci/pdftitle";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ dansbandit ];
+    mainProgram = "pdftitle";
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-gen-connect-es/package.nix b/pkgs/by-name/pr/protoc-gen-connect-es/package.nix
new file mode 100644
index 0000000000000..a245ee5e4f02f
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-gen-connect-es/package.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  npm-lockfile-fix,
+}:
+
+buildNpmPackage rec {
+  pname = "protoc-gen-connect-es";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "connectrpc";
+    repo = "connect-es";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qCIwr4Hyc5PARUa7tMntuyWRmO6ognmtjxN0myo8FXc=";
+
+    postFetch = ''
+      ${lib.getExe npm-lockfile-fix} $out/package-lock.json
+    '';
+  };
+
+  npmDepsHash = "sha256-OGwEpXZqzMSIES+cmseQlo6/vzkx5ztO0gM/rUB0tGY=";
+
+  npmWorkspace = "packages/protoc-gen-connect-es";
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    description = "Protobuf plugin for generating Connect-ecompatiblenabled ECMAScript code";
+    homepage = "https://github.com/connectrpc/connect-es";
+    changelog = "https://github.com/connectrpc/connect-es/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [
+      felschr
+      jtszalay
+    ];
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-gen-connect-es/update.sh b/pkgs/by-name/pr/protoc-gen-connect-es/update.sh
new file mode 100755
index 0000000000000..6306267da77fd
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-gen-connect-es/update.sh
@@ -0,0 +1,30 @@
+#! /usr/bin/env -S nix shell nixpkgs#gnugrep nixpkgs#gnused nixpkgs#coreutils nixpkgs#curl nixpkgs#wget nixpkgs#jq nixpkgs#nix-update nixpkgs#prefetch-npm-deps nixpkgs#npm-lockfile-fix nixpkgs#nodejs --command bash
+
+set -euo pipefail
+
+version="$(
+  curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/connectrpc/connect-es/releases" |
+    jq -r 'map(select(.prerelease == false)) | .[0].tag_name' |
+    grep -oP "^v\K.*"
+)"
+url="https://raw.githubusercontent.com/connectrpc/connect-es/v$version/"
+
+if [[ "$UPDATE_NIX_OLD_VERSION" == "$version" ]]; then
+  echo "Already up to date!"
+  exit 0
+fi
+
+tmp="$(mktemp -d)"
+trap 'rm -rf -- "$tmp"' EXIT
+
+pushd -- "$tmp"
+wget "$url/package-lock.json"
+npm-lockfile-fix package-lock.json
+npm_hash=$(prefetch-npm-deps package-lock.json)
+popd
+
+pushd "$(dirname "${BASH_SOURCE[0]}")"
+sed -i 's#npmDepsHash = "[^"]*"#npmDepsHash = "'"$npm_hash"'"#' package.nix
+popd
+
+nix-update protoc-gen-connect-es --version "$version"
diff --git a/pkgs/by-name/pr/protoc-gen-es/package.nix b/pkgs/by-name/pr/protoc-gen-es/package.nix
new file mode 100644
index 0000000000000..4b357e4705503
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-gen-es/package.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildNpmPackage,
+  fetchFromGitHub,
+  npm-lockfile-fix,
+}:
+
+buildNpmPackage rec {
+  pname = "protoc-gen-es";
+  version = "1.10.0";
+
+  src = fetchFromGitHub {
+    owner = "bufbuild";
+    repo = "protobuf-es";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-bHl8gqNrTm1+Cnj43RWmrLDUz+G11C4gprEiNOpyOdQ=";
+
+    postFetch = ''
+      ${lib.getExe npm-lockfile-fix} $out/package-lock.json
+    '';
+  };
+
+  npmDepsHash = "sha256-ozkkakfSBycu83gTs8Orhm5Tg8kRSrF/vMJxVnPjhIw=";
+
+  npmWorkspace = "packages/protoc-gen-es";
+
+  preBuild = ''
+    npm run --workspace=packages/protobuf build
+    npm run --workspace=packages/protoplugin build
+  '';
+
+  passthru.updateScript = ./update.sh;
+
+  meta = with lib; {
+    description = "Protobuf plugin for generating ECMAScript code";
+    homepage = "https://github.com/bufbuild/protobuf-es";
+    changelog = "https://github.com/bufbuild/protobuf-es/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [
+      felschr
+      jtszalay
+    ];
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-gen-es/update.sh b/pkgs/by-name/pr/protoc-gen-es/update.sh
new file mode 100755
index 0000000000000..7507fbd1fe338
--- /dev/null
+++ b/pkgs/by-name/pr/protoc-gen-es/update.sh
@@ -0,0 +1,30 @@
+#! /usr/bin/env -S nix shell nixpkgs#gnugrep nixpkgs#gnused nixpkgs#coreutils nixpkgs#curl nixpkgs#wget nixpkgs#jq nixpkgs#nix-update nixpkgs#prefetch-npm-deps nixpkgs#npm-lockfile-fix nixpkgs#nodejs --command bash
+
+set -euo pipefail
+
+version="$(
+  curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/bufbuild/protobuf-es/releases" |
+    jq -r 'map(select(.prerelease == false)) | .[0].tag_name' |
+    grep -oP "^v\K.*"
+)"
+url="https://raw.githubusercontent.com/bufbuild/protobuf-es/v$version/"
+
+if [[ "$UPDATE_NIX_OLD_VERSION" == "$version" ]]; then
+  echo "Already up to date!"
+  exit 0
+fi
+
+tmp="$(mktemp -d)"
+trap 'rm -rf -- "$tmp"' EXIT
+
+pushd -- "$tmp"
+wget "$url/package-lock.json"
+npm-lockfile-fix package-lock.json
+npm_hash=$(prefetch-npm-deps package-lock.json)
+popd
+
+pushd "$(dirname "${BASH_SOURCE[0]}")"
+sed -i 's#npmDepsHash = "[^"]*"#npmDepsHash = "'"$npm_hash"'"#' package.nix
+popd
+
+nix-update protoc-gen-es --version "$version"
diff --git a/pkgs/development/tools/protoc-gen-prost-crate/default.nix b/pkgs/by-name/pr/protoc-gen-prost-crate/package.nix
index ed278646ee471..97c62110931cf 100644
--- a/pkgs/development/tools/protoc-gen-prost-crate/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost-crate/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost-crate";
-  version = "0.3.1";
+  version = "0.4.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-MtGeU2PnVYPXb3nly2UaryjmjMz1lxcvYDjFiwf58FA=";
+    hash = "sha256-+TSZ2QstAF8DXsHunV/nQyqF++0bFud1ZWJQEI3JEwc=";
   };
 
-  cargoSha256 = "sha256-dcKJRX/iHIWEmBD2nTMyQozxld8b7dhxxB85quPUysg=";
+  cargoHash = "sha256-KbErgnXG11ngzLVSktuyUAupYs1ZD64z3plKVtzLx1A=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates Cargo crates and include files for `protoc-gen-prost`";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-prost-serde/default.nix b/pkgs/by-name/pr/protoc-gen-prost-serde/package.nix
index e1595e0a2b868..3486fbea0e1e8 100644
--- a/pkgs/development/tools/protoc-gen-prost-serde/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost-serde/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost-serde";
-  version = "0.2.3";
+  version = "0.3.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-V2Z6m9y/bBwrr1mgKXKZjVg+LqTe+GalN/AeaICyE64=";
+    hash = "sha256-O2Mpft31ZQncqETWzwD73I1nX1Wt5XVHcTJUk5qhRLY=";
   };
 
-  cargoSha256 = "sha256-l27+Rs4TYIJXZVLj7Tjw8M5+7ivWEY0TXbLtbuzwxLw=";
+  cargoHash = "sha256-aUWmNS3jF1I0NLApBn3GMMv6ID9mM/j7r7sPFCsFIuw=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates serde serialization implementations for `protoc-gen-prost`";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-prost/default.nix b/pkgs/by-name/pr/protoc-gen-prost/package.nix
index 6012af0acf3c2..7c92095fbeee7 100644
--- a/pkgs/development/tools/protoc-gen-prost/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-prost/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-prost";
-  version = "0.2.3";
+  version = "0.3.1";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-QTt5mSUe41r2fxrgWj1l6fHC/utMVIgMi2ySsdGyl/Y=";
+    hash = "sha256-ma9sdt3/uq06BMELwsNadMkiEfstQhA4DAQEPdizZJM=";
   };
 
-  cargoSha256 = "sha256-ghXcyxG9zqUOFKGvUza29OgC3XiEtesqsAsfI/lFT08=";
+  cargoHash = "sha256-pJDrwX5uDIrycxtmbds8l4wadZE0RdgmNpMwVkUGJDs=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protocol Buffers compiler plugin powered by Prost";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/development/tools/protoc-gen-tonic/default.nix b/pkgs/by-name/pr/protoc-gen-tonic/package.nix
index 6855285341e57..55c1828618e9d 100644
--- a/pkgs/development/tools/protoc-gen-tonic/default.nix
+++ b/pkgs/by-name/pr/protoc-gen-tonic/package.nix
@@ -1,19 +1,22 @@
-{ fetchCrate
-, lib
-, rustPlatform
-, protobuf
+{
+  fetchCrate,
+  lib,
+  rustPlatform,
+  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "protoc-gen-tonic";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-jgU1XvUxIrZ72dLNPqDGHCONMlHsjW4k4vkO626iqxs=";
+    hash = "sha256-3qz1ea9lEsZjhWNA0lcwqsPkNmjj2ZBljqNRr5/2lKM=";
   };
 
-  cargoSha256 = "sha256-FrkvL/uJitMkSyOytVSmlwr26yMVM12S2n+EaSw11CE=";
+  cargoHash = "sha256-nUsRoDaP+omZdOTnaxvHbJT1uNGtyfgXyEFZbp/CeYA=";
+
+  passthru.updateScript = nix-update-script { };
 
   meta = with lib; {
     description = "Protoc plugin that generates Tonic gRPC server and client code using the Prost code generation engine";
@@ -21,6 +24,9 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
-    maintainers = with maintainers; [ felschr sitaaax ];
+    maintainers = with maintainers; [
+      felschr
+      sitaaax
+    ];
   };
 }
diff --git a/pkgs/by-name/qu/quarkus/package.nix b/pkgs/by-name/qu/quarkus/package.nix
index 7e79a87056173..5415039d65eeb 100644
--- a/pkgs/by-name/qu/quarkus/package.nix
+++ b/pkgs/by-name/qu/quarkus/package.nix
@@ -7,11 +7,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "quarkus-cli";
-  version = "3.11.1";
+  version = "3.11.2";
 
   src = fetchurl {
     url = "https://github.com/quarkusio/quarkus/releases/download/${finalAttrs.version}/quarkus-cli-${finalAttrs.version}.tar.gz";
-    hash = "sha256-eR3/DDO50KYVI14iX+IvALK4YLx0hmd9Z4rToPQTBGE=";
+    hash = "sha256-z8mQo9Kl7HvIl+8GDEcuPdRkVmKUX5/V6X4qvRTe6t4=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/by-name/qu/quickemu/package.nix b/pkgs/by-name/qu/quickemu/package.nix
index b650ef91f88ec..5349581aab119 100644
--- a/pkgs/by-name/qu/quickemu/package.nix
+++ b/pkgs/by-name/qu/quickemu/package.nix
@@ -56,13 +56,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "quickemu";
-  version = "4.9.4";
+  version = "4.9.4-unstable-2024-05-28";
 
   src = fetchFromGitHub {
     owner = "quickemu-project";
     repo = "quickemu";
-    rev = finalAttrs.version;
-    hash = "sha256-fjbXgze6klvbRgkJtPIUh9kEkP/As7dAj+cazpzelBY=";
+    rev = "d78255b097b599e8ab3713cb61c4085cc45f5a95"; # TODO: return to version on next release
+    hash = "sha256-fF306CdGqKM+779OLm0NNyqPBtm7TuU7UN/NanT12y8=";
   };
 
   postPatch = ''
@@ -74,16 +74,6 @@ stdenv.mkDerivation (finalAttrs: {
       quickemu
   '';
 
-  patches = [
-    # reduces windows vm ram requirements to 4G, to match microsoft recommendations
-    # TODO: remove on next release
-    (fetchpatch2 {
-      name = "decrease-windows-ram-requirements.patch";
-      url = "https://github.com/quickemu-project/quickemu/commit/f51697593a4650c5486661292e2febe1d16f8c71.patch";
-      hash = "sha256-J5hIvQGtkufOcjk2FZN65iox/W2zkLlg+Veg9TF11Fs=";
-    })
-  ];
-
   nativeBuildInputs = [
     makeWrapper
     installShellFiles
@@ -106,7 +96,10 @@ stdenv.mkDerivation (finalAttrs: {
     runHook postInstall
   '';
 
-  passthru.tests = testers.testVersion { package = quickemu; };
+  passthru.tests = testers.testVersion {
+    version = "4.9.5"; # required for passing tests, TODO: remove when release bump
+    package = quickemu;
+  };
 
   meta = {
     description = "Quickly create and run optimised Windows, macOS and Linux virtual machines";
diff --git a/pkgs/by-name/rc/rclip/package.nix b/pkgs/by-name/rc/rclip/package.nix
index 09790b93cbcc6..4be5a5429d1e4 100644
--- a/pkgs/by-name/rc/rclip/package.nix
+++ b/pkgs/by-name/rc/rclip/package.nix
@@ -4,14 +4,14 @@
 }:
 python3Packages.buildPythonApplication rec {
   pname = "rclip";
-  version = "1.10.0";
+  version = "1.10.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "yurijmikhalevich";
     repo = "rclip";
     rev = "refs/tags/v${version}";
-    hash = "sha256-l3KsOX5IkU4/wQyXXHR+09KPSD6nsnBaiGjSi7fMyqA=";
+    hash = "sha256-02ZbeUw+O7tBQwauklaPPcgNasG+mYrSnw9TGJqtJfk=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/pkgs/by-name/so/solo5/package.nix b/pkgs/by-name/so/solo5/package.nix
index 57ccd1e24b2bf..1ca866c81e5e2 100644
--- a/pkgs/by-name/so/solo5/package.nix
+++ b/pkgs/by-name/so/solo5/package.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, dosfstools, libseccomp, makeWrapper, mtools, parted
-, pkg-config, qemu, syslinux, util-linux }:
+, pkg-config, qemu_test, syslinux, util-linux }:
 
 let
   version = "0.8.1";
@@ -55,10 +55,12 @@ in stdenv.mkDerivation {
   '';
 
   doCheck = stdenv.hostPlatform.isLinux;
-  nativeCheckInputs = [ util-linux qemu ];
+  nativeCheckInputs = [ util-linux qemu_test ];
   checkPhase = ''
     runHook preCheck
     patchShebangs tests
+    substituteInPlace scripts/virtio-run/solo5-virtio-run.sh \
+      --replace " -no-acpi" ""
     ./tests/bats-core/bats ./tests/tests.bats
     runHook postCheck
   '';
diff --git a/pkgs/by-name/sp/spip/package.nix b/pkgs/by-name/sp/spip/package.nix
new file mode 100644
index 0000000000000..9f99a9e438e09
--- /dev/null
+++ b/pkgs/by-name/sp/spip/package.nix
@@ -0,0 +1,67 @@
+{
+ fetchFromGitHub,
+ fetchurl,
+ lib,
+ makeWrapper,
+ rPackages,
+ rWrapper,
+ stdenv
+}:
+
+let
+  my-r-packages = rWrapper.override{packages = with rPackages; [
+    foreach
+    doParallel
+    randomForest
+  ];};
+  transcriptome-url = "https://kumisystems.dl.sourceforge.net/project/splicing-prediction-pipeline/transcriptome/";
+
+  transcriptome19 = fetchurl {
+    url = transcriptome-url + "/transcriptome_hg19.RData";
+    sha256 = "sha256-E8UmHoNoySSIde+TRE6bxVP0PrccpKDvIHBGCvWnYOw=";
+  };
+
+  transcriptome38 = fetchurl {
+    url = transcriptome-url + "/transcriptome_hg38.RData";
+    sha256 = "sha256-mQMMZVN1byXMYjFoRdezmoZtnhUur2CHOP/j/pmw8as=";
+  };
+
+in
+
+stdenv.mkDerivation {
+  pname = "spip";
+  version = "unstable-2023-04-19";
+
+  src = fetchFromGitHub {
+    owner = "raphaelleman";
+    repo = "SPiP";
+    rev = "cae95fe0ee7a2602630b7a4eacbf7cfa0e1763f0";
+    sha256 = "sha256-/CufUaQYnsdo8Rij/24JmixPgMi7o1CApLxeTneWAVc=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInput = [ my-r-packages ];
+
+  installPhase =''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    cp SPiPv2.1_main.r $out/
+    cp -r RefFiles $out/
+    ln -s ${transcriptome19} $out/RefFiles/transcriptome_hg19.RData
+    ln -s ${transcriptome38} $out/RefFiles/transcriptome_hg38.RData
+    makeWrapper ${my-r-packages}/bin/Rscript $out/bin/spip \
+      --add-flags "$out/SPiPv2.1_main.r"
+
+    runHook postInstall
+'';
+
+  meta = with lib; {
+    description = "A random forest model for splice prediction in genomics";
+    license     = licenses.mit;
+    homepage    = "https://github.com/raphaelleman/SPiP";
+    maintainers = with maintainers; [ apraga ];
+    platforms = platforms.unix;
+    mainProgram = "spip";
+  };
+}
diff --git a/pkgs/by-name/st/stalwart-mail/package.nix b/pkgs/by-name/st/stalwart-mail/package.nix
index a2594799be071..14df24b62ef85 100644
--- a/pkgs/by-name/st/stalwart-mail/package.nix
+++ b/pkgs/by-name/st/stalwart-mail/package.nix
@@ -74,6 +74,10 @@ rustPlatform.buildRustPackage {
   };
 
   postInstall = ''
+    mkdir -p $out/etc/stalwart
+    cp resources/config/spamfilter.toml $out/etc/stalwart/spamfilter.toml
+    cp -r resources/config/spamfilter $out/etc/stalwart/
+
     mkdir -p $out/lib/systemd/system
 
     substitute resources/systemd/stalwart-mail.service $out/lib/systemd/system/stalwart-mail.service \
diff --git a/pkgs/by-name/su/substudy/Cargo.lock b/pkgs/by-name/su/substudy/Cargo.lock
new file mode 100644
index 0000000000000..02902a56a6e92
--- /dev/null
+++ b/pkgs/by-name/su/substudy/Cargo.lock
@@ -0,0 +1,4781 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "ahash"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9"
+dependencies = [
+ "getrandom",
+ "once_cell",
+ "version_check",
+]
+
+[[package]]
+name = "ahash"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "aligned_media"
+version = "0.1.0"
+dependencies = [
+ "isolang",
+ "peg",
+ "relative-path",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "uuid",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
+name = "ammonia"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e6d1c7838db705c9b756557ee27c384ce695a1c51a6fe528784cb1c6840170"
+dependencies = [
+ "html5ever",
+ "maplit",
+ "once_cell",
+ "tendril",
+ "url",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.81"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+
+[[package]]
+name = "anymap"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344"
+
+[[package]]
+name = "anymap2"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
+
+[[package]]
+name = "askama_escape"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341"
+
+[[package]]
+name = "async-channel"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 5.2.0",
+ "event-listener-strategy 0.5.1",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-compression"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a116f46a969224200a0a97f29cfd4c50e7534e4b4826bd23ea2c3c533039c82c"
+dependencies = [
+ "flate2",
+ "futures-core",
+ "memchr",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "async-convert"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d416feee97712e43152cd42874de162b8f9b77295b1c85e5d92725cc8310bae"
+dependencies = [
+ "async-trait",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+dependencies = [
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-openai"
+version = "0.19.1"
+source = "git+https://github.com/emk/async-openai.git?branch=transcription_verbose_json#930778ba2892a92830544a7b4a5611b72cdbfa71"
+dependencies = [
+ "async-convert",
+ "backoff",
+ "base64",
+ "bytes",
+ "derive_builder",
+ "futures",
+ "rand",
+ "reqwest 0.11.27",
+ "reqwest-eventsource",
+ "secrecy",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
+
+[[package]]
+name = "async-trait"
+version = "0.1.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "audiotags"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44e797ce0164cf599c71f2c3849b56301d96a3dc033544588e875686b050ed39"
+dependencies = [
+ "audiotags-macro",
+ "id3",
+ "metaflac",
+ "mp4ameta",
+ "readme-rustdocifier",
+ "thiserror",
+]
+
+[[package]]
+name = "audiotags-macro"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaa9b2312fc01f7291f3b7b0f52ed08b1c0177c96a2e696ab55695cc4d06889"
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "axum"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "axum-macros",
+ "base64",
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.2.0",
+ "hyper-util",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "multer",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sha1",
+ "sync_wrapper 1.0.0",
+ "tokio",
+ "tokio-tungstenite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "mime",
+ "pin-project-lite",
+ "rustversion",
+ "sync_wrapper 0.1.2",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "axum-macros"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "backoff"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
+dependencies = [
+ "futures-core",
+ "getrandom",
+ "instant",
+ "pin-project-lite",
+ "rand",
+ "tokio",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "bincode"
+version = "1.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "blocking"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
+dependencies = [
+ "async-channel",
+ "async-lock",
+ "async-task",
+ "fastrand",
+ "futures-io",
+ "futures-lite",
+ "piper",
+ "tracing",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa"
+
+[[package]]
+name = "bytemuck"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+
+[[package]]
+name = "camino"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cc"
+version = "1.0.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "chardet"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a48563284b67c003ba0fb7243c87fab68885e1532c605704228a80238512e31"
+
+[[package]]
+name = "chrono"
+version = "0.4.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "ciborium"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
+dependencies = [
+ "ciborium-io",
+ "ciborium-ll",
+ "serde",
+]
+
+[[package]]
+name = "ciborium-io"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
+
+[[package]]
+name = "ciborium-ll"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
+dependencies = [
+ "ciborium-io",
+ "half",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim 0.11.0",
+ "terminal_size",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
+
+[[package]]
+name = "cli_test_dir"
+version = "0.1.8"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "concurrent-queue"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "console_error_panic_hook"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "const_format"
+version = "0.2.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673"
+dependencies = [
+ "const_format_proc_macros",
+]
+
+[[package]]
+name = "const_format_proc_macros"
+version = "0.2.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "constcat"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd7e35aee659887cbfb97aaf227ac12cad1a9d7c71e55ff3376839ed4e282d08"
+
+[[package]]
+name = "convert_case"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
+[[package]]
+name = "crc32fast"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "csv"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
+dependencies = [
+ "csv-core",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "csv-core"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "darling"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+dependencies = [
+ "darling_core 0.14.4",
+ "darling_macro 0.14.4",
+]
+
+[[package]]
+name = "darling"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391"
+dependencies = [
+ "darling_core 0.20.8",
+ "darling_macro 0.20.8",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
+dependencies = [
+ "darling_core 0.14.4",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f"
+dependencies = [
+ "darling_core 0.20.8",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown 0.14.3",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "data-encoding"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "derive_builder"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f"
+dependencies = [
+ "darling 0.14.4",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e"
+dependencies = [
+ "derive_builder_core",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "dict_importer"
+version = "0.1.0"
+dependencies = [
+ "flate2",
+ "isolang",
+ "lzma-rs",
+ "reqwest 0.12.2",
+ "serde",
+ "serde_json",
+ "tar",
+ "tempfile",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "dict_manager"
+version = "0.1.0"
+dependencies = [
+ "dict_importer",
+ "dirs",
+ "isolang",
+ "rusqlite",
+ "rust-stemmers",
+ "semver",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "diff"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
+
+[[package]]
+name = "difference"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dioxus"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "804134b0ea229772d5841e8bc19b8e41a5b93cb6f6a7d28fdf24cbd44d373687"
+dependencies = [
+ "dioxus-config-macro",
+ "dioxus-core",
+ "dioxus-core-macro",
+ "dioxus-fullstack",
+ "dioxus-hooks",
+ "dioxus-hot-reload",
+ "dioxus-html",
+ "dioxus-liveview",
+ "dioxus-router",
+ "dioxus-signals",
+ "dioxus-ssr",
+ "dioxus-web",
+ "serde",
+]
+
+[[package]]
+name = "dioxus-cli-config"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5d4661064bad2f0b12929faf6c9cea4d94e60217ba6b11ff4146b505a57124b"
+dependencies = [
+ "once_cell",
+ "serde",
+ "serde_json",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-config-macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebe244197b320dec9e9f38742985fe98c058136ada770df73e9429878ed92863"
+dependencies = [
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "dioxus-core"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f51e22f08fd018c32e6aebd8defd45a8262570881f2d616670bc62a87ef4324c"
+dependencies = [
+ "futures-channel",
+ "futures-util",
+ "generational-box",
+ "longest-increasing-subsequence",
+ "rustc-hash",
+ "serde",
+ "slab",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "dioxus-core-macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b59ee29f0273f78e0d5514b0efbec7d594de2a1c611b57fb507ce479731656ee"
+dependencies = [
+ "constcat",
+ "convert_case",
+ "dioxus-rsx",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "dioxus-debug-cell"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2"
+
+[[package]]
+name = "dioxus-fullstack"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc6fd92201e5cb8e887ab06d1aefaccd74dcb45b899a56c24838b332c31f8c4c"
+dependencies = [
+ "anymap",
+ "async-compression",
+ "async-trait",
+ "axum",
+ "base64",
+ "bytes",
+ "ciborium",
+ "dioxus-cli-config",
+ "dioxus-hot-reload",
+ "dioxus-lib",
+ "dioxus-ssr",
+ "dioxus-web",
+ "dioxus_server_macro",
+ "futures-util",
+ "http 1.1.0",
+ "hyper 1.2.0",
+ "once_cell",
+ "pin-project",
+ "serde",
+ "serde_json",
+ "server_fn",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tower",
+ "tower-http",
+ "tower-layer",
+ "tracing",
+ "tracing-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "dioxus-hooks"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "198eba79d71119d10b094ce69c5e2f3186359edb54e6b9a3219c9fed3f1990ed"
+dependencies = [
+ "dioxus-core",
+ "dioxus-debug-cell",
+ "dioxus-signals",
+ "futures-channel",
+ "futures-util",
+ "generational-box",
+ "slab",
+ "thiserror",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-hot-reload"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d5a28a2af6655473c6521fb5a428538807b985e8e5f1a8c30e2ab71bd54e637"
+dependencies = [
+ "dioxus-core",
+ "dioxus-html",
+ "dioxus-rsx",
+ "interprocess-docfix",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "dioxus-html"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0db16306a568ec8f160d98420de7b553d572b2883572d321483903d8e252924"
+dependencies = [
+ "async-trait",
+ "dioxus-core",
+ "dioxus-html-internal-macro",
+ "enumset",
+ "euclid",
+ "futures-channel",
+ "generational-box",
+ "keyboard-types",
+ "serde",
+ "serde-value",
+ "serde_json",
+ "serde_repr",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "dioxus-html-internal-macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1799f34affdb158f6ebec23b46b11f9e65de0bbadbbb781dc68c3eddfe6fd32b"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "dioxus-interpreter-js"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aaacee7f371c92e3c284a10f59286ef3d328e3222fc39f6a96017dc2825c0fa"
+dependencies = [
+ "dioxus-core",
+ "dioxus-html",
+ "js-sys",
+ "md5",
+ "sledgehammer_bindgen",
+ "sledgehammer_utils",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "dioxus-lib"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8dae8cef1e939a5c7164d1b5c4d5ebe70a88021d78468c4e05d582322d56cbe"
+dependencies = [
+ "dioxus-core",
+ "dioxus-core-macro",
+ "dioxus-hooks",
+ "dioxus-html",
+ "dioxus-rsx",
+ "dioxus-signals",
+]
+
+[[package]]
+name = "dioxus-liveview"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb2b58c6ef35b880ea648ff634d8d1c95fbf33e6c96037dd977b2a6a17163d9d"
+dependencies = [
+ "axum",
+ "dioxus-cli-config",
+ "dioxus-core",
+ "dioxus-hot-reload",
+ "dioxus-html",
+ "dioxus-interpreter-js",
+ "futures-channel",
+ "futures-util",
+ "generational-box",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "slab",
+ "thiserror",
+ "tokio",
+ "tokio-stream",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-router"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4cbbc1aff811aa3715c94a7ca0375be0be34356aba7f3897328d844323519b"
+dependencies = [
+ "dioxus-cli-config",
+ "dioxus-fullstack",
+ "dioxus-lib",
+ "dioxus-router-macro",
+ "dioxus-ssr",
+ "gloo",
+ "gloo-utils 0.1.7",
+ "js-sys",
+ "tokio",
+ "tracing",
+ "url",
+ "urlencoding",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "dioxus-router-macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a1b089ef30c7c31ad888016454d2508209c619bda09f57c877e799866e4df22"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "slab",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "dioxus-rsx"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2425ff908a21219b142251f5d2151a5f67a3558889898eef5d83fc83c37fdaa"
+dependencies = [
+ "dioxus-core",
+ "internment",
+ "krates",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-signals"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5fa4ec45a13f3c00d30cbbdf967160b43f9a7c774c53fccdec000f9f07e1aaa"
+dependencies = [
+ "dioxus-core",
+ "futures-channel",
+ "futures-util",
+ "generational-box",
+ "once_cell",
+ "parking_lot",
+ "rustc-hash",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-ssr"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7f18705a5f786f3a3a546836e4befcfe8af4476a9b30ae68286f973ea32d064"
+dependencies = [
+ "askama_escape",
+ "async-trait",
+ "chrono",
+ "dioxus-core",
+ "dioxus-html",
+ "generational-box",
+ "http 1.1.0",
+ "lru",
+ "rustc-hash",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "dioxus-web"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "737b449ac5fce120d95abe2b0e159a5f40dfb7f8b4f8deb942abaf018bc45a16"
+dependencies = [
+ "async-trait",
+ "console_error_panic_hook",
+ "dioxus-core",
+ "dioxus-html",
+ "dioxus-interpreter-js",
+ "futures-channel",
+ "futures-util",
+ "generational-box",
+ "js-sys",
+ "rustc-hash",
+ "serde",
+ "serde-wasm-bindgen",
+ "serde_json",
+ "tracing",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "dioxus_server_macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "506289d31e9c7a9c51bf4c703d2a60b1edbad567564b0a6fbeaf8d27ee0a3871"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "server_fn_macro",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "dotenv"
+version = "0.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding"
+version = "0.2.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec"
+dependencies = [
+ "encoding-index-japanese",
+ "encoding-index-korean",
+ "encoding-index-simpchinese",
+ "encoding-index-singlebyte",
+ "encoding-index-tradchinese",
+]
+
+[[package]]
+name = "encoding-index-japanese"
+version = "1.20141219.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91"
+dependencies = [
+ "encoding_index_tests",
+]
+
+[[package]]
+name = "encoding-index-korean"
+version = "1.20141219.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81"
+dependencies = [
+ "encoding_index_tests",
+]
+
+[[package]]
+name = "encoding-index-simpchinese"
+version = "1.20141219.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7"
+dependencies = [
+ "encoding_index_tests",
+]
+
+[[package]]
+name = "encoding-index-singlebyte"
+version = "1.20141219.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a"
+dependencies = [
+ "encoding_index_tests",
+]
+
+[[package]]
+name = "encoding-index-tradchinese"
+version = "1.20141219.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18"
+dependencies = [
+ "encoding_index_tests",
+]
+
+[[package]]
+name = "encoding_index_tests"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "enumset"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d"
+dependencies = [
+ "enumset_derive",
+]
+
+[[package]]
+name = "enumset_derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af"
+dependencies = [
+ "darling 0.20.8",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "env_filter"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
+dependencies = [
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "env_filter",
+ "humantime",
+ "log",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "euclid"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787"
+dependencies = [
+ "num-traits",
+ "serde",
+]
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b5fb89194fa3cad959b833185b3063ba881dbfc7030680b314250779fb4cc91"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
+dependencies = [
+ "event-listener 5.2.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "eventsource-stream"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74fef4569247a5f429d9156b9d0a2599914385dd189c539334c625d8099d90ab"
+dependencies = [
+ "futures-core",
+ "nom",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "ext-trait"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d772df1c1a777963712fb68e014235e80863d6a91a85c4e06ba2d16243a310e5"
+dependencies = [
+ "ext-trait-proc_macros",
+]
+
+[[package]]
+name = "ext-trait-proc_macros"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ab7934152eaf26aa5aa9f7371408ad5af4c31357073c9e84c3b9d7f11ad639a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "extension-traits"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a296e5a895621edf9fa8329c83aa1cb69a964643e36cf54d8d7a69b789089537"
+dependencies = [
+ "ext-trait",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+
+[[package]]
+name = "fallible-streaming-iterator"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a"
+
+[[package]]
+name = "fastrand"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+
+[[package]]
+name = "filetime"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "fixedbitset"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+
+[[package]]
+name = "flate2"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-timer"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generational-box"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "871f4a6bd7e2a93fbdd5a880776c9cd63df38145f390d43e4c4847af4c300add"
+dependencies = [
+ "parking_lot",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+
+[[package]]
+name = "gloo"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28999cda5ef6916ffd33fb4a7b87e1de633c47c0dc6d97905fee1cdaa142b94d"
+dependencies = [
+ "gloo-console",
+ "gloo-dialogs",
+ "gloo-events",
+ "gloo-file",
+ "gloo-history",
+ "gloo-net 0.3.1",
+ "gloo-render",
+ "gloo-storage",
+ "gloo-timers",
+ "gloo-utils 0.1.7",
+ "gloo-worker",
+]
+
+[[package]]
+name = "gloo-console"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b7ce3c05debe147233596904981848862b068862e9ec3e34be446077190d3f"
+dependencies = [
+ "gloo-utils 0.1.7",
+ "js-sys",
+ "serde",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-dialogs"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6"
+dependencies = [
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-events"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc"
+dependencies = [
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-file"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7"
+dependencies = [
+ "gloo-events",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-history"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85725d90bf0ed47063b3930ef28e863658a7905989e9929a8708aab74a1d5e7f"
+dependencies = [
+ "gloo-events",
+ "gloo-utils 0.1.7",
+ "serde",
+ "serde-wasm-bindgen",
+ "serde_urlencoded",
+ "thiserror",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-net"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a66b4e3c7d9ed8d315fd6b97c8b1f74a7c6ecbbc2320e65ae7ed38b7068cc620"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-sink",
+ "gloo-utils 0.1.7",
+ "http 0.2.12",
+ "js-sys",
+ "pin-project",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-net"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-sink",
+ "gloo-utils 0.2.0",
+ "http 0.2.12",
+ "js-sys",
+ "pin-project",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-render"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764"
+dependencies = [
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-storage"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d6ab60bf5dbfd6f0ed1f7843da31b41010515c745735c970e821945ca91e480"
+dependencies = [
+ "gloo-utils 0.1.7",
+ "js-sys",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-timers"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "gloo-utils"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e"
+dependencies = [
+ "js-sys",
+ "serde",
+ "serde_json",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-utils"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
+dependencies = [
+ "js-sys",
+ "serde",
+ "serde_json",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "gloo-worker"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13471584da78061a28306d1359dd0178d8d6fc1c7c80e5e35d27260346e0516a"
+dependencies = [
+ "anymap2",
+ "bincode",
+ "gloo-console",
+ "gloo-utils 0.1.7",
+ "js-sys",
+ "serde",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "h2"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 0.2.12",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "half"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "handlebars"
+version = "5.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab283476b99e66691dee3f1640fea91487a8d81f50fb5ecc75538f8f8879a1e4"
+dependencies = [
+ "log",
+ "pest",
+ "pest_derive",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+dependencies = [
+ "ahash 0.7.8",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+dependencies = [
+ "ahash 0.8.11",
+ "allocator-api2",
+]
+
+[[package]]
+name = "hashlink"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "692eaaf7f7607518dd3cef090f1474b61edc5301d8012f09579920df68b725ee"
+dependencies = [
+ "hashbrown 0.14.3",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "html5ever"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "http"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http 0.2.12",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+dependencies = [
+ "bytes",
+ "http 1.1.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-range-header"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe"
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http 0.2.12",
+ "hyper 0.14.28",
+ "rustls",
+ "tokio",
+ "tokio-rustls",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "hyper 1.2.0",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "id3"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79f41f7e5ad125c63d55b112a98afb753742fa7f97692bfbbc52544b89e1ff1f"
+dependencies = [
+ "bitflags 2.4.2",
+ "byteorder",
+ "flate2",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.14.3",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
+dependencies = [
+ "console",
+ "instant",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "internment"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e976188335292f66a1533fd41d5c2ce24b32dc2c000569b8dccf4e57f489806"
+dependencies = [
+ "hashbrown 0.12.3",
+ "parking_lot",
+]
+
+[[package]]
+name = "interprocess-docfix"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b84ee245c606aeb0841649a9288e3eae8c61b853a8cd5c0e14450e96d53d28f"
+dependencies = [
+ "blocking",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "intmap",
+ "libc",
+ "once_cell",
+ "rustc_version",
+ "spinning",
+ "thiserror",
+ "to_method",
+ "winapi",
+]
+
+[[package]]
+name = "intmap"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae52f28f45ac2bc96edb7714de995cffc174a395fb0abf5bff453587c980d7b9"
+
+[[package]]
+name = "inventory"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
+
+[[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
+name = "isolang"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe50d48c77760c55188549098b9a7f6e37ae980c586a24693d6b01c3b2010c3c"
+dependencies = [
+ "phf 0.11.2",
+ "serde",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keyboard-types"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
+dependencies = [
+ "bitflags 2.4.2",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "krates"
+version = "0.16.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b315eaab6cde3e2bcbd21810067a7b8bf4ced8cc63683ab7a96b18360c4e9df9"
+dependencies = [
+ "cargo_metadata",
+ "cfg-expr",
+ "petgraph",
+ "semver",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "lending-iterator"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc07588c853b50689205fb5c00498aa681d89828e0ce8cbd965ebc7a5d8ae260"
+dependencies = [
+ "extension-traits",
+ "lending-iterator-proc_macros",
+ "macro_rules_attribute",
+ "never-say-never",
+ "nougat",
+ "polonius-the-crab",
+]
+
+[[package]]
+name = "lending-iterator-proc_macros"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5445dd1c0deb1e97b8a16561d17fc686ca83e8411128fb036e9668a72d51b1d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libredox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.4.2",
+ "libc",
+ "redox_syscall",
+]
+
+[[package]]
+name = "libsqlite3-sys"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c10584274047cb335c23d3e61bcef8e323adae7c5c8c760540f73610177fc3f"
+dependencies = [
+ "cc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+
+[[package]]
+name = "longest-increasing-subsequence"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3bd0dd2cd90571056fdb71f6275fada10131182f84899f4b2a916e565d81d86"
+
+[[package]]
+name = "lru"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc"
+dependencies = [
+ "hashbrown 0.14.3",
+]
+
+[[package]]
+name = "lzma-rs"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e"
+dependencies = [
+ "byteorder",
+ "crc",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "macro_rules_attribute"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf0c9b980bf4f3a37fd7b1c066941dd1b1d0152ce6ee6e8fe8c49b9f6810d862"
+dependencies = [
+ "macro_rules_attribute-proc_macro",
+ "paste",
+]
+
+[[package]]
+name = "macro_rules_attribute-proc_macro"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58093314a45e00c77d5c508f76e77c3396afbbc0d01506e7fae47b018bac2b1d"
+
+[[package]]
+name = "maplit"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
+
+[[package]]
+name = "markup5ever"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
+dependencies = [
+ "log",
+ "phf 0.10.1",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
+ "tendril",
+]
+
+[[package]]
+name = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
+[[package]]
+name = "md5"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
+
+[[package]]
+name = "memchr"
+version = "2.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+
+[[package]]
+name = "metaflac"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1470d3cc1bb0d692af5eb3afb594330b8ba09fd91c32c4e1c6322172a5ba750"
+dependencies = [
+ "byteorder",
+ "hex",
+ "log",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef"
+dependencies = [
+ "mime",
+ "unicase",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "mp4ameta"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb23d62e8eb5299a3f79657c70ea9269eac8f6239a76952689bcd06a74057e81"
+dependencies = [
+ "lazy_static",
+ "mp4ameta_proc",
+]
+
+[[package]]
+name = "mp4ameta_proc"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07dcca13d1740c0a665f77104803360da0bdb3323ecce2e93fa2c959a6d52806"
+
+[[package]]
+name = "multer"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a15d522be0a9c3e46fd2632e272d178f56387bdb5c9fbb3a36c649062e9b5219"
+dependencies = [
+ "bytes",
+ "encoding_rs",
+ "futures-util",
+ "http 1.1.0",
+ "httparse",
+ "log",
+ "memchr",
+ "mime",
+ "spin",
+ "version_check",
+]
+
+[[package]]
+name = "never-say-never"
+version = "6.6.666"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf5a574dadd7941adeaa71823ecba5e28331b8313fb2e1c6a5c7e5981ea53ad6"
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nougat"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b57b9ced431322f054fc673f1d3c7fa52d80efd9df74ad2fc759f044742510"
+dependencies = [
+ "macro_rules_attribute",
+ "nougat-proc_macros",
+]
+
+[[package]]
+name = "nougat-proc_macros"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c84f77a45e99a2f9b492695d99e1c23844619caa5f3e57647cffacad773ca257"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
+dependencies = [
+ "num-bigint",
+ "num-complex",
+ "num-integer",
+ "num-iter",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "object"
+version = "0.32.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ordered-float"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "ordered-float"
+version = "4.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "paragraph-breaker"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3365bc53d974e212e903f93bb377be189c8f9ae3409fbbb60e5f284dfd73d3"
+
+[[package]]
+name = "parking"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "peg"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "400bcab7d219c38abf8bd7cc2054eb9bbbd4312d66f6a5557d572a203f646f61"
+dependencies = [
+ "peg-macros",
+ "peg-runtime",
+]
+
+[[package]]
+name = "peg-macros"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46e61cce859b76d19090f62da50a9fe92bab7c2a5f09e183763559a2ac392c90"
+dependencies = [
+ "peg-runtime",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "peg-runtime"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pest"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f8023d0fb78c8e03784ea1c7f3fa36e68a723138990b8d5a47d916b651e7a8"
+dependencies = [
+ "memchr",
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "pest_derive"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0d24f72393fd16ab6ac5738bc33cdb6a9aa73f8b902e8fe29cf4e67d7dd1026"
+dependencies = [
+ "pest",
+ "pest_generator",
+]
+
+[[package]]
+name = "pest_generator"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fdc17e2a6c7d0a492f0158d7a4bd66cc17280308bbaff78d5bef566dca35ab80"
+dependencies = [
+ "pest",
+ "pest_meta",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "pest_meta"
+version = "2.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "934cd7631c050f4674352a6e835d5f6711ffbfb9345c2fc0107155ac495ae293"
+dependencies = [
+ "once_cell",
+ "pest",
+ "sha2",
+]
+
+[[package]]
+name = "petgraph"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+dependencies = [
+ "fixedbitset",
+ "indexmap",
+]
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_shared 0.10.0",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_shared 0.11.2",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
+dependencies = [
+ "phf_generator",
+ "phf_shared 0.10.0",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared 0.10.0",
+ "rand",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "polonius-the-crab"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a69ee997a6282f8462abf1e0d8c38c965e968799e912b3bed8c9e8a28c2f9f"
+
+[[package]]
+name = "portable-atomic"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "prettyplease"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "readme-rustdocifier"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08ad765b21a08b1a8e5cdce052719188a23772bcbefb3c439f0baaf62c56ceac"
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+dependencies = [
+ "getrandom",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
+name = "relative-path"
+version = "1.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e898588f33fdd5b9420719948f9f2a32c922a246964576f71ba7f24f80610fbc"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.11.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http 0.2.12",
+ "http-body 0.4.6",
+ "hyper 0.14.28",
+ "hyper-rustls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "mime_guess",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls",
+ "rustls-native-certs",
+ "rustls-pemfile",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 0.1.2",
+ "system-configuration",
+ "tokio",
+ "tokio-rustls",
+ "tokio-util",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "reqwest"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d66674f2b6fb864665eea7a3c1ac4e3dfacd2fda83cf6f935a612e01b0e3338"
+dependencies = [
+ "base64",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "hyper 1.2.0",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper 0.1.2",
+ "tokio",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "winreg",
+]
+
+[[package]]
+name = "reqwest-eventsource"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f03f570355882dd8d15acc3a313841e6e90eddbc76a93c748fd82cc13ba9f51"
+dependencies = [
+ "eventsource-stream",
+ "futures-core",
+ "futures-timer",
+ "mime",
+ "nom",
+ "pin-project-lite",
+ "reqwest 0.11.27",
+ "thiserror",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rusqlite"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b838eba278d213a8beaf485bd313fd580ca4505a00d5871caeb1457c55322cae"
+dependencies = [
+ "bitflags 2.4.2",
+ "fallible-iterator",
+ "fallible-streaming-iterator",
+ "hashlink",
+ "libsqlite3-sys",
+ "smallvec",
+]
+
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+dependencies = [
+ "bitflags 2.4.2",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-webpki",
+ "sct",
+]
+
+[[package]]
+name = "rustls-native-certs"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
+dependencies = [
+ "openssl-probe",
+ "rustls-pemfile",
+ "schannel",
+ "security-framework",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
+[[package]]
+name = "ryu"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+
+[[package]]
+name = "schannel"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring",
+ "untrusted",
+]
+
+[[package]]
+name = "secrecy"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e"
+dependencies = [
+ "serde",
+ "zeroize",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "send_wrapper"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+dependencies = [
+ "ordered-float 2.10.1",
+ "serde",
+]
+
+[[package]]
+name = "serde-wasm-bindgen"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e"
+dependencies = [
+ "js-sys",
+ "serde",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.197"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.115"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6"
+dependencies = [
+ "itoa",
+ "serde",
+]
+
+[[package]]
+name = "serde_qs"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c"
+dependencies = [
+ "percent-encoding",
+ "serde",
+ "thiserror",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "server_fn"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2955da1dc5fcd970c182ebf1089af6c5f19051e1f286a21f7b96490a49b7a531"
+dependencies = [
+ "axum",
+ "bytes",
+ "const_format",
+ "dashmap",
+ "futures",
+ "gloo-net 0.5.0",
+ "http 1.1.0",
+ "http-body-util",
+ "hyper 1.2.0",
+ "inventory",
+ "js-sys",
+ "once_cell",
+ "send_wrapper",
+ "serde",
+ "serde_json",
+ "serde_qs",
+ "server_fn_macro_default",
+ "thiserror",
+ "tower",
+ "tower-layer",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "xxhash-rust",
+]
+
+[[package]]
+name = "server_fn_macro"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adfdd051ef905fdb3da20942b0c52d536158d7489a724e14cc2fd47323e7ca91"
+dependencies = [
+ "const_format",
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+ "xxhash-rust",
+]
+
+[[package]]
+name = "server_fn_macro_default"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "060af1def72353a779fcc184c53e1965d3055a38b9e827f2259b2bff2d9c371e"
+dependencies = [
+ "server_fn_macro",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "sledgehammer_bindgen"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcfaf791ff02f48f3518ce825d32cf419c13a43c1d8b1232f74ac89f339c46d2"
+dependencies = [
+ "sledgehammer_bindgen_macro",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "sledgehammer_bindgen_macro"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdd941cc539bd3dc694edaf9d0c4e1221d02baa67c6b45ec04fad1024d9e8139"
+dependencies = [
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "sledgehammer_utils"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f20798defa0e9d4eff9ca451c7f84774c7378a9c3b5a40112cfa2b3eadb97ae2"
+dependencies = [
+ "lru",
+ "once_cell",
+ "rustc-hash",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "socket2"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "spinning"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d4f0e86297cad2658d92a707320d87bf4e6ae1050287f51d19b67ef3f153a7b"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "string_cache"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+dependencies = [
+ "new_debug_unreachable",
+ "once_cell",
+ "parking_lot",
+ "phf_shared 0.10.0",
+ "precomputed-hash",
+ "serde",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
+dependencies = [
+ "phf_generator",
+ "phf_shared 0.10.0",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strsim"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
+
+[[package]]
+name = "substudy"
+version = "0.6.10"
+dependencies = [
+ "anyhow",
+ "async-openai",
+ "async-trait",
+ "audiotags",
+ "bincode",
+ "bytemuck",
+ "cast",
+ "chardet",
+ "clap",
+ "cli_test_dir",
+ "csv",
+ "diff",
+ "difference",
+ "dirs",
+ "dotenv",
+ "encoding",
+ "env_logger",
+ "futures",
+ "handlebars",
+ "indicatif",
+ "lazy_static",
+ "lending-iterator",
+ "log",
+ "num",
+ "ordered-float 4.2.0",
+ "paragraph-breaker",
+ "peg",
+ "regex",
+ "reqwest 0.11.27",
+ "rusqlite",
+ "serde",
+ "serde_json",
+ "tempfile",
+ "tokio",
+ "unicode-width",
+ "webrtc-vad",
+ "whatlang",
+]
+
+[[package]]
+name = "substudy-ui"
+version = "0.1.0"
+dependencies = [
+ "ammonia",
+ "anyhow",
+ "dioxus",
+ "dotenv",
+ "serde",
+ "serde_json",
+ "tracing-subscriber",
+ "tracing-wasm",
+ "uuid",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.52"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c"
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "tar"
+version = "0.4.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[package]]
+name = "terminal_size"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
+dependencies = [
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.58"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "to_method"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8"
+
+[[package]]
+name = "tokio"
+version = "1.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "parking_lot",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "tokio-tungstenite"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38"
+dependencies = [
+ "futures-util",
+ "log",
+ "tokio",
+ "tungstenite",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "hashbrown 0.14.3",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5"
+dependencies = [
+ "bitflags 2.4.2",
+ "bytes",
+ "futures-util",
+ "http 1.1.0",
+ "http-body 1.0.0",
+ "http-body-util",
+ "http-range-header",
+ "httpdate",
+ "mime",
+ "mime_guess",
+ "percent-encoding",
+ "pin-project-lite",
+ "tokio",
+ "tokio-util",
+ "tower-layer",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "log",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-futures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2"
+dependencies = [
+ "pin-project",
+ "tracing",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "nu-ansi-term",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "tracing-wasm"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4575c663a174420fa2d78f4108ff68f65bf2fbb7dd89f33749b6e826b3626e07"
+dependencies = [
+ "tracing",
+ "tracing-subscriber",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "tungstenite"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "data-encoding",
+ "http 1.1.0",
+ "httparse",
+ "log",
+ "rand",
+ "sha1",
+ "thiserror",
+ "url",
+ "utf-8",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+
+[[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "uuid"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0"
+dependencies = [
+ "getrandom",
+ "serde",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webrtc-vad"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39a1e40fd6ca90be95459152a2537f2ba4286ee1b13073f7ebcaa74fc94e3008"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "whatlang"
+version = "0.16.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "471d1c1645d361eb782a1650b1786a8fb58dd625e681a04c09f5ff7c8764a7b0"
+dependencies = [
+ "hashbrown 0.14.3",
+ "once_cell",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.4",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.4",
+ "windows_aarch64_msvc 0.52.4",
+ "windows_i686_gnu 0.52.4",
+ "windows_i686_msvc 0.52.4",
+ "windows_x86_64_gnu 0.52.4",
+ "windows_x86_64_gnullvm 0.52.4",
+ "windows_x86_64_msvc 0.52.4",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "xattr"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
+dependencies = [
+ "libc",
+ "linux-raw-sys",
+ "rustix",
+]
+
+[[package]]
+name = "xxhash-rust"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.52",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/pkgs/by-name/su/substudy/package.nix b/pkgs/by-name/su/substudy/package.nix
new file mode 100644
index 0000000000000..55d368fb37494
--- /dev/null
+++ b/pkgs/by-name/su/substudy/package.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  fetchFromGitHub,
+  rustPlatform,
+
+  ffmpeg,
+  makeWrapper,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "substudy";
+  version = "0.6.10";
+
+  src = fetchFromGitHub {
+    owner = "emk";
+    repo = "subtitles-rs";
+    rev = "${pname}_v${version}";
+    hash = "sha256-ACYbSQKaOJ2hS8NbOAppfKo+Mk3CKg0OAwb56AH42Zs=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "async-openai-0.19.1" = "sha256-UrWSZW3LxMZfinmQAjouhqTrhVhHkjgz9EzrZxR0qG4=";
+    };
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  nativeCheckInputs = [ ffmpeg ];
+
+  cargoBuildFlags = [ "-p substudy" ];
+
+  preCheck = ''
+    # That's to make sure the `test_ai_request_static`
+    # test has access to the cache at `$HOME/.cache`
+    export HOME=$(mktemp -d)
+  '';
+
+  postFixup = ''
+    wrapProgram "$out/bin/substudy" \
+      --prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
+  '';
+
+  meta = with lib; {
+    description = "Learn foreign languages using audio and subtitles extracted from video files";
+    homepage = "http://www.randomhacks.net/substudy";
+    license = licenses.asl20;
+    mainProgram = "substudy";
+    maintainers = with maintainers; [ paveloom ];
+  };
+}
diff --git a/pkgs/by-name/sv/svix-cli/package.nix b/pkgs/by-name/sv/svix-cli/package.nix
new file mode 100644
index 0000000000000..8cefce2bffeb3
--- /dev/null
+++ b/pkgs/by-name/sv/svix-cli/package.nix
@@ -0,0 +1,39 @@
+{ lib, fetchFromGitHub, fetchpatch, buildGoModule }:
+
+buildGoModule rec {
+  version = "0.21.1";
+  pname = "svix-cli";
+  revision = "v${version}";
+
+  src = fetchFromGitHub {
+    owner = "svix";
+    repo = pname;
+    rev = revision;
+    hash = "sha256-bHcxhJs4Nu/hdiftQFZMx4M5iqFtpOzrsvXOgo9NlDc=";
+  };
+
+  vendorHash = "sha256-qSzEpxktdAV+mHa+586mKvpclCpXR6sE7HNcPZywd4s=";
+
+  # Increase minimum go version to 1.17 as the build fails with 1.16
+  # due to modules requiring code that was introduced in 1.17
+  # PR submitted upstream: https://github.com/svix/svix-cli/pull/103
+  patches = [
+    (fetchpatch {
+      name = "increase-minimum-go.patch";
+      url = "https://github.com/svix/svix-cli/commit/3c6fc06f72bd7e43165c31019b206ebad175d758.patch";
+      hash = "sha256-OwiyBZ3IZGkvo6zEZY1+XYFrqT+RseqTJ5xwCl3LtVg=";
+    })
+  ];
+
+  subPackages = [ "." ];
+
+  ldflags =
+    [ "-s" "-w" "-X github.com/svix/svix-cli/version.Version=v${version}" ];
+
+  meta = with lib; {
+    description = "A CLI for interacting with the Svix API";
+    homepage = "https://github.com/svix/svix-cli/";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ techknowlogick ];
+  };
+}
diff --git a/pkgs/by-name/te/technitium-dns-server/package.nix b/pkgs/by-name/te/technitium-dns-server/package.nix
index b369a45869514..1844e08ddf8bd 100644
--- a/pkgs/by-name/te/technitium-dns-server/package.nix
+++ b/pkgs/by-name/te/technitium-dns-server/package.nix
@@ -8,13 +8,13 @@
 let
   technitium-library = buildDotnetModule rec {
     pname = "TechnitiumLibrary";
-    version = "40a7bc7a52cf5d2c371215ea7f5f6fdf71dc1d9c";
+    version = "570ec570b57d8591daa3df682ca9e6f37f373db6";
 
     src = fetchFromGitHub {
       owner = "TechnitiumSoftware";
       repo = "TechnitiumLibrary";
       rev = version;
-      hash = "sha256-FNCZH8LZXYyrz5SRIV8P7MruN+t6Qvl96Aa73q3InMI=";
+      hash = "sha256-xPwRoRp/XYrlGX3B9EiHUz2Tueh+hygbBopxFvdASLQ";
       name = "${pname}-${version}";
     };
 
@@ -30,13 +30,13 @@ let
 in
 buildDotnetModule rec {
   pname = "technitium-dns-server";
-  version = "12.1";
+  version = "12.2.1";
 
   src = fetchFromGitHub {
     owner = "TechnitiumSoftware";
     repo = "DnsServer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TfVWGomvKV7QeJUyFMNDAnHKY3YTEwWPxTlW6RhmsR4=";
+    hash = "sha256-2RB/pUlA9z7TJ4xd509nsbO1BnxY3mv2jou6OGRd/yM=";
     name = "${pname}-${version}";
   };
 
diff --git a/pkgs/by-name/te/tenv/package.nix b/pkgs/by-name/te/tenv/package.nix
index 042c389ac42e3..800bea1565501 100644
--- a/pkgs/by-name/te/tenv/package.nix
+++ b/pkgs/by-name/te/tenv/package.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "tenv";
-  version = "2.0.7";
+  version = "2.1.8";
 
   src = fetchFromGitHub {
     owner = "tofuutils";
     repo = "tenv";
     rev = "v${version}";
-    hash = "sha256-654ZaQ7KzAWEXwN9Xwzdmg4KsCCLCm+i2M0730gP/zM=";
+    hash = "sha256-9wY+9lAbrnwiXpLilMaqtQz0XmMGRMv+m+yR7BxmSsw=";
   };
 
-  vendorHash = "sha256-OrMCzqqOFQkI8IwcfO/JVPyd/sw+Ud0VySV7UPiucwc=";
+  vendorHash = "sha256-v1NWlZhfypoS+bZCtr+P2s1t4qYVncbjx9IyRhi2sa4=";
 
   # Tests disabled for requiring network access to release.hashicorp.com
   doCheck = false;
diff --git a/pkgs/by-name/vi/victoriametrics/package.nix b/pkgs/by-name/vi/victoriametrics/package.nix
index 2f6d03ddea88b..622d042e73026 100644
--- a/pkgs/by-name/vi/victoriametrics/package.nix
+++ b/pkgs/by-name/vi/victoriametrics/package.nix
@@ -1,36 +1,55 @@
-{ lib, buildGoModule, fetchFromGitHub, nixosTests }:
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  nixosTests,
+  withServer ? true, # the actual metrics server
+  withVmAgent ? true, # Agent to collect metrics
+  withVmAlert ? true, # Alert Manager
+  withVmAuth ? true, # HTTP proxy for authentication
+  withBackupTools ? true, # vmbackup, vmrestore
+  withVmctl ? true, # vmctl is used to migrate time series
+  withVictoriaLogs ? true, # logs server
+}:
 
 buildGoModule rec {
   pname = "VictoriaMetrics";
   version = "1.101.0";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = pname;
+    owner = "VictoriaMetrics";
+    repo = "VictoriaMetrics";
     rev = "v${version}";
     hash = "sha256-Jjz/CbVCvc9NFbvzYTFthG8cov4pYpc6y1A1Kmd3Mjg=";
   };
 
   vendorHash = null;
 
-  subPackages = [
-    "app/victoria-logs"
-    "app/victoria-metrics"
-    "app/vlinsert"
-    "app/vlselect"
-    "app/vlstorage"
-    "app/vmagent"
-    "app/vmalert-tool"
-    "app/vmalert"
-    "app/vmauth"
-    "app/vmctl"
-    "app/vminsert"
-    "app/vmselect"
-    "app/vmstorage"
-    "app/vmbackup"
-    "app/vmrestore"
-    "app/vmui"
-  ];
+  subPackages =
+    lib.optionals withServer [
+      "app/victoria-metrics"
+      "app/vminsert"
+      "app/vmselect"
+      "app/vmstorage"
+      "app/vmui"
+    ]
+    ++ lib.optionals withVmAgent [ "app/vmagent" ]
+    ++ lib.optionals withVmAlert [
+      "app/vmalert"
+      "app/vmalert-tool"
+    ]
+    ++ lib.optionals withVmAuth [ "app/vmauth" ]
+    ++ lib.optionals withVmctl [ "app/vmctl" ]
+    ++ lib.optionals withBackupTools [
+      "app/vmbackup"
+      "app/vmrestore"
+    ]
+    ++ lib.optionals withVictoriaLogs [
+      "app/victoria-logs"
+      "app/vlinsert"
+      "app/vlselect"
+      "app/vlstorage"
+    ];
 
   postPatch = ''
     # main module (github.com/VictoriaMetrics/VictoriaMetrics) does not contain package
@@ -46,7 +65,11 @@ buildGoModule rec {
       --replace "time.NewTimer(time.Second * 10)" "time.NewTimer(time.Second * 120)" \
   '';
 
-  ldflags = [ "-s" "-w" "-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${version}" ];
+  ldflags = [
+    "-s"
+    "-w"
+    "-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${version}"
+  ];
 
   preCheck = ''
     # `lib/querytracer/tracer_test.go` expects `buildinfo.Version` to be unset
@@ -55,13 +78,21 @@ buildGoModule rec {
 
   __darwinAllowLocalNetworking = true;
 
-  passthru.tests = { inherit (nixosTests) victoriametrics; };
+  passthru.tests = {
+    inherit (nixosTests) victoriametrics;
+  };
 
   meta = with lib; {
     homepage = "https://victoriametrics.com/";
     description = "fast, cost-effective and scalable time series database, long-term remote storage for Prometheus";
     license = licenses.asl20;
-    maintainers = with maintainers; [ yorickvp ivan ];
+    maintainers = with maintainers; [
+      yorickvp
+      ivan
+      nullx76
+      leona
+      shawn8901
+    ];
     changelog = "https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v${version}";
     mainProgram = "victoria-metrics";
   };
diff --git a/pkgs/by-name/vm/vmagent/package.nix b/pkgs/by-name/vm/vmagent/package.nix
new file mode 100644
index 0000000000000..de62ddd2d3863
--- /dev/null
+++ b/pkgs/by-name/vm/vmagent/package.nix
@@ -0,0 +1,12 @@
+{ lib, victoriametrics }:
+lib.addMetaAttrs { mainProgram = "vmagent"; } (
+  victoriametrics.override {
+    withServer = false;
+    withVictoriaLogs = false;
+    withVmAlert = false;
+    withVmAuth = false;
+    withBackupTools = false;
+    withVmctl = false;
+    withVmAgent = true;
+  }
+)
diff --git a/pkgs/common-updater/generic-updater.nix b/pkgs/common-updater/generic-updater.nix
index 25008d664b93c..2f8da2f308e60 100644
--- a/pkgs/common-updater/generic-updater.nix
+++ b/pkgs/common-updater/generic-updater.nix
@@ -1,4 +1,12 @@
-{ stdenv, writeScript, coreutils, gnugrep, gnused, common-updater-scripts, nix }:
+{ lib
+, stdenv
+, common-updater-scripts
+, coreutils
+, gnugrep
+, gnused
+, nix
+, writeScript
+}:
 
 { name ? null
 , pname ? null
@@ -15,6 +23,9 @@ let
   # where to print git commands and debugging messages
   fileForGitCommands = "update-git-commits.txt";
 
+  grep = lib.getExe gnugrep;
+  sed = lib.getExe gnused;
+
   # shell script to update package
   updateScript = writeScript "generic-update-script.sh" ''
     #! ${stdenv.shell}
@@ -41,20 +52,20 @@ let
 
     function version_is_ignored() {
       local tag="$1"
-      [ -n "$ignored_versions" ] && grep -E "$ignored_versions" <<< "$tag"
+      [ -n "$ignored_versions" ] && ${grep} -E "$ignored_versions" <<< "$tag"
     }
 
     function version_is_unstable() {
       local tag="$1"
       local enforce="$2"
       if [ -n "$odd_unstable" -o -n "$enforce" ]; then
-        local minor=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.([0-9]+).*,\1,p')
+        local minor=$(echo "$tag" | ${sed} -rne 's,^[0-9]+\.([0-9]+).*,\1,p')
         if [ $((minor % 2)) -eq 1 ]; then
           return 0
         fi
       fi
       if [ -n "$patchlevel_unstable" -o -n "$enforce" ]; then
-        local patchlevel=$(echo "$tag" | ${gnused}/bin/sed -rne 's,^[0-9]+\.[0-9]+\.([0-9]+).*$,\1,p')
+        local patchlevel=$(echo "$tag" | ${sed} -rne 's,^[0-9]+\.[0-9]+\.([0-9]+).*$,\1,p')
         if ((patchlevel >= 90)); then
           return 0
         fi
@@ -71,10 +82,10 @@ let
 
     # cut any revision prefix not used in the NixOS package version
     if [ -n "$rev_prefix" ]; then
-      tags=$(echo "$tags" | ${gnugrep}/bin/grep "^$rev_prefix")
-      tags=$(echo "$tags" | ${gnused}/bin/sed -e "s,^$rev_prefix,,")
+      tags=$(echo "$tags" | ${grep} "^$rev_prefix")
+      tags=$(echo "$tags" | ${sed} -e "s,^$rev_prefix,,")
     fi
-    tags=$(echo "$tags" | ${gnugrep}/bin/grep "^[0-9]")
+    tags=$(echo "$tags" | ${grep} "^[0-9]")
 
     # sort the tags in decreasing order
     tags=$(echo "$tags" | ${coreutils}/bin/sort --reverse --version-sort)
diff --git a/pkgs/development/androidndk-pkgs/default.nix b/pkgs/development/androidndk-pkgs/default.nix
index 8aa7eefe4215e..b11776acebf59 100644
--- a/pkgs/development/androidndk-pkgs/default.nix
+++ b/pkgs/development/androidndk-pkgs/default.nix
@@ -1,41 +1,9 @@
 { lib, androidenv, buildPackages, pkgs, targetPackages
 }:
 
-{
-  "21" =
+let
+  makeNdkPkgs = ndkVersion:
     let
-      ndkVersion = "21.0.6113669";
-
-      buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-
-      androidComposition = androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-    in
-    import ./androidndk-pkgs.nix {
-      inherit lib;
-      inherit (buildPackages)
-        makeWrapper autoPatchelfHook;
-      inherit (pkgs)
-        stdenv
-        runCommand wrapBintoolsWith wrapCCWith;
-      # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
-      # but for splicing messing up on infinite recursion for the variants we
-      # *dont't* use. Using this workaround, but also making a test to ensure
-      # these two really are the same.
-      buildAndroidndk = buildAndroidComposition.ndk-bundle;
-      androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_21 then targetPackages.androidndkPkgs_21 else throw "androidndkPkgs_21: no targetPackages, use `buildPackages.androidndkPkgs_21";
-    };
-
-  "23b" =
-    let
-      ndkVersion = "23.1.7779620";
-
       buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
         includeNDK = true;
         inherit ndkVersion;
@@ -45,6 +13,7 @@
         includeNDK = true;
         inherit ndkVersion;
       };
+      majorVersion = lib.versions.major ndkVersion;
     in
     import ./androidndk-pkgs.nix {
       inherit lib;
@@ -59,37 +28,14 @@
       # these two really are the same.
       buildAndroidndk = buildAndroidComposition.ndk-bundle;
       androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_23b then targetPackages.androidndkPkgs_23b else throw "androidndkPkgs_23b: no targetPackages, use `buildPackages.androidndkPkgs_23b";
-    };
-
-  "24" =
-    let
-      ndkVersion = "24.0.8215888";
-
-      buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-
-      androidComposition = androidenv.composeAndroidPackages {
-        includeNDK = true;
-        inherit ndkVersion;
-      };
-    in
-    import ./androidndk-pkgs.nix {
-      inherit lib;
-      inherit (buildPackages)
-        makeWrapper autoPatchelfHook;
-      inherit (pkgs)
-        stdenv
-        runCommand wrapBintoolsWith wrapCCWith;
-      # buildPackages.foo rather than buildPackages.buildPackages.foo would work,
-      # but for splicing messing up on infinite recursion for the variants we
-      # *dont't* use. Using this workaround, but also making a test to ensure
-      # these two really are the same.
-      buildAndroidndk = buildAndroidComposition.ndk-bundle;
-      androidndk = androidComposition.ndk-bundle;
-      targetAndroidndkPkgs = if targetPackages ? androidndkPkgs_24 then targetPackages.androidndkPkgs_24 else throw "androidndkPkgs_24: no targetPackages, use `buildPackages.androidndkPkgs_24";
+      targetAndroidndkPkgs = if targetPackages ? "androidndkPkgs_${majorVersion}" then targetPackages."androidndkPkgs_${majorVersion}" else throw "androidndkPkgs_${majorVersion}: no targetPackages, use `buildPackages.androidndkPkgs_${majorVersion}";
     };
+in
 
+{
+  "21" = makeNdkPkgs "21.0.6113669";
+  "23b" = makeNdkPkgs "23.1.7779620";
+  "24" = makeNdkPkgs "24.0.8215888";
+  "25" = makeNdkPkgs "25.2.9519653";
+  "26" = makeNdkPkgs "26.3.11579264";
 }
diff --git a/pkgs/development/interpreters/babashka/clojure-tools.nix b/pkgs/development/interpreters/babashka/clojure-tools.nix
index 082cb99f476d9..fec8a7fd5a5aa 100644
--- a/pkgs/development/interpreters/babashka/clojure-tools.nix
+++ b/pkgs/development/interpreters/babashka/clojure-tools.nix
@@ -6,10 +6,10 @@
 }:
 clojure.overrideAttrs (previousAttrs: {
   pname = "babashka-clojure-tools";
-  version = "1.11.2.1446";
+  version = "1.11.3.1463";
 
   src = fetchurl {
     url = previousAttrs.src.url;
-    hash = "sha256-qn7/sPyVDfjZPLeWxlUBBljAW/d8cCw6lEm3/deS73E=";
+    hash = "sha256-26QZ3j54XztpW2WJ1xg0Gc+OwrsvmfK4iv0GsLV8FIc=";
   };
 })
diff --git a/pkgs/development/interpreters/babashka/default.nix b/pkgs/development/interpreters/babashka/default.nix
index 26e16afe69c0f..fc54f3e0311d9 100644
--- a/pkgs/development/interpreters/babashka/default.nix
+++ b/pkgs/development/interpreters/babashka/default.nix
@@ -9,11 +9,11 @@
 let
   babashka-unwrapped = buildGraalvmNativeImage rec {
     pname = "babashka-unwrapped";
-    version = "1.3.190";
+    version = "1.3.191";
 
     src = fetchurl {
       url = "https://github.com/babashka/babashka/releases/download/v${version}/babashka-${version}-standalone.jar";
-      sha256 = "sha256-zGWUuFyCOZXrcAOJ2sGvzvfJbFti1IlDS1gx9Oye9fg=";
+      sha256 = "sha256-xF0u2VO0xdNvRElhUb7atpvy2Y5T9/V1b92ffaOMga8=";
     };
 
     graalvmDrv = graalvmCEPackages.graalvm-ce;
diff --git a/pkgs/development/libraries/db/db-4.8.nix b/pkgs/development/libraries/db/db-4.8.nix
index 81705374381e7..4d6029d6d8211 100644
--- a/pkgs/development/libraries/db/db-4.8.nix
+++ b/pkgs/development/libraries/db/db-4.8.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchurl, autoreconfHook, ... } @ args:
+{ lib, stdenv, fetchurl, autoreconfHook, targetPlatform, ... } @ args:
 
-import ./generic.nix (args // {
+import ./generic.nix (builtins.removeAttrs args ["targetPlatform"] // {
   version = "4.8.30";
   sha256 = "0ampbl2f0hb1nix195kz1syrqqxpmvnvnfvphambj7xjrl3iljg0";
   extraPatches = [
@@ -9,6 +9,8 @@ import ./generic.nix (args // {
     ./darwin-mutexes-4.8.patch
   ];
 
+  drvArgs.configureFlags = lib.optional (targetPlatform.useLLVM or false) "--with-mutex=POSIX/pthreads";
+
   drvArgs.hardeningDisable = [ "format" ];
   drvArgs.doCheck = false;
 })
diff --git a/pkgs/development/libraries/db/generic.nix b/pkgs/development/libraries/db/generic.nix
index d715c1ffc8b19..ddb4139e116d1 100644
--- a/pkgs/development/libraries/db/generic.nix
+++ b/pkgs/development/libraries/db/generic.nix
@@ -67,7 +67,8 @@ stdenv.mkDerivation (rec {
       (if compat185 then "--enable-compat185" else "--disable-compat185")
     ]
     ++ lib.optional dbmSupport "--enable-dbm"
-    ++ lib.optional stdenv.isFreeBSD "--with-pic";
+    ++ lib.optional stdenv.isFreeBSD "--with-pic"
+    ++ (drvArgs.configureFlags or []);
 
   preConfigure = ''
     cd build_unix
@@ -92,4 +93,4 @@ stdenv.mkDerivation (rec {
     license = license;
     platforms = platforms.unix;
   };
-} // drvArgs)
+} // builtins.removeAttrs drvArgs [ "configureFlags" ])
diff --git a/pkgs/development/libraries/gtest/default.nix b/pkgs/development/libraries/gtest/default.nix
index 51e0c685a43d2..7e44794620c03 100644
--- a/pkgs/development/libraries/gtest/default.nix
+++ b/pkgs/development/libraries/gtest/default.nix
@@ -3,6 +3,21 @@
 , fetchFromGitHub
 , cmake
 , ninja
+# Enable C++17 support
+#     https://github.com/google/googletest/issues/3081
+# Projects that require a higher standard can override this package.
+# For an example why that may be necessary, see:
+#     https://github.com/mhx/dwarfs/issues/188#issuecomment-1907574427
+# Setting this to `null` does not pass any flags to set this.
+, cxx_standard ? (
+    if (
+      (stdenv.cc.isGNU && (lib.versionOlder stdenv.cc.version "11.0"))
+      ||
+      (stdenv.cc.isClang && (lib.versionOlder stdenv.cc.version "16.0"))
+    )
+      then "17"
+      else null
+  )
 , static ? stdenv.hostPlatform.isStatic,
 }:
 
@@ -27,13 +42,8 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DBUILD_SHARED_LIBS=${if static then "OFF" else "ON"}"
-  ] ++ lib.optionals (
-    (stdenv.cc.isGNU && (lib.versionOlder stdenv.cc.version "11.0"))
-    || (stdenv.cc.isClang && (lib.versionOlder stdenv.cc.version "16.0"))
-  ) [
-    # Enable C++17 support
-    # https://github.com/google/googletest/issues/3081
-    "-DCMAKE_CXX_STANDARD=17"
+  ] ++ lib.optionals (cxx_standard != null) [
+    "-DCMAKE_CXX_STANDARD=${cxx_standard}"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/libraries/vaapi-vdpau/default.nix b/pkgs/development/libraries/libva-vdpau-driver/default.nix
index 2e3976e3a4d23..2e3976e3a4d23 100644
--- a/pkgs/development/libraries/vaapi-vdpau/default.nix
+++ b/pkgs/development/libraries/libva-vdpau-driver/default.nix
diff --git a/pkgs/development/libraries/pugixml/default.nix b/pkgs/development/libraries/pugixml/default.nix
index 403c903577554..fc0eb1dfa2912 100644
--- a/pkgs/development/libraries/pugixml/default.nix
+++ b/pkgs/development/libraries/pugixml/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pugixml";
-  version = "1.13";
+  version = "1.14";
 
   src = fetchFromGitHub {
     owner = "zeux";
     repo = "pugixml";
     rev = "v${version}";
-    sha256 = "sha256-MAXm/9ANj6TjO1Skpg20RYt88bf6w1uPwRwOHXiXsWw=";
+    sha256 = "sha256-xxtJr9VeBPxpxWJaDGO635+Ch7ZS6t6VyuXEio+ogZ8=";
   };
 
   outputs = [ "out" ] ++ lib.optionals shared [ "dev" ];
diff --git a/pkgs/development/python-modules/aioraven/default.nix b/pkgs/development/python-modules/aioraven/default.nix
index 44e1530dce766..e4649a8d8eadd 100644
--- a/pkgs/development/python-modules/aioraven/default.nix
+++ b/pkgs/development/python-modules/aioraven/default.nix
@@ -6,14 +6,14 @@
   pythonOlder,
   iso4217,
   pyserial,
-  pyserial-asyncio,
+  pyserial-asyncio-fast,
   pytestCheckHook,
   pytest-asyncio,
 }:
 
 buildPythonPackage rec {
   pname = "aioraven";
-  version = "0.5.3";
+  version = "0.6.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "cottsay";
     repo = "aioraven";
     rev = "refs/tags/${version}";
-    hash = "sha256-kGCFwpMaLWxLUp8k5H5AnL21KrwohbUYLswLcLqmc3M=";
+    hash = "sha256-RU2DRDjxl0EVmnNLADawEB/x6Zc3/IWH015xig5AIJY=";
   };
 
   build-system = [ setuptools ];
@@ -30,7 +30,7 @@ buildPythonPackage rec {
   dependencies = [
     iso4217
     pyserial
-    pyserial-asyncio
+    pyserial-asyncio-fast
   ];
 
   nativeCheckInputs = [
diff --git a/pkgs/development/python-modules/amaranth-boards/default.nix b/pkgs/development/python-modules/amaranth-boards/default.nix
index 3e9548bfe5b61..a010d3570b7cb 100644
--- a/pkgs/development/python-modules/amaranth-boards/default.nix
+++ b/pkgs/development/python-modules/amaranth-boards/default.nix
@@ -19,7 +19,9 @@ buildPythonPackage rec {
     owner = "amaranth-lang";
     repo = "amaranth-boards";
     rev = "aba2300dc83216523e1c98fdb22471cb4bac5027";
-    hash = "sha256-IMhNMkOf6dg4Djyi39TDTpU0S3TQM1+e6TBoyiITaos=";
+    # these files change depending on git branch status
+    postFetch = "rm -f $out/.git_archival.txt $out/.gitattributes";
+    hash = "sha256-jldXyMJtuSGcZKmtwpZBYrR/UBe4ufblPYRYpBmReM8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/bdffont/default.nix b/pkgs/development/python-modules/bdffont/default.nix
index 87e4ef29b81b2..c4ac42a60452f 100644
--- a/pkgs/development/python-modules/bdffont/default.nix
+++ b/pkgs/development/python-modules/bdffont/default.nix
@@ -2,42 +2,41 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pytestCheckHook,
   pythonOlder,
+  pytestCheckHook,
   nix-update-script,
-  hatch-vcs,
   hatchling,
-  brotli,
-  fonttools,
 }:
 
 buildPythonPackage rec {
   pname = "bdffont";
   version = "0.0.26";
+  pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
-    inherit pname version;
+    pname = "bdffont";
+    inherit version;
     hash = "sha256-Q8IqwJmAYFicTX7RrVU9UvGZX+oaPb0RKlIFwArktXk=";
   };
 
-  format = "pyproject";
-
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "bdffont" ];
+
   passthru.updateScript = nix-update-script { };
 
   meta = {
     homepage = "https://github.com/TakWolf/bdffont";
-    description = "Library for manipulating .bdf format fonts";
+    description = "A library for manipulating Glyph Bitmap Distribution Format (BDF) Fonts";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/character-encoding-utils/default.nix b/pkgs/development/python-modules/character-encoding-utils/default.nix
index a677d8999e375..83d01916d3c63 100644
--- a/pkgs/development/python-modules/character-encoding-utils/default.nix
+++ b/pkgs/development/python-modules/character-encoding-utils/default.nix
@@ -2,10 +2,10 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  hatch-vcs,
-  hatchling,
-  pytestCheckHook,
   pythonOlder,
+  pytestCheckHook,
+  nix-update-script,
+  hatchling,
 }:
 
 buildPythonPackage rec {
@@ -13,7 +13,7 @@ buildPythonPackage rec {
   version = "0.0.8";
   pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     pname = "character_encoding_utils";
@@ -21,19 +21,22 @@ buildPythonPackage rec {
     hash = "sha256-UXX4L/x7fP37ZEFDCPc0KRNyx47xvwY0Jz+lfxzUulg=";
   };
 
-  build-system = [
-    hatch-vcs
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
   nativeCheckInputs = [ pytestCheckHook ];
 
   pythonImportsCheck = [ "character_encoding_utils" ];
 
+  passthru.updateScript = nix-update-script { };
+
   meta = {
-    description = "Some character encoding utils";
     homepage = "https://github.com/TakWolf/character-encoding-utils";
+    description = "Some character encoding utils";
+    platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/coffea/default.nix b/pkgs/development/python-modules/coffea/default.nix
index e531471812840..3b4d3f3f1befb 100644
--- a/pkgs/development/python-modules/coffea/default.nix
+++ b/pkgs/development/python-modules/coffea/default.nix
@@ -3,8 +3,12 @@
   buildPythonPackage,
   pythonOlder,
   fetchFromGitHub,
+
+  # build-system
   hatchling,
   hatch-vcs,
+
+  # dependencies
   aiohttp,
   awkward,
   cachetools,
@@ -28,6 +32,8 @@
   toml,
   tqdm,
   uproot,
+
+  # checks
   distributed,
   pyinstrument,
   pytestCheckHook,
@@ -35,7 +41,7 @@
 
 buildPythonPackage rec {
   pname = "coffea";
-  version = "2024.6.0";
+  version = "2024.6.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -44,7 +50,7 @@ buildPythonPackage rec {
     owner = "CoffeaTeam";
     repo = "coffea";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MnAGtoev20Cn1WUmX8imUNQCJftU4jw+hInYI7dhb4M=";
+    hash = "sha256-Z6c8R8B8IrDkXVDx89XVtg3eRgORuHPfUyAPRGwAlrg=";
   };
 
   build-system = [
diff --git a/pkgs/development/python-modules/dask-expr/default.nix b/pkgs/development/python-modules/dask-expr/default.nix
index 930581b563a61..e5e4a13420517 100644
--- a/pkgs/development/python-modules/dask-expr/default.nix
+++ b/pkgs/development/python-modules/dask-expr/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "dask-expr";
-  version = "1.1.3";
+  version = "1.1.5";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "dask";
     repo = "dask-expr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-20gVzmOnVWoPGrGcLp8nhAoiHWunaYZIXOxYho7ZhUs=";
+    hash = "sha256-ON2Fyyq5fa0TgS28v6FAbR6MpI1k8EOS8HWchfZyT+g=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/dask/default.nix b/pkgs/development/python-modules/dask/default.nix
index 08ce62f9e701f..c4988b4c8c5b0 100644
--- a/pkgs/development/python-modules/dask/default.nix
+++ b/pkgs/development/python-modules/dask/default.nix
@@ -41,7 +41,7 @@
 let
   self = buildPythonPackage rec {
     pname = "dask";
-    version = "2024.6.0";
+    version = "2024.6.2";
     pyproject = true;
 
     disabled = pythonOlder "3.9";
@@ -50,7 +50,7 @@ let
       owner = "dask";
       repo = "dask";
       rev = "refs/tags/${version}";
-      hash = "sha256-HtWxVWMk0G2OeBnZKLF5tuOohPbg20Ufl+VH/MX8vK0=";
+      hash = "sha256-5jG9hx1tZkqLwjWF73Fm2oJBuejbq4a7GP9fMd8hRJg=";
     };
 
     build-system = [
@@ -69,7 +69,7 @@ let
       toolz
     ];
 
-    passthru.optional-dependencies = lib.fix (self: {
+    optional-dependencies = lib.fix (self: {
       array = [ numpy ];
       complete = [
         pyarrow
@@ -97,8 +97,8 @@ let
         hypothesis
         pytest-asyncio
       ]
-      ++ passthru.optional-dependencies.array
-      ++ passthru.optional-dependencies.dataframe
+      ++ self.optional-dependencies.array
+      ++ self.optional-dependencies.dataframe
       ++ lib.optionals (!arrow-cpp.meta.broken) [
         # support is sparse on aarch64
         pyarrow
@@ -111,15 +111,15 @@ let
       echo "def get_versions(): return {'dirty': False, 'error': None, 'full-revisionid': None, 'version': '${version}'}" > dask/_version.py
 
       substituteInPlace setup.py \
-        --replace "import versioneer" "" \
-        --replace "version=versioneer.get_version()," "version='${version}'," \
-        --replace "cmdclass=versioneer.get_cmdclass()," ""
+        --replace-fail "import versioneer" "" \
+        --replace-fail "version=versioneer.get_version()," "version='${version}'," \
+        --replace-fail "cmdclass=versioneer.get_cmdclass()," ""
 
       substituteInPlace pyproject.toml \
-        --replace ', "versioneer[toml]==0.29"' "" \
-        --replace " --durations=10" "" \
-        --replace " --cov-config=pyproject.toml" "" \
-        --replace "\"-v" "\" "
+        --replace-fail ', "versioneer[toml]==0.29"' "" \
+        --replace-fail " --durations=10" "" \
+        --replace-fail " --cov-config=pyproject.toml" "" \
+        --replace-fail "\"-v" "\" "
     '';
 
     pytestFlagsArray = [
diff --git a/pkgs/development/python-modules/distributed/default.nix b/pkgs/development/python-modules/distributed/default.nix
index 0d5da20cccfbe..f282e0bb5504b 100644
--- a/pkgs/development/python-modules/distributed/default.nix
+++ b/pkgs/development/python-modules/distributed/default.nix
@@ -26,7 +26,7 @@
 
 buildPythonPackage rec {
   pname = "distributed";
-  version = "2024.6.0";
+  version = "2024.6.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -35,13 +35,13 @@ buildPythonPackage rec {
     owner = "dask";
     repo = "distributed";
     rev = "refs/tags/${version}";
-    hash = "sha256-8TShbpH+DB73G7D4pz8MHC/SPd3RaRttML0S4WaCE4k=";
+    hash = "sha256-GgW9BtTqjac+olAGg+LOO+lTopuUukVUmQ0ZWsMJOc8=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace "versioneer[toml]==" "versioneer[toml]>=" \
-      --replace 'dynamic = ["version"]' 'version = "${version}"'
+      --replace-fail "versioneer[toml]==" "versioneer[toml]>=" \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
   '';
 
   build-system = [
diff --git a/pkgs/development/python-modules/drawsvg/default.nix b/pkgs/development/python-modules/drawsvg/default.nix
index 84fd89373ffcd..8feb1a1151ea6 100644
--- a/pkgs/development/python-modules/drawsvg/default.nix
+++ b/pkgs/development/python-modules/drawsvg/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "drawsvg";
-  version = "2.3.0";
+  version = "2.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "cduck";
     repo = "drawsvg";
     rev = "refs/tags/${version}";
-    hash = "sha256-LoA5yYeHO4GqS3dk7EMg1ZC42HBgmM6rSfigWMc4yUQ=";
+    hash = "sha256-JC7u6bEB7RCJVLeYnNqACmddLI5F5PyaaBxaAZ+N/5s=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/eigenpy/default.nix b/pkgs/development/python-modules/eigenpy/default.nix
index 8cf0e827a8d3e..f1a67cc0ff750 100644
--- a/pkgs/development/python-modules/eigenpy/default.nix
+++ b/pkgs/development/python-modules/eigenpy/default.nix
@@ -1,6 +1,6 @@
 {
   lib,
-  stdenv,
+  buildPythonPackage,
   fetchFromGitHub,
   cmake,
   doxygen,
@@ -11,15 +11,16 @@
   scipy,
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+buildPythonPackage rec {
   pname = "eigenpy";
-  version = "3.6.0";
+  version = "3.7.0";
+  pyproject = false; # Built with cmake
 
   src = fetchFromGitHub {
     owner = "stack-of-tasks";
     repo = "eigenpy";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-S6kMfpTOMqJPIFgvdcHHFDvIl2b+GE8dhJH0QFDdC1c=";
+    rev = "v${version}";
+    hash = "sha256-D/k/ka500EZch5Ydym2WYtd5vciGkd9rdBUSjTsZ0w4=";
   };
 
   outputs = [
@@ -55,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     description = "Bindings between Numpy and Eigen using Boost.Python";
     homepage = "https://github.com/stack-of-tasks/eigenpy";
-    changelog = "https://github.com/stack-of-tasks/eigenpy/releases/tag/v${finalAttrs.version}";
+    changelog = "https://github.com/stack-of-tasks/eigenpy/releases/tag/v${version}";
     license = licenses.bsd2;
     maintainers = with maintainers; [
       nim65s
@@ -63,4 +64,4 @@ stdenv.mkDerivation (finalAttrs: {
     ];
     platforms = platforms.unix;
   };
-})
+}
diff --git a/pkgs/development/python-modules/hatch-regex-commit/default.nix b/pkgs/development/python-modules/hatch-regex-commit/default.nix
new file mode 100644
index 0000000000000..9cd936d5798f3
--- /dev/null
+++ b/pkgs/development/python-modules/hatch-regex-commit/default.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-regex-commit,
+  hatchling,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "hatch-regex-commit";
+  version = "0.0.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "frankie567";
+    repo = "hatch-regex-commit";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-E0DIBBaDmTCsZQ41NcjcbzgJ16BwhdexlrGWBdf77oA=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail 'dynamic = ["version"]' 'version = "${version}"' \
+      --replace-fail ', "hatch-regex-commit"' "" \
+      --replace-fail " --cov-report=term-missing --cov-config=pyproject.toml --cov=hatch_regex_commit --cov=tests" ""
+  '';
+
+  build-system = [ hatchling ];
+
+  dependencies = [ hatchling ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [ "hatch_regex_commit" ];
+
+  meta = with lib; {
+    description = "Hatch plugin to create a commit and tag when bumping version";
+    homepage = "https://github.com/frankie567/hatch-regex-commit";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/pcffont/default.nix b/pkgs/development/python-modules/pcffont/default.nix
index 30c0c05cae0ef..0f5a49c0692fe 100644
--- a/pkgs/development/python-modules/pcffont/default.nix
+++ b/pkgs/development/python-modules/pcffont/default.nix
@@ -1,11 +1,12 @@
 {
   lib,
   buildPythonPackage,
-  fetchFromGitHub,
-  hatchling,
-  bdffont,
+  fetchPypi,
+  pythonOlder,
   pytestCheckHook,
   nix-update-script,
+  hatchling,
+  bdffont,
 }:
 
 buildPythonPackage rec {
@@ -13,11 +14,12 @@ buildPythonPackage rec {
   version = "0.0.14";
   pyproject = true;
 
-  src = fetchFromGitHub {
-    owner = "TakWolf";
-    repo = "pcffont";
-    rev = "refs/tags/${version}";
-    hash = "sha256-UIRhUlsRd3ICdLAjUasQ1NX5NofSKCEqa8cf1c1voGM=";
+  disabled = pythonOlder "3.10";
+
+  src = fetchPypi {
+    pname = "pcffont";
+    inherit version;
+    hash = "sha256-S3mK4tY7zNGRX8K81QJVvaYpIaTDLx5zn4vKbhrK9VM=";
   };
 
   build-system = [ hatchling ];
@@ -31,9 +33,13 @@ buildPythonPackage rec {
   passthru.updateScript = nix-update-script { };
 
   meta = {
-    description = "Library for manipulating Portable Compiled Format (PCF) fonts";
     homepage = "https://github.com/TakWolf/pcffont";
+    description = "A library for manipulating Portable Compiled Format (PCF) Fonts";
+    platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/pixel-font-builder/default.nix b/pkgs/development/python-modules/pixel-font-builder/default.nix
index 7033179d7370b..e30f7c93d32e5 100644
--- a/pkgs/development/python-modules/pixel-font-builder/default.nix
+++ b/pkgs/development/python-modules/pixel-font-builder/default.nix
@@ -2,17 +2,15 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pytestCheckHook,
   pythonOlder,
+  pytestCheckHook,
   nix-update-script,
-  hatch-vcs,
   hatchling,
-  bdffont,
-  brotli,
   fonttools,
-  pypng,
+  brotli,
+  bdffont,
   pcffont,
-  pythonRelaxDepsHook,
+  pypng,
 }:
 
 buildPythonPackage rec {
@@ -28,27 +26,20 @@ buildPythonPackage rec {
     hash = "sha256-66mGZ7q64z+tTJSSveD7UCkTq7YXgsHTM25MqUSLfvM=";
   };
 
-  pythonRelaxDeps = [ "fonttools" ];
-
-  nativeBuildInputs = [ pythonRelaxDepsHook ];
-
-  build-system = [
-    hatch-vcs
-    hatchling
-  ];
-
-  nativeCheckInputs = [
-    pytestCheckHook
-    pypng
-  ];
+  build-system = [ hatchling ];
 
   dependencies = [
-    bdffont
-    brotli
     fonttools
+    brotli
+    bdffont
     pcffont
+    pypng
   ];
 
+  nativeCheckInputs = [ pytestCheckHook ];
+
+  pythonImportsCheck = [ "pixel_font_builder" ];
+
   passthru.updateScript = nix-update-script { };
 
   meta = {
@@ -56,6 +47,9 @@ buildPythonPackage rec {
     description = "Library that helps create pixel style fonts";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/private-gpt/default.nix b/pkgs/development/python-modules/private-gpt/default.nix
index 37747889b9e29..7012ff5cf5fc9 100644
--- a/pkgs/development/python-modules/private-gpt/default.nix
+++ b/pkgs/development/python-modules/private-gpt/default.nix
@@ -91,6 +91,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/zylon-ai/private-gpt";
     license = lib.licenses.asl20;
     mainProgram = "private-gpt";
-    maintainers = with lib.maintainers; [ drupol ];
+    maintainers = with lib.maintainers; [ ];
   };
 }
diff --git a/pkgs/development/python-modules/pygame-gui/default.nix b/pkgs/development/python-modules/pygame-gui/default.nix
index e370c36bb4d7e..5906a6f9a9cb1 100644
--- a/pkgs/development/python-modules/pygame-gui/default.nix
+++ b/pkgs/development/python-modules/pygame-gui/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "pygame-gui";
-  version = "0611";
+  version = "0612";
   pyproject = true;
   # nixpkgs-update: no auto update
 
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "MyreMylar";
     repo = "pygame_gui";
     rev = "refs/tags/v_${version}";
-    hash = "sha256-bibw6RUQKsOsaISunVEdQCT39KnXJ2VKVrAqsPS+Lu8=";
+    hash = "sha256-6Ps3pmQ8tYwQyv0TliOvUNLy3GjSJ2jdDQTTxfYej0o=";
   };
 
   nativeBuildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/pyloadapi/default.nix b/pkgs/development/python-modules/pyloadapi/default.nix
new file mode 100644
index 0000000000000..aec92117415c9
--- /dev/null
+++ b/pkgs/development/python-modules/pyloadapi/default.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  aiohttp,
+  aioresponses,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatch-regex-commit,
+  hatchling,
+  pytest-asyncio,
+  pytestCheckHook,
+  python-dotenv,
+  pythonOlder,
+}:
+
+buildPythonPackage rec {
+  pname = "pyloadapi";
+  version = "1.2.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.12";
+
+  src = fetchFromGitHub {
+    owner = "tr4nt0r";
+    repo = "pyloadapi";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-uOgqc1RqmEk0Lqz/ixlChKTZva7+0v4V8KutLSgPKEE=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "--cov=src/pyloadapi/ --cov-report=term-missing" ""
+  '';
+
+  build-system = [
+    hatch-regex-commit
+    hatchling
+  ];
+
+  dependencies = [ aiohttp ];
+
+  nativeCheckInputs = [
+    aioresponses
+    pytest-asyncio
+    pytestCheckHook
+    python-dotenv
+  ];
+
+  pythonImportsCheck = [ "pyloadapi" ];
+
+  meta = with lib; {
+    description = "Simple wrapper for pyLoad's API";
+    homepage = "https://github.com/tr4nt0r/pyloadapi";
+    changelog = "https://github.com/tr4nt0r/pyloadapi/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/pymilter/default.nix b/pkgs/development/python-modules/pymilter/default.nix
index 32b7cfcc9bbcd..6f0c4291d4d50 100644
--- a/pkgs/development/python-modules/pymilter/default.nix
+++ b/pkgs/development/python-modules/pymilter/default.nix
@@ -1,42 +1,37 @@
 {
   lib,
-  python,
   buildPythonPackage,
   fetchFromGitHub,
-  fetchpatch,
   libmilter,
-  bsddb3,
+  berkeleydb,
   pydns,
   iana-etc,
   libredirect,
   pyasyncore,
+  setuptools,
 }:
 
 buildPythonPackage rec {
   pname = "pymilter";
-  version = "1.0.5";
-  format = "setuptools";
+  version = "1.0.6";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "sdgathman";
-    repo = pname;
-    rev = "${pname}-${version}";
-    hash = "sha256-gZUWEDVZfDRiOOdG3lpiQldHxm/93l8qYVOHOEpHhzQ=";
+    repo = "pymilter";
+    rev = "refs/tags/pymilter-${version}";
+    hash = "sha256-plaWXwDAIsVzEtrabZuZj7T4WNfz2ntQHgcMCVf5S70=";
   };
 
+  build-system = [
+    setuptools
+  ];
   buildInputs = [ libmilter ];
   nativeCheckInputs = [ pyasyncore ];
-  propagatedBuildInputs = [
-    bsddb3
+  dependencies = [
+    berkeleydb
     pydns
   ];
-  patches = [
-    (fetchpatch { # https://github.com/sdgathman/pymilter/pull/57
-      name = "Remove-calls-to-the-deprecated-method-assertEquals";
-      url = "https://github.com/sdgathman/pymilter/commit/1ead9028fc63ae3ec6ea3b0c438e6ed088a2b20e.patch";
-      hash = "sha256-/5LlDR15nMR3l7rkVjT3w4FbDTFAAgNdERWlPNL2TVg=";
-    })
-  ];
 
   preBuild = ''
     sed -i 's/import thread/import _thread as thread/' Milter/greylist.py
diff --git a/pkgs/development/python-modules/pyside6/default.nix b/pkgs/development/python-modules/pyside6/default.nix
index 0144c91bd3e9e..79c691980ffbf 100644
--- a/pkgs/development/python-modules/pyside6/default.nix
+++ b/pkgs/development/python-modules/pyside6/default.nix
@@ -8,18 +8,12 @@
   shiboken6,
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "pyside6";
 
   inherit (shiboken6) version src;
 
-  patches = [
-    # stripped down version of https://github.com/pyside/pyside-setup/commit/a0d68856d67ce6e178e3cfc2fccc236707e02fcd
-    # FIXME: remove in next release
-    ./qt-6.7.1.patch
-  ];
-
-  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
+  sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/pyside6";
 
   # FIXME: cmake/Macros/PySideModules.cmake supposes that all Qt frameworks on macOS
   # reside in the same directory as QtCore.framework, which is not true for Nix.
@@ -80,18 +74,19 @@ stdenv.mkDerivation rec {
     cp -r PySide6.egg-info $out/${python.sitePackages}/
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Python bindings for Qt";
-    license = with licenses; [
+    license = with lib.licenses; [
       lgpl3Only
       gpl2Only
       gpl3Only
     ];
     homepage = "https://wiki.qt.io/Qt_for_Python";
-    maintainers = with maintainers; [
+    changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-${finalAttrs.version}?h=v${finalAttrs.version}";
+    maintainers = with lib.maintainers; [
       gebner
       Enzime
     ];
-    platforms = platforms.all;
+    platforms = lib.platforms.all;
   };
-}
+})
diff --git a/pkgs/development/python-modules/pyside6/qt-6.7.1.patch b/pkgs/development/python-modules/pyside6/qt-6.7.1.patch
deleted file mode 100644
index 8a5ece82d9cea..0000000000000
--- a/pkgs/development/python-modules/pyside6/qt-6.7.1.patch
+++ /dev/null
@@ -1,87 +0,0 @@
---- a/PySide6/QtMultimedia/CMakeLists.txt
-+++ b/PySide6/QtMultimedia/CMakeLists.txt
-@@ -12,6 +12,7 @@ ${QtMultimedia_GEN_DIR}/qaudioinput_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qaudiooutput_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qaudiosink_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qaudiosource_wrapper.cpp
-+${QtMultimedia_GEN_DIR}/qaudio_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qcameraformat_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qcameradevice_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qcamera_wrapper.cpp
-@@ -28,7 +29,6 @@ ${QtMultimedia_GEN_DIR}/qmediatimerange_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qmediatimerange_interval_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qscreencapture_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qsoundeffect_wrapper.cpp
--${QtMultimedia_GEN_DIR}/qtaudio_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qtvideo_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qvideoframe_wrapper.cpp
- ${QtMultimedia_GEN_DIR}/qvideoframeformat_wrapper.cpp
-diff --git a/PySide6/QtMultimedia/typesystem_multimedia.xml b/PySide6/QtMultimedia/typesystem_multimedia.xml
-index dd58f41cc..d37eb15fd 100644
---- a/PySide6/QtMultimedia/typesystem_multimedia.xml
-+++ b/PySide6/QtMultimedia/typesystem_multimedia.xml
-@@ -9,7 +9,7 @@
-     <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
-     <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
- 
--    <namespace-type name="QtAudio">
-+    <namespace-type name="QAudio">
-         <enum-type name="Error"/>
-         <enum-type name="State"/>
-         <enum-type name="VolumeScale"/>
-@@ -65,9 +65,6 @@
-         </modify-argument>
-       </modify-function>
-       <modify-function signature="stop()" allow-thread="true"/>
--      <!-- FIXME PYSIDE 7: Remove this (QT6_DECL_NEW_OVERLOAD_TAIL) -->
--      <declare-function signature="state()const" return-type="QtAudio::State"/>
--      <declare-function signature="error()const" return-type="QtAudio::Error"/>
-     </object-type>
- 
-     <object-type name="QAudioSink">
-@@ -82,9 +79,6 @@
-         </modify-argument>
-       </modify-function>
-       <modify-function signature="stop()" allow-thread="true"/>
--      <!-- FIXME PYSIDE 7: Remove this (QT6_DECL_NEW_OVERLOAD_TAIL) -->
--      <declare-function signature="state()const" return-type="QtAudio::State"/>
--      <declare-function signature="error()const" return-type="QtAudio::Error"/>
-     </object-type>
- 
-     <object-type name="QCamera">
-diff --git a/PySide6/glue/qtmultimedia.cpp b/PySide6/glue/qtmultimedia.cpp
-index d193b1bd3..ac8434b97 100644
---- a/PySide6/glue/qtmultimedia.cpp
-+++ b/PySide6/glue/qtmultimedia.cpp
-@@ -2,6 +2,7 @@
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
- 
- // @snippet qvideoframe-bits
-+#include "object.h"
- %BEGIN_ALLOW_THREADS
- %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1);
- %END_ALLOW_THREADS
-@@ -23,5 +24,5 @@ const auto size = %CPPSELF.byteCount();
- 
- // @snippet qtaudio-namespace-compatibility-alias
- Py_INCREF(pyType);
--PyModule_AddObject(module, "QAudio", reinterpret_cast<PyObject *>(pyType));
-+PyModule_AddObject(module, "QtAudio", reinterpret_cast<PyObject *>(pyType));
- // @snippet qtaudio-namespace-compatibility-alias
-diff --git a/libpyside/signalmanager.cpp b/libpyside/signalmanager.cpp
-index 625e4a405..557f130e0 100644
---- a/libpyside/signalmanager.cpp
-+++ b/libpyside/signalmanager.cpp
-@@ -813,11 +813,6 @@ static PyObject *parseArguments(const QMetaMethod &method, void **args)
-     for (qsizetype i = 0; i < argsSize; ++i) {
-         void *data = args[i+1];
-         auto param = paramTypes.at(i);
--#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
--        // Qt 6.7 renamed namespace "QAudio"->"QtAudio" except for signals
--        if (param.startsWith("QAudio::"_ba))
--            param.insert(1, 't');
--#endif
-         Shiboken::Conversions::SpecificConverter converter(param.constData());
-         if (!converter) {
-             PyErr_SetString(PyExc_TypeError, msgCannotConvertParameter(method, i).constData());
-
diff --git a/pkgs/development/python-modules/rfc8785/default.nix b/pkgs/development/python-modules/rfc8785/default.nix
new file mode 100644
index 0000000000000..c3505ebc460e4
--- /dev/null
+++ b/pkgs/development/python-modules/rfc8785/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "rfc8785";
+  version = "0.1.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "trailofbits";
+    repo = "rfc8785.py";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hMH//DpxgNoNLZJ8XL8SikcTfj0w0FvlBMfnPCkqzZ4=";
+  };
+
+  build-system = [
+    flit-core
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "rfc8785" ];
+
+  meta = with lib; {
+    description = "Module for RFC8785 (JSON Canonicalization Scheme)";
+    homepage = "https://github.com/trailofbits/rfc8785.py";
+    changelog = "https://github.com/trailofbits/rfc8785.py/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/shiboken6/default.nix b/pkgs/development/python-modules/shiboken6/default.nix
index 5bf11c0a14a59..39c61bc8cc3b5 100644
--- a/pkgs/development/python-modules/shiboken6/default.nix
+++ b/pkgs/development/python-modules/shiboken6/default.nix
@@ -1,7 +1,6 @@
 {
   lib,
   fetchurl,
-  fetchpatch,
   llvmPackages,
   python,
   cmake,
@@ -12,28 +11,19 @@
 let
   stdenv' = if stdenv.cc.isClang then stdenv else llvmPackages.stdenv;
 in
-stdenv'.mkDerivation rec {
+stdenv'.mkDerivation (finalAttrs: {
   pname = "shiboken6";
-  version = "6.7.0";
+  version = "6.7.2";
 
   src = fetchurl {
     # https://download.qt.io/official_releases/QtForPython/shiboken6/
-    url = "https://download.qt.io/official_releases/QtForPython/shiboken6/PySide6-${version}-src/pyside-setup-everywhere-src-${version}.tar.xz";
-    hash = "sha256-gurjcHN99ez1OcFl0J18gdX8YVOlQbjT03sRJ1+ePo8=";
+    url = "mirror://qt/official_releases/QtForPython/shiboken6/PySide6-${finalAttrs.version}-src/pyside-setup-everywhere-src-${finalAttrs.version}.tar.xz";
+    hash = "sha256-OisNDW54yapd3H8GyktvEaP+FFYLrrFI7qU7XZjjaMc=";
   };
 
-  sourceRoot = "pyside-setup-everywhere-src-${version}/sources/${pname}";
+  sourceRoot = "pyside-setup-everywhere-src-${finalAttrs.version}/sources/shiboken6";
 
-  patches = [
-    ./fix-include-qt-headers.patch
-    # Remove this patch when updating to 6.8.0
-    (fetchpatch {
-      name = "backwards-compatibility-with-6.6.x.patch";
-      url = "https://code.qt.io/cgit/pyside/pyside-setup.git/patch/?id=4f9a20e3635f4f0957e0774588b1d9156e88a572";
-      hash = "sha256-B2jhLWopgaSF/rUXMZFPZArDUNojlBgn7kdVyQull+I=";
-      stripLen = 2;
-    })
-  ];
+  patches = [ ./fix-include-qt-headers.patch ];
 
   nativeBuildInputs = [
     cmake
@@ -57,21 +47,6 @@ stdenv'.mkDerivation rec {
     substituteInPlace cmake/ShibokenHelpers.cmake --replace-fail '#!/bin/bash' '#!''${BASH}'
   '';
 
-  # Due to Shiboken.abi3.so being linked to libshiboken6.abi3.so.6.6 in the build tree,
-  # we need to remove the build tree reference from the RPATH and then add the correct
-  # directory to the RPATH. On Linux, the second part is handled by autoPatchelfHook.
-  # https://bugreports.qt.io/browse/PYSIDE-2233
-  preFixup =
-    ''
-      echo "fixing RPATH of Shiboken.abi3.so"
-    ''
-    + lib.optionalString stdenv.isDarwin ''
-      install_name_tool -change {@rpath,$out/lib}/libshiboken6.abi3.6.6.dylib $out/${python.sitePackages}/shiboken6/Shiboken.abi3.so
-    ''
-    + lib.optionalString stdenv.isLinux ''
-      patchelf $out/${python.sitePackages}/shiboken6/Shiboken.abi3.so --shrink-rpath --allowed-rpath-prefixes ${builtins.storeDir}
-    '';
-
   postInstall = ''
     cd ../../..
     ${python.pythonOnBuildForHost.interpreter} setup.py egg_info --build-type=shiboken6
@@ -80,18 +55,19 @@ stdenv'.mkDerivation rec {
 
   dontWrapQtApps = true;
 
-  meta = with lib; {
+  meta = {
     description = "Generator for the pyside6 Qt bindings";
-    license = with licenses; [
+    license = with lib.licenses; [
       lgpl3Only
       gpl2Only
       gpl3Only
     ];
     homepage = "https://wiki.qt.io/Qt_for_Python";
-    maintainers = with maintainers; [
+    changelog = "https://code.qt.io/cgit/pyside/pyside-setup.git/tree/doc/changelogs/changes-${finalAttrs.version}?h=v${finalAttrs.version}";
+    maintainers = with lib.maintainers; [
       gebner
       Enzime
     ];
-    platforms = platforms.all;
+    platforms = lib.platforms.all;
   };
-}
+})
diff --git a/pkgs/development/python-modules/slackclient/default.nix b/pkgs/development/python-modules/slackclient/default.nix
index a53a43ce80c57..9f1d3e92c08d6 100644
--- a/pkgs/development/python-modules/slackclient/default.nix
+++ b/pkgs/development/python-modules/slackclient/default.nix
@@ -22,7 +22,7 @@
 
 buildPythonPackage rec {
   pname = "slackclient";
-  version = "3.28.0";
+  version = "3.29.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -31,7 +31,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rsJLjqP1XT1JkFz3iQovF58XdkmVcL+jfjiiI9SqonE=";
+    hash = "sha256-49dSRg0nrTXuXfnrC2/3p/zYMxouXO9FLqSBSxg4TcU=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/textual/default.nix b/pkgs/development/python-modules/textual/default.nix
index c6a677f4c65a7..ea00817ab76de 100644
--- a/pkgs/development/python-modules/textual/default.nix
+++ b/pkgs/development/python-modules/textual/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "textual";
-  version = "0.68.0";
+  version = "0.70.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "Textualize";
     repo = "textual";
     rev = "refs/tags/v${version}";
-    hash = "sha256-nxQVxe7lXMcxyqh4SWcQ/A6eQcEzkSshKmpweHpn7JE=";
+    hash = "sha256-nOgiMT+q2pc94Q6g3MvKQVhGJYSGNnoE+5/foK62zLM=";
   };
 
   build-system = [ poetry-core ];
diff --git a/pkgs/development/python-modules/unidata-blocks/default.nix b/pkgs/development/python-modules/unidata-blocks/default.nix
index 63752e22d462a..fc71e13c306b5 100644
--- a/pkgs/development/python-modules/unidata-blocks/default.nix
+++ b/pkgs/development/python-modules/unidata-blocks/default.nix
@@ -2,10 +2,9 @@
   lib,
   buildPythonPackage,
   fetchPypi,
-  pytestCheckHook,
   pythonOlder,
+  pytestCheckHook,
   nix-update-script,
-  hatch-vcs,
   hatchling,
   langcodes,
 }:
@@ -13,8 +12,9 @@
 buildPythonPackage rec {
   pname = "unidata-blocks";
   version = "0.0.10";
+  pyproject = true;
 
-  disabled = pythonOlder "3.11";
+  disabled = pythonOlder "3.10";
 
   src = fetchPypi {
     pname = "unidata_blocks";
@@ -22,17 +22,16 @@ buildPythonPackage rec {
     hash = "sha256-wwiOjfIAx6AZtK98uuPQ0jwblq+CdnMQp+JkQWh+RgM=";
   };
 
-  format = "pyproject";
+  build-system = [ hatchling ];
 
-  nativeBuildInputs = [
-    hatch-vcs
-    hatchling
+  dependencies = [
+    langcodes
   ];
 
-  propagatedBuildInputs = [ langcodes ];
-
   nativeCheckInputs = [ pytestCheckHook ];
 
+  pythonImportsCheck = [ "unidata_blocks" ];
+
   passthru.updateScript = nix-update-script { };
 
   meta = {
@@ -40,6 +39,9 @@ buildPythonPackage rec {
     description = "Library that helps query unicode blocks by Blocks.txt";
     platforms = lib.platforms.all;
     license = lib.licenses.mit;
-    maintainers = with lib.maintainers; [ h7x4 ];
+    maintainers = with lib.maintainers; [
+      TakWolf
+      h7x4
+    ];
   };
 }
diff --git a/pkgs/development/python-modules/yalexs/default.nix b/pkgs/development/python-modules/yalexs/default.nix
index 39fefd923956b..908b4d4b50b4e 100644
--- a/pkgs/development/python-modules/yalexs/default.nix
+++ b/pkgs/development/python-modules/yalexs/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "6.4.0";
+  version = "6.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = "yalexs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-b5R80l3+5mnxMFtISUxToufhSDoRmmCRAyoP5hbk08o=";
+    hash = "sha256-lCRil1SeYXZeXT0SJielJg2Ma8voBXPgij+RK/oT1iU=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/rocm-modules/5/clr/default.nix b/pkgs/development/rocm-modules/5/clr/default.nix
index 0c702dace2b81..49857e9d26f5a 100644
--- a/pkgs/development/rocm-modules/5/clr/default.nix
+++ b/pkgs/development/rocm-modules/5/clr/default.nix
@@ -114,6 +114,10 @@ in stdenv.mkDerivation (finalAttrs: {
 
     substituteInPlace hipamd/src/hip_embed_pch.sh \
       --replace "\''$LLVM_DIR/bin/clang" "${clang}/bin/clang"
+
+    substituteInPlace opencl/khronos/icd/loader/icd_platform.h \
+      --replace-fail '#define ICD_VENDOR_PATH "/etc/OpenCL/vendors/";' \
+                     '#define ICD_VENDOR_PATH "/run/opengl-driver/etc/OpenCL/vendors/";'
   '';
 
   postInstall = ''
diff --git a/pkgs/development/rocm-modules/6/clr/default.nix b/pkgs/development/rocm-modules/6/clr/default.nix
index dedda194c8280..7d80242ccbda0 100644
--- a/pkgs/development/rocm-modules/6/clr/default.nix
+++ b/pkgs/development/rocm-modules/6/clr/default.nix
@@ -138,6 +138,10 @@ in stdenv.mkDerivation (finalAttrs: {
     # https://lists.debian.org/debian-ai/2024/02/msg00178.html
     substituteInPlace rocclr/utils/flags.hpp \
       --replace-fail "HIP_USE_RUNTIME_UNBUNDLER, false" "HIP_USE_RUNTIME_UNBUNDLER, true"
+
+    substituteInPlace opencl/khronos/icd/loader/icd_platform.h \
+      --replace-fail '#define ICD_VENDOR_PATH "/etc/OpenCL/vendors/";' \
+                     '#define ICD_VENDOR_PATH "/run/opengl-driver/etc/OpenCL/vendors/";'
   '';
 
   postInstall = ''
diff --git a/pkgs/development/tools/analysis/lcov/default.nix b/pkgs/development/tools/analysis/lcov/default.nix
index 349b44730b8a2..c5e3b43eea061 100644
--- a/pkgs/development/tools/analysis/lcov/default.nix
+++ b/pkgs/development/tools/analysis/lcov/default.nix
@@ -1,18 +1,42 @@
- {lib, stdenv, fetchFromGitHub, perl, perlPackages, makeWrapper }:
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  perl,
+  python3,
+  perlPackages,
+  makeWrapper,
+}:
 
+let
+  perlDeps = [
+    perlPackages.CaptureTiny
+    perlPackages.DateTime
+    perlPackages.DateTimeFormatW3CDTF
+    perlPackages.DevelCover
+    perlPackages.GD
+    perlPackages.JSONXS
+    perlPackages.MemoryProcess
+    perlPackages.PathTools
+  ];
+in
 stdenv.mkDerivation rec {
   pname = "lcov";
-  version = "1.16";
+  version = "2.1";
 
   src = fetchFromGitHub {
     owner = "linux-test-project";
     repo = "lcov";
     rev = "v${version}";
-    sha256 = "sha256-X1T5OqR6NgTNGedH1on3+XZ7369007By6tRJK8xtmbk=";
+    hash = "sha256-QfA+mzLfpi2fuhcPvCKO7YnPef1GMhCbgBWdXFTXPzE=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ perl ];
+
+  buildInputs = [
+    perl
+    python3
+  ];
 
   preBuild = ''
     patchShebangs bin/
@@ -20,26 +44,27 @@ stdenv.mkDerivation rec {
   '';
 
   postInstall = ''
-    wrapProgram $out/bin/lcov --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.PerlIOgzip perlPackages.JSON ]}
-    wrapProgram $out/bin/genpng --set PERL5LIB ${perlPackages.makeFullPerlPath [ perlPackages.GD ]}
+    for f in "$out"/bin/{gen*,lcov,perl2lcov}; do
+      wrapProgram "$f" --set PERL5LIB ${perlPackages.makeFullPerlPath perlDeps}
+    done
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Code coverage tool that enhances GNU gcov";
 
-    longDescription =
-      '' LCOV is an extension of GCOV, a GNU tool which provides information
-         about what parts of a program are actually executed (i.e.,
-         "covered") while running a particular test case.  The extension
-         consists of a set of PERL scripts which build on the textual GCOV
-         output to implement the following enhanced functionality such as
-         HTML output.
-      '';
+    longDescription = ''
+      LCOV is an extension of GCOV, a GNU tool which provides information
+      about what parts of a program are actually executed (i.e.,
+      "covered") while running a particular test case.  The extension
+      consists of a set of PERL scripts which build on the textual GCOV
+      output to implement the following enhanced functionality such as
+      HTML output.
+    '';
 
-    homepage = "https://ltp.sourceforge.net/coverage/lcov.php";
+    homepage = "https://github.com/linux-test-project/lcov";
     license = lib.licenses.gpl2Plus;
 
-    maintainers = with maintainers; [ dezgeg ];
-    platforms = platforms.all;
+    maintainers = with lib.maintainers; [ dezgeg ];
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/development/tools/coder/default.nix b/pkgs/development/tools/coder/default.nix
index a1cbbf93d07b2..2da9a90e4280b 100644
--- a/pkgs/development/tools/coder/default.nix
+++ b/pkgs/development/tools/coder/default.nix
@@ -13,21 +13,21 @@ let
 
   channels = {
     stable = {
-      version = "2.11.2";
+      version = "2.11.3";
       hash = {
-        x86_64-linux = "sha256-kvQPrYGDkfzTOb3c9f3VNdg3oltKmm1Z4pXeHJ9LIyo=";
-        x86_64-darwin = "sha256-AUfbdJNBK2fCJ6Pq4gkH4+y/undu6Nx64wcejVAB7iU=";
-        aarch64-linux = "sha256-FWgTLE3fW/6j1W1FNDqyVOTMGuFqc4e3Eq2tj8IEcWk=";
-        aarch64-darwin = "sha256-oM+dEUYNUcYHemDWYBf5mqUo3aHXEu6LUuLOboGfTrQ=";
+        x86_64-linux = "sha256-TaEl7J/Zo/K+j8EGpIauQYR5UucALviuSk0/jgiK83U=";
+        x86_64-darwin = "sha256-qM2YTvHGeAi1F4V79YoDdsp1NbHFah8L0bppUhmzZyY=";
+        aarch64-linux = "sha256-gLaxi3h2JrnVecS/k3YHuWM1R1oLXKg5R1aeh3GVREY=";
+        aarch64-darwin = "sha256-SochFDBspdKfw1xd2FiyI9bp2Y3SbdgbGtzwUDyMsLE=";
       };
     };
     mainline = {
-      version = "2.12.1";
+      version = "2.12.2";
       hash = {
-        x86_64-linux = "sha256-YOm2qpw9c5L0bwcodR0quUO2d0eRqDBeUfGB6bZNC9I=";
-        x86_64-darwin = "sha256-ePpwnXoVQby0l4Az8OtygPBpXumjIR8MaDVPH4FzrwM=";
-        aarch64-linux = "sha256-ZPAWzLjtJsgtcMT+w2n8o4cQtQ7HXrL+EejOib/Ab3c=";
-        aarch64-darwin = "sha256-ZcJiLLcZcge0MXiuQH4slAqxXLuytdHL+LZfUNx25jY=";
+        x86_64-linux = "sha256-UJnJ64zwuDKzc/yKLQnj//3tXZ/GJpzUUw8KoH3Uf14=";
+        x86_64-darwin = "sha256-d+BWUEMvta7ZkCOqMTafuR5suIDWPauwTzGOpPDF+ck=";
+        aarch64-linux = "sha256-ayZZhqL3YLjaUDmHOiY4yXg/+tGR7HpLcwojuagqkKg=";
+        aarch64-darwin = "sha256-EYB7YLScshBInLBOXVfYs+f+OWC7OF9tEmhhG25pPSo=";
       };
     };
   };
diff --git a/pkgs/development/tools/codespell/default.nix b/pkgs/development/tools/codespell/default.nix
index e76a980f7427c..84eb2cdfa205c 100644
--- a/pkgs/development/tools/codespell/default.nix
+++ b/pkgs/development/tools/codespell/default.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "codespell";
-  version = "2.2.6";
+  version = "2.3.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "codespell-project";
     repo = "codespell";
     rev = "v${version}";
-    sha256 = "sha256-esewCJw4o4SfSst5ALZ90X3XgOuOAsaxytpotvFeHB0=";
+    sha256 = "sha256-X3Pueu0E7Q57sbKSXqCZki4/PUb1WyWk/Zmj+lhVTM8=";
   };
 
   postPatch = ''
@@ -39,9 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   disabledTests = [
     # tries to run not fully installed script
-    "test_command"
-    # error 'dateset' should not be in aspell dictionaries (en, en_GB, en_US, en_CA, en_AU) for dictionary /build/source/codespell_lib/tests/../data/dictionary.txt
-    "test_dictionary_formatting"
+    "test_basic"
   ];
 
   pythonImportsCheck = [ "codespell_lib" ];
diff --git a/pkgs/development/tools/language-servers/csharp-ls/default.nix b/pkgs/development/tools/language-servers/csharp-ls/default.nix
index eb8c6cd2bb31b..0972bac8c8486 100644
--- a/pkgs/development/tools/language-servers/csharp-ls/default.nix
+++ b/pkgs/development/tools/language-servers/csharp-ls/default.nix
@@ -8,9 +8,9 @@ in
 
 buildDotnetGlobalTool rec {
   pname = "csharp-ls";
-  version = "0.13.0";
+  version = "0.14.0";
 
-  nugetSha256 = "sha256-hhgMwDk3mT7E07REqZduTuEnS7D1tCgdxqN+MLNo9EI=";
+  nugetSha256 = "sha256-agcx7VPIqGhl3NzdGLPwXYJsRuvSjL4SdbNg9vFjIh4=";
 
   dotnet-sdk = sdk_8_0;
   dotnet-runtime = sdk_8_0;
diff --git a/pkgs/development/tools/language-servers/neocmakelsp/default.nix b/pkgs/development/tools/language-servers/neocmakelsp/default.nix
index 6797c2d432502..a8d0e373a110d 100644
--- a/pkgs/development/tools/language-servers/neocmakelsp/default.nix
+++ b/pkgs/development/tools/language-servers/neocmakelsp/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "neocmakelsp";
-  version = "0.7.4";
+  version = "0.7.6";
 
   src = fetchFromGitHub {
     owner = "Decodetalkers";
     repo = "neocmakelsp";
     rev = "v${version}";
-    hash = "sha256-oYvjMpZcXIpOA/osVCOy2NxkFnEQePGf4le22M1bFPA=";
+    hash = "sha256-V8bbJg7h/TCv0y8Kwz3h6XMKtxKjJKduCj9e1vcd6AQ=";
   };
 
-  cargoHash = "sha256-kcqq4xnCxGIGCFlmm4EDc9ZfQHBi6k/xrhIyZ+eKs34=";
+  cargoHash = "sha256-kR4QJ1QFewI5jKPX9/P1z5J9hnWBIhWExF6JgmDzoJw=";
 
   meta = with lib; {
     description = "Cmake lsp based on tower-lsp and treesitter";
diff --git a/pkgs/development/tools/protoc-gen-dart/default.nix b/pkgs/development/tools/protoc-gen-dart/default.nix
index b09322e297014..06a96e70cf3e7 100644
--- a/pkgs/development/tools/protoc-gen-dart/default.nix
+++ b/pkgs/development/tools/protoc-gen-dart/default.nix
@@ -17,6 +17,8 @@ buildDartApplication rec {
 
   pubspecLock = lib.importJSON ./pubspec.lock.json;
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "Protobuf plugin for generating Dart code";
     mainProgram = "protoc-gen-dart";
diff --git a/pkgs/development/tools/protoc-gen-dart/update.sh b/pkgs/development/tools/protoc-gen-dart/update.sh
new file mode 100755
index 0000000000000..5bea5f3bea84c
--- /dev/null
+++ b/pkgs/development/tools/protoc-gen-dart/update.sh
@@ -0,0 +1,33 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p yq ripgrep common-updater-scripts dart
+
+set -xeu -o pipefail
+
+PACKAGE_DIR="$(realpath "$(dirname "$0")")"
+cd "$PACKAGE_DIR/.."
+while ! test -f flake.nix; do cd .. ; done
+NIXPKGS_DIR="$PWD"
+
+version="$(
+  list-git-tags --url=https://github.com/google/protobuf.dart \
+  | rg '^protobuf-v(.*)' -r '$1' \
+  | sort --version-sort \
+  | tail -n1
+)"
+
+cd "$NIXPKGS_DIR"
+update-source-version protoc-gen-dart "$version"
+
+TMPDIR="$(mktemp -d)"
+cd "$TMPDIR"
+
+src="$(nix-build --no-link "$NIXPKGS_DIR" -A protoc-gen-dart.src)/protoc_plugin"
+cp $src/pubspec.* .
+
+if ! test -f pubspec.lock; then
+  dart pub update
+fi
+
+yq . pubspec.lock > "$PACKAGE_DIR/pubspec.lock.json"
+
+rm -rf "$TMPDIR"
diff --git a/pkgs/development/tools/rye/Cargo.lock b/pkgs/development/tools/rye/Cargo.lock
index 3a7d4b0e21122..e2d27c9eade64 100644
--- a/pkgs/development/tools/rye/Cargo.lock
+++ b/pkgs/development/tools/rye/Cargo.lock
@@ -1799,7 +1799,7 @@ dependencies = [
 
 [[package]]
 name = "rye"
-version = "0.34.0"
+version = "0.35.0"
 dependencies = [
  "age",
  "anyhow",
diff --git a/pkgs/development/tools/rye/default.nix b/pkgs/development/tools/rye/default.nix
index ab191b7547be4..8414cd5f59c02 100644
--- a/pkgs/development/tools/rye/default.nix
+++ b/pkgs/development/tools/rye/default.nix
@@ -8,17 +8,20 @@
 , CoreServices
 , Libsystem
 , SystemConfiguration
+, nix-update-script
+, testers
+, rye
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "rye";
-  version = "0.34.0";
+  version = "0.35.0";
 
   src = fetchFromGitHub {
     owner = "mitsuhiko";
     repo = "rye";
     rev = "refs/tags/${version}";
-    hash = "sha256-M5TJXyh1fNigHOuBpEpnUeOWboZWxZ9bGrBuMB1oHgE=";
+    hash = "sha256-mkBp9iFoN1LanJrcm4VdZ9k8cWNaRZIYl10ukT4Rfqc=";
   };
 
   cargoLock = {
@@ -80,12 +83,17 @@ rustPlatform.buildRustPackage rec {
     "--skip=test_version"
   ];
 
-  meta = with lib; {
+  passthru = {
+    updateScript = nix-update-script { };
+    tests.version = testers.testVersion { package = rye; };
+  };
+
+  meta = {
     description = "Tool to easily manage python dependencies and environments";
     homepage = "https://github.com/mitsuhiko/rye";
     changelog = "https://github.com/mitsuhiko/rye/releases/tag/${version}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ GaetanLepage ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ GaetanLepage ];
     mainProgram = "rye";
   };
 }
diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix
index 1e2a2811769a1..b3f5549c487c8 100644
--- a/pkgs/games/path-of-building/default.nix
+++ b/pkgs/games/path-of-building/default.nix
@@ -1,6 +1,21 @@
-{ stdenv, lib, fetchFromGitHub, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  unzip,
+  meson,
+  ninja,
+  pkg-config,
+  qtbase,
+  qttools,
+  wrapQtAppsHook,
+  icoutils,
+  copyDesktopItems,
+  makeDesktopItem,
+  luajit,
+}:
 let
-  data = stdenv.mkDerivation(finalAttrs: {
+  data = stdenv.mkDerivation (finalAttrs: {
     pname = "path-of-building-data";
     version = "2.42.0";
 
@@ -42,12 +57,35 @@ stdenv.mkDerivation {
     hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ];
-  buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    qttools
+    wrapQtAppsHook
+    icoutils
+  ] ++ lib.optional stdenv.isLinux copyDesktopItems;
+
+  buildInputs = [
+    qtbase
+    luajit
+    luajit.pkgs.lua-curl
+  ];
 
   installPhase = ''
     runHook preInstall
     install -Dm555 pobfrontend $out/bin/pobfrontend
+
+    wrestool -x -t 14 ${data.src}/runtime/Path{space}of{space}Building.exe -o pathofbuilding.ico
+    icotool -x pathofbuilding.ico
+
+    for size in 16 32 48 256; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      install -Dm 644 pathofbuilding*"$size"x"$size"*.png \
+        $out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding.png
+    done
+    rm pathofbuilding.ico
+
     runHook postInstall
   '';
 
@@ -59,6 +97,27 @@ stdenv.mkDerivation {
     )
   '';
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "path-of-building";
+      desktopName = "Path of Building";
+      comment = "Offline build planner for Path of Exile";
+      exec = "pobfrontend %U";
+      terminal = false;
+      type = "Application";
+      icon = "pathofbuilding";
+      categories = [ "Game" ];
+      keywords = [
+        "poe"
+        "pob"
+        "pobc"
+        "path"
+        "exile"
+      ];
+      mimeTypes = [ "x-scheme-handler/pob" ];
+    })
+  ];
+
   passthru.data = data;
 
   meta = {
@@ -67,6 +126,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.k900 ];
     mainProgram = "pobfrontend";
-    broken = stdenv.isDarwin;  # doesn't find uic6 for some reason
+    broken = stdenv.isDarwin; # doesn't find uic6 for some reason
   };
 }
diff --git a/pkgs/misc/drivers/epson-escpr2/default.nix b/pkgs/misc/drivers/epson-escpr2/default.nix
index b14807e257eaf..e84cc3b0e3f88 100644
--- a/pkgs/misc/drivers/epson-escpr2/default.nix
+++ b/pkgs/misc/drivers/epson-escpr2/default.nix
@@ -2,15 +2,15 @@
 
 stdenv.mkDerivation rec {
   pname = "epson-inkjet-printer-escpr2";
-  version = "1.2.10";
+  version = "1.2.11";
 
   src = fetchurl {
     # To find new versions, visit
     # http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX and search for
     # some printer like for instance "WF-7210" to get to the most recent
     # version.
-    url = "https://download3.ebz.epson.net/dsc/f/03/00/15/87/52/84d8972472981a5337b96610c39c8c7586256b55/epson-inkjet-printer-escpr2-1.2.10-1.src.rpm";
-    sha256 = "sha256-vrAVarGBp8eI07WMtQSmuNpX5iS26+B2iP/b7U8mJmo=";
+    url = "https://download3.ebz.epson.net/dsc/f/03/00/15/93/07/6926ce2857b2e0f563eecfd6a877b7b71898ad46/epson-inkjet-printer-escpr2-1.2.11-1.src.rpm";
+    sha256 = "sha256-WMjtYYuMGMPf6222rvrP5Ep6fMRwebPTUXeQ6CbwEt4=";
   };
 
   unpackPhase = ''
diff --git a/pkgs/os-specific/linux/selinux-python/default.nix b/pkgs/os-specific/linux/selinux-python/default.nix
index c8c0a093b97e8..121511401151f 100644
--- a/pkgs/os-specific/linux/selinux-python/default.nix
+++ b/pkgs/os-specific/linux/selinux-python/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
     description = "SELinux policy core utilities written in Python";
     license = licenses.gpl2Plus;
     homepage = "https://selinuxproject.org";
+    maintainers = with lib.maintainers; [ RossComputerGuy ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/os-specific/linux/selinux-sandbox/default.nix b/pkgs/os-specific/linux/selinux-sandbox/default.nix
index 7b033694ea264..0b4f0a203b81e 100644
--- a/pkgs/os-specific/linux/selinux-sandbox/default.nix
+++ b/pkgs/os-specific/linux/selinux-sandbox/default.nix
@@ -56,5 +56,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     homepage = "https://selinuxproject.org";
     platforms = platforms.linux;
+    maintainers = with lib.maintainers; [ RossComputerGuy ];
   };
 }
diff --git a/pkgs/servers/gotify/default.nix b/pkgs/servers/gotify/default.nix
index 9b09a69fa136a..320042f7157ea 100644
--- a/pkgs/servers/gotify/default.nix
+++ b/pkgs/servers/gotify/default.nix
@@ -9,13 +9,13 @@
 
 buildGoModule rec {
   pname = "gotify-server";
-  version = "2.4.0";
+  version = "2.5.0";
 
   src = fetchFromGitHub {
     owner = "gotify";
     repo = "server";
     rev = "v${version}";
-    hash = "sha256-TZeQcrJCH9TW039r499fxY4xJ27nZm9GdrilsI33Iqc=";
+    hash = "sha256-Na/bxETIgVm1mxMOXWTgYIFFuB6XG1jGvbW6q/n5LRw=";
   };
 
   # With `allowGoReference = true;`, `buildGoModule` adds the `-trimpath`
@@ -24,7 +24,7 @@ buildGoModule rec {
   #   server[780]: stat /var/lib/private/ui/build/index.html: no such file or directory
   allowGoReference = true;
 
-  vendorHash = "sha256-TR6YGNhSMQ/1kvX3p3QGlXovuoJdaRH0LOwIPZwQ/xY=";
+  vendorHash = "sha256-Vnk/c2dzxIXDChobFSP++9uyiFD+SKyxJC9ZwaQ2pVw=";
 
   doCheck = false;
 
diff --git a/pkgs/servers/home-assistant/custom-components/default.nix b/pkgs/servers/home-assistant/custom-components/default.nix
index d0323d2549890..3a1184016f3ef 100644
--- a/pkgs/servers/home-assistant/custom-components/default.nix
+++ b/pkgs/servers/home-assistant/custom-components/default.nix
@@ -48,6 +48,8 @@
 
   smartthinq-sensors = callPackage ./smartthinq-sensors {};
 
+  spook = callPackage ./spook {};
+
   tuya_local = callPackage ./tuya_local {};
 
   waste_collection_schedule = callPackage ./waste_collection_schedule {};
diff --git a/pkgs/servers/home-assistant/custom-components/spook/default.nix b/pkgs/servers/home-assistant/custom-components/spook/default.nix
new file mode 100644
index 0000000000000..280f7b9491b2a
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/spook/default.nix
@@ -0,0 +1,38 @@
+{
+  lib,
+  buildHomeAssistantComponent,
+  fetchFromGitHub,
+  pillow,
+  fnv-hash-fast,
+  psutil-home-assistant,
+  sqlalchemy,
+}:
+buildHomeAssistantComponent rec {
+  owner = "frenck";
+  domain = "spook";
+  version = "3.0.1";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = domain;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ChHsevryWuim8BEFqXVkCOW9fGMrt5vol+B2SreMUws=";
+  };
+
+  patches = [./remove-sub-integration-symlink-hack.patch];
+
+  dependencies = [
+    pillow
+    fnv-hash-fast
+    psutil-home-assistant
+    sqlalchemy
+  ];
+
+  meta = {
+    changelog = "https://github.com/frenck/spook/releases/tag/v${version}";
+    description = "Toolbox for Home Assistant";
+    homepage = "https://spook.boo/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [kkoniuszy];
+  };
+}
diff --git a/pkgs/servers/home-assistant/custom-components/spook/remove-sub-integration-symlink-hack.patch b/pkgs/servers/home-assistant/custom-components/spook/remove-sub-integration-symlink-hack.patch
new file mode 100644
index 0000000000000..4756e4a2c389a
--- /dev/null
+++ b/pkgs/servers/home-assistant/custom-components/spook/remove-sub-integration-symlink-hack.patch
@@ -0,0 +1,109 @@
+diff --git a/custom_components/spook/__init__.py b/custom_components/spook/__init__.py
+index 213fb2c..c7dc299 100644
+--- a/custom_components/spook/__init__.py
++++ b/custom_components/spook/__init__.py
+@@ -23,8 +23,6 @@ from .templating import SpookTemplateFunctionManager
+ from .util import (
+     async_ensure_template_environments_exists,
+     async_forward_setup_entry,
+-    link_sub_integrations,
+-    unlink_sub_integrations,
+ )
+
+ if TYPE_CHECKING:
+@@ -34,48 +32,6 @@ if TYPE_CHECKING:
+
+ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
+     """Set up from a config entry."""
+-    # Symlink all sub integrations from Spook to the parent integrations folder
+-    # if one is missing, we have to restart Home Assistant.
+-    # This is a workaround for the fact that Home Assistant doesn't support
+-    # sub integrations.
+-    if await hass.async_add_executor_job(link_sub_integrations, hass):
+-        LOGGER.debug("Newly symlinked sub integrations, restarting Home Assistant")
+-
+-        @callback
+-        def _restart(_: Event | None = None) -> None:
+-            """Restart Home Assistant."""
+-            hass.data["homeassistant_stop"] = asyncio.create_task(
+-                hass.async_stop(RESTART_EXIT_CODE),
+-            )
+-
+-        # User asked to restart Home Assistant in the config flow.
+-        if hass.data.get(DOMAIN) == "Boo!":
+-            _restart()
+-            return False
+-
+-        # Should be OK to restart. Better to do it before anything else started.
+-        if hass.state == CoreState.starting:
+-            _restart()
+-            return False
+-
+-        # If all other fails, but we are not running yet... wait for it.
+-        if hass.state == CoreState.not_running:
+-            # Listen to both... just in case.
+-            hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, _restart)
+-            hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STARTED, _restart)
+-            return False
+-
+-        LOGGER.info(
+-            "Home Assistant needs to be restarted in for Spook to complete setting up",
+-        )
+-        ir.async_create_issue(
+-            hass=hass,
+-            domain=DOMAIN,
+-            issue_id="restart_required",
+-            is_fixable=True,
+-            severity=ir.IssueSeverity.WARNING,
+-            translation_key="restart_required",
+-        )
+
+     # Ensure template environments exists
+     async_ensure_template_environments_exists(hass)
+@@ -120,4 +76,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
+
+ async def async_remove_entry(hass: HomeAssistant, _: ConfigEntry) -> None:
+     """Remove a config entry."""
+-    await hass.async_add_executor_job(unlink_sub_integrations, hass)
+diff --git a/custom_components/spook/util.py b/custom_components/spook/util.py
+index 32e9bd2..845d463 100644
+--- a/custom_components/spook/util.py
++++ b/custom_components/spook/util.py
+@@ -104,37 +104,6 @@ async def async_forward_platform_entry_setups_to_ectoplasm(
+     )
+
+
+-def link_sub_integrations(hass: HomeAssistant) -> bool:
+-    """Link Spook sub integrations."""
+-    LOGGER.debug("Linking up Spook sub integrations")
+-
+-    changes = False
+-    for manifest in Path(__file__).parent.rglob("integrations/*/manifest.json"):
+-        LOGGER.debug("Linking Spook sub integration: %s", manifest.parent.name)
+-        dest = Path(hass.config.config_dir) / "custom_components" / manifest.parent.name
+-        if not dest.exists():
+-            src = (
+-                Path(hass.config.config_dir)
+-                / "custom_components"
+-                / DOMAIN
+-                / "integrations"
+-                / manifest.parent.name
+-            )
+-            dest.symlink_to(src)
+-            changes = True
+-    return changes
+-
+-
+-def unlink_sub_integrations(hass: HomeAssistant) -> None:
+-    """Unlink Spook sub integrations."""
+-    LOGGER.debug("Unlinking Spook sub integrations")
+-    for manifest in Path(__file__).parent.rglob("integrations/*/manifest.json"):
+-        LOGGER.debug("Unlinking Spook sub integration: %s", manifest.parent.name)
+-        dest = Path(hass.config.config_dir) / "custom_components" / manifest.parent.name
+-        if dest.exists():
+-            dest.unlink()
+-
+-
+ @callback
+ def async_ensure_template_environments_exists(hass: HomeAssistant) -> None:
+     """Ensure default template environments exist.
diff --git a/pkgs/servers/janus-gateway/default.nix b/pkgs/servers/janus-gateway/default.nix
index 2fe617dea43b0..8a08962f646bb 100644
--- a/pkgs/servers/janus-gateway/default.nix
+++ b/pkgs/servers/janus-gateway/default.nix
@@ -15,13 +15,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "janus-gateway";
-  version = "1.2.2";
+  version = "1.2.3";
 
   src = fetchFromGitHub {
     owner = "meetecho";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-BS6ErS2Wi8pOy8oFmVnbujYPwClxX8e+GL4CcqvOL9E=";
+    sha256 = "sha256-3o9XxxTlWppq1mFgIUjstUFz6bT44mvBJa4FBgcc4Pc=";
   };
 
   nativeBuildInputs = [ autoreconfHook pkg-config gengetopt ];
diff --git a/pkgs/servers/monitoring/prometheus/alertmanager.nix b/pkgs/servers/monitoring/prometheus/alertmanager.nix
index ba1c35ee294d3..1db975f591d98 100644
--- a/pkgs/servers/monitoring/prometheus/alertmanager.nix
+++ b/pkgs/servers/monitoring/prometheus/alertmanager.nix
@@ -3,6 +3,7 @@
 , buildGoModule
 , fetchFromGitHub
 , installShellFiles
+, nixosTests
 }:
 
 buildGoModule rec {
@@ -39,6 +40,8 @@ buildGoModule rec {
     installShellCompletion amtool.zsh
   '';
 
+  passthru.tests = { inherit (nixosTests.prometheus) alertmanager; };
+
   meta = with lib; {
     description = "Alert dispatcher for the Prometheus monitoring system";
     homepage = "https://github.com/prometheus/alertmanager";
diff --git a/pkgs/servers/monitoring/prometheus/default.nix b/pkgs/servers/monitoring/prometheus/default.nix
index f7cc47311ef23..9229eb4546a2a 100644
--- a/pkgs/servers/monitoring/prometheus/default.nix
+++ b/pkgs/servers/monitoring/prometheus/default.nix
@@ -31,10 +31,10 @@
 }:
 
 let
-  version = "2.52.0";
+  version = "2.53.0";
   webUiStatic = fetchurl {
     url = "https://github.com/prometheus/prometheus/releases/download/v${version}/prometheus-web-ui-${version}.tar.gz";
-    hash = "sha256-/HTNDu/msUFLiqbD5ryVPlDOqfAT+8MEGNusmu3xH1w=";
+    hash = "sha256-oGhVpr47+blG7udu4Pcd+4Ndn0U+R47i69nheauDDoo=";
   };
 in
 buildGoModule rec {
@@ -47,10 +47,10 @@ buildGoModule rec {
     owner = "prometheus";
     repo = "prometheus";
     rev = "v${version}";
-    hash = "sha256-7HLSSls1aMZ6Zju2F9dArTFsCSESxDxWQ1a0QgD5Nxo=";
+    hash = "sha256-clI8/P6Gdl8WSK1DsXUj+M9f/h35GX961QtpyvGNxUY=";
   };
 
-  vendorHash = "sha256-IzYYfB8cvvQAsOqEREVaCe80V3hhhmOEYsl9E9NJq20=";
+  vendorHash = "sha256-0TR0jFEY+ls8C9EJEhSl2vX5VVZqZ8jGWDUalOddUPM=";
 
   excludedPackages = [ "documentation/prometheus-mixin" ];
 
diff --git a/pkgs/servers/monitoring/prometheus/pushgateway.nix b/pkgs/servers/monitoring/prometheus/pushgateway.nix
index c47019aeada72..cc8e11ade6355 100644
--- a/pkgs/servers/monitoring/prometheus/pushgateway.nix
+++ b/pkgs/servers/monitoring/prometheus/pushgateway.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchFromGitHub, testers, prometheus-pushgateway }:
+{ lib, buildGoModule, fetchFromGitHub, nixosTests, testers, prometheus-pushgateway }:
 
 buildGoModule rec {
   pname = "pushgateway";
@@ -23,8 +23,11 @@ buildGoModule rec {
     "-X github.com/prometheus/common/version.BuildDate=19700101-00:00:00"
   ];
 
-  passthru.tests.version = testers.testVersion {
-    package = prometheus-pushgateway;
+  passthru.tests = {
+    inherit (nixosTests.prometheus) pushgateway;
+    version = testers.testVersion {
+      package = prometheus-pushgateway;
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/servers/monitoring/thanos/default.nix b/pkgs/servers/monitoring/thanos/default.nix
index d3e797a1c34c4..ce4a75cea75b7 100644
--- a/pkgs/servers/monitoring/thanos/default.nix
+++ b/pkgs/servers/monitoring/thanos/default.nix
@@ -37,7 +37,7 @@ buildGoModule rec {
   passthru = {
     updateScript = nix-update-script { };
     tests = {
-      inherit (nixosTests) prometheus;
+      inherit (nixosTests) thanos;
       version = testers.testVersion {
         command = "thanos --version";
         package = thanos;
diff --git a/pkgs/servers/monitoring/vmagent/default.nix b/pkgs/servers/monitoring/vmagent/default.nix
deleted file mode 100644
index 1dd054de46bcf..0000000000000
--- a/pkgs/servers/monitoring/vmagent/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ lib, fetchFromGitHub, buildGoModule }:
-buildGoModule rec {
-  pname = "vmagent";
-  version = "1.101.0";
-
-  src = fetchFromGitHub {
-    owner = "VictoriaMetrics";
-    repo = "VictoriaMetrics";
-    rev = "v${version}";
-    sha256 = "sha256-Jjz/CbVCvc9NFbvzYTFthG8cov4pYpc6y1A1Kmd3Mjg=";
-  };
-
-  ldflags = [ "-s" "-w" "-X github.com/VictoriaMetrics/VictoriaMetrics/lib/buildinfo.Version=${version}" ];
-
-  vendorHash = null;
-
-  subPackages = [ "app/vmagent" ];
-
-  meta = with lib; {
-    homepage = "https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmagent";
-    description = "VictoriaMetrics metrics scraper";
-    mainProgram = "vmagent";
-    license = licenses.asl20;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ nullx76 leona ];
-  };
-}
diff --git a/pkgs/servers/pocketbase/default.nix b/pkgs/servers/pocketbase/default.nix
index c61b65c33d1a7..00e1f8cc38a45 100644
--- a/pkgs/servers/pocketbase/default.nix
+++ b/pkgs/servers/pocketbase/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "pocketbase";
-  version = "0.22.13";
+  version = "0.22.14";
 
   src = fetchFromGitHub {
     owner = "pocketbase";
     repo = "pocketbase";
     rev = "v${version}";
-    hash = "sha256-eps1sLtE/yBLyq1iTzOWu+RqFAjAg4EXWV7QZnr2KjQ=";
+    hash = "sha256-d2gqw3IJBkU2sfBf5J0E45VzFtuSox4cHpPucsl/o4s=";
   };
 
-  vendorHash = "sha256-hxI/0ask3iQW0Ox+HuJ6Oi1jiHF/0NZ+L7cLJijqyyQ=";
+  vendorHash = "sha256-G5VD5Joq/p1rur0SmK1xNQxtNZh7ZqR5I4j8fgswoDo=";
 
   # This is the released subpackage from upstream repo
   subPackages = [ "examples/base" ];
diff --git a/pkgs/servers/web-apps/bookstack/default.nix b/pkgs/servers/web-apps/bookstack/default.nix
index 926da9e6c55e7..c99f93625f974 100644
--- a/pkgs/servers/web-apps/bookstack/default.nix
+++ b/pkgs/servers/web-apps/bookstack/default.nix
@@ -16,13 +16,13 @@ let
 
 in package.override rec {
   pname = "bookstack";
-  version = "24.05.1";
+  version = "24.05.2";
 
   src = fetchFromGitHub {
     owner = "bookstackapp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1m20435sp4n3dg7am4lh73yw1wdmnsf15wdl554lrklhg7f21s0w";
+    sha256 = "13yln6b5j9plkcrp1mwfvgcv67gm2ayb2l2grhw2h4ncqnvmxhwv";
   };
 
   meta = with lib; {
diff --git a/pkgs/servers/web-apps/bookstack/php-packages.nix b/pkgs/servers/web-apps/bookstack/php-packages.nix
index a154144fc16d5..b5bed1867065d 100644
--- a/pkgs/servers/web-apps/bookstack/php-packages.nix
+++ b/pkgs/servers/web-apps/bookstack/php-packages.nix
@@ -15,10 +15,10 @@ let
     "aws/aws-sdk-php" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "aws-aws-sdk-php-cc79f16e1a1bd3feee421401ba2f21915abfdf91";
+        name = "aws-aws-sdk-php-731cd73062909594c5f7443413c4c4c40ed1c25c";
         src = fetchurl {
-          url = "https://api.github.com/repos/aws/aws-sdk-php/zipball/cc79f16e1a1bd3feee421401ba2f21915abfdf91";
-          sha256 = "1dg6g31hwn8b0drsvg077im9bnp5x0zhqsdwck6qq02kzyimjsy2";
+          url = "https://api.github.com/repos/aws/aws-sdk-php/zipball/731cd73062909594c5f7443413c4c4c40ed1c25c";
+          sha256 = "1bs6l34j3r1nr7750ssrannbi8x5pdwknlzhmqx84xajm9imiqcp";
         };
       };
     };
@@ -105,10 +105,10 @@ let
     "doctrine/event-manager" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "doctrine-event-manager-750671534e0241a7c50ea5b43f67e23eb5c96f32";
+        name = "doctrine-event-manager-b680156fa328f1dfd874fd48c7026c41570b9c6e";
         src = fetchurl {
-          url = "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32";
-          sha256 = "1inhh3k8ai8d6rhx5xsbdx0ifc3yjjfrahi0cy1npz9nx3383cfh";
+          url = "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e";
+          sha256 = "135zcwnlfijxzv3x5qn1zs3jmybs1n2q64pbs5gbjwmsdgrxhzsi";
         };
       };
     };
@@ -245,10 +245,10 @@ let
     "intervention/image" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "intervention-image-193324ec88bc5ad4039e57ce9b926ae28dfde813";
+        name = "intervention-image-d428433aa74836ab75e8d4a5241628bebb7f4077";
         src = fetchurl {
-          url = "https://api.github.com/repos/Intervention/image/zipball/193324ec88bc5ad4039e57ce9b926ae28dfde813";
-          sha256 = "18p2xgbvdzyx9wjid5iviyfx81k7za73b729ar3fyjd646x8niwi";
+          url = "https://api.github.com/repos/Intervention/image/zipball/d428433aa74836ab75e8d4a5241628bebb7f4077";
+          sha256 = "0qglsydy5672kl1f12pp185zw4vk30jh151bgjvyakggwiabds57";
         };
       };
     };
@@ -265,20 +265,20 @@ let
     "laravel/framework" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "laravel-framework-91e2b9e218afa4e5c377510faa11957042831ba3";
+        name = "laravel-framework-590afea38e708022662629fbf5184351fa82cf08";
         src = fetchurl {
-          url = "https://api.github.com/repos/laravel/framework/zipball/91e2b9e218afa4e5c377510faa11957042831ba3";
-          sha256 = "05rzgsvqlyjbpwx69vq5vlk4fqwi7vxs5qacizyqnrihck9laahs";
+          url = "https://api.github.com/repos/laravel/framework/zipball/590afea38e708022662629fbf5184351fa82cf08";
+          sha256 = "0gnp0khw8a1rydrv06pi4sssx6fyvdwvcqsgjh8rjcbcs39f1ii5";
         };
       };
     };
     "laravel/prompts" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "laravel-prompts-23ea808e8a145653e0ab29e30d4385e49f40a920";
+        name = "laravel-prompts-9bc4df7c699b0452c6b815e64a2d84b6d7f99400";
         src = fetchurl {
-          url = "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920";
-          sha256 = "0ysyqn1xivinv4lrqd1vifk50ccrxfjyv7ndsh433hb2961n3r52";
+          url = "https://api.github.com/repos/laravel/prompts/zipball/9bc4df7c699b0452c6b815e64a2d84b6d7f99400";
+          sha256 = "05hf1r10l8fbxy4wy4g4sjwqvd28liq5n4gjyhsc54kj2jp5bba0";
         };
       };
     };
@@ -335,30 +335,30 @@ let
     "league/flysystem" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "league-flysystem-4729745b1ab737908c7d055148c9a6b3e959832f";
+        name = "league-flysystem-e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c";
         src = fetchurl {
-          url = "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f";
-          sha256 = "13kf4l7mp4mifm09av0w7vfcwnmpvjpsic836xh8a8rlfczgjym2";
+          url = "https://api.github.com/repos/thephpleague/flysystem/zipball/e611adab2b1ae2e3072fa72d62c62f52c2bf1f0c";
+          sha256 = "18sackbf9pfbpr03dd5z8vfcqsqhz1sajj2pp2wddz3srcf3zxk5";
         };
       };
     };
     "league/flysystem-aws-s3-v3" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "league-flysystem-aws-s3-v3-3e6ce2f972f1470db779f04d29c289dcd2c32837";
+        name = "league-flysystem-aws-s3-v3-22071ef1604bc776f5ff2468ac27a752514665c8";
         src = fetchurl {
-          url = "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/3e6ce2f972f1470db779f04d29c289dcd2c32837";
-          sha256 = "01l7nbdmrh1vb59m7xhc1kjfz6xrp5871ghrb6c1anwcsh20l9r3";
+          url = "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/22071ef1604bc776f5ff2468ac27a752514665c8";
+          sha256 = "1yhrnw4alf5cf3bwyd3nxcrmwcih6hkmc2l3f6nmhksiza89b9cv";
         };
       };
     };
     "league/flysystem-local" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "league-flysystem-local-61a6a90d6e999e4ddd9ce5adb356de0939060b92";
+        name = "league-flysystem-local-13f22ea8be526ea58c2ddff9e158ef7c296e4f40";
         src = fetchurl {
-          url = "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92";
-          sha256 = "0mkcqhmxgq5pwbfzqc26z06384v7plva5s71pqyqdaayb1hlyg1f";
+          url = "https://api.github.com/repos/thephpleague/flysystem-local/zipball/13f22ea8be526ea58c2ddff9e158ef7c296e4f40";
+          sha256 = "1cpi818r6nizp965hiba9zhrfjr9gbyqms3f4r4hzd19d73p6l60";
         };
       };
     };
@@ -435,10 +435,10 @@ let
     "nesbot/carbon" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "nesbot-carbon-0c6fd108360c562f6e4fd1dedb8233b423e91c83";
+        name = "nesbot-carbon-afd46589c216118ecd48ff2b95d77596af1e57ed";
         src = fetchurl {
-          url = "https://api.github.com/repos/briannesbitt/Carbon/zipball/0c6fd108360c562f6e4fd1dedb8233b423e91c83";
-          sha256 = "1qwdzf2jgppj2r8jpxxd1q08aycyvj17azy2ixlw4cnmwhcqzgnh";
+          url = "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed";
+          sha256 = "17sz76kydaf5n74qgqz36yxbmg4lwcbcv6kpjxrqfqfrb65sz5b6";
         };
       };
     };
@@ -485,10 +485,10 @@ let
     "onelogin/php-saml" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "onelogin-php-saml-b22a57ebd13e838b90df5d3346090bc37056409d";
+        name = "onelogin-php-saml-d3b5172f137db2f412239432d77253ceaaa1e939";
         src = fetchurl {
-          url = "https://api.github.com/repos/onelogin/php-saml/zipball/b22a57ebd13e838b90df5d3346090bc37056409d";
-          sha256 = "1bi65bi04a26zmaz7ms0qyg6i86k4cd9g8qs7dp1pphpvflgz461";
+          url = "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/d3b5172f137db2f412239432d77253ceaaa1e939";
+          sha256 = "0hhsww74494bh7xk1d0cyr04yr2fggsscfs9z522k6md780pz85m";
         };
       };
     };
@@ -805,20 +805,20 @@ let
     "symfony/console" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-console-a170e64ae10d00ba89e2acbb590dc2e54da8ad8f";
+        name = "symfony-console-be5854cee0e8c7b110f00d695d11debdfa1a2a91";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f";
-          sha256 = "16fnydlalcv3ihj2z7b0nyp6cc260k5apxpx7q1vb0hdx8b7wl6a";
+          url = "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91";
+          sha256 = "018il5dccpnk2988sgxp26440wrx25j064gns7plnidmx7byxjpw";
         };
       };
     };
     "symfony/css-selector" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-css-selector-1c5d5c2103c3762aff27a27e1e2409e30a79083b";
+        name = "symfony-css-selector-4b61b02fe15db48e3687ce1c45ea385d1780fe08";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/css-selector/zipball/1c5d5c2103c3762aff27a27e1e2409e30a79083b";
-          sha256 = "0glngr70w1kx1gqliv1w0zk23pblc993i3apdlmb68gp04b8gd3f";
+          url = "https://api.github.com/repos/symfony/css-selector/zipball/4b61b02fe15db48e3687ce1c45ea385d1780fe08";
+          sha256 = "066gmgxy8228kxfqgirmilil172q61i6fc0vnxxpmcyz6b7xxfai";
         };
       };
     };
@@ -835,20 +835,20 @@ let
     "symfony/error-handler" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-error-handler-667a072466c6a53827ed7b119af93806b884cbb3";
+        name = "symfony-error-handler-ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/error-handler/zipball/667a072466c6a53827ed7b119af93806b884cbb3";
-          sha256 = "077xdy196mbcaqx6kv7p2sx2ygbmnja0xa9mn34d9b1gjmz7kkvj";
+          url = "https://api.github.com/repos/symfony/error-handler/zipball/ef836152bf13472dc5fb5b08b0c0c4cfeddc0fcc";
+          sha256 = "0r29dqwxs2xmv404rfcidf83rycfm9fqv7hsqaz3jwms00y770gg";
         };
       };
     };
     "symfony/event-dispatcher" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-event-dispatcher-d84384f3f67de3cb650db64d685d70395dacfc3f";
+        name = "symfony-event-dispatcher-8d7507f02b06e06815e56bb39aa0128e3806208b";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/event-dispatcher/zipball/d84384f3f67de3cb650db64d685d70395dacfc3f";
-          sha256 = "1d22vxp7fnjd9chl0yd1gnnfdbcgxkcxzl2fynkdf5b1rsx5vly3";
+          url = "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b";
+          sha256 = "162p2x4vxwvljdrqq481sccspzyky2g53pmmnqg4hvg76g5yajj8";
         };
       };
     };
@@ -865,40 +865,40 @@ let
     "symfony/finder" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-finder-511c48990be17358c23bf45c5d71ab85d40fb764";
+        name = "symfony-finder-3ef977a43883215d560a2cecb82ec8e62131471c";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/finder/zipball/511c48990be17358c23bf45c5d71ab85d40fb764";
-          sha256 = "0m3cm549cnk893dx8dzggbjy49qyx9zln82xi4w4m8rf93pc2ph9";
+          url = "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c";
+          sha256 = "1ibv2sk2bfg6hymxhs6p6g62h7ycw1w2lg1w1q78pql1nxvrp7ks";
         };
       };
     };
     "symfony/http-foundation" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-http-foundation-b4db6b833035477cb70e18d0ae33cb7c2b521759";
+        name = "symfony-http-foundation-27de8cc95e11db7a50b027e71caaab9024545947";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/http-foundation/zipball/b4db6b833035477cb70e18d0ae33cb7c2b521759";
-          sha256 = "1wwa9ib2imrdq7qrplf2lkbzs2irhjdfrhwdxff5dvcpkvd80qgj";
+          url = "https://api.github.com/repos/symfony/http-foundation/zipball/27de8cc95e11db7a50b027e71caaab9024545947";
+          sha256 = "11bf0fhb7pf5jp5kpd7nm8sil9mnnvhihj4l23gx514m81anzfi0";
         };
       };
     };
     "symfony/http-kernel" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-http-kernel-b7b5e6cdef670a0c82d015a966ffc7e855861a98";
+        name = "symfony-http-kernel-6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/http-kernel/zipball/b7b5e6cdef670a0c82d015a966ffc7e855861a98";
-          sha256 = "0ggvbn2qiydv0qcp5rsa5dpjqffj239zcyxiplv5vk4gnc2jy4qr";
+          url = "https://api.github.com/repos/symfony/http-kernel/zipball/6c519aa3f32adcfd1d1f18d923f6b227d9acf3c1";
+          sha256 = "0y2qsnymkagnds6qwgfv2lbf9i3jf0f4frs1psa35mkb64c58hkg";
         };
       };
     };
     "symfony/mime" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-mime-decadcf3865918ecfcbfa90968553994ce935a5e";
+        name = "symfony-mime-618597ab8b78ac86d1c75a9d0b35540cda074f33";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/mime/zipball/decadcf3865918ecfcbfa90968553994ce935a5e";
-          sha256 = "0piaiwigyjvy9mn2464ka3cvzkylw3i1b8by5qr52z0mhm6sv7g5";
+          url = "https://api.github.com/repos/symfony/mime/zipball/618597ab8b78ac86d1c75a9d0b35540cda074f33";
+          sha256 = "1rklzg8j8s6ls770l8rqz7mb10nrifr228zmqpxdqkpfrs8j0w3z";
         };
       };
     };
@@ -995,20 +995,20 @@ let
     "symfony/process" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-process-cdb1c81c145fd5aa9b0038bab694035020943381";
+        name = "symfony-process-8d92dd79149f29e89ee0f480254db595f6a6a2c5";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/process/zipball/cdb1c81c145fd5aa9b0038bab694035020943381";
-          sha256 = "1dlqa0fivwr3q7z2k7n657dzdwywh4ilv88fiwh3n8r09iblnc65";
+          url = "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5";
+          sha256 = "1fvyj71vdnbm56xp167svigax6q562j92i309wqikprdyakdqmyy";
         };
       };
     };
     "symfony/routing" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-routing-276e06398f71fa2a973264d94f28150f93cfb907";
+        name = "symfony-routing-8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/routing/zipball/276e06398f71fa2a973264d94f28150f93cfb907";
-          sha256 = "1a9g57sdny5sph2w1i7wizssg90k50msalk7nhcy0p9q584r61g6";
+          url = "https://api.github.com/repos/symfony/routing/zipball/8a40d0f9b01f0fbb80885d3ce0ad6714fb603a58";
+          sha256 = "1ayhdyvc503xjjaaz6vclsxbm568l73zybcbxiz6g1625cg4g8gb";
         };
       };
     };
@@ -1025,20 +1025,20 @@ let
     "symfony/string" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-string-ffeb9591c61f65a68d47f77d12b83fa530227a69";
+        name = "symfony-string-a147c0f826c4a1f3afb763ab8e009e37c877a44d";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69";
-          sha256 = "0mw6issgmncy1xnnszwy0xa8cxqin41k4idk3wv6crdsywzylxkx";
+          url = "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d";
+          sha256 = "1fkpq4lw9rp3wccdjj8qhpl02asp1izvji53sd0gzq4z3djq0y7p";
         };
       };
     };
     "symfony/translation" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-translation-7495687c58bfd88b7883823747b0656d90679123";
+        name = "symfony-translation-a002933b13989fc4bd0b58e04bf7eec5210e438a";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/translation/zipball/7495687c58bfd88b7883823747b0656d90679123";
-          sha256 = "1s9kxq8nhiwg235jhfg00gzlixnxhcclw3wvmfdn6ijww4s62rqi";
+          url = "https://api.github.com/repos/symfony/translation/zipball/a002933b13989fc4bd0b58e04bf7eec5210e438a";
+          sha256 = "0a6rw66b6yysafkyhgzpqq147cm38id3v1kksnzgna528d5cac87";
         };
       };
     };
@@ -1055,20 +1055,20 @@ let
     "symfony/uid" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-uid-a66efcb71d8bc3a207d9d78e0bd67f3321510355";
+        name = "symfony-uid-35904eca37a84bb764c560cbfcac9f0ac2bcdbdf";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/uid/zipball/a66efcb71d8bc3a207d9d78e0bd67f3321510355";
-          sha256 = "0aajisswwd938xkjci1nsz6ypmqidf4dhq2xjy55x1l1jpg4vkji";
+          url = "https://api.github.com/repos/symfony/uid/zipball/35904eca37a84bb764c560cbfcac9f0ac2bcdbdf";
+          sha256 = "1xwvr4lp9cxr7s065xidqw9k3abdj6npd54flp7smgb4npl67s13";
         };
       };
     };
     "symfony/var-dumper" = {
       targetDir = "";
       src = composerEnv.buildZipPackage {
-        name = "symfony-var-dumper-7a9cd977cd1c5fed3694bee52990866432af07d7";
+        name = "symfony-var-dumper-ad23ca4312395f0a8a8633c831ef4c4ee542ed25";
         src = fetchurl {
-          url = "https://api.github.com/repos/symfony/var-dumper/zipball/7a9cd977cd1c5fed3694bee52990866432af07d7";
-          sha256 = "1fsiwhrhgzhj8ncv8vz0dsd1s5v4dgphy71j8jqx814s8rb4xd0s";
+          url = "https://api.github.com/repos/symfony/var-dumper/zipball/ad23ca4312395f0a8a8633c831ef4c4ee542ed25";
+          sha256 = "077ppd7v37qh6rfrv76apa1hm4apaqj5iskbfwlm32cndv0bnxk1";
         };
       };
     };
diff --git a/pkgs/servers/web-apps/sogo/default.nix b/pkgs/servers/web-apps/sogo/default.nix
index 35cd19636269f..89175e5e5a674 100644
--- a/pkgs/servers/web-apps/sogo/default.nix
+++ b/pkgs/servers/web-apps/sogo/default.nix
@@ -4,15 +4,15 @@
 , enableActiveSync ? false
 , libwbxml }:
 gnustep.stdenv.mkDerivation rec {
-  pname = "SOGo";
-  version = "5.9.1";
+  pname = "sogo";
+  version = "5.10.0";
 
   # always update the sope package as well, when updating sogo
   src = fetchFromGitHub {
-    owner = "inverse-inc";
+    owner = "Alinto";
     repo = pname;
     rev = "SOGo-${version}";
-    hash = "sha256-b6BZZ61wY0Akt1Q6+Bq6JXAx/67MwBNbzHr3sB0NuRg=";
+    hash = "sha256-ZmpOI1zk/TkRNFmwTXugVb9IvxYSP4LgNrApSytdI7s=";
   };
 
   nativeBuildInputs = [ gnustep.make makeWrapper python3 pkg-config ];
@@ -45,7 +45,7 @@ gnustep.stdenv.mkDerivation rec {
     "--enable-mfa"
   ];
 
-  env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=int-conversion -Wno-error=implicit-int";
+  env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=int-conversion -Wno-error=implicit-int -Wno-error=return-type";
 
   preFixup = ''
     # Create gnustep.conf
diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix
index d7533f0bf90fb..ae9a129c766f6 100644
--- a/pkgs/tools/archivers/unzip/default.nix
+++ b/pkgs/tools/archivers/unzip/default.nix
@@ -102,6 +102,7 @@ stdenv.mkDerivation rec {
     description = "Extraction utility for archives compressed in .zip format";
     license = lib.licenses.info-zip;
     platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ RossComputerGuy ];
     mainProgram = "unzip";
   };
 }
diff --git a/pkgs/tools/audio/openai-whisper-cpp/default.nix b/pkgs/tools/audio/openai-whisper-cpp/default.nix
index ab1cbb77e97bb..218872ed1e313 100644
--- a/pkgs/tools/audio/openai-whisper-cpp/default.nix
+++ b/pkgs/tools/audio/openai-whisper-cpp/default.nix
@@ -25,13 +25,13 @@ let
 in
 effectiveStdenv.mkDerivation (finalAttrs: {
   pname = "whisper-cpp";
-  version = "1.5.4";
+  version = "1.6.2";
 
   src = fetchFromGitHub {
     owner = "ggerganov";
     repo = "whisper.cpp";
     rev = "refs/tags/v${finalAttrs.version}" ;
-    hash = "sha256-9H2Mlua5zx2WNXbz2C5foxIteuBgeCNALdq5bWyhQCk=";
+    hash = "sha256-hIEIu7feOZWqxRskf6Ej7l653/9KW8B3cnpPLoCRBAc=";
   };
 
   # The upstream download script tries to download the models to the
@@ -80,6 +80,7 @@ effectiveStdenv.mkDerivation (finalAttrs: {
   env = lib.optionalAttrs stdenv.isDarwin {
     WHISPER_COREML = "1";
     WHISPER_COREML_ALLOW_FALLBACK = "1";
+    WHISPER_METAL_EMBED_LIBRARY = "1";
   } // lib.optionalAttrs cudaSupport {
     WHISPER_CUBLAS = "1";
   };
@@ -99,15 +100,6 @@ effectiveStdenv.mkDerivation (finalAttrs: {
     wrapProgram $out/bin/whisper-cpp-download-ggml-model \
       --prefix PATH : ${lib.makeBinPath [wget]}
 
-    ${lib.optionalString stdenv.isDarwin ''
-      install -Dt $out/share/whisper-cpp ggml-metal.metal
-
-      for bin in whisper-cpp whisper-cpp-stream whisper-cpp-command; do
-        wrapProgram $out/bin/$bin \
-          --set-default GGML_METAL_PATH_RESOURCES $out/share/whisper-cpp
-      done
-    ''}
-
     runHook postInstall
   '';
 
diff --git a/pkgs/tools/audio/openai-whisper-cpp/download-models.patch b/pkgs/tools/audio/openai-whisper-cpp/download-models.patch
index 7183c38b51669..7589c2ef36f83 100644
--- a/pkgs/tools/audio/openai-whisper-cpp/download-models.patch
+++ b/pkgs/tools/audio/openai-whisper-cpp/download-models.patch
@@ -1,51 +1,53 @@
+diff --git a/models/download-ggml-model.sh b/models/download-ggml-model.sh
+index 1f1075b..7476c8e 100755
 --- a/models/download-ggml-model.sh
 +++ b/models/download-ggml-model.sh
-@@ -9,18 +9,6 @@
- src="https://huggingface.co/ggerganov/whisper.cpp"
- pfx="resolve/main/ggml"
+@@ -12,18 +12,6 @@ pfx="resolve/main/ggml"
+ BOLD="\033[1m"
+ RESET='\033[0m'
  
 -# get the path of this script
--function get_script_path() {
+-get_script_path() {
 -    if [ -x "$(command -v realpath)" ]; then
--        echo "$(dirname "$(realpath "$0")")"
+-        dirname "$(realpath "$0")"
 -    else
--        local ret="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P)"
--        echo "$ret"
+-        _ret="$(cd -- "$(dirname "$0")" >/dev/null 2>&1 || exit ; pwd -P)"
+-        echo "$_ret"
 -    fi
 -}
 -
 -models_path="${2:-$(get_script_path)}"
 -
  # Whisper models
- models=(
-     "tiny.en"
-@@ -56,8 +44,8 @@ function list_models {
+ models="tiny
+ tiny.en
+@@ -64,8 +52,8 @@ list_models() {
      printf "\n\n"
  }
  
 -if [ "$#" -lt 1 ] || [ "$#" -gt 2 ]; then
--    printf "Usage: $0 <model> [models_path]\n"
+-    printf "Usage: %s <model> [models_path]\n" "$0"
 +if [ "$#" -ne 1 ]; then
-+    printf "Usage: $0 <model>\n"
++    printf "Usage: %s <model>\n" "$0"
      list_models
+     printf "___________________________________________________________\n"
+     printf "${BOLD}.en${RESET} = english-only ${BOLD}-q5_[01]${RESET} = quantized ${BOLD}-tdrz${RESET} = tinydiarize\n"
+@@ -94,8 +82,6 @@ echo "$model" | grep -q '^"tdrz"*$'
  
-     exit 1
-@@ -82,8 +70,6 @@ fi
- 
- printf "Downloading ggml model $model from '$src' ...\n"
+ printf "Downloading ggml model %s from '%s' ...\n" "$model" "$src"
  
--cd "$models_path"
+-cd "$models_path" || exit
 -
  if [ -f "ggml-$model.bin" ]; then
-     printf "Model $model already exists. Skipping download.\n"
+     printf "Model %s already exists. Skipping download.\n" "$model"
      exit 0
-@@ -105,7 +91,7 @@ if [ $? -ne 0 ]; then
+@@ -116,7 +102,7 @@ if [ $? -ne 0 ]; then
      exit 1
  fi
  
--printf "Done! Model '$model' saved in '$models_path/ggml-$model.bin'\n"
-+printf "Done! Model '$model' saved in 'ggml-$model.bin'\n"
+-printf "Done! Model '%s' saved in '%s/ggml-%s.bin'\n" "$model" "$models_path" "$model"
++printf "Done! Model '%s' saved in 'ggml-%s.bin'\n" "$model" "$model"
  printf "You can now use it like this:\n\n"
--printf "  $ ./main -m $models_path/ggml-$model.bin -f samples/jfk.wav\n"
-+printf "  $ whisper-cpp -m ggml-$model.bin -f samples/jfk.wav\n"
+-printf "  $ ./main -m %s/ggml-%s.bin -f samples/jfk.wav\n" "$models_path" "$model"
++printf "  $ whisper-cpp -m ggml-%s.bin -f samples/jfk.wav\n" "$model"
  printf "\n"
diff --git a/pkgs/tools/filesystems/dwarfs/default.nix b/pkgs/tools/filesystems/dwarfs/default.nix
index 0ee916b2d53f8..719ccd1e23d21 100644
--- a/pkgs/tools/filesystems/dwarfs/default.nix
+++ b/pkgs/tools/filesystems/dwarfs/default.nix
@@ -9,8 +9,10 @@
   double-conversion,
   fmt,
   fuse3,
+  flac,
   glog,
   gtest,
+  howard-hinnant-date,
   jemalloc,
   libarchive,
   libevent,
@@ -18,60 +20,59 @@
   lz4,
   openssl,
   pkg-config,
+  python3,
+  range-v3,
   ronn,
   xxHash,
   utf8cpp,
   zstd,
 }:
-let
+stdenv.mkDerivation (finalAttrs: {
   pname = "dwarfs";
-  version = "0.9.9";
-in
-stdenv.mkDerivation {
-  inherit pname version;
+  version = "0.9.10";
   src = fetchFromGitHub {
     owner = "mhx";
     repo = "dwarfs";
-    rev = "refs/tags/v${version}";
+    rev = "refs/tags/v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-Zzm2SaFR31TBBMDfgJulVbqsJBh1He2wBFzHRC/c5vg=";
+    hash = "sha256-uyYNs+fDV5BfQwfX9Wi3BwiKjSDQHAKRJ1+UvS/fHoE=";
   };
 
-  patches = [
-    (
-      with lib.versions;
-      substituteAll {
-        src = ./version_info.patch;
+  cmakeFlags = [
+    "-DNIXPKGS_DWARFS_VERSION_OVERRIDE=v${finalAttrs.version}" # see https://github.com/mhx/dwarfs/issues/155
 
-        versionFull = version; # displayed as version number (with v prepended)
-        versionMajor = major version;
-        versionMinor = minor version;
-        versionPatch = patch version;
-      }
-    )
-  ];
+    # Needs to be set so `dwarfs` does not try to download `gtest`; it is not
+    # a submodule, see: https://github.com/mhx/dwarfs/issues/188#issuecomment-1907657083
+    "-DPREFER_SYSTEM_GTEST=ON"
 
-  cmakeFlags = [
+    # These should no longer be necessary with a version > 0.9.10:
+    # * https://github.com/mhx/dwarfs/commit/593b22a8a90eb66c0898ae06f097f32f4bf3dfd4
+    # * https://github.com/mhx/dwarfs/commit/6e9608b2b01be13e41e6b728aae537c14c00ad82
+    # * https://github.com/mhx/dwarfs/commit/ce4bee1ad63c666da57d2cdae9fd65214d8dab7f
+    "-DPREFER_SYSTEM_LIBFMT=ON"
     "-DPREFER_SYSTEM_ZSTD=ON"
     "-DPREFER_SYSTEM_XXHASH=ON"
-    "-DPREFER_SYSTEM_GTEST=ON"
-    "-DPREFER_SYSTEM_LIBFMT=ON"
 
     # may be added under an option in the future
     # "-DWITH_LEGACY_FUSE=ON"
+
     "-DWITH_TESTS=ON"
   ];
 
   nativeBuildInputs = [
     bison
     cmake
+    howard-hinnant-date # uses only the header-only parts
     pkg-config
+    range-v3 # header-only library
     ronn
+    (python3.withPackages (ps: [ ps.mistletoe ])) # for man pages
   ];
 
   buildInputs = [
     # dwarfs
     boost
+    flac # optional; allows automatic audio compression
     fmt
     fuse3
     jemalloc
@@ -90,17 +91,32 @@ stdenv.mkDerivation {
   ];
 
   doCheck = true;
-  nativeCheckInputs = [ gtest ];
+  nativeCheckInputs = [
+    # https://github.com/mhx/dwarfs/issues/188#issuecomment-1907574427
+    # `dwarfs` sets C++20 as the minimum, see
+    #     https://github.com/mhx/dwarfs/blob/2cb5542a5d4274225c5933370adcf00035f6c974/CMakeLists.txt#L129
+    # Thus the `gtest` headers, when included,
+    # refer to symbols that only exist in `.so` files compiled with that version.
+    (gtest.override { cxx_standard = "20"; })
+  ];
   # these fail inside of the sandbox due to missing access
   # to the FUSE device
-  GTEST_FILTER = "-dwarfs/tools_test.end_to_end/*:dwarfs/tools_test.mutating_ops/*";
+  GTEST_FILTER =
+    let
+      disabledTests = [
+        "dwarfs/tools_test.end_to_end/*"
+        "dwarfs/tools_test.mutating_and_error_ops/*"
+        "dwarfs/tools_test.categorize/*"
+      ];
+    in
+      "-${lib.concatStringsSep ":" disabledTests}";
 
   meta = {
     description = "Fast high compression read-only file system";
     homepage = "https://github.com/mhx/dwarfs";
-    changelog = "https://github.com/mhx/dwarfs/blob/v${version}/CHANGES.md";
+    changelog = "https://github.com/mhx/dwarfs/blob/v${finalAttrs.version}/CHANGES.md";
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.luftmensch-luftmensch ];
     platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/pkgs/tools/filesystems/dwarfs/version_info.patch b/pkgs/tools/filesystems/dwarfs/version_info.patch
deleted file mode 100644
index 8d62bd8d22957..0000000000000
--- a/pkgs/tools/filesystems/dwarfs/version_info.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff --git a/cmake/package_version.cmake b/cmake/package_version.cmake
-new file mode 100644
-index 0000000..d4fdb9c
---- /dev/null
-+++ b/cmake/package_version.cmake
-@@ -0,0 +1,12 @@
-+# autogenerated code, do not modify
-+
-+set(PRJ_GIT_REV "v@versionFull@")
-+set(PRJ_GIT_DESC "v@versionFull@")
-+set(PRJ_GIT_BRANCH "HEAD")
-+set(PRJ_GIT_ID "v@versionFull@")
-+set(PRJ_GIT_RELEASE_TAG "v@versionFull@")
-+set(PRJ_VERSION_FULL "@versionFull@")
-+set(PRJ_VERSION_SHORT "@versionFull@")
-+set(PRJ_VERSION_MAJOR "@versionMajor@")
-+set(PRJ_VERSION_MINOR "@versionMinor@")
-+set(PRJ_VERSION_PATCH "@versionPatch@")
-diff --git a/include/dwarfs/version.h b/include/dwarfs/version.h
-new file mode 100644
-index 0000000..54cf86a
---- /dev/null
-+++ b/include/dwarfs/version.h
-@@ -0,0 +1,16 @@
-+// autogenerated code, do not modify
-+
-+#pragma once
-+
-+#define PRJ_VERSION_MAJOR @versionMajor@
-+#define PRJ_VERSION_MINOR @versionMinor@
-+#define PRJ_VERSION_PATCH @versionPatch@
-+
-+namespace dwarfs {
-+
-+extern char const* PRJ_GIT_REV;
-+extern char const* PRJ_GIT_DESC;
-+extern char const* PRJ_GIT_BRANCH;
-+extern char const* PRJ_GIT_ID;
-+
-+} // namespace dwarfs
-diff --git a/src/dwarfs/version.cpp b/src/dwarfs/version.cpp
-new file mode 100644
-index 0000000..5759120
---- /dev/null
-+++ b/src/dwarfs/version.cpp
-@@ -0,0 +1,12 @@
-+// autogenerated code, do not modify
-+
-+#include "dwarfs/version.h"
-+
-+namespace dwarfs {
-+
-+char const* PRJ_GIT_REV = "@versionFull@";
-+char const* PRJ_GIT_DESC = "v@versionFull@";
-+char const* PRJ_GIT_BRANCH = "HEAD";
-+char const* PRJ_GIT_ID = "v@versionFull@";
-+
-+} // namespace dwarfs
diff --git a/pkgs/tools/misc/immich-cli/default.nix b/pkgs/tools/misc/immich-cli/default.nix
index 82d8e96ec798a..21d0600d92b13 100644
--- a/pkgs/tools/misc/immich-cli/default.nix
+++ b/pkgs/tools/misc/immich-cli/default.nix
@@ -1,31 +1,70 @@
 { lib
 , buildNpmPackage
 , fetchFromGitHub
+, testers
 }:
 
-buildNpmPackage {
-  pname = "immich-cli";
-  version = "2.0.6";
-
+let
+  version = "2.2.4";
   src = fetchFromGitHub {
     owner = "immich-app";
     repo = "immich";
     # Using a fixed commit until upstream has release tags for cli.
-    rev = "014adf175ad50a61f92804666940e267ab329064";
-    hash = "sha256-MK3Watq5/Zp+rymCIfWxAXSgBPDE13g23uDnW7A5x9g=";
+    rev = "8c2195c8205156f6e3168cc52fa34db334568ea9";
+    hash = "sha256-Tseu6aIrYU4Af/jWDi2wDtP77n/aogp7Qkn9mosMaes=";
   };
-
-  npmDepsHash = "sha256-ssxOXKE1t/bSb972w/cBeK61IrqPLmx9ODMn6D+2Ezw=";
-
-  postPatch = ''
-    cd cli
-  '';
-
-  meta = {
+  meta' = {
     description = "CLI utilities for Immich to help upload images and videos";
     homepage = "https://github.com/immich-app/immich";
     license = lib.licenses.mit;
-    mainProgram = "immich";
     maintainers = with lib.maintainers; [ felschr pineapplehunter ];
+    mainProgram = "immich";
+  };
+
+  open-api-typescript-sdk = buildNpmPackage {
+    pname = "immich-cli-openapi-typescript-sdk";
+    inherit src version;
+
+    npmDepsHash = "sha256-WhNdFaFBwb6ehEQgbNJGdzPb3FdJk1Nefi8DcJfY9Wc=";
+
+    postPatch = ''
+      cd open-api/typescript-sdk
+    '';
+    meta = {
+      # using inherit for `builtin.unsafeGetAttrPos` to work correctly
+      inherit (meta')
+        description
+        homepage
+        license
+        maintainers;
+    };
+  };
+
+  immich-cli = buildNpmPackage {
+    pname = "immich-cli";
+    inherit src version;
+
+    npmDepsHash = "sha256-aSTN+I8B/aLT2ItGoyZTlbdn1VCK0ZmOb1QG7ZQuz+Q=";
+
+    postPatch = ''
+      ln -sv ${open-api-typescript-sdk}/lib/node_modules/@immich/sdk/{build,node_modules} open-api/typescript-sdk
+      cd cli
+    '';
+
+    passthru = {
+      inherit open-api-typescript-sdk;
+      tests.version = testers.testVersion { package = immich-cli; };
+    };
+
+    meta = {
+      # using inherit for `builtin.unsafeGetAttrPos` to work correctly
+      inherit (meta')
+        description
+        homepage
+        license
+        maintainers
+        mainProgram;
+    };
   };
-}
+in
+immich-cli
diff --git a/pkgs/tools/misc/panoply/default.nix b/pkgs/tools/misc/panoply/default.nix
index d2a04e3c38f7e..2aef5a0788a8d 100644
--- a/pkgs/tools/misc/panoply/default.nix
+++ b/pkgs/tools/misc/panoply/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "panoply";
-  version = "5.4.1";
+  version = "5.4.3";
 
   src = fetchurl {
     url = "https://www.giss.nasa.gov/tools/panoply/download/PanoplyJ-${version}.tgz";
-    sha256 = "sha256-C/9kFWDpv4bzqpsUcGpZn7P+fqU6teU39HibYhhva3o=";
+    sha256 = "sha256-xey1Og0TEMgCc9Me/np7BGnUNYTz98gMFzLm2IcQHtw=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/misc/wyrd/default.nix b/pkgs/tools/misc/wyrd/default.nix
index 8f5ad8268e693..18647cae1a232 100644
--- a/pkgs/tools/misc/wyrd/default.nix
+++ b/pkgs/tools/misc/wyrd/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     downloadPage = "http://pessimization.com/software/wyrd/";
     license = licenses.gpl2Only;
     maintainers = [ maintainers.prikhi ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
     mainProgram = "wyrd";
   };
 }
diff --git a/pkgs/tools/networking/containerlab/default.nix b/pkgs/tools/networking/containerlab/default.nix
index aeaa2d044cb60..07cdb09a4955d 100644
--- a/pkgs/tools/networking/containerlab/default.nix
+++ b/pkgs/tools/networking/containerlab/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "containerlab";
-  version = "0.55.0";
+  version = "0.55.1";
 
   src = fetchFromGitHub {
     owner = "srl-labs";
     repo = "containerlab";
     rev = "v${version}";
-    hash = "sha256-g+42nvNR1sWrkeU/oOajtmqeDVjRiwp7i+hrZU+FE00=";
+    hash = "sha256-Dk1so6CXAbnfyWfqHne/mMc8LYS3JqXj6XM53fQKANk=";
   };
 
   nativeBuildInputs = [ installShellFiles ];
diff --git a/pkgs/tools/networking/haproxy/default.nix b/pkgs/tools/networking/haproxy/default.nix
index 225c4b1c8cd9e..4cef8e04ea2d3 100644
--- a/pkgs/tools/networking/haproxy/default.nix
+++ b/pkgs/tools/networking/haproxy/default.nix
@@ -14,7 +14,6 @@
 , openssl
 , lua5_4
 , pcre2
-, systemd
 }:
 
 assert lib.assertOneOf "sslLibrary" sslLibrary [ "quictls" "openssl" "libressl" "wolfssl" ];
@@ -29,17 +28,16 @@ let
   sslPkg = sslPkgs.${sslLibrary};
 in stdenv.mkDerivation (finalAttrs: {
   pname = "haproxy";
-  version = "2.9.7";
+  version = "3.0.2";
 
   src = fetchurl {
     url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz";
-    hash = "sha256-0aClbwCKjS8Ae8DDffaylSUg0fTd4zuNOAJxDlFYwTE=";
+    hash = "sha256-lnLuQ7EJ8ZNWw11yaHsiLc+CuHk2DG6CZ3OXN2z13DY=";
   };
 
   buildInputs = [ sslPkg zlib libxcrypt ]
     ++ lib.optional useLua lua5_4
-    ++ lib.optional usePcre pcre2
-    ++ lib.optional stdenv.isLinux systemd;
+    ++ lib.optional usePcre pcre2;
 
   # TODO: make it work on bsd as well
   makeFlags = [
diff --git a/pkgs/tools/networking/netcat/default.nix b/pkgs/tools/networking/netcat/default.nix
index 7d7806f1997e2..8271fe9d27a52 100644
--- a/pkgs/tools/networking/netcat/default.nix
+++ b/pkgs/tools/networking/netcat/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     mainProgram = "netcat";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    maintainers = with lib.maintainers; [ RossComputerGuy ];
   };
 }
diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix
index 677dcf3aa1996..87077b42d96e4 100644
--- a/pkgs/tools/package-management/nix/default.nix
+++ b/pkgs/tools/package-management/nix/default.nix
@@ -147,8 +147,8 @@ in lib.makeExtensible (self: ({
   };
 
   nix_2_18 = common {
-    version = "2.18.2";
-    hash = "sha256-8gNJlBlv2bnffRg0CejiBXc6U/S6YeCLAdHrYvTPyoY=";
+    version = "2.18.3";
+    hash = "sha256-430V4oN1Pid0h3J1yucrik6lbDh5D+pHI455bzLPEDY=";
     self_attribute_name = "nix_2_18";
   };
 
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index db1973e884284..1755693169c25 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -1391,6 +1391,7 @@ mapAliases ({
   v4l_utils = throw "'v4l_utils' has been renamed to/replaced by 'v4l-utils'"; # Converted to throw 2023-09-10
   vamp = { vampSDK = vamp-plugin-sdk; }; # Added 2020-03-26
   vaapiIntel = intel-vaapi-driver; # Added 2023-05-31
+  vaapiVdpau = libva-vdpau-driver; # Added 2024-06-05
   vaultwarden-vault = vaultwarden.webvault; # Added 2022-12-13
   vdirsyncerStable = vdirsyncer; # Added 2020-11-08, see https://github.com/NixOS/nixpkgs/issues/103026#issuecomment-723428168
   ventoy-bin = ventoy; # Added 2023-04-12
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a4899646b82cb..2c8709cb51ae2 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -740,14 +740,6 @@ with pkgs;
 
   protoc-gen-connect-go = callPackage ../development/tools/protoc-gen-connect-go { };
 
-  protoc-gen-prost = callPackage ../development/tools/protoc-gen-prost { };
-
-  protoc-gen-prost-crate = callPackage ../development/tools/protoc-gen-prost-crate { };
-
-  protoc-gen-prost-serde = callPackage ../development/tools/protoc-gen-prost-serde { };
-
-  protoc-gen-tonic = callPackage ../development/tools/protoc-gen-tonic { };
-
   protoc-gen-twirp = callPackage ../development/tools/protoc-gen-twirp { };
 
   protoc-gen-twirp_php = callPackage ../development/tools/protoc-gen-twirp_php { };
@@ -4070,10 +4062,12 @@ with pkgs;
 
   androidenv = callPackage ../development/mobile/androidenv { };
 
-  androidndkPkgs = androidndkPkgs_21;
+  androidndkPkgs = androidndkPkgs_26;
   androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21";
   androidndkPkgs_23b = (callPackage ../development/androidndk-pkgs {})."23b";
   androidndkPkgs_24 = (callPackage ../development/androidndk-pkgs {})."24";
+  androidndkPkgs_25 = (callPackage ../development/androidndk-pkgs {})."25";
+  androidndkPkgs_26 = (callPackage ../development/androidndk-pkgs {})."26";
 
   androidsdk = androidenv.androidPkgs.androidsdk;
 
@@ -20421,8 +20415,8 @@ with pkgs;
       intel-media-driver
       intel-vaapi-driver
       mesa
+      libva-vdpau-driver
       libvdpau-va-gl
-      vaapiVdpau
       glxinfo
       vdpauinfo;
   };
@@ -24611,7 +24605,7 @@ with pkgs;
 
   vaapi-intel-hybrid = callPackage ../development/libraries/vaapi-intel-hybrid { };
 
-  vaapiVdpau = callPackage ../development/libraries/vaapi-vdpau { };
+  libva-vdpau-driver = callPackage ../development/libraries/libva-vdpau-driver { };
 
   vale = callPackage ../tools/text/vale { };
 
@@ -26529,8 +26523,6 @@ with pkgs;
 
   virtualenv-clone = with python3Packages; toPythonApplication virtualenv-clone;
 
-  vmagent = callPackage ../servers/monitoring/vmagent { };
-
   vsftpd = callPackage ../servers/ftp/vsftpd { };
 
   wallabag = callPackage ../servers/web-apps/wallabag { };
@@ -31972,11 +31964,9 @@ with pkgs;
 
   klayout = libsForQt5.callPackage ../applications/misc/klayout { };
 
-  klee = callPackage ../applications/science/logic/klee (with llvmPackages_13; {
-    clang = clang;
-    llvm = llvm;
-    stdenv = stdenv;
-  });
+  klee = callPackage ../applications/science/logic/klee {
+    llvmPackages = llvmPackages_13;
+  };
 
   kmetronome = qt6Packages.callPackage ../applications/audio/kmetronome { };
 
@@ -35225,9 +35215,7 @@ with pkgs;
 
   webssh = with python3Packages; toPythonApplication webssh;
 
-  webtorrent_desktop = callPackage ../applications/video/webtorrent_desktop {
-    electron = electron_27;
-  };
+  webtorrent_desktop = callPackage ../applications/video/webtorrent_desktop { };
 
   wrapWeechat = callPackage ../applications/networking/irc/weechat/wrapper.nix { };
 
diff --git a/pkgs/top-level/perl-packages.nix b/pkgs/top-level/perl-packages.nix
index 5071fff62745d..45e3ec186596b 100644
--- a/pkgs/top-level/perl-packages.nix
+++ b/pkgs/top-level/perl-packages.nix
@@ -6966,6 +6966,22 @@ with self; {
     };
   };
 
+  DevelCover = buildPerlPackage {
+    pname = "Devel-Cover";
+    version = "1.44";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/P/PJ/PJCJ/Devel-Cover-1.44.tar.gz";
+      hash = "sha256-9AwVQ5kuXWWm94AD1GLVms15rm0w04BHscadmZ0rH9g=";
+    };
+    propagatedBuildInputs = [ HTMLParser ];
+    doCheck = false;
+    meta = {
+      description = "Code coverage metrics for Perl";
+      homepage = "http://www.pjcj.net/perl.html";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   DevelDeprecationsEnvironmental = buildPerlPackage {
     pname = "Devel-Deprecations-Environmental";
     version = "1.101";
@@ -15650,6 +15666,36 @@ with self; {
     };
   };
 
+  MemoryProcess = buildPerlPackage {
+    pname = "Memory-Process";
+    version = "0.06";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/S/SK/SKIM/Memory-Process-0.06.tar.gz";
+      hash = "sha256-NYFEiP/SnJdiFiXqOz1wCvv6YO0FW9dZ1OWNnI/UTk4=";
+    };
+    buildInputs = [ CaptureTiny TestNoWarnings ];
+    propagatedBuildInputs = [ MemoryUsage Readonly ];
+    meta = {
+      description = "Memory process reporting";
+      homepage = "https://github.com/michal-josef-spacek/Memory-Process";
+      license = lib.licenses.bsd3;
+      platforms = lib.platforms.linux;
+    };
+  };
+
+  MemoryUsage = buildPerlPackage {
+    pname = "Memory-Usage";
+    version = "0.201";
+    src = fetchurl {
+      url = "mirror://cpan/authors/id/D/DO/DONEILL/Memory-Usage-0.201.tar.gz";
+      hash = "sha256-jyr60h5Ap0joHIwPPkDKcYwU3bn7LYgL+9KK6RPOU0k=";
+    };
+    meta = {
+      description = "Tools to determine actual memory usage";
+      license = with lib.licenses; [ artistic1 gpl1Plus ];
+    };
+  };
+
   Menlo = buildPerlPackage {
     pname = "Menlo";
     version = "1.9019";
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index a798ad23a2a52..3067e18baed06 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3792,7 +3792,7 @@ self: super: with self; {
 
   eggdeps = callPackage ../development/python-modules/eggdeps { };
 
-  eigenpy = toPythonModule (callPackage ../development/python-modules/eigenpy { });
+  eigenpy = callPackage ../development/python-modules/eigenpy { };
 
   einops = callPackage ../development/python-modules/einops { };
 
@@ -5372,6 +5372,8 @@ self: super: with self; {
 
   hatch-nodejs-version = callPackage ../development/python-modules/hatch-nodejs-version { };
 
+  hatch-regex-commit = callPackage ../development/python-modules/hatch-regex-commit { };
+
   hatch-requirements-txt = callPackage ../development/python-modules/hatch-requirements-txt { };
 
   haversine = callPackage ../development/python-modules/haversine { };
@@ -10094,6 +10096,8 @@ self: super: with self; {
 
   pylddwrap = callPackage ../development/python-modules/pylddwrap { };
 
+  pyloadapi = callPackage ../development/python-modules/pyloadapi { };
+
   pyngo = callPackage ../development/python-modules/pyngo { };
 
   pyngrok = callPackage ../development/python-modules/pyngrok { };
@@ -13399,6 +13403,8 @@ self: super: with self; {
 
   rfc7464 = callPackage ../development/python-modules/rfc7464 { };
 
+  rfc8785 = callPackage ../development/python-modules/rfc8785 { };
+
   rfcat = callPackage ../development/python-modules/rfcat { };
 
   rflink = callPackage ../development/python-modules/rflink { };
diff --git a/pkgs/top-level/release-python.nix b/pkgs/top-level/release-python.nix
index 81ea4d3403a7a..bb4ead25066d0 100644
--- a/pkgs/top-level/release-python.nix
+++ b/pkgs/top-level/release-python.nix
@@ -12,12 +12,6 @@
   nixpkgsArgs ? { config = {
     allowUnfree = false;
     inHydra = true;
-    permittedInsecurePackages = [
-      # Keep evaluating home-assistant, which is transitively affected
-      # by home-assistant-chip-core consuming OpenSSL 1.1. Affects roughly
-      # 800 jobs.
-      "openssl-1.1.1w"
-    ];
   }; }
 }:
 
diff --git a/pkgs/top-level/release.nix b/pkgs/top-level/release.nix
index 04f10bb0fac13..8df22c6ced83a 100644
--- a/pkgs/top-level/release.nix
+++ b/pkgs/top-level/release.nix
@@ -29,14 +29,6 @@
 , nixpkgsArgs ? { config = {
     allowUnfree = false;
     inHydra = true;
-    permittedInsecurePackages = [
-      # *Exceptionally*, those packages will be cached with their *secure* dependents
-      # because they will reach EOL in the middle of the 23.05 release
-      # and it will be too much painful for our users to recompile them
-      # for no real reason.
-      # Remove them for 23.11.
-      "openssl-1.1.1w"
-    ];
   }; }
 
   # This flag, if set to true, will inhibit the use of `mapTestOn`