about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/cudatoolkit/flags.nix2
-rw-r--r--pkgs/development/embedded/openocd-rp2040/default.nix74
-rw-r--r--pkgs/development/interpreters/racket/default.nix8
-rw-r--r--pkgs/development/interpreters/racket/minimal.nix2
-rw-r--r--pkgs/development/libraries/gtkmm/4.x.nix2
-rw-r--r--pkgs/development/libraries/java/saxon/default.nix14
-rw-r--r--pkgs/development/libraries/libfabric/default.nix4
-rw-r--r--pkgs/development/libraries/libserdes/default.nix5
-rw-r--r--pkgs/development/libraries/libwacom/default.nix5
-rw-r--r--pkgs/development/libraries/science/math/cudnn/releases.nix14
-rw-r--r--pkgs/development/libraries/science/math/tensorrt/extension.nix12
-rw-r--r--pkgs/development/libraries/srt/default.nix23
-rw-r--r--pkgs/development/libraries/srt/no-msvc-compat-headers.patch10
-rw-r--r--pkgs/development/libraries/xdg-desktop-portal-wlr/default.nix3
-rw-r--r--pkgs/development/lua-modules/overrides.nix2
-rw-r--r--pkgs/development/misc/resholve/README.md13
-rw-r--r--pkgs/development/misc/resholve/default.nix4
-rw-r--r--pkgs/development/misc/resholve/deps.nix5
-rw-r--r--pkgs/development/misc/resholve/source.nix20
-rw-r--r--pkgs/development/misc/resholve/test.nix6
-rw-r--r--pkgs/development/node-packages/overrides.nix5
-rw-r--r--pkgs/development/ocaml-modules/tls/default.nix4
-rw-r--r--pkgs/development/python-modules/ailment/default.nix4
-rw-r--r--pkgs/development/python-modules/angr/default.nix4
-rw-r--r--pkgs/development/python-modules/archinfo/default.nix4
-rw-r--r--pkgs/development/python-modules/auditwheel/default.nix71
-rw-r--r--pkgs/development/python-modules/claripy/default.nix4
-rw-r--r--pkgs/development/python-modules/cle/default.nix6
-rw-r--r--pkgs/development/python-modules/coinmetrics-api-client/default.nix8
-rw-r--r--pkgs/development/python-modules/cvxopt/default.nix52
-rw-r--r--pkgs/development/python-modules/django-rq/default.nix4
-rw-r--r--pkgs/development/python-modules/flask-sock/default.nix51
-rw-r--r--pkgs/development/python-modules/gcodepy/default.nix34
-rw-r--r--pkgs/development/python-modules/headerparser/default.nix28
-rw-r--r--pkgs/development/python-modules/html5-parser/default.nix4
-rw-r--r--pkgs/development/python-modules/id/default.nix51
-rw-r--r--pkgs/development/python-modules/jupyterhub/default.nix1
-rw-r--r--pkgs/development/python-modules/mashumaro/default.nix49
-rw-r--r--pkgs/development/python-modules/mirakuru/default.nix4
-rw-r--r--pkgs/development/python-modules/napalm/hp-procurve.nix39
-rw-r--r--pkgs/development/python-modules/netutils/default.nix5
-rw-r--r--pkgs/development/python-modules/openusd/default.nix131
-rw-r--r--pkgs/development/python-modules/playwright/default.nix2
-rw-r--r--pkgs/development/python-modules/pyspx/default.nix47
-rw-r--r--pkgs/development/python-modules/python-mbedtls/default.nix50
-rw-r--r--pkgs/development/python-modules/pyvex/default.nix4
-rw-r--r--pkgs/development/python-modules/qdarkstyle/default.nix4
-rw-r--r--pkgs/development/python-modules/securesystemslib/default.nix96
-rw-r--r--pkgs/development/python-modules/sigstore-protobuf-specs/default.nix43
-rw-r--r--pkgs/development/python-modules/sigstore-rekor-types/default.nix41
-rw-r--r--pkgs/development/python-modules/torch/bin.nix3
-rw-r--r--pkgs/development/python-modules/torch/binary-hashes.nix98
-rw-r--r--pkgs/development/python-modules/torch/default.nix20
-rw-r--r--pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch65
-rwxr-xr-xpkgs/development/python-modules/torch/prefetch.sh12
-rw-r--r--pkgs/development/python-modules/torchaudio/bin.nix11
-rw-r--r--pkgs/development/python-modules/torchaudio/binary-hashes.nix98
-rw-r--r--pkgs/development/python-modules/torchaudio/default.nix23
-rwxr-xr-xpkgs/development/python-modules/torchaudio/prefetch.sh18
-rw-r--r--pkgs/development/python-modules/torchvision/bin.nix2
-rw-r--r--pkgs/development/python-modules/torchvision/binary-hashes.nix74
-rw-r--r--pkgs/development/python-modules/torchvision/default.nix4
-rwxr-xr-xpkgs/development/python-modules/torchvision/prefetch.sh10
-rw-r--r--pkgs/development/python-modules/tuf/default.nix61
-rw-r--r--pkgs/development/python-modules/yamllint/default.nix4
-rw-r--r--pkgs/development/skaware-packages/s6-dns/default.nix4
-rw-r--r--pkgs/development/skaware-packages/s6-networking/default.nix4
-rw-r--r--pkgs/development/skaware-packages/s6/default.nix4
-rw-r--r--pkgs/development/skaware-packages/skalibs/default.nix4
-rw-r--r--pkgs/development/skaware-packages/tipidee/default.nix4
-rw-r--r--pkgs/development/tools/cocoapods/Gemfile-beta.lock30
-rw-r--r--pkgs/development/tools/cocoapods/Gemfile.lock30
-rw-r--r--pkgs/development/tools/cocoapods/gemset-beta.nix87
-rw-r--r--pkgs/development/tools/cocoapods/gemset.nix87
-rw-r--r--pkgs/development/tools/gemstash/Gemfile.lock120
-rw-r--r--pkgs/development/tools/gemstash/gemset.nix332
-rw-r--r--pkgs/development/tools/godot/4/default.nix6
-rw-r--r--pkgs/development/tools/language-servers/millet/Cargo.lock309
-rw-r--r--pkgs/development/tools/language-servers/millet/default.nix6
-rw-r--r--pkgs/development/tools/misc/gpuvis/default.nix8
-rw-r--r--pkgs/development/tools/mysql-shell/innovation.nix4
-rw-r--r--pkgs/development/tools/rust/cargo-udeps/default.nix1
-rw-r--r--pkgs/development/web/nodejs/v21.nix4
83 files changed, 1896 insertions, 729 deletions
diff --git a/pkgs/development/compilers/cudatoolkit/flags.nix b/pkgs/development/compilers/cudatoolkit/flags.nix
index 3b88ebc708b4..be1d98e87122 100644
--- a/pkgs/development/compilers/cudatoolkit/flags.nix
+++ b/pkgs/development/compilers/cudatoolkit/flags.nix
@@ -108,7 +108,7 @@ let
 
     # archNames :: List String
     # E.g. [ "Turing" "Ampere" ]
-    archNames = lists.unique (builtins.map (cap: cudaComputeCapabilityToName.${cap}) cudaCapabilities);
+    archNames = lists.unique (builtins.map (cap: cudaComputeCapabilityToName.${cap} or (throw "missing cuda compute capability")) cudaCapabilities);
 
     # realArches :: List String
     # The real architectures are physical architectures supported by the CUDA version.
diff --git a/pkgs/development/embedded/openocd-rp2040/default.nix b/pkgs/development/embedded/openocd-rp2040/default.nix
deleted file mode 100644
index 688d83ac27e8..000000000000
--- a/pkgs/development/embedded/openocd-rp2040/default.nix
+++ /dev/null
@@ -1,74 +0,0 @@
-{ lib
-, stdenv
-, fetchgit
-, pkg-config
-, hidapi
-, libftdi1
-, libusb1
-, which
-, libtool
-, autoconf
-, automake
-, texinfo
-, git
-, libgpiod_1
-}:
-
-stdenv.mkDerivation {
-  pname = "openocd-rp2040";
-  version = "0.12.0";
-  src = fetchgit {
-    url = "https://github.com/raspberrypi/openocd";
-    rev = "4d87f6dcae77d3cbcd8ac3f7dc887adf46ffa504";
-    sha256 = "sha256-SYC0qqNx09yO/qeKDDN8dF/9d/dofJ5B1h/PofhG8Jw=";
-    fetchSubmodules = true;
-  };
-
-  nativeBuildInputs = [
-    pkg-config
-  ];
-
-  buildInputs = [
-    hidapi
-    libftdi1
-    libusb1
-    which
-    libtool
-    autoconf
-    automake
-    texinfo
-    git
-  ]
-    ++
-    # tracking issue for v2 api changes https://sourceforge.net/p/openocd/tickets/306/
-    lib.optional stdenv.isLinux libgpiod_1;
-
-  configurePhase = ''
-    SKIP_SUBMODULE=1 ./bootstrap
-    ./configure --prefix=$out
-  '';
-
-  enableParallelBuilding = true;
-
-  postInstall = lib.optionalString stdenv.isLinux ''
-    mkdir -p "$out/etc/udev/rules.d"
-    rules="$out/share/openocd/contrib/60-openocd.rules"
-    if [ ! -f "$rules" ]; then
-        echo "$rules is missing, must update the Nix file."
-        exit 1
-    fi
-    ln -s "$rules" "$out/etc/udev/rules.d/"
-  '';
-
-  meta = with lib; {
-    description = "OpenOCD fork for rp2040 microcontroller";
-    longDescription = ''
-      This is a fork of OpenOCD by Raspberry Pi,
-      which brings support to the rp2040 microcontroller.
-    '';
-    homepage = "https://github.com/raspberrypi/openocd";
-    license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ lu15w1r7h ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/development/interpreters/racket/default.nix b/pkgs/development/interpreters/racket/default.nix
index 72ed2a9d75ae..4c5efaa7d545 100644
--- a/pkgs/development/interpreters/racket/default.nix
+++ b/pkgs/development/interpreters/racket/default.nix
@@ -50,16 +50,16 @@ in
 
 stdenv.mkDerivation rec {
   pname = "racket";
-  version = "8.11"; # always change at once with ./minimal.nix
+  version = "8.11.1"; # always change at once with ./minimal.nix
 
-  src = (lib.makeOverridable ({ name, sha256 }:
+  src = (lib.makeOverridable ({ name, hash }:
     fetchurl {
       url = "https://mirror.racket-lang.org/installers/${version}/${name}-src.tgz";
-      inherit sha256;
+      inherit hash;
     }
   )) {
     name = "${pname}-${version}";
-    sha256 = "sha256-lIrXmTyTnk7n54zOvl7qN8CkbiKgYj66k3fgEolk93w=";
+    hash = "sha256-5ZqwMLkqeONYnsQFxdJfpRdojCCZAjO9aMs0Vo1lTAU=";
   };
 
   FONTCONFIG_FILE = fontsConf;
diff --git a/pkgs/development/interpreters/racket/minimal.nix b/pkgs/development/interpreters/racket/minimal.nix
index 68e3faa42935..73143f432d7f 100644
--- a/pkgs/development/interpreters/racket/minimal.nix
+++ b/pkgs/development/interpreters/racket/minimal.nix
@@ -6,7 +6,7 @@ racket.overrideAttrs (oldAttrs: rec {
   version = oldAttrs.version;
   src = oldAttrs.src.override {
     name = "${pname}-${version}";
-    sha256 = "sha256-IsWWpZi5JXZV2AlLTjFtFj7nu15jWw4Htzgs2Wew54U=";
+    hash = "sha256-H1X9bhQw9yOaESbK4+tveFWVb4EyMNGLKukwKAo588w=";
   };
 
   meta = oldAttrs.meta // {
diff --git a/pkgs/development/libraries/gtkmm/4.x.nix b/pkgs/development/libraries/gtkmm/4.x.nix
index c2c1f37dbfb0..21bfdd858c29 100644
--- a/pkgs/development/libraries/gtkmm/4.x.nix
+++ b/pkgs/development/libraries/gtkmm/4.x.nix
@@ -6,6 +6,7 @@
 , ninja
 , python3
 , gtk4
+, glib
 , glibmm_2_68
 , cairomm_1_16
 , pangomm_2_48
@@ -31,6 +32,7 @@ stdenv.mkDerivation rec {
     meson
     ninja
     python3
+    glib # glib-compile-resources
   ];
 
   buildInputs = [
diff --git a/pkgs/development/libraries/java/saxon/default.nix b/pkgs/development/libraries/java/saxon/default.nix
index 4ff3e69c34ce..17dfd7385e12 100644
--- a/pkgs/development/libraries/java/saxon/default.nix
+++ b/pkgs/development/libraries/java/saxon/default.nix
@@ -72,7 +72,7 @@ in {
     description = "Complete and conformant processor of XSLT 2.0, XQuery 1.0, and XPath 2.0";
   };
 
-  saxon-he = common {
+  saxon_9-he = common {
     pname = "saxon-he";
     version = "9.9.0.1";
     prog = "saxon-he";
@@ -83,4 +83,16 @@ in {
     };
     description = "Processor for XSLT 3.0, XPath 2.0 and 3.1, and XQuery 3.1";
   };
+
+  saxon-he = common {
+    pname = "saxon-he";
+    version = "11.5";
+    prog = "saxon-he";
+    jar = "saxon-he-11.5";
+    src = fetchurl {
+      url = "https://github.com/Saxonica/Saxon-HE/raw/a6d11dec3853326b661e9aff283e30b43c02e163/11/Java/SaxonHE11-5J.zip";
+      sha256 = "2Nwh6dG3YAjc/OTr8DMOfbnRvdCWB0YsVP3ZLRbM9U0=";
+    };
+    description = "Processor for XSLT 3.0, XPath 2.0 and 3.1, and XQuery 3.1";
+  };
 }
diff --git a/pkgs/development/libraries/libfabric/default.nix b/pkgs/development/libraries/libfabric/default.nix
index ab2da122da74..34089dbdcaa8 100644
--- a/pkgs/development/libraries/libfabric/default.nix
+++ b/pkgs/development/libraries/libfabric/default.nix
@@ -12,7 +12,7 @@
 
 stdenv.mkDerivation rec {
   pname = "libfabric";
-  version = "1.19.0";
+  version = "1.20.0";
 
   enableParallelBuilding = true;
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
     owner = "ofiwg";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-7VOhdZOPBe1qh8OK8OTNKA5I4A5whl6aOubAzsUDSRw=";
+    sha256 = "sha256-woRkm/5kLIv1ypSlCosP/ewYgnSXQJYzkuOqdHvEH8I=";
   };
 
   outputs = [ "out" "dev" "man" ];
diff --git a/pkgs/development/libraries/libserdes/default.nix b/pkgs/development/libraries/libserdes/default.nix
index 8b61669d1c6d..a3cec3788b58 100644
--- a/pkgs/development/libraries/libserdes/default.nix
+++ b/pkgs/development/libraries/libserdes/default.nix
@@ -39,6 +39,11 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     patchShebangs configure lds-gen.pl
+  '' + lib.optionalString (stdenv.cc.libcxx != null) ''
+    # fix for https://github.com/NixOS/nixpkgs/issues/166205
+    # llvm12+ isn't adding libc++abi
+    substituteInPlace src-cpp/Makefile \
+      --replace "LIBS += -lstdc++" "LIBS += -lc++ -l${stdenv.cc.libcxx.cxxabi.libName}"
   '';
 
   # Has a configure script but it’s not Autoconf so steal some bits from multiple-outputs.sh:
diff --git a/pkgs/development/libraries/libwacom/default.nix b/pkgs/development/libraries/libwacom/default.nix
index 254769349b15..2fbb29347d42 100644
--- a/pkgs/development/libraries/libwacom/default.nix
+++ b/pkgs/development/libraries/libwacom/default.nix
@@ -41,7 +41,10 @@ stdenv.mkDerivation rec {
     libgudev
   ];
 
-  doCheck = stdenv.hostPlatform == stdenv.buildPlatform && lib.meta.availableOn stdenv.hostPlatform valgrind;
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform
+            && lib.meta.availableOn stdenv.hostPlatform valgrind
+            && !stdenv.hostPlatform.isPower  # one test times out
+  ;
 
   mesonFlags = [
     "-Dtests=${if doCheck then "enabled" else "disabled"}"
diff --git a/pkgs/development/libraries/science/math/cudnn/releases.nix b/pkgs/development/libraries/science/math/cudnn/releases.nix
index b82dd78178c0..1cca4d9d015d 100644
--- a/pkgs/development/libraries/science/math/cudnn/releases.nix
+++ b/pkgs/development/libraries/science/math/cudnn/releases.nix
@@ -169,17 +169,17 @@
     hash = "sha256-edd6dpx+cXWrx7XC7VxJQUjAYYqGQThyLIh/lcYjd3w=";
   }
   {
-    version = "8.9.1.23";
+    version = "8.9.6.50";
     minCudaVersion = "11.0";
     maxCudaVersion = "11.8";
-    url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.1.23_cuda11-archive.tar.xz";
-    hash = "sha256-ptmIcmfihZDJ25XOZcvpamaN8DUjOLfTN+BTLe0zSFw=";
+    url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.6.50_cuda11-archive.tar.xz";
+    hash = "sha256-oOLvVemfTNZH99HaqlqkUE/6M1ujAYbVwyiPL0ffBX4=";
   }
   {
-    version = "8.9.1.23";
+    version = "8.9.6.50";
     minCudaVersion = "12.0";
-    maxCudaVersion = "12.1";
-    url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.1.23_cuda12-archive.tar.xz";
-    hash = "sha256-NRY8XFQr4MURc4sn4lI1GTy+7cXg4AbkSxzerxki6D4=";
+    maxCudaVersion = "12.2";
+    url = "https://developer.download.nvidia.com/compute/cudnn/redist/cudnn/linux-x86_64/cudnn-linux-x86_64-8.9.6.50_cuda12-archive.tar.xz";
+    hash = "sha256-FyIlnblSZbs4E0OKWhxuzZed6JrkU2YDkEBC4STTAtU=";
   }
 ]
diff --git a/pkgs/development/libraries/science/math/tensorrt/extension.nix b/pkgs/development/libraries/science/math/tensorrt/extension.nix
index c6596dbaacde..b4018c6cc284 100644
--- a/pkgs/development/libraries/science/math/tensorrt/extension.nix
+++ b/pkgs/development/libraries/science/math/tensorrt/extension.nix
@@ -38,13 +38,13 @@ final: prev: let
     + ".tar.gz";
 
   tensorRTVersions = {
-    "8.6.0" = [
+    "8.6.1" = [
       rec {
-        fileVersionCuda = "11.8";
-        fullVersion = "8.6.0.12";
-        sha256 = "sha256-wXMqEJPFerefoLaH8GG+Np5EnJwXeStmDzZj7Nj6e2M=";
+        fileVersionCuda = "12.0";
+        fullVersion = "8.6.1.6";
+        sha256 = "sha256-D4FXpfxTKZQ7M4uJNZE3M1CvqQyoEjnNrddYDNHrolQ=";
         tarball = tarballURL { inherit fileVersionCuda fullVersion; };
-        supportedCudaVersions = [ "11.0" "11.1" "11.2" "11.3" "11.4" "11.5" "11.6" "11.7" "11.8" ];
+        supportedCudaVersions = [ "12.0" "12.1" ];
       }
     ];
     "8.5.3" = [
@@ -133,6 +133,8 @@ final: prev: let
     "11.6" = "8.4.0";
     "11.7" = "8.5.3";
     "11.8" = "8.5.3";
+    "12.0" = "8.6.1";
+    "12.1" = "8.6.1";
   }.${cudaVersion} or "8.4.0";
 
 in tensorRTPackages
diff --git a/pkgs/development/libraries/srt/default.nix b/pkgs/development/libraries/srt/default.nix
index 73bf5c25ae54..d25aab35da22 100644
--- a/pkgs/development/libraries/srt/default.nix
+++ b/pkgs/development/libraries/srt/default.nix
@@ -1,4 +1,9 @@
-{ lib, stdenv, fetchFromGitHub, cmake, openssl
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, openssl
+, windows
 }:
 
 stdenv.mkDerivation rec {
@@ -14,7 +19,15 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ cmake ];
 
-  buildInputs = [ openssl ];
+  buildInputs = [
+    openssl
+  ] ++ lib.optionals stdenv.hostPlatform.isMinGW [
+    windows.mingw_w64_pthreads
+  ];
+
+  patches = lib.optionals stdenv.hostPlatform.isMinGW [
+    ./no-msvc-compat-headers.patch
+  ];
 
   cmakeFlags = [
     # the cmake package does not handle absolute CMAKE_INSTALL_INCLUDEDIR correctly
@@ -29,9 +42,9 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Secure, Reliable, Transport";
-    homepage    = "https://github.com/Haivision/srt";
-    license     = licenses.mpl20;
+    homepage = "https://github.com/Haivision/srt";
+    license = licenses.mpl20;
     maintainers = with maintainers; [ nh2 ];
-    platforms   = platforms.all;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/libraries/srt/no-msvc-compat-headers.patch b/pkgs/development/libraries/srt/no-msvc-compat-headers.patch
new file mode 100644
index 000000000000..ffededc7d54e
--- /dev/null
+++ b/pkgs/development/libraries/srt/no-msvc-compat-headers.patch
@@ -0,0 +1,10 @@
+--- srt-1.3.2/common/filelist_win32.maf.orig	2018-06-15 21:44:11.000000000 +0200
++++ srt-1.3.2/common/filelist_win32.maf	2018-09-25 20:26:36.903688700 +0200
+@@ -4,7 +4,6 @@
+ #
+ # These are included by platform_sys.h header contained in ../srtcore/filelist.maf
+ #
+-win/unistd.h
+ 
+ SOURCES
+ win_time.cpp
diff --git a/pkgs/development/libraries/xdg-desktop-portal-wlr/default.nix b/pkgs/development/libraries/xdg-desktop-portal-wlr/default.nix
index ab9e00fe389a..8f5d5a3c0122 100644
--- a/pkgs/development/libraries/xdg-desktop-portal-wlr/default.nix
+++ b/pkgs/development/libraries/xdg-desktop-portal-wlr/default.nix
@@ -1,5 +1,6 @@
 { lib
 , stdenv
+, bash
 , fetchFromGitHub
 , makeWrapper
 , meson
@@ -39,7 +40,7 @@ stdenv.mkDerivation rec {
   ];
 
   postInstall = ''
-    wrapProgram $out/libexec/xdg-desktop-portal-wlr --prefix PATH ":" ${lib.makeBinPath [ grim slurp ]}
+    wrapProgram $out/libexec/xdg-desktop-portal-wlr --prefix PATH ":" ${lib.makeBinPath [ bash grim slurp ]}
   '';
 
   meta = with lib; {
diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix
index e62b32ce6b60..d6b95eb6593d 100644
--- a/pkgs/development/lua-modules/overrides.nix
+++ b/pkgs/development/lua-modules/overrides.nix
@@ -501,7 +501,7 @@ with prev;
 
     postPatch = ''
       substituteInPlace magick/wand/lib.lua \
-        --replace @nix_wand@ ${imagemagick}/lib/libMagickWand-7.Q16HDRI.so
+        --replace @nix_wand@ ${imagemagick}/lib/libMagickWand-7.Q16HDRI${stdenv.hostPlatform.extensions.sharedLibrary}
     '';
 
     # Requires ffi
diff --git a/pkgs/development/misc/resholve/README.md b/pkgs/development/misc/resholve/README.md
index 082a7fe757a4..439e4ea8188d 100644
--- a/pkgs/development/misc/resholve/README.md
+++ b/pkgs/development/misc/resholve/README.md
@@ -52,13 +52,13 @@ Here's a simple example of how `resholve.mkDerivation` is already used in nixpkg
 
 resholve.mkDerivation rec {
   pname = "dgoss";
-  version = "0.3.18";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
-    owner = "aelsabbahy";
+    owner = "goss-org";
     repo = "goss";
-    rev = "v${version}";
-    sha256 = "01ssc7rnnwpyhjv96qy8drsskghbfpyxpsahk8s62lh8pxygynhv";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-dpMTUBMEG5tDi7E6ZRg1KHqIj5qDlvwfwJEgq/5z7RE=";
   };
 
   dontConfigure = true;
@@ -81,11 +81,12 @@ resholve.mkDerivation rec {
   };
 
   meta = with lib; {
-    homepage = "https://github.com/aelsabbahy/goss/blob/v${version}/extras/dgoss/README.md";
+    homepage = "https://github.com/goss-org/goss/blob/v${version}/extras/dgoss/README.md";
+    changelog = "https://github.com/goss-org/goss/releases/tag/v${version}";
     description = "Convenience wrapper around goss that aims to bring the simplicity of goss to docker containers";
     license = licenses.asl20;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ hyzual ];
+    maintainers = with maintainers; [ hyzual anthonyroussel ];
   };
 }
 ```
diff --git a/pkgs/development/misc/resholve/default.nix b/pkgs/development/misc/resholve/default.nix
index 74f45f8ed3cc..8499ba7553da 100644
--- a/pkgs/development/misc/resholve/default.nix
+++ b/pkgs/development/misc/resholve/default.nix
@@ -36,14 +36,14 @@ rec {
   # not exposed in all-packages
   resholveBuildTimeOnly = removeKnownVulnerabilities resholve;
   # resholve itself
-  resholve = callPackage ./resholve.nix {
+  resholve = (callPackage ./resholve.nix {
     inherit (source) rSrc version;
     inherit (deps.oil) oildev;
     inherit (deps) configargparse;
     inherit resholve-utils;
     # used only in tests
     resholve = resholveBuildTimeOnly;
-  };
+  });
   # funcs to validate and phrase invocations of resholve
   # and use those invocations to build packages
   resholve-utils = callPackage ./resholve-utils.nix {
diff --git a/pkgs/development/misc/resholve/deps.nix b/pkgs/development/misc/resholve/deps.nix
index 80ffa4aa42ff..3ec2f2dcb83b 100644
--- a/pkgs/development/misc/resholve/deps.nix
+++ b/pkgs/development/misc/resholve/deps.nix
@@ -10,14 +10,9 @@
   Notes on specific dependencies:
   - if/when python2.7 is removed from nixpkgs, this may need to figure
   out how to build oil's vendored python2
-  - I'm not sure if glibcLocales is worth the addition here. It's to fix
-  a libc test oil runs. My oil fork just disabled the libc tests, but
-  I haven't quite decided if that's the right long-term call, so I
-  didn't add a patch for it here yet.
 */
 
 rec {
-  # binlore = callPackage ./binlore.nix { };
   oil = callPackage ./oildev.nix {
     inherit python27;
     inherit six;
diff --git a/pkgs/development/misc/resholve/source.nix b/pkgs/development/misc/resholve/source.nix
index 70182722bde4..5e74bdc06acc 100644
--- a/pkgs/development/misc/resholve/source.nix
+++ b/pkgs/development/misc/resholve/source.nix
@@ -3,17 +3,11 @@
 }:
 
 rec {
-  version = "0.9.0";
-  rSrc =
-    # local build -> `make ci`; `make clean` to restore
-    # return to remote source
-    # if builtins.pathExists ./.local
-    # then ./.
-    # else
-      fetchFromGitHub {
-        owner = "abathur";
-        repo = "resholve";
-        rev = "v${version}";
-        hash = "sha256-FRdCeeC2c3bMEXekEyilgW0PwFfUWGstZ5mXdmRPM5w=";
-      };
+  version = "0.9.1";
+  rSrc = fetchFromGitHub {
+    owner = "abathur";
+    repo = "resholve";
+    rev = "v${version}";
+    hash = "sha256-hkLKQKhEMD1UQ9EunPmx5Tsh44q4+tYj820OXF2ueUo=";
+  };
 }
diff --git a/pkgs/development/misc/resholve/test.nix b/pkgs/development/misc/resholve/test.nix
index 8f9da36c9de4..d9862bef7cf5 100644
--- a/pkgs/development/misc/resholve/test.nix
+++ b/pkgs/development/misc/resholve/test.nix
@@ -121,13 +121,17 @@ rec {
   cli = stdenv.mkDerivation {
     name = "resholve-test";
     src = rSrc;
+
+    dontBuild = true;
+
     installPhase = ''
       mkdir $out
       cp *.ansi $out/
     '';
+
     doCheck = true;
     buildInputs = [ resholve ];
-    nativeCheckInputs = [ coreutils bats python27 ];
+    nativeCheckInputs = [ coreutils bats ];
     # LOGLEVEL="DEBUG";
 
     # default path
diff --git a/pkgs/development/node-packages/overrides.nix b/pkgs/development/node-packages/overrides.nix
index 7da12f5b7b64..84aaeb51d382 100644
--- a/pkgs/development/node-packages/overrides.nix
+++ b/pkgs/development/node-packages/overrides.nix
@@ -314,10 +314,11 @@ final: prev: {
     };
   };
 
-  teck-programmer = prev.teck-programmer.override {
+  teck-programmer = prev.teck-programmer.override ({ meta, ... }: {
     nativeBuildInputs = [ final.node-gyp-build ];
     buildInputs = [ pkgs.libusb1 ];
-  };
+    meta = meta // { license = lib.licenses.gpl3Plus; };
+  });
 
   thelounge-plugin-closepms = prev.thelounge-plugin-closepms.override {
     nativeBuildInputs = [ final.node-pre-gyp ];
diff --git a/pkgs/development/ocaml-modules/tls/default.nix b/pkgs/development/ocaml-modules/tls/default.nix
index e89ac5aeeef5..032b080bebd7 100644
--- a/pkgs/development/ocaml-modules/tls/default.nix
+++ b/pkgs/development/ocaml-modules/tls/default.nix
@@ -6,11 +6,11 @@
 
 buildDunePackage rec {
   pname = "tls";
-  version = "0.17.1";
+  version = "0.17.3";
 
   src = fetchurl {
     url = "https://github.com/mirleft/ocaml-tls/releases/download/v${version}/tls-${version}.tbz";
-    hash = "sha256-gBDStt4UjaIoaSgYHSM71yD6YPoVez1CULyg3QCMXT8=";
+    hash = "sha256-R+XezdMO0cNnc2RYpjrgd0dBR7PdZ1wUWQuBqS1QMdQ=";
   };
 
   minimalOCamlVersion = "4.08";
diff --git a/pkgs/development/python-modules/ailment/default.nix b/pkgs/development/python-modules/ailment/default.nix
index 799c639b85e8..976a0d02fed4 100644
--- a/pkgs/development/python-modules/ailment/default.nix
+++ b/pkgs/development/python-modules/ailment/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "ailment";
-  version = "9.2.78";
+  version = "9.2.79";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-6WfbfOvF/pL2yG8CdSOPpZ3Bl80U/eo+SFIthTJNeXc=";
+    hash = "sha256-aMp28g7a44u4VC0g3v9oVhYcBkSZkMJ/83eFTNNBbc0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/angr/default.nix b/pkgs/development/python-modules/angr/default.nix
index 3e877469c1ca..8ecc9c02c0e1 100644
--- a/pkgs/development/python-modules/angr/default.nix
+++ b/pkgs/development/python-modules/angr/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "angr";
-  version = "9.2.78";
+  version = "9.2.79";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "angr";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ohmaj5Gp8VXgXJFtg0yx8uHRcCAVm/MaDD9HGfTrtvo=";
+    hash = "sha256-J5ZjJPX5bL3xuKB9dbSlEvHVQS4XnrQfpZ6IXy/1uMw=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/archinfo/default.nix b/pkgs/development/python-modules/archinfo/default.nix
index 725955b78e9d..9e0858f14066 100644
--- a/pkgs/development/python-modules/archinfo/default.nix
+++ b/pkgs/development/python-modules/archinfo/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "archinfo";
-  version = "9.2.78";
+  version = "9.2.79";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-0OElwNcrywIRS4EjHGS4pQtWOWwPr4Od3wk9yGX1ONA=";
+    hash = "sha256-7gnNGUxl/K8GWV99uB/dEv9/ukQ4QV4nvyyByobhBt0=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/auditwheel/default.nix b/pkgs/development/python-modules/auditwheel/default.nix
new file mode 100644
index 000000000000..836bbaf1cd0f
--- /dev/null
+++ b/pkgs/development/python-modules/auditwheel/default.nix
@@ -0,0 +1,71 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchPypi
+, setuptools-scm
+, pyelftools
+, importlib-metadata
+, pretend
+, pytestCheckHook
+# non-python dependencies
+, bzip2
+, gnutar
+, patchelf
+, unzip
+}:
+
+buildPythonPackage rec {
+  pname = "auditwheel";
+  version = "5.4.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-qvgVOreinMmaZjziSYgE2vGIfqG3oyMboNP+5oo8zxk=";
+  };
+
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    pyelftools
+  ] ++ lib.optionals (pythonOlder "3.8") [
+    importlib-metadata
+  ];
+
+  nativeCheckInputs = [
+    pretend
+    pytestCheckHook
+  ];
+
+  # Integration tests require docker and networking
+  disabledTestPaths = [
+    "tests/integration"
+  ];
+
+  # Ensure that there are no undeclared deps
+  postCheck = ''
+    PATH= PYTHONPATH= $out/bin/auditwheel --version > /dev/null
+  '';
+
+  makeWrapperArgs = [
+    "--prefix" "PATH" ":" (lib.makeBinPath [ bzip2 gnutar patchelf unzip ])
+  ];
+
+  meta = with lib; {
+    changelog = "https://github.com/pypa/auditwheel/blob/${version}/CHANGELOG.md";
+    description = "Auditing and relabeling cross-distribution Linux wheels";
+    homepage = "https://github.com/pypa/auditwheel";
+    license = with licenses; [
+      mit  # auditwheel and nibabel
+      bsd2  # from https://github.com/matthew-brett/delocate
+      bsd3  # from https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py
+    ];
+    mainProgram = "auditwheel";
+    maintainers = with maintainers; [ davhau ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/python-modules/claripy/default.nix b/pkgs/development/python-modules/claripy/default.nix
index 2588a2fc5b90..c343f7f3e872 100644
--- a/pkgs/development/python-modules/claripy/default.nix
+++ b/pkgs/development/python-modules/claripy/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "claripy";
-  version = "9.2.78";
+  version = "9.2.79";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "claripy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-p/wbcrZhBhwF/wHgPYaYq8pdUq0UF5Gs6O2B2e8Sr2Q=";
+    hash = "sha256-N2w4djqJ9r2inLHwhyqNVUqjrlKVo75BblN5xURkMIc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/cle/default.nix b/pkgs/development/python-modules/cle/default.nix
index 0df82db6394f..ffe235dc0b37 100644
--- a/pkgs/development/python-modules/cle/default.nix
+++ b/pkgs/development/python-modules/cle/default.nix
@@ -16,14 +16,14 @@
 
 let
   # The binaries are following the argr projects release cycle
-  version = "9.2.78";
+  version = "9.2.79";
 
   # Binary files from https://github.com/angr/binaries (only used for testing and only here)
   binaries = fetchFromGitHub {
     owner = "angr";
     repo = "binaries";
     rev = "refs/tags/v${version}";
-    hash = "sha256-M5kSJ70fZscPC/pjKQFvTxAkUV0nhG+Vay/Yxtfs0k0=";
+    hash = "sha256-HVCKw7L5Y/4TR26mWOZ8lKhWOcq0yQqo2LWKQjVSPX4=";
   };
 
 in
@@ -38,7 +38,7 @@ buildPythonPackage rec {
     owner = "angr";
     repo = "cle";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XrGRiUgv3+cwRQMzcr4p/86XX4Z+6n0mQjMQQKYkj5Y=";
+    hash = "sha256-Zy62O3Mf9V7aGvQejsv4b6JVrHuDIrrqvTSs7/mVdtY=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/coinmetrics-api-client/default.nix b/pkgs/development/python-modules/coinmetrics-api-client/default.nix
index f2d2cc7ca976..443d24d3f695 100644
--- a/pkgs/development/python-modules/coinmetrics-api-client/default.nix
+++ b/pkgs/development/python-modules/coinmetrics-api-client/default.nix
@@ -1,7 +1,6 @@
 { lib
 , buildPythonPackage
 , fetchPypi
-, nix-update-script
 , orjson
 , pandas
 , poetry-core
@@ -18,8 +17,8 @@
 
 buildPythonPackage rec {
   pname = "coinmetrics-api-client";
-  version = "2023.11.13.14";
-  format = "pyproject";
+  version = "2023.11.27.17";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -28,7 +27,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     inherit version;
     pname = "coinmetrics_api_client";
-    hash = "sha256-+hX1msvm4hRl3luhMWgXcmpV2DmGI1oCknSP4QEWtxM=";
+    hash = "sha256-UDcegRnDtz6LYAN9S8wiW/TCsIsQHr5sSX+chEkeFnw=";
   };
 
   pythonRelaxDeps = [
@@ -64,7 +63,6 @@ buildPythonPackage rec {
         pandas
       ];
     };
-    updateScript = nix-update-script { };
   };
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/cvxopt/default.nix b/pkgs/development/python-modules/cvxopt/default.nix
index f6135ecba744..3e94238709d5 100644
--- a/pkgs/development/python-modules/cvxopt/default.nix
+++ b/pkgs/development/python-modules/cvxopt/default.nix
@@ -4,9 +4,8 @@
 , fetchPypi
 , isPyPy
 , python
-, openblas
 , blas
-, lapack # build segfaults with 64-bit blas
+, lapack
 , suitesparse
 , unittestCheckHook
 , glpk ? null
@@ -30,38 +29,29 @@ buildPythonPackage rec {
     hash = "sha256-NGH6QsGyJAuk2h2YXKc1A5FBV/xMd0FzJ+1tfYWs2+Y=";
   };
 
-  buildInputs = (if stdenv.isDarwin then [ openblas ] else [ blas lapack ]);
-  doCheck = !stdenv.isDarwin;
+  buildInputs = [ blas lapack ];
 
   # similar to Gsl, glpk, fftw there is also a dsdp interface
   # but dsdp is not yet packaged in nixpkgs
-  preConfigure = (if stdenv.isDarwin then
-  ''
-    export CVXOPT_BLAS_LIB=openblas
-    export CVXOPT_LAPACK_LIB=openblas
-  ''
-  else
-  ''
-    export CVXOPT_BLAS_LIB=blas
-    export CVXOPT_LAPACK_LIB=lapack
-  '') +
-  ''
-    export CVXOPT_BUILD_DSDP=0
-    export CVXOPT_SUITESPARSE_LIB_DIR=${lib.getLib suitesparse}/lib
-    export CVXOPT_SUITESPARSE_INC_DIR=${lib.getDev suitesparse}/include
-  '' + lib.optionalString withGsl ''
-    export CVXOPT_BUILD_GSL=1
-    export CVXOPT_GSL_LIB_DIR=${lib.getLib gsl}/lib
-    export CVXOPT_GSL_INC_DIR=${lib.getDev gsl}/include
-  '' + lib.optionalString withGlpk ''
-    export CVXOPT_BUILD_GLPK=1
-    export CVXOPT_GLPK_LIB_DIR=${lib.getLib glpk}/lib
-    export CVXOPT_GLPK_INC_DIR=${lib.getDev glpk}/include
-  '' + lib.optionalString withFftw ''
-    export CVXOPT_BUILD_FFTW=1
-    export CVXOPT_FFTW_LIB_DIR=${lib.getLib fftw}/lib
-    export CVXOPT_FFTW_INC_DIR=${lib.getDev fftw}/include
-  '';
+  env = {
+    CVXOPT_BLAS_LIB = "blas";
+    CVXOPT_LAPACK_LIB = "lapack";
+    CVXOPT_BUILD_DSDP = "0";
+    CVXOPT_SUITESPARSE_LIB_DIR = "${lib.getLib suitesparse}/lib";
+    CVXOPT_SUITESPARSE_INC_DIR = "${lib.getDev suitesparse}/include";
+  } // lib.optionalAttrs withGsl {
+    CVXOPT_BUILD_GSL = "1";
+    CVXOPT_GSL_LIB_DIR= "${lib.getLib gsl}/lib";
+    CVXOPT_GSL_INC_DIR= "${lib.getDev gsl}/include";
+  } // lib.optionalAttrs withGlpk {
+    CVXOPT_BUILD_GLPK = "1";
+    CVXOPT_GLPK_LIB_DIR = "${lib.getLib glpk}/lib";
+    CVXOPT_GLPK_INC_DIR = "${lib.getDev glpk}/include";
+  } // lib.optionalAttrs withFftw {
+    CVXOPT_BUILD_FFTW = "1";
+    CVXOPT_FFTW_LIB_DIR = "${lib.getLib fftw}/lib";
+    CVXOPT_FFTW_INC_DIR = "${lib.getDev fftw}/include";
+  };
 
   nativeCheckInputs = [ unittestCheckHook ];
 
diff --git a/pkgs/development/python-modules/django-rq/default.nix b/pkgs/development/python-modules/django-rq/default.nix
index e5b9c164b1ef..0be46cc32a5c 100644
--- a/pkgs/development/python-modules/django-rq/default.nix
+++ b/pkgs/development/python-modules/django-rq/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "django-rq";
-  version = "2.8.1";
+  version = "2.9.0";
   format = "setuptools";
   disabled = isPy27;
 
@@ -18,7 +18,7 @@ buildPythonPackage rec {
     owner = "rq";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Rabw6FIoSg9Cj4+tRO3BmBAeo9yr8KwU5xTPFL0JkOs=";
+    hash = "sha256-qrAEBAMbw96TCS6J50RG/2fV9K2WhuXyAQevL4RSQhk=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/development/python-modules/flask-sock/default.nix b/pkgs/development/python-modules/flask-sock/default.nix
new file mode 100644
index 000000000000..36ef8a093e1e
--- /dev/null
+++ b/pkgs/development/python-modules/flask-sock/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, pytestCheckHook
+, pythonOlder
+, fetchFromGitHub
+, flask
+, setuptools
+, simple-websocket
+}:
+
+buildPythonPackage rec {
+  pname = "flask-sock";
+  version = "0.7.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "miguelgrinberg";
+    repo = "flask-sock";
+    rev = "v${version}";
+    hash = "sha256-GKfOVdeLPag2IKGCWrMjQp4NTL1/9GiyLhXhf9jQKhQ=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    flask
+    simple-websocket
+  ];
+
+  pytestFlagsArray = [
+    "tests/test_flask_sock.py"
+  ];
+
+  pythonImportsCheck = [ "flask_sock" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = with lib; {
+    description = "WebSocket support for Flask";
+    homepage = "https://github.com/miguelgrinberg/flask-sock/";
+    changelog = "https://github.com/miguelgrinberg/flask-sock/blob/main/CHANGES.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fmhoeger ];
+  };
+}
diff --git a/pkgs/development/python-modules/gcodepy/default.nix b/pkgs/development/python-modules/gcodepy/default.nix
new file mode 100644
index 000000000000..51f32d202241
--- /dev/null
+++ b/pkgs/development/python-modules/gcodepy/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "gcodepy";
+  version = "0.1.1";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "rmeno12";
+    repo = "gcodepy";
+    rev = "v${version}";
+    hash = "sha256-+amBkwwISPyes8ABdqgCw50Zg5ioDa46WZgQsZZgl+8=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  pythonImportsCheck = [
+    "gcodepy"
+  ];
+
+  meta = with lib; {
+    description = "G-code generator for 3D printers that use Marlin Firmware";
+    homepage = "https://github.com/rmeno12/gcodepy";
+    changelog = "https://github.com/rmeno12/gcodepy/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ n00b0ss ];
+  };
+}
diff --git a/pkgs/development/python-modules/headerparser/default.nix b/pkgs/development/python-modules/headerparser/default.nix
index 550e5e9a4626..71cad63ef70f 100644
--- a/pkgs/development/python-modules/headerparser/default.nix
+++ b/pkgs/development/python-modules/headerparser/default.nix
@@ -1,25 +1,26 @@
 { lib
+, attrs
 , buildPythonPackage
+, deprecated
 , fetchFromGitHub
-, setuptools
 , pytest-mock
 , pytestCheckHook
 , pythonOlder
-, six
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "headerparser";
-  version = "0.4.0";
-  format = "pyproject";
+  version = "0.5.1";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "jwodder";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-KJJt85iC/4oBoIelB2zUJVyHSppFem/22v6F30P5nYM=";
+    repo = "headerparser";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CWXha7BYVO5JFuhWP8OZ95fhUsZ3Jo0cgPAM+O5bfec=";
   };
 
   nativeBuildInputs = [
@@ -27,7 +28,8 @@ buildPythonPackage rec {
   ];
 
   propagatedBuildInputs = [
-    six
+    attrs
+    deprecated
   ];
 
   nativeCheckInputs = [
@@ -35,13 +37,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace tox.ini \
-      --replace "--cov=headerparser" "" \
-      --replace "--no-cov-on-fail" "" \
-      --replace "--flakes" ""
-  '';
-
   pythonImportsCheck = [
     "headerparser"
   ];
@@ -49,6 +44,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Module to parse key-value pairs in the style of RFC 822 (e-mail) headers";
     homepage = "https://github.com/jwodder/headerparser";
+    changelog = "https://github.com/wheelodex/headerparser/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ ayazhafiz ];
   };
diff --git a/pkgs/development/python-modules/html5-parser/default.nix b/pkgs/development/python-modules/html5-parser/default.nix
index 561c9c97f495..67f05cb8e7f6 100644
--- a/pkgs/development/python-modules/html5-parser/default.nix
+++ b/pkgs/development/python-modules/html5-parser/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "html5-parser";
-  version = "0.4.11";
+  version = "0.4.12";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "kovidgoyal";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-l7cCt+zX+qOujS6noc1/p7mELqrHae3eiKQNXBxLm7o=";
+    hash = "sha256-0Qn+To/d3+HMx+KhhgJBEHVYPOfIeBnngBraY7r4uSs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/id/default.nix b/pkgs/development/python-modules/id/default.nix
new file mode 100644
index 000000000000..c4b59268b4bc
--- /dev/null
+++ b/pkgs/development/python-modules/id/default.nix
@@ -0,0 +1,51 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, flit-core
+, pretend
+, pydantic
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage rec {
+  pname = "id";
+  version = "1.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "di";
+    repo = "id";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-T3p13EnXU1Efysnu1RQw5st1BgHyZNdrKtkzQSguRtM=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    pydantic
+    requests
+  ];
+
+  nativeCheckInputs = [
+    pretend
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "id"
+  ];
+
+  meta = with lib; {
+    description = "A tool for generating OIDC identities";
+    homepage = "https://github.com/di/id";
+    changelog = "https://github.com/di/id/blob/${version}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/jupyterhub/default.nix b/pkgs/development/python-modules/jupyterhub/default.nix
index 626130398121..5f298922cfe6 100644
--- a/pkgs/development/python-modules/jupyterhub/default.nix
+++ b/pkgs/development/python-modules/jupyterhub/default.nix
@@ -205,6 +205,7 @@ buildPythonPackage rec {
     homepage = "https://jupyter.org/";
     changelog = "https://github.com/jupyterhub/jupyterhub/blob/${version}/docs/source/reference/changelog.md";
     license = licenses.bsd3;
+    maintainers = teams.jupyter.members;
     # darwin: E   OSError: dlopen(/nix/store/43zml0mlr17r5jsagxr00xxx91hz9lky-openpam-20170430/lib/libpam.so, 6): image not found
     broken = (stdenv.isLinux && stdenv.isAarch64) || stdenv.isDarwin;
   };
diff --git a/pkgs/development/python-modules/mashumaro/default.nix b/pkgs/development/python-modules/mashumaro/default.nix
index f898acad5144..d61ddf90362d 100644
--- a/pkgs/development/python-modules/mashumaro/default.nix
+++ b/pkgs/development/python-modules/mashumaro/default.nix
@@ -1,31 +1,32 @@
 { lib
 , buildPythonPackage
+, ciso8601
 , fetchFromGitHub
-, pythonOlder
-, setuptools
-, typing-extensions
-, orjson
 , msgpack
-, pyyaml
-, tomli-w
-, tomli
-, pytestCheckHook
-, ciso8601
+, orjson
 , pendulum
 , pytest-mock
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, setuptools
+, tomli
+, tomli-w
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "mashumaro";
-  version = "3.10";
-  format = "pyproject";
-  disabled = pythonOlder "3.7";
+  version = "3.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "Fatal1ty";
-    repo = pname;
+    repo = "mashumaro";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PvMEwIxurDGwYMCmNFThedxDY4vwATHYwMlXkucNuwM=";
+    hash = "sha256-7gRbTNNK8elWsL0ub7c/EeswIk4xxJOxKVk8HmvWMZA=";
   };
 
   nativeBuildInputs = [
@@ -37,10 +38,20 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    orjson = [ orjson ];
-    msgpack = [ msgpack ];
-    yaml = [ pyyaml ];
-    toml = [ tomli-w ] ++ lib.optionals (pythonOlder "3.11") [ tomli ];
+    orjson = [
+      orjson
+    ];
+    msgpack = [
+      msgpack
+    ];
+    yaml = [
+      pyyaml
+    ];
+    toml = [
+      tomli-w
+    ] ++ lib.optionals (pythonOlder "3.11") [
+      tomli
+    ];
   };
 
   nativeCheckInputs = [
@@ -55,7 +66,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Fast and well tested serialization library on top of dataclasses";
+    description = "Serialization library on top of dataclasses";
     homepage = "https://github.com/Fatal1ty/mashumaro";
     changelog = "https://github.com/Fatal1ty/mashumaro/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/python-modules/mirakuru/default.nix b/pkgs/development/python-modules/mirakuru/default.nix
index 4376c9387fcf..97f1cef438ae 100644
--- a/pkgs/development/python-modules/mirakuru/default.nix
+++ b/pkgs/development/python-modules/mirakuru/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "mirakuru";
-  version = "2.5.1";
+  version = "2.5.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "ClearcodeHQ";
     repo = "mirakuru";
     rev = "refs/tags/v${version}";
-    hash = "sha256-jBsSvIy2FaAYlDZLjJXl9hyCiK+nk/cM5j128f24dRc=";
+    hash = "sha256-I1TKP0ESuBMTcReZf0tryjvGpSpwzofwmOiQqhyr6Zg=";
   };
 
   nativeBuildInputs = [ setuptools ];
diff --git a/pkgs/development/python-modules/napalm/hp-procurve.nix b/pkgs/development/python-modules/napalm/hp-procurve.nix
index 87dad04cf781..6402005bed6e 100644
--- a/pkgs/development/python-modules/napalm/hp-procurve.nix
+++ b/pkgs/development/python-modules/napalm/hp-procurve.nix
@@ -5,6 +5,7 @@
 , netmiko
 , pip
 , pytestCheckHook
+, pythonOlder
 }:
 
 buildPythonPackage rec {
@@ -12,32 +13,37 @@ buildPythonPackage rec {
   version = "0.7.0";
   format = "setuptools";
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "napalm-automation-community";
-    repo = pname;
-    rev = version;
+    repo = "napalm-hp-procurve";
+    rev = "refs/tags/${version}";
     hash = "sha256-cO4kxI90krj1knzixRKWxa77OAaxjO8dLTy02VpkV9M=";
   };
 
-  nativeBuildInputs = [
-    pip
-  ];
-
-  # dependency installation in setup.py doesn't work
   patchPhase = ''
+    # Dependency installation in setup.py doesn't work
     echo -n > requirements.txt
+    substituteInPlace setup.cfg \
+      --replace "--cov=napalm_procurve --cov-report term-missing -vs --pylama" ""
   '';
 
-  buildInputs = [ napalm ];
+  nativeBuildInputs = [
+    pip
+  ];
 
-  propagatedBuildInputs = [ netmiko ];
+  buildInputs = [
+    napalm
+  ];
 
-  # setup.cfg seems to contain invalid pytest parameters
-  preCheck = ''
-    rm setup.cfg
-  '';
+  propagatedBuildInputs = [
+    netmiko
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
 
   disabledTests = [
     # AssertionError: Some methods vary.
@@ -46,6 +52,11 @@ buildPythonPackage rec {
     "test_get_config_filtered"
     # AssertionError
     "test_get_interfaces"
+    "test_get_facts"
+  ];
+
+  pythonImportsCheck = [
+    "napalm_procurve"
   ];
 
   meta = with lib; {
diff --git a/pkgs/development/python-modules/netutils/default.nix b/pkgs/development/python-modules/netutils/default.nix
index 517c90b3f449..182485253875 100644
--- a/pkgs/development/python-modules/netutils/default.nix
+++ b/pkgs/development/python-modules/netutils/default.nix
@@ -15,13 +15,13 @@
 buildPythonPackage rec {
   pname = "netutils";
   version = "1.6.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "networktocode";
-    repo = pname;
+    repo = "netutils";
     rev = "refs/tags/v${version}";
     hash = "sha256-ocajE7E4xIatEmv58/9gEpWF2plJdiZXjk6ajD2vTzw=";
   };
@@ -32,7 +32,6 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     jsonschema
-    napalm
   ];
 
   passthru.optional-dependencies.optionals = [
diff --git a/pkgs/development/python-modules/openusd/default.nix b/pkgs/development/python-modules/openusd/default.nix
new file mode 100644
index 000000000000..70ae6eb5e08b
--- /dev/null
+++ b/pkgs/development/python-modules/openusd/default.nix
@@ -0,0 +1,131 @@
+{ buildPythonPackage
+, fetchFromGitHub
+, lib
+, writeShellScriptBin
+, cmake
+, doxygen
+, draco
+, graphviz-nox
+, ninja
+, setuptools
+, pyqt6
+, pyopengl
+, jinja2
+, pyside6
+, boost
+, numpy
+, git
+, tbb
+, opensubdiv
+, openimageio
+, opencolorio
+, osl
+, ptex
+, embree
+, alembic
+, openexr
+, flex
+, bison
+, qt6
+, python
+}:
+let
+  # Matches the pyside6-uic implementation
+  # https://code.qt.io/cgit/pyside/pyside-setup.git/tree/sources/pyside-tools/pyside_tool.py?id=e501cad66146a49c7a259579c7bb94bc93a67a08#n82
+  pyside-tools-uic = writeShellScriptBin "pyside6-uic" ''
+    exec ${qt6.qtbase}/libexec/uic -g python "$@"
+  '';
+in
+buildPythonPackage rec {
+  pname = "OpenUSD";
+  version = "23.11";
+  src = fetchFromGitHub {
+    owner = "PixarAnimationStudios";
+    repo = pname;
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5zQrfB14kXs75WbL3s4eyhxELglhLNxU2L2aVXiyVjg=";
+  };
+
+  outputs = ["out" "doc"];
+
+  format = "other";
+
+  propagatedBuildInputs = [
+    setuptools
+    pyqt6
+    pyopengl
+    jinja2
+    pyside6
+    pyside-tools-uic
+    boost
+    numpy
+  ];
+
+  cmakeFlags = [
+    "-DPXR_BUILD_EXAMPLES=OFF"
+    "-DPXR_BUILD_TUTORIALS=OFF"
+    "-DPXR_BUILD_USD_TOOLS=ON"
+    "-DPXR_BUILD_IMAGING=ON"
+    "-DPXR_BUILD_USD_IMAGING=ON"
+    "-DPXR_BUILD_USDVIEW=ON"
+    "-DPXR_BUILD_DOCUMENTATION=ON"
+    "-DPXR_BUILD_PYTHON_DOCUMENTATION=ON"
+    "-DPXR_BUILD_EMBREE_PLUGIN=ON"
+    "-DPXR_BUILD_ALEMBIC_PLUGIN=ON"
+    "-DPXR_ENABLE_OSL_SUPPORT=ON"
+    "-DPXR_BUILD_DRACO_PLUGIN=ON"
+    "-DPXR_BUILD_MONOLITHIC=ON" # Seems to be commonly linked to monolithically
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    git
+    qt6.wrapQtAppsHook
+    doxygen
+    graphviz-nox
+  ];
+  buildInputs = [
+    tbb
+    opensubdiv
+    openimageio
+    opencolorio
+    osl
+    ptex
+    embree
+    alembic.dev
+    openexr
+    flex
+    bison
+    boost
+    draco
+    qt6.qtbase
+    qt6.qtwayland
+  ];
+
+  pythonImportsCheck = [ "pxr" "pxr.Usd" ];
+
+  postInstall = ''
+    # Make python lib properly accessible
+    target_dir=$out/${python.sitePackages}
+    mkdir -p $(dirname $target_dir)
+    mv $out/lib/python $target_dir
+
+    mv $out/docs $doc
+
+    rm $out/share -r # only examples
+    rm $out/tests -r
+  '';
+
+  meta = {
+    description = "Universal Scene Description";
+    longDescription = ''
+      Universal Scene Description (USD) is an efficient, scalable system
+      for authoring, reading, and streaming time-sampled scene description
+      for interchange between graphics applications.
+    '';
+    homepage = "https://openusd.org/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ shaddydc ];
+  };
+}
diff --git a/pkgs/development/python-modules/playwright/default.nix b/pkgs/development/python-modules/playwright/default.nix
index 004930491a39..575ffeff5a6b 100644
--- a/pkgs/development/python-modules/playwright/default.nix
+++ b/pkgs/development/python-modules/playwright/default.nix
@@ -55,6 +55,8 @@ buildPythonPackage rec {
       --replace 'requires = ["setuptools==68.2.2", "setuptools-scm==8.0.4", "wheel==0.41.2", "auditwheel==5.4.0"]' \
                 'requires = ["setuptools", "setuptools-scm", "wheel", "auditwheel"]' \
       --replace 'version_file = "playwright/_repo_version.py"' ""
+    # FIXME version_file is available in setuptools-scm>=8.0.0
+    echo "__version__ = version = '${version}'" > playwright/_repo_version.py
 
     # Skip trying to download and extract the driver.
     # This is done manually in postInstall instead.
diff --git a/pkgs/development/python-modules/pyspx/default.nix b/pkgs/development/python-modules/pyspx/default.nix
new file mode 100644
index 000000000000..b8e3cb49df6f
--- /dev/null
+++ b/pkgs/development/python-modules/pyspx/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, cffi
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, setuptools
+, wheel
+}:
+
+buildPythonPackage rec {
+  pname = "pyspx";
+  version = "0.5.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "sphincs";
+    repo = "pyspx";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-hMZ7JZoo5RdUwQYpGjtZznH/O6rBUXv+svfOAI0cjqs=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    cffi
+    setuptools
+    wheel
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "pyspx"
+  ];
+
+  meta = with lib; {
+    description = "Python bindings for SPHINCS";
+    homepage = "https://github.com/sphincs/pyspx";
+    changelog = "https://github.com/sphincs/pyspx/releases/tag/v${version}";
+    license = licenses.cc0;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/python-mbedtls/default.nix b/pkgs/development/python-modules/python-mbedtls/default.nix
new file mode 100644
index 000000000000..967bade85b3b
--- /dev/null
+++ b/pkgs/development/python-modules/python-mbedtls/default.nix
@@ -0,0 +1,50 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, certifi
+, cython
+, mbedtls_2
+, pytestCheckHook
+, setuptools
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "python-mbedtls";
+  version = "2.8.0";
+  format = "setuptools";
+
+  src = fetchFromGitHub {
+    owner = "Synss";
+    repo = "python-mbedtls";
+    rev = version;
+    hash = "sha256-gMFludfAprQ/1JR77Ee6/xVvGLJ9pY1LrouLpSKVrzk=";
+  };
+
+  nativeBuildInputs = [
+    cython
+    setuptools
+  ];
+
+  buildInputs = [
+    mbedtls_2
+  ];
+
+  propagatedBuildInputs = [
+    certifi
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "mbedtls" ];
+
+  meta = with lib; {
+    description = "Cryptographic library with an mbed TLS back end";
+    homepage = "https://github.com/Synss/python-mbedtls";
+    license = licenses.mit;
+    maintainers = with maintainers; [ SuperSandro2000 ];
+  };
+}
diff --git a/pkgs/development/python-modules/pyvex/default.nix b/pkgs/development/python-modules/pyvex/default.nix
index 20984a99361f..ef4e572c873a 100644
--- a/pkgs/development/python-modules/pyvex/default.nix
+++ b/pkgs/development/python-modules/pyvex/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "pyvex";
-  version = "9.2.78";
+  version = "9.2.79";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-GBaaWIhAEvBMNoOIM+ruQoBZklEPos7AY4qJuwJ/KXA=";
+    hash = "sha256-wtRguqbSvypScYhPlnWXM1qcppaw2Tb93GNYc/fziCM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/qdarkstyle/default.nix b/pkgs/development/python-modules/qdarkstyle/default.nix
index 30e7afd82b4c..f83a741dfd90 100644
--- a/pkgs/development/python-modules/qdarkstyle/default.nix
+++ b/pkgs/development/python-modules/qdarkstyle/default.nix
@@ -7,12 +7,12 @@
 
 buildPythonPackage rec {
   pname = "qdarkstyle";
-  version = "3.1";
+  version = "3.2.3";
 
   src = fetchPypi {
     inherit version;
     pname = "QDarkStyle";
-    hash = "sha256-YAWE1iU0Pg3dEo3gg5PTw1Y3eGpJgn8XTSmqfKqCecE=";
+    hash = "sha256-DAt/dKbpISEAiZKzabq2BGgVfbHALNMNZKXpo7QC8a4=";
   };
 
   # No tests available
diff --git a/pkgs/development/python-modules/securesystemslib/default.nix b/pkgs/development/python-modules/securesystemslib/default.nix
new file mode 100644
index 000000000000..4a0ce694866b
--- /dev/null
+++ b/pkgs/development/python-modules/securesystemslib/default.nix
@@ -0,0 +1,96 @@
+{ lib
+, asn1crypto
+, azure-identity
+, azure-keyvault-keys
+, boto3
+, botocore
+, buildPythonPackage
+, cryptography
+, ed25519
+, fetchFromGitHub
+, google-cloud-kms
+, hatchling
+, pynacl
+, pyspx
+, pytestCheckHook
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "securesystemslib";
+  version = "0.30.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "secure-systems-lab";
+    repo = "securesystemslib";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Jqw65VTMLA/X7VQGxN0BlTzF/lxBYirDKBf+xI9cfhg=";
+  };
+
+  nativeBuildInputs = [
+    hatchling
+  ];
+
+  passthru.optional-dependencies = {
+    PySPX = [
+      pyspx
+    ];
+    awskms = [
+      boto3
+      botocore
+      cryptography
+    ];
+    azurekms = [
+      azure-identity
+      azure-keyvault-keys
+      cryptography
+    ];
+    crypto = [
+      cryptography
+    ];
+    gcpkms = [
+      cryptography
+      google-cloud-kms
+    ];
+    hsm = [
+      asn1crypto
+      cryptography
+    #   pykcs11
+    ];
+    pynacl = [
+      pynacl
+    ];
+    # Circular dependency
+    # sigstore = [
+    #   sigstore
+    # ];
+  };
+
+  nativeCheckInputs = [
+    ed25519
+    pytestCheckHook
+  ] ++ lib.flatten (builtins.attrValues passthru.optional-dependencies);
+
+  pythonImportsCheck = [
+    "securesystemslib"
+  ];
+
+  disabledTestPaths = [
+    # pykcs11 is not available
+    "tests/test_hsm_signer.py"
+    # Ignore vendorized tests
+    "securesystemslib/_vendor/"
+  ];
+
+  meta = with lib; {
+    description = "Cryptographic and general-purpose routines";
+    homepage = "https://github.com/secure-systems-lab/securesystemslib";
+    changelog = "https://github.com/secure-systems-lab/securesystemslib/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
+
diff --git a/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix b/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
new file mode 100644
index 000000000000..be58c8b5f4cd
--- /dev/null
+++ b/pkgs/development/python-modules/sigstore-protobuf-specs/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, pythonOlder
+, flit-core
+, fetchPypi
+, buildPythonPackage
+, betterproto
+}:
+
+buildPythonPackage rec {
+  pname = "sigstore-protobuf-specs";
+  version = "0.2.2";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "sigstore_protobuf_specs";
+    inherit version;
+    hash = "sha256-wFwedHioCvDH3qnMLRHwR4JuTAKVc9VkE394jhE3c5E=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    betterproto
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "sigstore_protobuf_specs"
+  ];
+
+  meta = with lib; {
+    description = "Library for serializing and deserializing Sigstore messages";
+    homepage = "https://pypi.org/project/sigstore-protobuf-specs/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/sigstore-rekor-types/default.nix b/pkgs/development/python-modules/sigstore-rekor-types/default.nix
new file mode 100644
index 000000000000..a58595ed19a9
--- /dev/null
+++ b/pkgs/development/python-modules/sigstore-rekor-types/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, pythonOlder
+, pydantic
+, flit-core
+, fetchFromGitHub
+, buildPythonPackage
+}:
+
+buildPythonPackage rec {
+  pname = "sigstore-rekor-types";
+  version = "0.0.11";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "trailofbits";
+    repo = "sigstore-rekor-types";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-oOFdRiDp9USc3A+aaPExprEO2i/RERNahiyi2kVpkns=";
+  };
+
+  nativeBuildInputs = [
+    flit-core
+  ];
+
+  propagatedBuildInputs = [
+    pydantic
+  ] ++ pydantic.optional-dependencies.email;
+
+  # Module has no tests
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Python models for Rekor's API types";
+    homepage = "https://github.com/trailofbits/sigstore-rekor-types";
+    changelog = "https://github.com/trailofbits/sigstore-rekor-types/releases/tag/v${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/torch/bin.nix b/pkgs/development/python-modules/torch/bin.nix
index 3259f1fca185..74eefd071890 100644
--- a/pkgs/development/python-modules/torch/bin.nix
+++ b/pkgs/development/python-modules/torch/bin.nix
@@ -9,7 +9,6 @@
 , future
 , numpy
 , autoPatchelfHook
-, patchelf
 , pyyaml
 , requests
 , setuptools
@@ -25,7 +24,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "2.0.1";
+  version = "2.1.1";
 in buildPythonPackage {
   inherit version;
 
diff --git a/pkgs/development/python-modules/torch/binary-hashes.nix b/pkgs/development/python-modules/torch/binary-hashes.nix
index 7b1cc4e18011..42eed4485ebf 100644
--- a/pkgs/development/python-modules/torch/binary-hashes.nix
+++ b/pkgs/development/python-modules/torch/binary-hashes.nix
@@ -6,86 +6,86 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.0.1" = {
+  "2.1.1" = {
     x86_64-linux-38 = {
-      name = "torch-2.0.1-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-LOOKbk6nxLf1uqUeZSQ6X2h/bhmreRW6WypDEQX1C74=";
+      name = "torch-2.1.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-h8y2g+ZCqYuO8FRV722GRntiB1pDJfTV+aouiTL2Bzk=";
     };
     x86_64-linux-39 = {
-      name = "torch-2.0.1-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-61XynbV0TtqKlvVZTmN9rtDVIngnMAXedZlw5nz6alo=";
+      name = "torch-2.1.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-KCRfYtEHPCfW8N4DqBrUnVMzxGBlke2I/tHtuX8FUz0=";
     };
     x86_64-linux-310 = {
-      name = "torch-2.0.1-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-p6SdRZv0hi9k97waaL7M+IgcL6nz4FaWCOFrpvhev3s=";
+      name = "torch-2.1.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-7HbRE1DI6IejTTZgLNN/UGObyc2p+upNQ/IHDpeS5KQ=";
     };
     x86_64-linux-311 = {
-      name = "torch-2.0.1-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-FDtsZYwX1DN24t+6osEG01Y51hXl6N7EQpzx5RDdjWE=";
+      name = "torch-2.1.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torch-2.1.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-g7/hE036irhlU8Fdpd/6GQqG2CKvr+jqbeEWnBDZcao=";
     };
     x86_64-darwin-38 = {
-      name = "torch-2.0.1-cp38-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp38-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-Gttg02nyZQysjpqVsdV1jiXVJqNICPdEjQvVmeSukHI=";
+      name = "torch-2.1.1-cp38-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp38-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-1WsDIXZFjir0cJYnu9LCD+KRfv+M0Ien/jE6zM9c4vE=";
     };
     x86_64-darwin-39 = {
-      name = "torch-2.0.1-cp39-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp39-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-xi35k1K9buWlqNGDJFIRBDXReLUWTeRQgxo6jMFNxoA=";
+      name = "torch-2.1.1-cp39-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp39-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-cVtQ2MHeXaVSSmgofrAA9z4CbnTV9rErxFDvaZX89fk=";
     };
     x86_64-darwin-310 = {
-      name = "torch-2.0.1-cp310-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp310-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-Vn+E1lftxVgtcWkAVD5uYjU9videYc3DbtpJKeRt+ec=";
+      name = "torch-2.1.1-cp310-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp310-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-Hh5frd1DqPLA4OIr6s0eI1ouRHeU2AdIPJSp4xtUp1g=";
     };
     x86_64-darwin-311 = {
-      name = "torch-2.0.1-cp311-none-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp311-none-macosx_10_9_x86_64.whl";
-      hash = "sha256-72VEJ9kWABKYZGRONd7qdh+x/hMXEBgLlSpvLiIHB14=";
+      name = "torch-2.1.1-cp311-none-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp311-none-macosx_10_9_x86_64.whl";
+      hash = "sha256-pwWTgG8dfmtTZX2WgQUY2g+I7yYIyYpAKVV2W4x51Sw=";
     };
     aarch64-darwin-38 = {
-      name = "torch-2.0.1-cp38-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp38-none-macosx_11_0_arm64.whl";
-      hash = "sha256-G8/8FrieKWgmszuY21Fm+ZDjtyZUorkGc+gXsWxQ4ys=";
+      name = "torch-2.1.1-cp38-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp38-none-macosx_11_0_arm64.whl";
+      hash = "sha256-KeO5CowoH2ZggEqTnR9CGGBMgBYuUh4ebYyFVzJZAqA=";
     };
     aarch64-darwin-39 = {
-      name = "torch-2.0.1-cp39-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp39-none-macosx_11_0_arm64.whl";
-      hash = "sha256-ZxolZeP2O4/o5Crj42rSSf5eVnQ16ie5TtqmcqfQxBY=";
+      name = "torch-2.1.1-cp39-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp39-none-macosx_11_0_arm64.whl";
+      hash = "sha256-22foclx29Mf08C51UbsW6BuhoZEoZ7w117uW0r6MeLQ=";
     };
     aarch64-darwin-310 = {
-      name = "torch-2.0.1-cp310-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp310-none-macosx_11_0_arm64.whl";
-      hash = "sha256-eHtaeKp5F0Zem5Y5m4g5IMiKCPTrY7Wl0tGhbifS+Js=";
+      name = "torch-2.1.1-cp310-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp310-none-macosx_11_0_arm64.whl";
+      hash = "sha256-52vzxcNUh08dpGXIUqL7YO5svOMG6TUzeIV2DwgPm6o=";
     };
     aarch64-darwin-311 = {
-      name = "torch-2.0.1-cp311-none-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torch-2.0.1-cp311-none-macosx_11_0_arm64.whl";
-      hash = "sha256-JapDyoDc3zLxPaBMUD7Hr9+Od+OgGD3YXNPlOyhC5Sc=";
+      name = "torch-2.1.1-cp311-none-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp311-none-macosx_11_0_arm64.whl";
+      hash = "sha256-4xL36C5JVl92Z7C7+VWasMWXBj2TBEdAeBwCrNWoeXg=";
     };
     aarch64-linux-38 = {
-      name = "torch-2.0.1-cp38-cp38-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torch-2.0.1-cp38-cp38-manylinux2014_aarch64.whl";
-      hash = "sha256-CIIkN1X/KIlejm3GvCbrz1qgkR7YGyoS8kH8SwkHWxM=";
+      name = "torch-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-nKD8vz1bpkTWqFcsg6mrvfX3/1dbw4Up72wYWjpxvek=";
     };
     aarch64-linux-39 = {
-      name = "torch-2.0.1-cp39-cp39-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torch-2.0.1-cp39-cp39-manylinux2014_aarch64.whl";
-      hash = "sha256-Qj4K4le3VrtFpLSQcgRnctGtDFkiZcUIAHDgdn2k5JA=";
+      name = "torch-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-sxIwvQWEJOVtun+JkoDbxqyLmUjkOQLgyEpEZmsewVE=";
     };
     aarch64-linux-310 = {
-      name = "torch-2.0.1-cp310-cp310-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torch-2.0.1-cp310-cp310-manylinux2014_aarch64.whl";
-      hash = "sha256-NZv6rZTRzaAqt3XcHMOG1YVxIym7R7h0FgfvbvSVB0c=";
+      name = "torch-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-hP79YzVkFsDNIFeGN8zbuCFkmTQA7Re1fJUd1jdtzug=";
     };
     aarch64-linux-311 = {
-      name = "torch-2.0.1-cp311-cp311-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torch-2.0.1-cp311-cp311-manylinux2014_aarch64.whl";
-      hash = "sha256-tgGbHeSXjpbaoh1qPrtB6IoLR0iY/iUf2WGJWHQIhz4=";
+      name = "torch-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torch-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl";
+      hash = "sha256-YbUbM8YXN8KHBYsMMGHmqdPDY4Y+SglPgEvEhoiKGIo=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torch/default.nix b/pkgs/development/python-modules/torch/default.nix
index dae916a18525..49ed033bd6a1 100644
--- a/pkgs/development/python-modules/torch/default.nix
+++ b/pkgs/development/python-modules/torch/default.nix
@@ -20,6 +20,7 @@
   Accelerate, CoreServices, libobjc,
 
   # Propagated build inputs
+  fsspec,
   filelock,
   jinja2,
   networkx,
@@ -127,7 +128,7 @@ let
 in buildPythonPackage rec {
   pname = "torch";
   # Don't forget to update torch-bin to the same version.
-  version = "2.0.1";
+  version = "2.1.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.8.0";
@@ -143,10 +144,13 @@ in buildPythonPackage rec {
     repo = "pytorch";
     rev = "refs/tags/v${version}";
     fetchSubmodules = true;
-    hash = "sha256-xUj77yKz3IQ3gd/G32pI4OhL3LoN1zS7eFg0/0nZp5I=";
+    hash = "sha256-01+uqHvPbQVXKLohGWfsCsZOjb7xmfjBKkTGUGMEdAI=";
   };
 
-  patches = lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
+  patches = lib.optionals cudaSupport [
+    ./fix-cmake-cuda-toolkit.patch
+  ]
+  ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [
     # pthreadpool added support for Grand Central Dispatch in April
     # 2020. However, this relies on functionality (DISPATCH_APPLY_AUTO)
     # that is available starting with macOS 10.13. However, our current
@@ -188,12 +192,11 @@ in buildPythonPackage rec {
         'message(FATAL_ERROR "Found NCCL header version and library version' \
         'message(WARNING "Found NCCL header version and library version'
   ''
-  # TODO(@connorbaker): Remove this patch after 2.1.0 lands.
+  # Remove PyTorch's FindCUDAToolkit.cmake and to use CMake's default.
+  # We do not remove the entirety of cmake/Modules_CUDA_fix because we need FindCUDNN.cmake.
   + lib.optionalString cudaSupport ''
-    substituteInPlace torch/utils/cpp_extension.py \
-      --replace \
-        "'8.6', '8.9'" \
-        "'8.6', '8.7', '8.9'"
+    rm cmake/Modules/FindCUDAToolkit.cmake
+    rm -rf cmake/Modules_CUDA_fix/{upstream,FindCUDA.cmake}
   ''
   # error: no member named 'aligned_alloc' in the global namespace; did you mean simply 'aligned_alloc'
   # This lib overrided aligned_alloc hence the error message. Tltr: his function is linkable but not in header.
@@ -377,6 +380,7 @@ in buildPythonPackage rec {
     pyyaml
 
     # From install_requires:
+    fsspec
     filelock
     typing-extensions
     sympy
diff --git a/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch b/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch
new file mode 100644
index 000000000000..508118cc2e8a
--- /dev/null
+++ b/pkgs/development/python-modules/torch/fix-cmake-cuda-toolkit.patch
@@ -0,0 +1,65 @@
+From aa7e7cfd5a5fe0c839406c1b197b81ef955a7ef5 Mon Sep 17 00:00:00 2001
+From: Gaetan Lepage <gaetan@glepage.com>
+Date: Thu, 23 Nov 2023 00:39:26 +0100
+Subject: [PATCH] fix-cmake-cuda-toolkit
+
+---
+ CMakeLists.txt               |  4 ----
+ cmake/public/cuda.cmake      | 12 +++++++++---
+ tools/setup_helpers/cmake.py |  2 ++
+ 3 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3a48eaf4e29..3aaeef2593a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1152,10 +1152,6 @@ if(BUILD_SHARED_LIBS)
+       ${PROJECT_SOURCE_DIR}/cmake/Modules_CUDA_fix
+       DESTINATION share/cmake/Caffe2/
+       COMPONENT dev)
+-  install(FILES
+-      ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUDAToolkit.cmake
+-      DESTINATION share/cmake/Caffe2/
+-      COMPONENT dev)
+   install(FILES
+       ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUSPARSELT.cmake
+       DESTINATION share/cmake/Caffe2/
+diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake
+index 32f3ba375b5..c8b666e4c78 100644
+--- a/cmake/public/cuda.cmake
++++ b/cmake/public/cuda.cmake
+@@ -62,9 +62,15 @@ cmake_policy(POP)
+ 
+ if(NOT CMAKE_CUDA_COMPILER_VERSION STREQUAL CUDAToolkit_VERSION OR
+     NOT CUDA_INCLUDE_DIRS STREQUAL CUDAToolkit_INCLUDE_DIR)
+-  message(FATAL_ERROR "Found two conflicting CUDA installs:\n"
+-                      "V${CMAKE_CUDA_COMPILER_VERSION} in '${CUDA_INCLUDE_DIRS}' and\n"
+-                      "V${CUDAToolkit_VERSION} in '${CUDAToolkit_INCLUDE_DIR}'")
++  if(CUDA_INCLUDE_DIRS IN_LIST CUDAToolkit_INCLUDE_DIR)
++    message(STATUS "CUDA_INCLUDE_DIRS is a substring of CUDAToolkit_INCLUDE_DIR. "
++                   "Setting CUDA_INCLUDE_DIRS to CUDAToolkit_INCLUDE_DIR.")
++    set(CUDA_INCLUDE_DIRS "${CUDAToolkit_INCLUDE_DIR}")
++  else()
++    message(FATAL_ERROR "Found two conflicting CUDA installs:\n"
++                        "V${CMAKE_CUDA_COMPILER_VERSION} in '${CUDA_INCLUDE_DIRS}' and\n"
++                        "V${CUDAToolkit_VERSION} in '${CUDAToolkit_INCLUDE_DIR}'")
++  endif()
+ endif()
+ 
+ if(NOT TARGET CUDA::nvToolsExt)
+diff --git a/tools/setup_helpers/cmake.py b/tools/setup_helpers/cmake.py
+index fb19b66dfba..3f83bef32fe 100644
+--- a/tools/setup_helpers/cmake.py
++++ b/tools/setup_helpers/cmake.py
+@@ -207,6 +207,8 @@ class CMake:
+                     "BUILDING_WITH_TORCH_LIBS",
+                     "CUDA_HOST_COMPILER",
+                     "CUDA_NVCC_EXECUTABLE",
++                    "CUDAToolkit_ROOT",
++                    "CUDAToolkit_INCLUDE_DIR",
+                     "CUDA_SEPARABLE_COMPILATION",
+                     "CUDNN_LIBRARY",
+                     "CUDNN_INCLUDE_DIR",
+-- 
+2.42.0
+
diff --git a/pkgs/development/python-modules/torch/prefetch.sh b/pkgs/development/python-modules/torch/prefetch.sh
index be3e4ec755bd..7b9c26de35f2 100755
--- a/pkgs/development/python-modules/torch/prefetch.sh
+++ b/pkgs/development/python-modules/torch/prefetch.sh
@@ -5,9 +5,9 @@ set -eou pipefail
 
 version=$1
 
-linux_cuda_version="cu118"
+linux_cuda_version="cu121"
 linux_cuda_bucket="https://download.pytorch.org/whl/${linux_cuda_version}"
-linux_cpu_bucket="https://download.pytorch.org/whl"
+linux_cpu_bucket="https://download.pytorch.org/whl/cpu"
 darwin_bucket="https://download.pytorch.org/whl/cpu"
 
 url_and_key_list=(
@@ -23,10 +23,10 @@ url_and_key_list=(
   "aarch64-darwin-39 $darwin_bucket/torch-${version}-cp39-none-macosx_11_0_arm64.whl torch-${version}-cp39-none-macosx_11_0_arm64.whl"
   "aarch64-darwin-310 $darwin_bucket/torch-${version}-cp310-none-macosx_11_0_arm64.whl torch-${version}-cp310-none-macosx_11_0_arm64.whl"
   "aarch64-darwin-311 $darwin_bucket/torch-${version}-cp311-none-macosx_11_0_arm64.whl torch-${version}-cp311-none-macosx_11_0_arm64.whl"
-  "aarch64-linux-38 $linux_cpu_bucket/torch-${version}-cp38-cp38-manylinux2014_aarch64.whl torch-${version}-cp38-cp38-manylinux2014_aarch64.whl"
-  "aarch64-linux-39 $linux_cpu_bucket/torch-${version}-cp39-cp39-manylinux2014_aarch64.whl torch-${version}-cp39-cp39-manylinux2014_aarch64.whl"
-  "aarch64-linux-310 $linux_cpu_bucket/torch-${version}-cp310-cp310-manylinux2014_aarch64.whl torch-${version}-cp310-cp310-manylinux2014_aarch64.whl"
-  "aarch64-linux-311 $linux_cpu_bucket/torch-${version}-cp311-cp311-manylinux2014_aarch64.whl torch-${version}-cp311-cp311-manylinux2014_aarch64.whl"
+  "aarch64-linux-38 $linux_cpu_bucket/torch-${version}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+  "aarch64-linux-39 $linux_cpu_bucket/torch-${version}-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+  "aarch64-linux-310 $linux_cpu_bucket/torch-${version}-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
+  "aarch64-linux-311 $linux_cpu_bucket/torch-${version}-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl torch-${version}-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl"
 )
 
 hashfile="binary-hashes-$version.nix"
diff --git a/pkgs/development/python-modules/torchaudio/bin.nix b/pkgs/development/python-modules/torchaudio/bin.nix
index ec2e680e948e..5ad263a8df67 100644
--- a/pkgs/development/python-modules/torchaudio/bin.nix
+++ b/pkgs/development/python-modules/torchaudio/bin.nix
@@ -6,6 +6,9 @@
 , cudaPackages
 , fetchurl
 , ffmpeg_4
+, ffmpeg_5
+, ffmpeg_6
+, sox
 , pythonAtLeast
 , pythonOlder
 , python
@@ -14,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.0.2";
+  version = "2.1.1";
   format = "wheel";
 
   src =
@@ -35,7 +38,11 @@ buildPythonPackage rec {
     # libnvToolsExt-$hash.so.1
     cuda_nvtx
 
-    ffmpeg_4.lib
+    # We need to patch the lib/_torchaudio_ffmpeg[4-6]
+    ffmpeg_4.dev
+    ffmpeg_5.dev
+    ffmpeg_6.dev
+    sox
   ];
 
   nativeBuildInputs = [
diff --git a/pkgs/development/python-modules/torchaudio/binary-hashes.nix b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
index 35bc1cfce930..21241253da3f 100644
--- a/pkgs/development/python-modules/torchaudio/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchaudio/binary-hashes.nix
@@ -6,86 +6,86 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "2.0.2" = {
+  "2.1.1" = {
     x86_64-linux-38 = {
-      name = "torchaudio-2.0.2-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchaudio-2.0.2%2Bcu118-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-lU3njk8Gb+lvpvQYtfHX1Y0bD7z2otNzDwQaL9eW93I=";
+      name = "torchaudio-2.1.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.1.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-GM8TlEbiLP2K+jglzkkvPPEf00LxcI7o9K+EtIKLTGA=";
     };
     x86_64-linux-39 = {
-      name = "torchaudio-2.0.2-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchaudio-2.0.2%2Bcu118-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-MixBw26OYv03qzURSmeSGuVCvNlA1YPNE+DhUUHISPk=";
+      name = "torchaudio-2.1.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.1.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-4YdH1mdew+TFmvpA23Lp5+pNcVy5KxQ9pV31lhPAPTA=";
     };
     x86_64-linux-310 = {
-      name = "torchaudio-2.0.2-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchaudio-2.0.2%2Bcu118-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-JmkmReoGGgBcV+xYGi0EJSEKxrqfkj7fEcybDvOhEek=";
+      name = "torchaudio-2.1.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.1.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-7/gmDgL4imlKlksrtvY3pq8xB3h9kH6uflgBgWAzv6c=";
     };
     x86_64-linux-311 = {
-      name = "torchaudio-2.0.2-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchaudio-2.0.2%2Bcu118-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-e8C1Cg2DokvcORYnDCOTQ0WshDUd92vTuwiDS9snHfY=";
+      name = "torchaudio-2.1.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchaudio-2.1.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-qq2dkQ5CDBlVsIpa8yatlplLitDQWW/L9gGxVYDof6c=";
     };
     x86_64-darwin-38 = {
-      name = "torchaudio-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      hash = "sha256-qCg91hxXnqWxTWdzu8C/hFc7ErN/BfArtLJCXXd2coQ=";
+      name = "torchaudio-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp38-cp38-macosx_10_13_x86_64.whl";
+      hash = "sha256-b8d8SNB5zSbvQMYTqm8xxcePD4FiEWYqJ4Vsf1RPHMw=";
     };
     x86_64-darwin-39 = {
-      name = "torchaudio-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      hash = "sha256-ETihw52iRFocrKIN3OHnfJZX6SJj6zQ3YCT1F/UoTUs=";
+      name = "torchaudio-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp39-cp39-macosx_10_13_x86_64.whl";
+      hash = "sha256-f/BYndc9vepm7SHIF8ttHvjs0+6EmXrqf8DjUroWjkg=";
     };
     x86_64-darwin-310 = {
-      name = "torchaudio-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      hash = "sha256-gMZNq7nYwzvG8qjgx+vhfqh/UCiTHA1qL3O54WtSctA=";
+      name = "torchaudio-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp310-cp310-macosx_10_13_x86_64.whl";
+      hash = "sha256-JPpYcPYgmU5FiEUtVO3LL/tfUJ1+42ugToxo6yiv/Io=";
     };
     x86_64-darwin-311 = {
-      name = "torchaudio-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      hash = "sha256-psuoDZqzouwTF83Fy8BlShiaJuPYso75+DM2FZ/V5ek=";
+      name = "torchaudio-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp311-cp311-macosx_10_13_x86_64.whl";
+      hash = "sha256-7j9/B9sCOprjYGpjDbRyJ+d/IOYEyZQGdnzsWKE5uW4=";
     };
     aarch64-darwin-38 = {
-      name = "torchaudio-2.0.2-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-KMm+gwYI+TyQZ3Dre0iAli+P75vVJ1rFtIyFDzzEvDI=";
+      name = "torchaudio-2.1.1-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-L+SgvGuooE9xrLxmT93CtzY3y/G+NFxkM0KprtNDVDo=";
     };
     aarch64-darwin-39 = {
-      name = "torchaudio-2.0.2-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-3l2Uy4MFwAJo37xXbKfkRfQIkeAkqeXijGOtn4UeVBo=";
+      name = "torchaudio-2.1.1-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-VwmUP7JnXIVDvrYfAz+50AGr8VXxUJrzPhO8uD9UPQo=";
     };
     aarch64-darwin-310 = {
-      name = "torchaudio-2.0.2-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-FhlnNQD+CK6WtxlS8D7Px059CEPNmIIZPQZCqCck9Tc=";
+      name = "torchaudio-2.1.1-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-fNRlvgb9OHNq2n1MCG8M3SSd4ot1ddEDXOJd+ziW+kw=";
     };
     aarch64-darwin-311 = {
-      name = "torchaudio-2.0.2-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.0.2-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-FTJxMrKPNJY7qm/hgTAwpjTSWBqpyhIPcwwej6vcEQI=";
+      name = "torchaudio-2.1.1-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchaudio-2.1.1-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-+tHGDPveoxu7KgDk0fFTYEYG3N00vJdPQ8YvpuJpYns=";
     };
     aarch64-linux-38 = {
-      name = "torchaudio-2.0.2-cp38-cp38-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torchaudio-2.0.2-cp38-cp38-manylinux2014_aarch64.whl";
-      hash = "sha256-7gjsMDBQQFmY50oKNkmu5NFkCMLrS7H4x6cmMYsc4bc=";
+      name = "torchaudio-2.1.1-cp38-cp38-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/torchaudio-2.1.1-cp38-cp38-linux_aarch64.whl";
+      hash = "sha256-bnhAF5QfPoGtvvJGIkqT1eXSZocF3NxFlWZo3nuiLTI=";
     };
     aarch64-linux-39 = {
-      name = "torchaudio-2.0.2-cp39-cp39-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torchaudio-2.0.2-cp39-cp39-manylinux2014_aarch64.whl";
-      hash = "sha256-p08z2gs8U7dw9YOgLKvVkZbwift3pl6znNXYEbWiHWM=";
+      name = "torchaudio-2.1.1-cp39-cp39-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/torchaudio-2.1.1-cp39-cp39-linux_aarch64.whl";
+      hash = "sha256-FXE1qdeNwSe7J0XEZUqn6hQd3Huzn8rSHf+Oq6VXihQ=";
     };
     aarch64-linux-310 = {
-      name = "torchaudio-2.0.2-cp310-cp310-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torchaudio-2.0.2-cp310-cp310-manylinux2014_aarch64.whl";
-      hash = "sha256-2t8je0/RVaPSE73+/+3tR/WlU9ODgXUAQ4tE8k+lOFE=";
+      name = "torchaudio-2.1.1-cp310-cp310-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/torchaudio-2.1.1-cp310-cp310-linux_aarch64.whl";
+      hash = "sha256-dK3UoOX6BJmO1SoBN9Ox2cKtJdqCEsRt8O1z+h0Uanc=";
     };
     aarch64-linux-311 = {
-      name = "torchaudio-2.0.2-cp311-cp311-manylinux2014_aarch64.whl";
-      url = "https://download.pytorch.org/whl/torchaudio-2.0.2-cp311-cp311-manylinux2014_aarch64.whl";
-      hash = "sha256-sirOqh7FozEMwVZC0Z3QDVOnzjmbkJatHeoLJOUJevM=";
+      name = "torchaudio-2.1.1-cp311-cp311-manylinux2014_aarch64.whl";
+      url = "https://download.pytorch.org/whl/torchaudio-2.1.1-cp311-cp311-linux_aarch64.whl";
+      hash = "sha256-6toEKY1TfF0CddoRIsRxmMF31CYetaXSI24Rqg6FyB8=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchaudio/default.nix b/pkgs/development/python-modules/torchaudio/default.nix
index 0b38925e0a2b..4ff44d123a48 100644
--- a/pkgs/development/python-modules/torchaudio/default.nix
+++ b/pkgs/development/python-modules/torchaudio/default.nix
@@ -2,9 +2,12 @@
 , buildPythonPackage
 , fetchFromGitHub
 , cmake
+, symlinkJoin
+, ffmpeg-full
 , pkg-config
 , ninja
 , pybind11
+, sox
 , torch
 , cudaSupport ? torch.cudaSupport
 , cudaPackages
@@ -12,13 +15,13 @@
 
 buildPythonPackage rec {
   pname = "torchaudio";
-  version = "2.0.2";
+  version = "2.1.1";
 
   src = fetchFromGitHub {
     owner = "pytorch";
     repo = "audio";
-    rev = "v${version}";
-    hash = "sha256-9lB4gLXq0nXHT1+DNOlbJQqNndt2I6kVoNwhMO/2qlE=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5UlnOGXXFu1p9M5B+Ixc9DW5hLZ1nskv81Y+McbWu6Q=";
   };
 
   postPatch = ''
@@ -31,6 +34,16 @@ buildPythonPackage rec {
     TORCH_CUDA_ARCH_LIST = "${lib.concatStringsSep ";" torch.cudaCapabilities}";
   };
 
+  # https://github.com/pytorch/audio/blob/v2.1.0/docs/source/build.linux.rst#optional-build-torchaudio-with-a-custom-built-ffmpeg
+  FFMPEG_ROOT = symlinkJoin {
+    name = "ffmpeg";
+    paths = [
+      ffmpeg-full.bin
+      ffmpeg-full.dev
+      ffmpeg-full.lib
+    ];
+  };
+
   nativeBuildInputs = [
     cmake
     pkg-config
@@ -38,8 +51,11 @@ buildPythonPackage rec {
   ] ++ lib.optionals cudaSupport [
     cudaPackages.cuda_nvcc
   ];
+
   buildInputs = [
+    ffmpeg-full
     pybind11
+    sox
   ] ++ lib.optionals cudaSupport [
     cudaPackages.libcurand.dev
     cudaPackages.libcurand.lib
@@ -52,6 +68,7 @@ buildPythonPackage rec {
     cudaPackages.libcufft.dev
     cudaPackages.libcufft.lib
   ];
+
   propagatedBuildInputs = [
     torch
   ];
diff --git a/pkgs/development/python-modules/torchaudio/prefetch.sh b/pkgs/development/python-modules/torchaudio/prefetch.sh
index 0777d3f2b56a..c0be5710121b 100755
--- a/pkgs/development/python-modules/torchaudio/prefetch.sh
+++ b/pkgs/development/python-modules/torchaudio/prefetch.sh
@@ -5,7 +5,7 @@ set -eou pipefail
 
 version=$1
 
-linux_cuda_version="cu118"
+linux_cuda_version="cu121"
 linux_cuda_bucket="https://download.pytorch.org/whl/${linux_cuda_version}"
 linux_cpu_bucket="https://download.pytorch.org/whl"
 darwin_bucket="https://download.pytorch.org/whl/cpu"
@@ -15,18 +15,18 @@ url_and_key_list=(
   "x86_64-linux-39 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp39-cp39-linux_x86_64.whl torchaudio-${version}-cp39-cp39-linux_x86_64.whl"
   "x86_64-linux-310 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp310-cp310-linux_x86_64.whl torchaudio-${version}-cp310-cp310-linux_x86_64.whl"
   "x86_64-linux-311 $linux_cuda_bucket/torchaudio-${version}%2B${linux_cuda_version}-cp311-cp311-linux_x86_64.whl torchaudio-${version}-cp311-cp311-linux_x86_64.whl"
-  "x86_64-darwin-38 $darwin_bucket/torchaudio-${version}-cp38-cp38-macosx_10_9_x86_64.whl torchaudio-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-39 $darwin_bucket/torchaudio-${version}-cp39-cp39-macosx_10_9_x86_64.whl torchaudio-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-310 $darwin_bucket/torchaudio-${version}-cp310-cp310-macosx_10_9_x86_64.whl torchaudio-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-311 $darwin_bucket/torchaudio-${version}-cp311-cp311-macosx_10_9_x86_64.whl torchaudio-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-38 $darwin_bucket/torchaudio-${version}-cp38-cp38-macosx_10_13_x86_64.whl torchaudio-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-39 $darwin_bucket/torchaudio-${version}-cp39-cp39-macosx_10_13_x86_64.whl torchaudio-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-310 $darwin_bucket/torchaudio-${version}-cp310-cp310-macosx_10_13_x86_64.whl torchaudio-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-311 $darwin_bucket/torchaudio-${version}-cp311-cp311-macosx_10_13_x86_64.whl torchaudio-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
   "aarch64-darwin-38 $darwin_bucket/torchaudio-${version}-cp38-cp38-macosx_11_0_arm64.whl torchaudio-${version}-cp38-cp38-macosx_11_0_arm64.whl"
   "aarch64-darwin-39 $darwin_bucket/torchaudio-${version}-cp39-cp39-macosx_11_0_arm64.whl torchaudio-${version}-cp39-cp39-macosx_11_0_arm64.whl"
   "aarch64-darwin-310 $darwin_bucket/torchaudio-${version}-cp310-cp310-macosx_11_0_arm64.whl torchaudio-${version}-cp310-cp310-macosx_11_0_arm64.whl"
   "aarch64-darwin-311 $darwin_bucket/torchaudio-${version}-cp311-cp311-macosx_11_0_arm64.whl torchaudio-${version}-cp311-cp311-macosx_11_0_arm64.whl"
-  "aarch64-linux-38 $linux_cpu_bucket/torchaudio-${version}-cp38-cp38-manylinux2014_aarch64.whl torchaudio-${version}-cp38-cp38-manylinux2014_aarch64.whl"
-  "aarch64-linux-39 $linux_cpu_bucket/torchaudio-${version}-cp39-cp39-manylinux2014_aarch64.whl torchaudio-${version}-cp39-cp39-manylinux2014_aarch64.whl"
-  "aarch64-linux-310 $linux_cpu_bucket/torchaudio-${version}-cp310-cp310-manylinux2014_aarch64.whl torchaudio-${version}-cp310-cp310-manylinux2014_aarch64.whl"
-  "aarch64-linux-311 $linux_cpu_bucket/torchaudio-${version}-cp311-cp311-manylinux2014_aarch64.whl torchaudio-${version}-cp311-cp311-manylinux2014_aarch64.whl"
+  "aarch64-linux-38 $linux_cpu_bucket/torchaudio-${version}-cp38-cp38-linux_aarch64.whl torchaudio-${version}-cp38-cp38-manylinux2014_aarch64.whl"
+  "aarch64-linux-39 $linux_cpu_bucket/torchaudio-${version}-cp39-cp39-linux_aarch64.whl torchaudio-${version}-cp39-cp39-manylinux2014_aarch64.whl"
+  "aarch64-linux-310 $linux_cpu_bucket/torchaudio-${version}-cp310-cp310-linux_aarch64.whl torchaudio-${version}-cp310-cp310-manylinux2014_aarch64.whl"
+  "aarch64-linux-311 $linux_cpu_bucket/torchaudio-${version}-cp311-cp311-linux_aarch64.whl torchaudio-${version}-cp311-cp311-manylinux2014_aarch64.whl"
 )
 
 hashfile=binary-hashes-"$version".nix
diff --git a/pkgs/development/python-modules/torchvision/bin.nix b/pkgs/development/python-modules/torchvision/bin.nix
index e1ec53671141..574476ef8777 100644
--- a/pkgs/development/python-modules/torchvision/bin.nix
+++ b/pkgs/development/python-modules/torchvision/bin.nix
@@ -16,7 +16,7 @@ let
   pyVerNoDot = builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion;
   srcs = import ./binary-hashes.nix version;
   unsupported = throw "Unsupported system";
-  version = "0.15.2";
+  version = "0.16.1";
 in buildPythonPackage {
   inherit version;
 
diff --git a/pkgs/development/python-modules/torchvision/binary-hashes.nix b/pkgs/development/python-modules/torchvision/binary-hashes.nix
index abcb5780bf47..f560d78baaa4 100644
--- a/pkgs/development/python-modules/torchvision/binary-hashes.nix
+++ b/pkgs/development/python-modules/torchvision/binary-hashes.nix
@@ -6,66 +6,66 @@
 # To add a new version, run "prefetch.sh 'new-version'" to paste the generated file as follows.
 
 version : builtins.getAttr version {
-  "0.15.2" = {
+  "0.16.1" = {
     x86_64-linux-38 = {
-      name = "torchvision-0.15.2-cp38-cp38-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchvision-0.15.2%2Bcu118-cp38-cp38-linux_x86_64.whl";
-      hash = "sha256-r2gH1eWZ/lOByRYjWlWBQH6FDrd8PUOJnzehUR/4HMA=";
+      name = "torchvision-0.16.1-cp38-cp38-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.16.1%2Bcu121-cp38-cp38-linux_x86_64.whl";
+      hash = "sha256-xPO1sRtw2yyLBlrp3kduqc6yrVc8fFgGi+CXWkABgrQ=";
     };
     x86_64-linux-39 = {
-      name = "torchvision-0.15.2-cp39-cp39-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchvision-0.15.2%2Bcu118-cp39-cp39-linux_x86_64.whl";
-      hash = "sha256-8sb1oQC8+QILgvXUyHzX4mrwQJzzO5D7eXsRJ9zULeY=";
+      name = "torchvision-0.16.1-cp39-cp39-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.16.1%2Bcu121-cp39-cp39-linux_x86_64.whl";
+      hash = "sha256-1voLyIMnBZI9kBleyb819IhwW0nAFEizcCy3t9ebVPk=";
     };
     x86_64-linux-310 = {
-      name = "torchvision-0.15.2-cp310-cp310-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchvision-0.15.2%2Bcu118-cp310-cp310-linux_x86_64.whl";
-      hash = "sha256-GcpKtdYXm75Tz/ed8ahV7mUzwoYd3HOJ9oNJ2Ln4MCo=";
+      name = "torchvision-0.16.1-cp310-cp310-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.16.1%2Bcu121-cp310-cp310-linux_x86_64.whl";
+      hash = "sha256-AglL7N9dxCpq/iGQ4ayz8y3ZwtOt2Cfd/pG1RMwjrfQ=";
     };
     x86_64-linux-311 = {
-      name = "torchvision-0.15.2-cp311-cp311-linux_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cu118/torchvision-0.15.2%2Bcu118-cp311-cp311-linux_x86_64.whl";
-      hash = "sha256-3vmvR+vCytVcWqLa0SMNz0Jhgz7W34pz6Dm8Izdk8J4=";
+      name = "torchvision-0.16.1-cp311-cp311-linux_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cu121/torchvision-0.16.1%2Bcu121-cp311-cp311-linux_x86_64.whl";
+      hash = "sha256-tO7B2cBOsDa05yrqX0OuM8BkFNqdNjkb0E/9Ma2C+6k=";
     };
     x86_64-darwin-38 = {
-      name = "torchvision-0.15.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp38-cp38-macosx_10_9_x86_64.whl";
-      hash = "sha256-jxJBW2htuohPsIb1OsgD9pK+WlzdinWPUIErMP/+ouQ=";
+      name = "torchvision-0.16.1-cp38-cp38-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp38-cp38-macosx_10_13_x86_64.whl";
+      hash = "sha256-TyytYh+5bPEOKa+T4WyYsyJr3VOucStX6HPD3q8GFhc=";
     };
     x86_64-darwin-39 = {
-      name = "torchvision-0.15.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp39-cp39-macosx_10_9_x86_64.whl";
-      hash = "sha256-R5AmD89HikHH7MYKbVIAqIFZ/djXVunynw+MWcSmemg=";
+      name = "torchvision-0.16.1-cp39-cp39-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp39-cp39-macosx_10_13_x86_64.whl";
+      hash = "sha256-8U0gHDcXbcQQbux2sinWWFoVBSZrjOqZ0zZv04iXt8A=";
     };
     x86_64-darwin-310 = {
-      name = "torchvision-0.15.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp310-cp310-macosx_10_9_x86_64.whl";
-      hash = "sha256-d1QIh3ToEMVnKxQqRdzyCxvZhqWn2pD4ZgxD3EP7hQw=";
+      name = "torchvision-0.16.1-cp310-cp310-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp310-cp310-macosx_10_13_x86_64.whl";
+      hash = "sha256-mHEyeV5cA3y3TnvjWmk5mf2y9gMVImbuFbgCBug6Www=";
     };
     x86_64-darwin-311 = {
-      name = "torchvision-0.15.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp311-cp311-macosx_10_9_x86_64.whl";
-      hash = "sha256-XzX2vVvMRWjmUi5BN/pg/McvT6PmFTIcJs2H6FWs05g=";
+      name = "torchvision-0.16.1-cp311-cp311-macosx_10_9_x86_64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl";
+      hash = "sha256-Supc9JHGwhscvbsb8qODilnU25OtX0kBmmVk08pxJ8c=";
     };
     aarch64-darwin-38 = {
-      name = "torchvision-0.15.2-cp38-cp38-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp38-cp38-macosx_11_0_arm64.whl";
-      hash = "sha256-MSEcAfi47DO4pjgye1RjIS55oD5DyJX4gEn5evG9Ev0=";
+      name = "torchvision-0.16.1-cp38-cp38-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp38-cp38-macosx_11_0_arm64.whl";
+      hash = "sha256-HWFLPJ4t6c11zA5OGSP8+7zZ/bnwigu7v34TXkoKHPo=";
     };
     aarch64-darwin-39 = {
-      name = "torchvision-0.15.2-cp39-cp39-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp39-cp39-macosx_11_0_arm64.whl";
-      hash = "sha256-mHq2IiW0FRoR5T/QYVDFJYztJKydfFR+Dkq2+8qSpc4=";
+      name = "torchvision-0.16.1-cp39-cp39-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp39-cp39-macosx_11_0_arm64.whl";
+      hash = "sha256-oV6IqTp1Acx1t2Gi3NB6rtqvnL+vSMiv+oyYmJ7LsZ0=";
     };
     aarch64-darwin-310 = {
-      name = "torchvision-0.15.2-cp310-cp310-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp310-cp310-macosx_11_0_arm64.whl";
-      hash = "sha256-N+sTjhP2ISU3owCawhhpVIOmNcQEtswdjg0Nl4AmqG0=";
+      name = "torchvision-0.16.1-cp310-cp310-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp310-cp310-macosx_11_0_arm64.whl";
+      hash = "sha256-JdpqeyLqA0j2LEXsDa8VdzEJa6vK5l0iJAQIGvluCFw=";
     };
     aarch64-darwin-311 = {
-      name = "torchvision-0.15.2-cp311-cp311-macosx_11_0_arm64.whl";
-      url = "https://download.pytorch.org/whl/cpu/torchvision-0.15.2-cp311-cp311-macosx_11_0_arm64.whl";
-      hash = "sha256-dXUFoKsr5wlsudK/RyMgLJcczt23LHlSp+h393PeD4o=";
+      name = "torchvision-0.16.1-cp311-cp311-macosx_11_0_arm64.whl";
+      url = "https://download.pytorch.org/whl/cpu/torchvision-0.16.1-cp311-cp311-macosx_11_0_arm64.whl";
+      hash = "sha256-M5F1cWdjes4+8zpnydXvhrH4y9k+qlutRe688mbqYIk=";
     };
   };
 }
diff --git a/pkgs/development/python-modules/torchvision/default.nix b/pkgs/development/python-modules/torchvision/default.nix
index 401e415e2812..223130918af5 100644
--- a/pkgs/development/python-modules/torchvision/default.nix
+++ b/pkgs/development/python-modules/torchvision/default.nix
@@ -40,7 +40,7 @@ let
   };
 
   pname = "torchvision";
-  version = "0.15.2";
+  version = "0.16.1";
 in
 buildPythonPackage {
   inherit pname version;
@@ -49,7 +49,7 @@ buildPythonPackage {
     owner = "pytorch";
     repo = "vision";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KNbOgd6PCINZqZ24c/Ev+ODux3ik5iUlzem9uUfQArM=";
+    hash = "sha256-TsYBDtedTQ3+F3LM4JwzkGH2XOr0WSp1Au5YoR07rSA=";
   };
 
   nativeBuildInputs = [ libpng ninja which ] ++ lib.optionals cudaSupport [ cuda-native-redist ];
diff --git a/pkgs/development/python-modules/torchvision/prefetch.sh b/pkgs/development/python-modules/torchvision/prefetch.sh
index 17dd15f6742e..e80718a50530 100755
--- a/pkgs/development/python-modules/torchvision/prefetch.sh
+++ b/pkgs/development/python-modules/torchvision/prefetch.sh
@@ -5,7 +5,7 @@ set -eou pipefail
 
 version=$1
 
-linux_cuda_version="cu118"
+linux_cuda_version="cu121"
 linux_bucket="https://download.pytorch.org/whl/${linux_cuda_version}"
 darwin_bucket="https://download.pytorch.org/whl/cpu"
 
@@ -14,10 +14,10 @@ url_and_key_list=(
   "x86_64-linux-39 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp39-cp39-linux_x86_64.whl torchvision-${version}-cp39-cp39-linux_x86_64.whl"
   "x86_64-linux-310 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp310-cp310-linux_x86_64.whl torchvision-${version}-cp310-cp310-linux_x86_64.whl"
   "x86_64-linux-311 $linux_bucket/torchvision-${version}%2B${linux_cuda_version}-cp311-cp311-linux_x86_64.whl torchvision-${version}-cp311-cp311-linux_x86_64.whl"
-  "x86_64-darwin-38 $darwin_bucket/torchvision-${version}-cp38-cp38-macosx_10_9_x86_64.whl torchvision-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-39 $darwin_bucket/torchvision-${version}-cp39-cp39-macosx_10_9_x86_64.whl torchvision-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-310 $darwin_bucket/torchvision-${version}-cp310-cp310-macosx_10_9_x86_64.whl torchvision-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
-  "x86_64-darwin-311 $darwin_bucket/torchvision-${version}-cp311-cp311-macosx_10_9_x86_64.whl torchvision-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-38 $darwin_bucket/torchvision-${version}-cp38-cp38-macosx_10_13_x86_64.whl torchvision-${version}-cp38-cp38-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-39 $darwin_bucket/torchvision-${version}-cp39-cp39-macosx_10_13_x86_64.whl torchvision-${version}-cp39-cp39-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-310 $darwin_bucket/torchvision-${version}-cp310-cp310-macosx_10_13_x86_64.whl torchvision-${version}-cp310-cp310-macosx_10_9_x86_64.whl"
+  "x86_64-darwin-311 $darwin_bucket/torchvision-${version}-cp311-cp311-macosx_10_13_x86_64.whl torchvision-${version}-cp311-cp311-macosx_10_9_x86_64.whl"
   "aarch64-darwin-38 $darwin_bucket/torchvision-${version}-cp38-cp38-macosx_11_0_arm64.whl torchvision-${version}-cp38-cp38-macosx_11_0_arm64.whl"
   "aarch64-darwin-39 $darwin_bucket/torchvision-${version}-cp39-cp39-macosx_11_0_arm64.whl torchvision-${version}-cp39-cp39-macosx_11_0_arm64.whl"
   "aarch64-darwin-310 $darwin_bucket/torchvision-${version}-cp310-cp310-macosx_11_0_arm64.whl torchvision-${version}-cp310-cp310-macosx_11_0_arm64.whl"
diff --git a/pkgs/development/python-modules/tuf/default.nix b/pkgs/development/python-modules/tuf/default.nix
new file mode 100644
index 000000000000..b6965a7f42e2
--- /dev/null
+++ b/pkgs/development/python-modules/tuf/default.nix
@@ -0,0 +1,61 @@
+{ lib
+, buildPythonPackage
+, ed25519
+, fetchFromGitHub
+, hatchling
+, pytestCheckHook
+, pythonOlder
+, requests
+, securesystemslib
+}:
+
+buildPythonPackage rec {
+  pname = "tuf";
+  version = "3.1.0";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "theupdateframework";
+    repo = "python-tuf";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-IGF/8RdX7Oxl6gdqPGN1w/6q4zaei+MnYXBZepB4KUA=";
+  };
+
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace "hatchling==" "hatchling>="
+  '';
+
+  nativeBuildInputs = [
+    hatchling
+  ];
+
+  propagatedBuildInputs = [
+    requests
+    securesystemslib
+  ] ++ securesystemslib.optional-dependencies.pynacl
+  ++ securesystemslib.optional-dependencies.crypto;
+
+  nativeCheckInputs = [
+    ed25519
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "tuf"
+  ];
+
+  preCheck = ''
+    cd tests
+  '';
+
+  meta = with lib; {
+    description = "Python reference implementation of The Update Framework (TUF)";
+    homepage = "https://github.com/theupdateframework/python-tuf";
+    changelog = "https://github.com/theupdateframework/python-tuf/blob/v${version}/docs/CHANGELOG.md";
+    license = with licenses; [ asl20 mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/yamllint/default.nix b/pkgs/development/python-modules/yamllint/default.nix
index 7db56a0d617a..c5664846dcfc 100644
--- a/pkgs/development/python-modules/yamllint/default.nix
+++ b/pkgs/development/python-modules/yamllint/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "yamllint";
-  version = "1.32.0";
+  version = "1.33.0";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "adrienverge";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-DtIQ/gUBFQBm0OOJC2c/ONn2ZKsMAzdwMx7FbUo+uIU=";
+    hash = "sha256-hWN5PhEAhckp250Dj7h5PpyH/E1jCi38O4VmMYgPtzE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/skaware-packages/s6-dns/default.nix b/pkgs/development/skaware-packages/s6-dns/default.nix
index d5ece13451c5..b75a03b65a78 100644
--- a/pkgs/development/skaware-packages/s6-dns/default.nix
+++ b/pkgs/development/skaware-packages/s6-dns/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6-dns";
-  version = "2.3.6.0";
-  sha256 = "AefHUyzF56a4kVRhsBwvcGt/IhF4KSPiXqpU7gxtx8c=";
+  version = "2.3.7.0";
+  sha256 = "rusndssjTpA5enjGqjclkkqgcQwQNcpw3VYouExnAdE=";
 
   description = "A suite of DNS client programs and libraries for Unix systems";
 
diff --git a/pkgs/development/skaware-packages/s6-networking/default.nix b/pkgs/development/skaware-packages/s6-networking/default.nix
index 9cddabb58591..8c3e753fc2aa 100644
--- a/pkgs/development/skaware-packages/s6-networking/default.nix
+++ b/pkgs/development/skaware-packages/s6-networking/default.nix
@@ -19,8 +19,8 @@ assert sslSupportEnabled -> sslLibs ? ${sslSupport};
 
 buildPackage {
   pname = "s6-networking";
-  version = "2.6.0.0";
-  sha256 = "MdHWj7BdY5zr6VFLui9npU5YAfJsDRYvh1XNSxYuGLA=";
+  version = "2.7.0.0";
+  sha256 = "mf1uP5PW1qlb9+l4lVt9BTYpWReUsGjtogBKuLSQVVI=";
 
   description = "A suite of small networking utilities for Unix systems";
 
diff --git a/pkgs/development/skaware-packages/s6/default.nix b/pkgs/development/skaware-packages/s6/default.nix
index 8a1b3aa87a6a..e879bf6204d6 100644
--- a/pkgs/development/skaware-packages/s6/default.nix
+++ b/pkgs/development/skaware-packages/s6/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "s6";
-  version = "2.12.0.0";
-  sha256 = "sha256-mBjDqeIYGSQGJw9B00K+23oZ8Z3gBbqzxitACTAz72w=";
+  version = "2.12.0.2";
+  sha256 = "qpF+/+Eq6XN5CQ91/aSfDV8PZ81lVDaEz/BtyIFyj4w=";
 
   description = "skarnet.org's small & secure supervision software suite";
 
diff --git a/pkgs/development/skaware-packages/skalibs/default.nix b/pkgs/development/skaware-packages/skalibs/default.nix
index 80db4b624826..a9af0cac6562 100644
--- a/pkgs/development/skaware-packages/skalibs/default.nix
+++ b/pkgs/development/skaware-packages/skalibs/default.nix
@@ -8,8 +8,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "skalibs";
-  version = "2.14.0.0";
-  sha256 = "p0X9NM+EvsdDmO/6G29MOcVXNnM5ObEmA45SstXcwdI=";
+  version = "2.14.0.1";
+  sha256 = "tD69s2+KjfQPGgjBOwg5O85J+vM05ioNuRmzrkr9FIg=";
 
   description = "A set of general-purpose C programming libraries";
 
diff --git a/pkgs/development/skaware-packages/tipidee/default.nix b/pkgs/development/skaware-packages/tipidee/default.nix
index 6b44516615a0..85a8440ef1ed 100644
--- a/pkgs/development/skaware-packages/tipidee/default.nix
+++ b/pkgs/development/skaware-packages/tipidee/default.nix
@@ -4,8 +4,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "tipidee";
-  version = "0.0.1.0";
-  sha256 = "sha256-rKi9IX9CcRhY4n44i2vDom9MIeuGxRAHF7u0C3nNvFU=";
+  version = "0.0.2.0";
+  sha256 = "5I+/gfvN8s4bf6Oi+5kzRndWeLV7movyRfznz0kNMoY=";
 
   description = "A HTTP 1.1 webserver, serving static files and CGI/NPH";
 
diff --git a/pkgs/development/tools/cocoapods/Gemfile-beta.lock b/pkgs/development/tools/cocoapods/Gemfile-beta.lock
index ec60a9ec8a05..0914cda26b4f 100644
--- a/pkgs/development/tools/cocoapods/Gemfile-beta.lock
+++ b/pkgs/development/tools/cocoapods/Gemfile-beta.lock
@@ -3,10 +3,15 @@ GEM
   specs:
     CFPropertyList (3.0.6)
       rexml
-    activesupport (7.0.8)
+    activesupport (7.1.2)
+      base64
+      bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
+      connection_pool (>= 2.2.5)
+      drb
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
+      mutex_m
       tzinfo (~> 2.0)
     addressable (2.8.5)
       public_suffix (>= 2.0.2, < 6.0)
@@ -14,13 +19,15 @@ GEM
       httpclient (~> 2.8, >= 2.8.3)
       json (>= 1.5.1)
     atomos (0.1.3)
+    base64 (0.2.0)
+    bigdecimal (3.1.4)
     claide (1.1.0)
-    cocoapods (1.13.0)
+    cocoapods (1.14.3)
       addressable (~> 2.8)
       claide (>= 1.0.2, < 2.0)
-      cocoapods-core (= 1.13.0)
+      cocoapods-core (= 1.14.3)
       cocoapods-deintegrate (>= 1.0.3, < 2.0)
-      cocoapods-downloader (>= 1.6.0, < 2.0)
+      cocoapods-downloader (>= 2.1, < 3.0)
       cocoapods-plugins (>= 1.0.0, < 2.0)
       cocoapods-search (>= 1.0.0, < 2.0)
       cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -33,7 +40,7 @@ GEM
       nap (~> 1.0)
       ruby-macho (>= 2.3.0, < 3.0)
       xcodeproj (>= 1.23.0, < 2.0)
-    cocoapods-core (1.13.0)
+    cocoapods-core (1.14.3)
       activesupport (>= 5.0, < 8)
       addressable (~> 2.8)
       algoliasearch (~> 1.0)
@@ -44,7 +51,7 @@ GEM
       public_suffix (~> 4.0)
       typhoeus (~> 1.0)
     cocoapods-deintegrate (1.0.5)
-    cocoapods-downloader (1.6.3)
+    cocoapods-downloader (2.1)
     cocoapods-plugins (1.0.0)
       nap
     cocoapods-search (1.0.1)
@@ -54,10 +61,13 @@ GEM
     cocoapods-try (1.2.0)
     colored2 (3.1.2)
     concurrent-ruby (1.2.2)
+    connection_pool (2.4.1)
+    drb (2.2.0)
+      ruby2_keywords
     escape (0.0.4)
     ethon (0.16.0)
       ffi (>= 1.15.0)
-    ffi (1.15.5)
+    ffi (1.16.3)
     fourflusher (2.3.1)
     fuzzy_match (2.0.4)
     gh_inspector (1.1.3)
@@ -67,13 +77,15 @@ GEM
     json (2.6.3)
     minitest (5.20.0)
     molinillo (0.8.0)
+    mutex_m (0.2.0)
     nanaimo (0.3.0)
     nap (1.1.0)
     netrc (0.11.0)
     public_suffix (4.0.7)
     rexml (3.2.6)
     ruby-macho (2.5.1)
-    typhoeus (1.4.0)
+    ruby2_keywords (0.0.5)
+    typhoeus (1.4.1)
       ethon (>= 0.9.0)
     tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
@@ -92,4 +104,4 @@ DEPENDENCIES
   cocoapods (>= 1.7.0.beta.1)
 
 BUNDLED WITH
-   2.3.20
+   2.4.20
diff --git a/pkgs/development/tools/cocoapods/Gemfile.lock b/pkgs/development/tools/cocoapods/Gemfile.lock
index 60028105ba77..a8ba0fcb8499 100644
--- a/pkgs/development/tools/cocoapods/Gemfile.lock
+++ b/pkgs/development/tools/cocoapods/Gemfile.lock
@@ -3,10 +3,15 @@ GEM
   specs:
     CFPropertyList (3.0.6)
       rexml
-    activesupport (7.0.8)
+    activesupport (7.1.2)
+      base64
+      bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
+      connection_pool (>= 2.2.5)
+      drb
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
+      mutex_m
       tzinfo (~> 2.0)
     addressable (2.8.5)
       public_suffix (>= 2.0.2, < 6.0)
@@ -14,13 +19,15 @@ GEM
       httpclient (~> 2.8, >= 2.8.3)
       json (>= 1.5.1)
     atomos (0.1.3)
+    base64 (0.2.0)
+    bigdecimal (3.1.4)
     claide (1.1.0)
-    cocoapods (1.13.0)
+    cocoapods (1.14.3)
       addressable (~> 2.8)
       claide (>= 1.0.2, < 2.0)
-      cocoapods-core (= 1.13.0)
+      cocoapods-core (= 1.14.3)
       cocoapods-deintegrate (>= 1.0.3, < 2.0)
-      cocoapods-downloader (>= 1.6.0, < 2.0)
+      cocoapods-downloader (>= 2.1, < 3.0)
       cocoapods-plugins (>= 1.0.0, < 2.0)
       cocoapods-search (>= 1.0.0, < 2.0)
       cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -33,7 +40,7 @@ GEM
       nap (~> 1.0)
       ruby-macho (>= 2.3.0, < 3.0)
       xcodeproj (>= 1.23.0, < 2.0)
-    cocoapods-core (1.13.0)
+    cocoapods-core (1.14.3)
       activesupport (>= 5.0, < 8)
       addressable (~> 2.8)
       algoliasearch (~> 1.0)
@@ -44,7 +51,7 @@ GEM
       public_suffix (~> 4.0)
       typhoeus (~> 1.0)
     cocoapods-deintegrate (1.0.5)
-    cocoapods-downloader (1.6.3)
+    cocoapods-downloader (2.1)
     cocoapods-plugins (1.0.0)
       nap
     cocoapods-search (1.0.1)
@@ -54,10 +61,13 @@ GEM
     cocoapods-try (1.2.0)
     colored2 (3.1.2)
     concurrent-ruby (1.2.2)
+    connection_pool (2.4.1)
+    drb (2.2.0)
+      ruby2_keywords
     escape (0.0.4)
     ethon (0.16.0)
       ffi (>= 1.15.0)
-    ffi (1.15.5)
+    ffi (1.16.3)
     fourflusher (2.3.1)
     fuzzy_match (2.0.4)
     gh_inspector (1.1.3)
@@ -67,13 +77,15 @@ GEM
     json (2.6.3)
     minitest (5.20.0)
     molinillo (0.8.0)
+    mutex_m (0.2.0)
     nanaimo (0.3.0)
     nap (1.1.0)
     netrc (0.11.0)
     public_suffix (4.0.7)
     rexml (3.2.6)
     ruby-macho (2.5.1)
-    typhoeus (1.4.0)
+    ruby2_keywords (0.0.5)
+    typhoeus (1.4.1)
       ethon (>= 0.9.0)
     tzinfo (2.0.6)
       concurrent-ruby (~> 1.0)
@@ -92,4 +104,4 @@ DEPENDENCIES
   cocoapods
 
 BUNDLED WITH
-   2.3.20
+   2.4.20
diff --git a/pkgs/development/tools/cocoapods/gemset-beta.nix b/pkgs/development/tools/cocoapods/gemset-beta.nix
index ddf14e02e7a2..46dd5efae932 100644
--- a/pkgs/development/tools/cocoapods/gemset-beta.nix
+++ b/pkgs/development/tools/cocoapods/gemset-beta.nix
@@ -1,14 +1,14 @@
 {
   activesupport = {
-    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+    dependencies = ["base64" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "minitest" "mutex_m" "tzinfo"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "188kbwkn1lbhz40ala8ykp20jzqphgc68g3d8flin8cqa2xid0s5";
+      sha256 = "1l6hmf99zgckpn812qfxfz60rbh0zixv1hxnxhjlg8942pvixn2v";
       type = "gem";
     };
-    version = "7.0.8";
+    version = "7.1.2";
   };
   addressable = {
     dependencies = ["public_suffix"];
@@ -42,6 +42,26 @@
     };
     version = "0.1.3";
   };
+  base64 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  bigdecimal = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07y615s8yldk3k13lmkhpk1k190lcqvmxmnjwgh4bzjan9xrc36y";
+      type = "gem";
+    };
+    version = "3.1.4";
+  };
   CFPropertyList = {
     dependencies = ["rexml"];
     groups = ["default"];
@@ -69,10 +89,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1mwcdg1i4126jf2qcsp4mhd1vqzqd8ck08wpyassz1sg0a8yxw4j";
+      sha256 = "1r2w719d5zfzl3wnc5npnjv4194b7gdh4vib09vifdm8yab14br3";
       type = "gem";
     };
-    version = "1.13.0";
+    version = "1.14.3";
   };
   cocoapods-core = {
     dependencies = ["activesupport" "addressable" "algoliasearch" "concurrent-ruby" "fuzzy_match" "nap" "netrc" "public_suffix" "typhoeus"];
@@ -80,10 +100,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1g944vch2mllh8lijbfgl0c2kn9gi5vsg9y9v67x0qca5b1bx4id";
+      sha256 = "04qyzcwkwbm7l4kjp6m8g2pvsryfvsllwpqf0mxfnzwbdid40zwn";
       type = "gem";
     };
-    version = "1.13.0";
+    version = "1.14.3";
   };
   cocoapods-deintegrate = {
     groups = ["default"];
@@ -100,10 +120,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0jgipkiah3z6qb9ax6qac3b2m1idavd5adc319k5rjsfddpfgszh";
+      sha256 = "1ldnwwsx44i2xsdmsmyz9xrar19lfy5s5xslvral1p3674dvwvmv";
       type = "gem";
     };
-    version = "1.6.3";
+    version = "2.1";
   };
   cocoapods-plugins = {
     dependencies = ["nap"];
@@ -167,6 +187,27 @@
     };
     version = "1.2.2";
   };
+  connection_pool = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  drb = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
   escape = {
     groups = ["default"];
     platforms = [];
@@ -193,10 +234,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
+      sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
       type = "gem";
     };
-    version = "1.15.5";
+    version = "1.16.3";
   };
   fourflusher = {
     groups = ["default"];
@@ -279,6 +320,16 @@
     };
     version = "0.8.0";
   };
+  mutex_m = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ma093ayps1m92q845hmpk0dmadicvifkbf05rpq9pifhin0rvxn";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
   nanaimo = {
     groups = ["default"];
     platforms = [];
@@ -339,16 +390,26 @@
     };
     version = "2.5.1";
   };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
   typhoeus = {
     dependencies = ["ethon"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz";
+      sha256 = "0z7gamf6s83wy0yqms3bi4srirn3fc0lc7n65lqanidxcj1xn5qw";
       type = "gem";
     };
-    version = "1.4.0";
+    version = "1.4.1";
   };
   tzinfo = {
     dependencies = ["concurrent-ruby"];
diff --git a/pkgs/development/tools/cocoapods/gemset.nix b/pkgs/development/tools/cocoapods/gemset.nix
index c0e5c50fa503..f1df94282b37 100644
--- a/pkgs/development/tools/cocoapods/gemset.nix
+++ b/pkgs/development/tools/cocoapods/gemset.nix
@@ -1,14 +1,14 @@
 {
   activesupport = {
-    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
+    dependencies = ["base64" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "minitest" "mutex_m" "tzinfo"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "188kbwkn1lbhz40ala8ykp20jzqphgc68g3d8flin8cqa2xid0s5";
+      sha256 = "1l6hmf99zgckpn812qfxfz60rbh0zixv1hxnxhjlg8942pvixn2v";
       type = "gem";
     };
-    version = "7.0.8";
+    version = "7.1.2";
   };
   addressable = {
     dependencies = ["public_suffix"];
@@ -40,6 +40,26 @@
     };
     version = "0.1.3";
   };
+  base64 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  bigdecimal = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07y615s8yldk3k13lmkhpk1k190lcqvmxmnjwgh4bzjan9xrc36y";
+      type = "gem";
+    };
+    version = "3.1.4";
+  };
   CFPropertyList = {
     dependencies = ["rexml"];
     groups = ["default"];
@@ -67,10 +87,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1mwcdg1i4126jf2qcsp4mhd1vqzqd8ck08wpyassz1sg0a8yxw4j";
+      sha256 = "1r2w719d5zfzl3wnc5npnjv4194b7gdh4vib09vifdm8yab14br3";
       type = "gem";
     };
-    version = "1.13.0";
+    version = "1.14.3";
   };
   cocoapods-core = {
     dependencies = ["activesupport" "addressable" "algoliasearch" "concurrent-ruby" "fuzzy_match" "nap" "netrc" "public_suffix" "typhoeus"];
@@ -78,10 +98,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1g944vch2mllh8lijbfgl0c2kn9gi5vsg9y9v67x0qca5b1bx4id";
+      sha256 = "04qyzcwkwbm7l4kjp6m8g2pvsryfvsllwpqf0mxfnzwbdid40zwn";
       type = "gem";
     };
-    version = "1.13.0";
+    version = "1.14.3";
   };
   cocoapods-deintegrate = {
     groups = ["default"];
@@ -98,10 +118,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0jgipkiah3z6qb9ax6qac3b2m1idavd5adc319k5rjsfddpfgszh";
+      sha256 = "1ldnwwsx44i2xsdmsmyz9xrar19lfy5s5xslvral1p3674dvwvmv";
       type = "gem";
     };
-    version = "1.6.3";
+    version = "2.1";
   };
   cocoapods-plugins = {
     dependencies = ["nap"];
@@ -161,6 +181,27 @@
     };
     version = "1.2.2";
   };
+  connection_pool = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g";
+      type = "gem";
+    };
+    version = "2.4.1";
+  };
+  drb = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
+      type = "gem";
+    };
+    version = "2.2.0";
+  };
   escape = {
     source = {
       remotes = ["https://rubygems.org"];
@@ -185,10 +226,10 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1862ydmclzy1a0cjbvm8dz7847d9rch495ib0zb64y84d3xd4bkg";
+      sha256 = "1yvii03hcgqj30maavddqamqy50h7y6xcn2wcyq72wn823zl4ckd";
       type = "gem";
     };
-    version = "1.15.5";
+    version = "1.16.3";
   };
   fourflusher = {
     groups = ["default"];
@@ -267,6 +308,16 @@
     };
     version = "0.8.0";
   };
+  mutex_m = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ma093ayps1m92q845hmpk0dmadicvifkbf05rpq9pifhin0rvxn";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
   nanaimo = {
     groups = ["default"];
     platforms = [];
@@ -323,16 +374,26 @@
     };
     version = "2.5.1";
   };
+  ruby2_keywords = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vz322p8n39hz3b4a9gkmz9y7a5jaz41zrm2ywf31dvkqm03glgz";
+      type = "gem";
+    };
+    version = "0.0.5";
+  };
   typhoeus = {
     dependencies = ["ethon"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1m22yrkmbj81rzhlny81j427qdvz57yk5wbcf3km0nf3bl6qiygz";
+      sha256 = "0z7gamf6s83wy0yqms3bi4srirn3fc0lc7n65lqanidxcj1xn5qw";
       type = "gem";
     };
-    version = "1.4.0";
+    version = "1.4.1";
   };
   tzinfo = {
     dependencies = ["concurrent-ruby"];
diff --git a/pkgs/development/tools/gemstash/Gemfile.lock b/pkgs/development/tools/gemstash/Gemfile.lock
index b7f9f963f3b8..eed8dffc6225 100644
--- a/pkgs/development/tools/gemstash/Gemfile.lock
+++ b/pkgs/development/tools/gemstash/Gemfile.lock
@@ -1,58 +1,100 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    activesupport (5.2.6.2)
+    activesupport (7.1.2)
+      base64
+      bigdecimal
       concurrent-ruby (~> 1.0, >= 1.0.2)
-      i18n (>= 0.7, < 2)
-      minitest (~> 5.1)
-      tzinfo (~> 1.1)
-    concurrent-ruby (1.1.9)
-    dalli (2.7.11)
-    faraday (0.17.5)
-      multipart-post (>= 1.2, < 3)
-    faraday_middleware (0.14.0)
-      faraday (>= 0.7.4, < 1.0)
-    gemstash (2.1.0)
-      activesupport (>= 4.2, < 6)
-      dalli (~> 2.7)
-      faraday (~> 0.9)
-      faraday_middleware (~> 0.10)
+      connection_pool (>= 2.2.5)
+      drb
+      i18n (>= 1.6, < 2)
+      minitest (>= 5.1)
+      mutex_m
+      tzinfo (~> 2.0)
+    base64 (0.2.0)
+    bigdecimal (3.1.4)
+    concurrent-ruby (1.2.2)
+    connection_pool (2.4.1)
+    dalli (3.2.6)
+    drb (2.2.0)
+      ruby2_keywords
+    faraday (1.10.3)
+      faraday-em_http (~> 1.0)
+      faraday-em_synchrony (~> 1.0)
+      faraday-excon (~> 1.1)
+      faraday-httpclient (~> 1.0)
+      faraday-multipart (~> 1.0)
+      faraday-net_http (~> 1.0)
+      faraday-net_http_persistent (~> 1.0)
+      faraday-patron (~> 1.0)
+      faraday-rack (~> 1.0)
+      faraday-retry (~> 1.0)
+      ruby2_keywords (>= 0.0.4)
+    faraday-em_http (1.0.0)
+    faraday-em_synchrony (1.0.0)
+    faraday-excon (1.1.0)
+    faraday-httpclient (1.0.1)
+    faraday-multipart (1.0.4)
+      multipart-post (~> 2)
+    faraday-net_http (1.0.1)
+    faraday-net_http_persistent (1.2.0)
+    faraday-patron (1.0.0)
+    faraday-rack (1.0.0)
+    faraday-retry (1.0.3)
+    faraday_middleware (1.2.0)
+      faraday (~> 1.0)
+    gemstash (2.7.1)
+      activesupport (>= 4.2, < 8)
+      dalli (>= 3.2.3, < 4)
+      faraday (>= 1, < 3)
+      faraday_middleware (~> 1.0)
       lru_redux (~> 1.1)
-      puma (~> 4.0)
+      psych (>= 3.2.1)
+      puma (~> 6.1)
       sequel (~> 5.0)
       server_health_check-rack (~> 0.1)
-      sinatra (>= 1.4, < 3.0)
+      sinatra (>= 1.4, < 4.0)
       sqlite3 (~> 1.3)
-      thor (~> 0.20)
-    i18n (1.10.0)
+      terminal-table (~> 3.0)
+      thor (~> 1.0)
+    i18n (1.14.1)
       concurrent-ruby (~> 1.0)
     lru_redux (1.1.0)
-    minitest (5.15.0)
-    multipart-post (2.1.1)
-    mustermann (1.1.1)
+    mini_portile2 (2.8.5)
+    minitest (5.20.0)
+    multipart-post (2.3.0)
+    mustermann (3.0.0)
       ruby2_keywords (~> 0.0.1)
-    nio4r (2.5.8)
-    puma (4.3.11)
+    mutex_m (0.2.0)
+    nio4r (2.6.1)
+    psych (5.1.1.1)
+      stringio
+    puma (6.4.0)
       nio4r (~> 2.0)
-    rack (2.2.3)
-    rack-protection (2.2.0)
-      rack
+    rack (2.2.8)
+    rack-protection (3.1.0)
+      rack (~> 2.2, >= 2.2.4)
     ruby2_keywords (0.0.5)
-    sequel (5.54.0)
+    sequel (5.74.0)
+      bigdecimal
     server_health_check (1.0.2)
     server_health_check-rack (0.1.0)
       server_health_check (~> 1.0, >= 1.0.1)
-    sinatra (2.2.0)
-      mustermann (~> 1.0)
-      rack (~> 2.2)
-      rack-protection (= 2.2.0)
+    sinatra (3.1.0)
+      mustermann (~> 3.0)
+      rack (~> 2.2, >= 2.2.4)
+      rack-protection (= 3.1.0)
       tilt (~> 2.0)
-    sqlite3 (1.4.2)
-    thor (0.20.3)
-    thread_safe (0.3.6)
-    tilt (2.0.10)
-    tzinfo (1.2.9)
-      thread_safe (~> 0.1)
+    sqlite3 (1.6.9)
+      mini_portile2 (~> 2.8.0)
+    stringio (3.1.0)
+    terminal-table (3.0.2)
+      unicode-display_width (>= 1.1.1, < 3)
+    thor (1.3.0)
+    tilt (2.3.0)
+    tzinfo (2.0.6)
+      concurrent-ruby (~> 1.0)
+    unicode-display_width (2.5.0)
 
 PLATFORMS
   ruby
@@ -61,4 +103,4 @@ DEPENDENCIES
   gemstash
 
 BUNDLED WITH
-   2.1.4
+   2.4.22
diff --git a/pkgs/development/tools/gemstash/gemset.nix b/pkgs/development/tools/gemstash/gemset.nix
index fd5ddcd6537c..ba5b0b9178e1 100644
--- a/pkgs/development/tools/gemstash/gemset.nix
+++ b/pkgs/development/tools/gemstash/gemset.nix
@@ -1,92 +1,220 @@
 {
   activesupport = {
-    dependencies = ["concurrent-ruby" "i18n" "minitest" "tzinfo"];
-    gem_platform = "ruby";
+    dependencies = ["base64" "bigdecimal" "concurrent-ruby" "connection_pool" "drb" "i18n" "minitest" "mutex_m" "tzinfo"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "164lmi9w96wdwd00dnly8f9dcak3blv49ymyqz30q2fdjn45c775";
+      sha256 = "1l6hmf99zgckpn812qfxfz60rbh0zixv1hxnxhjlg8942pvixn2v";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "5.2.6.2";
+    version = "7.1.2";
+  };
+  base64 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01qml0yilb9basf7is2614skjp8384h2pycfx86cr8023arfj98g";
+      type = "gem";
+    };
+    version = "0.2.0";
+  };
+  bigdecimal = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07y615s8yldk3k13lmkhpk1k190lcqvmxmnjwgh4bzjan9xrc36y";
+      type = "gem";
+    };
+    version = "3.1.4";
   };
   concurrent-ruby = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0nwad3211p7yv9sda31jmbyw6sdafzmdi2i2niaz6f0wk5nq9h0f";
+      sha256 = "0krcwb6mn0iklajwngwsg850nk8k9b35dhmc2qkbdqvmifdi2y9q";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "1.1.9";
+    version = "1.2.2";
+  };
+  connection_pool = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x32mcpm2cl5492kd6lbjbaf17qsssmpx9kdyr7z1wcif2cwyh0g";
+      type = "gem";
+    };
+    version = "2.4.1";
   };
   dalli = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0br39scmr187w3ifl5gsddl2fhq6ahijgw6358plqjdzrizlg764";
+      sha256 = "137xw0nl7ixxqyam6fjgmzl24i3rdml37whgnks8y35w92i95447";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.7.11";
+    version = "3.2.6";
+  };
+  drb = {
+    dependencies = ["ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03ylflxbp9jrs1hx3d4wvx05yb9hdq4a0r706zz6qc6kvqfazr79";
+      type = "gem";
+    };
+    version = "2.2.0";
   };
   faraday = {
+    dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1c760q0ks4vj4wmaa7nh1dgvgqiwaw0mjr7v8cymy7i3ffgjxx90";
+      type = "gem";
+    };
+    version = "1.10.3";
+  };
+  faraday-em_http = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "12cnqpbak4vhikrh2cdn94assh3yxza8rq2p9w2j34bqg5q4qgbs";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-em_synchrony = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vgrbhkp83sngv6k4mii9f2s9v5lmp693hylfxp2ssfc60fas3a6";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-excon = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h09wkb0k0bhm6dqsd47ac601qiaah8qdzjh8gvxfd376x1chmdh";
+      type = "gem";
+    };
+    version = "1.1.0";
+  };
+  faraday-httpclient = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0fyk0jd3ks7fdn8nv3spnwjpzx2lmxmg2gh4inz3by1zjzqg33sc";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  faraday-multipart = {
     dependencies = ["multipart-post"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0bs2lm0wd273kwq8nk1p8pk43n1wrizv4c1bdywkpcm9g2f5sp6p";
+      sha256 = "09871c4hd7s5ws1wl4gs7js1k2wlby6v947m2bbzg43pnld044lh";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "0.17.5";
+    version = "1.0.4";
+  };
+  faraday-net_http = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fi8sda5hc54v1w3mqfl5yz09nhx35kglyx72w7b8xxvdr0cwi9j";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  faraday-net_http_persistent = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dc36ih95qw3rlccffcb0vgxjhmipsvxhn6cw71l7ffs0f7vq30b";
+      type = "gem";
+    };
+    version = "1.2.0";
+  };
+  faraday-patron = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19wgsgfq0xkski1g7m96snv39la3zxz6x7nbdgiwhg5v82rxfb6w";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-rack = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1h184g4vqql5jv9s9im6igy00jp6mrah2h14py6mpf9bkabfqq7g";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  faraday-retry = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "153i967yrwnswqgvnnajgwp981k9p50ys1h80yz3q94rygs59ldd";
+      type = "gem";
+    };
+    version = "1.0.3";
   };
   faraday_middleware = {
     dependencies = ["faraday"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1x7jgvpzl1nm7hqcnc8carq6yj1lijq74jv8pph4sb3bcpfpvcsc";
+      sha256 = "1bw8mfh4yin2xk7138rg3fhb2p5g2dlmdma88k82psah9mbmvlfy";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "0.14.0";
+    version = "1.2.0";
   };
   gemstash = {
-    dependencies = ["activesupport" "dalli" "faraday" "faraday_middleware" "lru_redux" "puma" "sequel" "server_health_check-rack" "sinatra" "sqlite3" "thor"];
-    gem_platform = "ruby";
+    dependencies = ["activesupport" "dalli" "faraday" "faraday_middleware" "lru_redux" "psych" "puma" "sequel" "server_health_check-rack" "sinatra" "sqlite3" "terminal-table" "thor"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0fimbc5xnsxq1g2zb7kn4qf3rp4klx7fxbigg34gr9i9apq8qfrc";
+      sha256 = "0sysgn3gxxdyqm08b9ldsbzmp3yhdwgala9dfv5yspw5nkksprpj";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.1.0";
+    version = "2.7.1";
   };
   i18n = {
     dependencies = ["concurrent-ruby"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0b2qyvnk4yynlg17ymkq4g5xgr275637fhl1mjh0valw3cb1fhhg";
+      sha256 = "0qaamqsh5f3szhcakkak8ikxlzxqnv49n2p7504hcz2l0f4nj0wx";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "1.10.0";
+    version = "1.14.1";
   };
   lru_redux = {
     gem_platform = "ruby";
@@ -100,92 +228,109 @@
     target_platform = "ruby";
     version = "1.1.0";
   };
+  mini_portile2 = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1kl9c3kdchjabrihdqfmcplk3lq4cw1rr9f378y6q22qwy5dndvs";
+      type = "gem";
+    };
+    version = "2.8.5";
+  };
   minitest = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "06xf558gid4w8lwx13jwfdafsch9maz8m0g85wnfymqj63x5nbbd";
+      sha256 = "0bkmfi9mb49m0fkdhl2g38i3xxa02d411gg0m8x0gvbwfmmg5ym3";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "5.15.0";
+    version = "5.20.0";
   };
   multipart-post = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1zgw9zlwh2a6i1yvhhc4a84ry1hv824d6g2iw2chs3k5aylpmpfj";
+      sha256 = "0lgyysrpl50wgcb9ahg29i4p01z0irb3p9lirygma0kkfr5dgk9x";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.1.1";
+    version = "2.3.0";
   };
   mustermann = {
     dependencies = ["ruby2_keywords"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ccm54qgshr1lq3pr1dfh7gphkilc19dp63rw6fcx7460pjwy88a";
+      sha256 = "0rwbq20s2gdh8dljjsgj5s6wqqfmnbclhvv2c2608brv7jm6jdbd";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "1.1.1";
+    version = "3.0.0";
+  };
+  mutex_m = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1ma093ayps1m92q845hmpk0dmadicvifkbf05rpq9pifhin0rvxn";
+      type = "gem";
+    };
+    version = "0.2.0";
   };
   nio4r = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0xk64wghkscs6bv2n22853k2nh39d131c6rfpnlw12mbjnnv9v1v";
+      sha256 = "1y99dfzlb3kgzh7pfk8km0p5zjiblxyh5rm8yal9h523vi5awji8";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.5.8";
+    version = "2.6.1";
+  };
+  psych = {
+    dependencies = ["stringio"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0wjzrkssjfjpynij5dpycyflhqbjvi1gc2j73xgq3b196s1d3c24";
+      type = "gem";
+    };
+    version = "5.1.1.1";
   };
   puma = {
     dependencies = ["nio4r"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1xvkz9xrd1cqnlm0qac1iwwxzndx3cc17zrjncpa4lzjfwbxhsnm";
+      sha256 = "1y8jcw80zcxvdq0id329lzmp5pzx7hpac227d7sgjkblc89s3pfm";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "4.3.11";
+    version = "6.4.0";
   };
   rack = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0i5vs0dph9i5jn8dfc6aqd6njcafmb20rwqngrf759c9cvmyff16";
+      sha256 = "15rdwbyk71c9nxvd527bvb8jxkcys8r3dj3vqra5b3sa63qs30vv";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.2.3";
+    version = "2.2.8";
   };
   rack-protection = {
     dependencies = ["rack"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1hz6h6d67r217qi202qmxq2xkn3643ay3iybhl3dq3qd6j8nm3b2";
+      sha256 = "0xsz78hccgza144n37bfisdkzpr2c8m0xl6rnlzgxdbsm1zrkg7r";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.2.0";
+    version = "3.1.0";
   };
   ruby2_keywords = {
     gem_platform = "ruby";
@@ -200,16 +345,15 @@
     version = "0.0.5";
   };
   sequel = {
-    gem_platform = "ruby";
+    dependencies = ["bigdecimal"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1wzb16vyslr7bpy7g5k2m35yz90bpf12f3pzj5w6icf1vldnc3nf";
+      sha256 = "0zj66n0m1la1anxjjdb8a35frzabym112rf9ssyxq42mq05ln4m2";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "5.54.0";
+    version = "5.74.0";
   };
   server_health_check = {
     gem_platform = "ruby";
@@ -238,76 +382,86 @@
   };
   sinatra = {
     dependencies = ["mustermann" "rack" "rack-protection" "tilt"];
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1x3rci7k30g96y307hvglpdgm3f7nga3k3n4i8n1v2xxx290800y";
+      sha256 = "00541cnypsh1mnilfxxqlz6va9afrixf9m1asn4wzjp5m59777p8";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.2.0";
+    version = "3.1.0";
   };
   sqlite3 = {
-    gem_platform = "ruby";
+    dependencies = ["mini_portile2"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0lja01cp9xd5m6vmx99zwn4r7s97r1w5cb76gqd8xhbm1wxyzf78";
+      sha256 = "08irz5llz31im8pmkk5k0kw433jyyji1qa98xkdmpphncdjr38am";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "1.4.2";
+    version = "1.6.9";
   };
-  thor = {
-    gem_platform = "ruby";
+  stringio = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1yhrnp9x8qcy5vc7g438amd5j9sw83ih7c30dr6g6slgw9zj3g29";
+      sha256 = "063psvsn1aq6digpznxfranhcpmi0sdv2jhra5g0459sw0x2dxn1";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "0.20.3";
+    version = "3.1.0";
   };
-  thread_safe = {
-    gem_platform = "ruby";
+  terminal-table = {
+    dependencies = ["unicode-display_width"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
+      sha256 = "14dfmfjppmng5hwj7c5ka6qdapawm3h6k9lhn8zj001ybypvclgr";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "0.3.6";
+    version = "3.0.2";
+  };
+  thor = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hx77jxkrwi66yvs10wfxqa8s25ds25ywgrrf66acm9nbfg7zp0s";
+      type = "gem";
+    };
+    version = "1.3.0";
   };
   tilt = {
-    gem_platform = "ruby";
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0rn8z8hda4h41a64l0zhkiwz2vxw9b1nb70gl37h1dg2k874yrlv";
+      sha256 = "0p3l7v619hwfi781l3r7ypyv1l8hivp09r18kmkn6g11c4yr1pc2";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "2.0.10";
+    version = "2.3.0";
   };
   tzinfo = {
-    dependencies = ["thread_safe"];
-    gem_platform = "ruby";
+    dependencies = ["concurrent-ruby"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0zwqqh6138s8b321fwvfbywxy00lw1azw4ql3zr0xh1aqxf8cnvj";
+      sha256 = "16w2g84dzaf3z13gxyzlzbf748kylk5bdgg3n1ipvkvvqy685bwd";
       type = "gem";
     };
-    target_platform = "ruby";
-    version = "1.2.9";
+    version = "2.0.6";
+  };
+  unicode-display_width = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1d0azx233nags5jx3fqyr23qa2rhgzbhv8pxp46dgbg1mpf82xky";
+      type = "gem";
+    };
+    version = "2.5.0";
   };
 }
diff --git a/pkgs/development/tools/godot/4/default.nix b/pkgs/development/tools/godot/4/default.nix
index e99d4cb6a844..79d11c17cb25 100644
--- a/pkgs/development/tools/godot/4/default.nix
+++ b/pkgs/development/tools/godot/4/default.nix
@@ -43,14 +43,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "godot";
-  version = "4.1.3-stable";
-  commitHash = "fc79201851a16215f9554884aa242ed957801b10";
+  version = "4.2.0-stable";
+  commitHash = "46dc277917a93cbf601bbcf0d27d00f6feeec0d5";
 
   src = fetchFromGitHub {
     owner = "godotengine";
     repo = "godot";
     rev = commitHash;
-    hash = "sha256-z5JRPhdEO20AodS12MApgur0BMHGToUjo2r2eI77nNc=";
+    hash = "sha256-eon9GOmOafOcPjyBqnrAUXwVBUOnYFBQy8o5dnumDDs=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/development/tools/language-servers/millet/Cargo.lock b/pkgs/development/tools/language-servers/millet/Cargo.lock
index a331e3613e5b..e8b9d9229b30 100644
--- a/pkgs/development/tools/language-servers/millet/Cargo.lock
+++ b/pkgs/development/tools/language-servers/millet/Cargo.lock
@@ -28,7 +28,7 @@ dependencies = [
 
 [[package]]
 name = "analysis"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "config",
  "diagnostic",
@@ -97,9 +97,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.0"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
 
 [[package]]
 name = "cc"
@@ -118,7 +118,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chain-map"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "str-util",
@@ -127,15 +127,16 @@ dependencies = [
 [[package]]
 name = "char-name"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "cm-syntax"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "lex-util",
  "paths",
  "slash-var-path",
+ "sml-file",
  "str-util",
  "text-size-util",
 ]
@@ -143,7 +144,7 @@ dependencies = [
 [[package]]
 name = "code-h2-md-map"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "fast-hash",
 ]
@@ -160,7 +161,7 @@ dependencies = [
 
 [[package]]
 name = "config"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "serde",
@@ -188,7 +189,7 @@ checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636"
 
 [[package]]
 name = "cov-mark"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "once_cell",
@@ -225,7 +226,7 @@ dependencies = [
 [[package]]
 name = "diagnostic"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "diff"
@@ -248,7 +249,7 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
 [[package]]
 name = "elapsed"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "log",
 ]
@@ -261,9 +262,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
 
 [[package]]
 name = "env_logger"
-version = "0.10.0"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece"
 dependencies = [
  "humantime",
  "is-terminal",
@@ -280,18 +281,18 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.5"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "event-parse"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "drop_bomb",
  "rowan",
@@ -301,7 +302,7 @@ dependencies = [
 [[package]]
 name = "fast-hash"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "rustc-hash",
 ]
@@ -314,9 +315,9 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 
 [[package]]
 name = "flate2"
-version = "1.0.27"
+version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 dependencies = [
  "crc32fast",
  "miniz_oxide",
@@ -325,13 +326,13 @@ dependencies = [
 [[package]]
 name = "fmt-util"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "form_urlencoded"
-version = "1.2.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
@@ -347,9 +348,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.0"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 
 [[package]]
 name = "glob"
@@ -365,9 +366,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 
 [[package]]
 name = "hashbrown"
-version = "0.14.1"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 
 [[package]]
 name = "hermit-abi"
@@ -384,13 +385,13 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 [[package]]
 name = "identifier-case"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "idna"
-version = "0.4.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
 dependencies = [
  "unicode-bidi",
  "unicode-normalization",
@@ -399,24 +400,24 @@ dependencies = [
 [[package]]
 name = "idx"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "nohash-hasher",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.0.2"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.1",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
 name = "input"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "cm-syntax",
  "config",
@@ -427,6 +428,7 @@ dependencies = [
  "mlb-syntax",
  "paths",
  "slash-var-path",
+ "sml-file",
  "sml-file-syntax",
  "sml-fixity",
  "sml-namespace",
@@ -464,7 +466,7 @@ checksum = "3752f229dcc5a481d60f385fa479ff46818033d881d2d801aa27dffcfb5e8306"
 
 [[package]]
 name = "lang-srv"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "analysis",
  "anyhow",
@@ -492,13 +494,13 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "lex-util"
-version = "0.13.5"
+version = "0.14.0"
 
 [[package]]
 name = "libc"
-version = "0.2.149"
+version = "0.2.150"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
 name = "line-index"
@@ -512,9 +514,9 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.10"
+version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
+checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
 
 [[package]]
 name = "log"
@@ -564,7 +566,7 @@ dependencies = [
 
 [[package]]
 name = "millet-cli"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "analysis",
  "codespan-reporting",
@@ -582,7 +584,7 @@ dependencies = [
 
 [[package]]
 name = "millet-ls"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "anyhow",
  "env_logger",
@@ -602,10 +604,11 @@ dependencies = [
 
 [[package]]
 name = "mlb-hir"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "paths",
+ "sml-file",
  "sml-namespace",
  "str-util",
  "text-size-util",
@@ -613,7 +616,7 @@ dependencies = [
 
 [[package]]
 name = "mlb-statics"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "config",
  "diagnostic",
@@ -621,6 +624,7 @@ dependencies = [
  "mlb-hir",
  "paths",
  "sml-comment",
+ "sml-file",
  "sml-file-syntax",
  "sml-fixity",
  "sml-hir",
@@ -637,11 +641,12 @@ dependencies = [
 
 [[package]]
 name = "mlb-syntax"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "lex-util",
  "paths",
  "slash-var-path",
+ "sml-file",
  "sml-namespace",
  "str-util",
  "text-size-util",
@@ -700,7 +705,7 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
 
 [[package]]
 name = "panic-hook"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "better-panic",
 ]
@@ -708,7 +713,7 @@ dependencies = [
 [[package]]
 name = "paths"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "dunce",
  "fast-hash",
@@ -721,16 +726,16 @@ dependencies = [
 [[package]]
 name = "pattern-match"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "fast-hash",
 ]
 
 [[package]]
 name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pico-args"
@@ -760,9 +765,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.69"
+version = "1.0.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
 dependencies = [
  "unicode-ident",
 ]
@@ -790,18 +795,18 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
  "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "regex"
-version = "1.10.0"
+version = "1.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -811,9 +816,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.1"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -822,9 +827,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.1"
+version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56d84fdd47036b038fc80dd333d10b6aab10d5d31f4a366e20014def75328d33"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "rowan"
@@ -853,11 +858,11 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustix"
-version = "0.38.18"
+version = "0.38.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c"
+checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
  "errno",
  "libc",
  "linux-raw-sys",
@@ -872,18 +877,18 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
 
 [[package]]
 name = "serde"
-version = "1.0.188"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.188"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -892,9 +897,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.107"
+version = "1.0.108"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
+checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
 dependencies = [
  "itoa",
  "ryu",
@@ -903,9 +908,9 @@ dependencies = [
 
 [[package]]
 name = "serde_repr"
-version = "0.1.16"
+version = "0.1.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
+checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -914,16 +919,16 @@ dependencies = [
 
 [[package]]
 name = "serde_spanned"
-version = "0.6.3"
+version = "0.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "slash-var-path"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "str-util",
@@ -931,14 +936,14 @@ dependencies = [
 
 [[package]]
 name = "sml-comment"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "sml-syntax",
 ]
 
 [[package]]
 name = "sml-dynamics"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "fmt-util",
@@ -949,11 +954,12 @@ dependencies = [
 
 [[package]]
 name = "sml-dynamics-tests"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "config",
  "pretty_assertions",
  "sml-dynamics",
+ "sml-file",
  "sml-file-syntax",
  "sml-fixity",
  "sml-hir",
@@ -964,11 +970,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "sml-file"
+version = "0.14.0"
+
+[[package]]
 name = "sml-file-syntax"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "config",
  "elapsed",
+ "sml-file",
  "sml-fixity",
  "sml-hir-lower",
  "sml-lex",
@@ -979,7 +990,7 @@ dependencies = [
 
 [[package]]
 name = "sml-fixity"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "once_cell",
@@ -988,7 +999,7 @@ dependencies = [
 
 [[package]]
 name = "sml-hir"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "la-arena",
  "sml-lab",
@@ -999,13 +1010,14 @@ dependencies = [
 
 [[package]]
 name = "sml-hir-lower"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "config",
  "cov-mark",
  "diagnostic",
  "fast-hash",
  "lex-util",
+ "sml-file",
  "sml-hir",
  "sml-path",
  "sml-syntax",
@@ -1014,14 +1026,14 @@ dependencies = [
 
 [[package]]
 name = "sml-lab"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "str-util",
 ]
 
 [[package]]
 name = "sml-lex"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "cov-mark",
  "diagnostic",
@@ -1036,7 +1048,7 @@ source = "git+https://github.com/azdavis/sml-libs.git#0d94e3ce13f2a489dff86151f7
 
 [[package]]
 name = "sml-naive-fmt"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "sml-comment",
@@ -1045,11 +1057,11 @@ dependencies = [
 
 [[package]]
 name = "sml-namespace"
-version = "0.13.5"
+version = "0.14.0"
 
 [[package]]
 name = "sml-parse"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "diagnostic",
  "event-parse",
@@ -1061,14 +1073,14 @@ dependencies = [
 
 [[package]]
 name = "sml-path"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "str-util",
 ]
 
 [[package]]
 name = "sml-scon"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "num-bigint",
  "num-traits",
@@ -1077,7 +1089,7 @@ dependencies = [
 
 [[package]]
 name = "sml-statics"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "chain-map",
  "config",
@@ -1100,7 +1112,7 @@ dependencies = [
 
 [[package]]
 name = "sml-statics-types"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "chain-map",
  "code-h2-md-map",
@@ -1119,7 +1131,7 @@ dependencies = [
 
 [[package]]
 name = "sml-symbol-kind"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "sml-namespace",
  "sml-statics-types",
@@ -1127,7 +1139,7 @@ dependencies = [
 
 [[package]]
 name = "sml-syntax"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "code-h2-md-map",
  "fast-hash",
@@ -1138,7 +1150,7 @@ dependencies = [
 
 [[package]]
 name = "sml-ty-var-scope"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "fast-hash",
  "sml-hir",
@@ -1156,16 +1168,16 @@ dependencies = [
 [[package]]
 name = "str-util"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "smol_str",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.38"
+version = "2.0.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1175,7 +1187,7 @@ dependencies = [
 [[package]]
 name = "syntax-gen"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "char-name",
  "fast-hash",
@@ -1189,9 +1201,9 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.8.0"
+version = "3.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
+checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
 dependencies = [
  "cfg-if",
  "fastrand",
@@ -1202,16 +1214,16 @@ dependencies = [
 
 [[package]]
 name = "termcolor"
-version = "1.3.0"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64"
+checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
 dependencies = [
  "winapi-util",
 ]
 
 [[package]]
 name = "tests"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "analysis",
  "cm-syntax",
@@ -1229,6 +1241,7 @@ dependencies = [
  "pulldown-cmark",
  "serde_json",
  "slash-var-path",
+ "sml-file",
  "sml-syntax",
  "str-util",
  "text-pos",
@@ -1237,7 +1250,7 @@ dependencies = [
 [[package]]
 name = "text-pos"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "line-index",
  "text-size-util",
@@ -1252,7 +1265,7 @@ checksum = "f18aa187839b2bdb1ad2fa35ead8c4c2976b64e4363c386d45ac0f7ee85c9233"
 [[package]]
 name = "text-size-util"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 dependencies = [
  "text-size",
 ]
@@ -1275,7 +1288,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 [[package]]
 name = "token"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "toml"
@@ -1291,9 +1304,9 @@ dependencies = [
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
 dependencies = [
  "serde",
 ]
@@ -1314,7 +1327,7 @@ dependencies = [
 [[package]]
 name = "topo-sort"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "ungrammar"
@@ -1361,13 +1374,13 @@ checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 [[package]]
 name = "uniq"
 version = "0.1.0"
-source = "git+https://github.com/azdavis/language-util.git#bc4bb79b0309c596b3c5fded6b2eb4e7d9bf0a02"
+source = "git+https://github.com/azdavis/language-util.git#50962261bfd5159c350fdd5c397af60746dcf6fe"
 
 [[package]]
 name = "url"
-version = "2.4.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
 dependencies = [
  "form_urlencoded",
  "idna",
@@ -1431,6 +1444,15 @@ dependencies = [
 ]
 
 [[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.0",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1461,6 +1483,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1473,6 +1510,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1485,6 +1528,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1497,6 +1546,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1509,6 +1564,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1521,6 +1582,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1533,6 +1600,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1545,17 +1618,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
 name = "winnow"
-version = "0.5.16"
+version = "0.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907"
+checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "xtask"
-version = "0.13.5"
+version = "0.14.0"
 dependencies = [
  "anyhow",
  "flate2",
diff --git a/pkgs/development/tools/language-servers/millet/default.nix b/pkgs/development/tools/language-servers/millet/default.nix
index 6d9a0c6124f6..9efe4b1f45ad 100644
--- a/pkgs/development/tools/language-servers/millet/default.nix
+++ b/pkgs/development/tools/language-servers/millet/default.nix
@@ -2,19 +2,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "millet";
-  version = "0.13.5";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "azdavis";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-pgCsDbFYRN7QMAIzgdNn0vo/KLAZzMgjzil0AjxjKEc=";
+    hash = "sha256-dTYnJofXzpkfXfS4RoJHqXEMlPKW5w1z+X39rL+VoQE=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "char-name-0.1.0" = "sha256-pLzkXx0twW4X3iHeiUT6KwEzXxYk0IhwISRqeaJVjvo=";
+      "char-name-0.1.0" = "sha256-zi5XI0exL0D0RMN5FlNqdXl5DDFEnvWOBZvgeUTMKKc=";
       "sml-libs-0.1.0" = "sha256-zQrhH24XlA9SeQ+sVzaVwJwrm80TRIjFq99Vay7QEN8=";
     };
   };
diff --git a/pkgs/development/tools/misc/gpuvis/default.nix b/pkgs/development/tools/misc/gpuvis/default.nix
index 83c04495f8cc..d4476a963525 100644
--- a/pkgs/development/tools/misc/gpuvis/default.nix
+++ b/pkgs/development/tools/misc/gpuvis/default.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation rec {
   pname = "gpuvis";
-  version = "20211204";
+  version = "0.1";
 
   src = fetchFromGitHub {
     owner = "mikesart";
     repo = pname;
-    rev = "7f47419470687c7ecbdf086b81f5bafdb05d1bef";
-    sha256 = "sha256-29Bv+y0zWzn7QtpsjRV6hr19bCeyVJusPcYiAIEIluk=";
+    rev = "v${version}";
+    hash = "sha256-a9eAYDsiwyzZc4FAPo0wANysisIT4qCHLh2PrYswJtw=";
   };
 
   # patch dlopen path for gtk3
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/mikesart/gpuvis";
     license = licenses.mit;
     maintainers = with maintainers; [ emantor ];
-    platforms = with platforms; linux;
+    platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/tools/mysql-shell/innovation.nix b/pkgs/development/tools/mysql-shell/innovation.nix
index e7a12deb3ee4..6104aadf0492 100644
--- a/pkgs/development/tools/mysql-shell/innovation.nix
+++ b/pkgs/development/tools/mysql-shell/innovation.nix
@@ -35,7 +35,7 @@
 let
   pythonDeps = with python3.pkgs; [ certifi paramiko pyyaml ];
 
-  mysqlShellVersion = "8.2.0";
+  mysqlShellVersion = "8.2.1";
   mysqlServerVersion = "8.2.0";
 in
 stdenv.mkDerivation (finalAttrs: {
@@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: {
     })
     (fetchurl {
       url = "https://cdn.mysql.com//Downloads/MySQL-Shell/mysql-shell-${finalAttrs.version}-src.tar.gz";
-      hash = "sha256-kuRo+3vcDtc9aOgAuxJTy0e6E85iOFfCx/ZHtrNg08k=";
+      hash = "sha256-m6WdFow28bxW52q+m8PniZCU/1Ej4secdPQi8GKlziE=";
     })
   ];
 
diff --git a/pkgs/development/tools/rust/cargo-udeps/default.nix b/pkgs/development/tools/rust/cargo-udeps/default.nix
index 29c0e5302a04..6c0b02c189db 100644
--- a/pkgs/development/tools/rust/cargo-udeps/default.nix
+++ b/pkgs/development/tools/rust/cargo-udeps/default.nix
@@ -27,5 +27,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/est31/cargo-udeps";
     license = licenses.mit;
     maintainers = with maintainers; [ b4dm4n matthiasbeyer ];
+    mainProgram = "cargo-udeps";
   };
 }
diff --git a/pkgs/development/web/nodejs/v21.nix b/pkgs/development/web/nodejs/v21.nix
index af3af652fb71..ddcbc75cd24f 100644
--- a/pkgs/development/web/nodejs/v21.nix
+++ b/pkgs/development/web/nodejs/v21.nix
@@ -8,8 +8,8 @@ let
 in
 buildNodejs {
   inherit enableNpm;
-  version = "21.2.0";
-  sha256 = "sha256-1Xyc6jlHZPodmvUeUsdEn3EZPp1ExKgfvt7GU+yCdwc=";
+  version = "21.3.0";
+  sha256 = "sha256-q0Fy7IJ/dwxsO0tvMIJBBBN+2kdISOhNVe1Vs0HmdyU=";
   patches = [
     ./revert-arm64-pointer-auth.patch
     ./disable-darwin-v8-system-instrumentation-node19.patch