about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2024-04-24 12:01:23 +0000
committerGitHub <noreply@github.com>2024-04-24 12:01:23 +0000
commit0977f8605c5f428c8fe9dd32ff0c90ab016584bb (patch)
tree67e7717bd272126819ac0b3d7b2f586381f5a1fc /pkgs
parent0f59a441398fb34cc0a13fe7b734d923eb053c47 (diff)
parent9140927fb00dbe93262aab85584842297b3684d5 (diff)
Merge master into staging-next
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/pyradio/default.nix4
-rw-r--r--pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix21
-rw-r--r--pkgs/applications/misc/bambu-studio/default.nix113
-rw-r--r--pkgs/applications/misc/bambu-studio/orca-slicer.nix60
-rw-r--r--pkgs/applications/networking/instant-messengers/chatterino2/default.nix4
-rw-r--r--pkgs/applications/office/paperwork/paperwork-backend.nix8
-rw-r--r--pkgs/by-name/al/alephone-durandal/package.nix4
-rw-r--r--pkgs/by-name/al/alephone-infinity/package.nix4
-rw-r--r--pkgs/by-name/al/alephone-marathon/package.nix4
-rw-r--r--pkgs/by-name/at/atac/package.nix6
-rw-r--r--pkgs/by-name/bi/bite/Cargo.lock4322
-rw-r--r--pkgs/by-name/bi/bite/package.nix110
-rw-r--r--pkgs/by-name/ho/home-manager/package.nix6
-rw-r--r--pkgs/by-name/hy/hyprland-activewindow/package.nix24
-rw-r--r--pkgs/by-name/hy/hyprland-workspaces/package.nix28
-rw-r--r--pkgs/by-name/mo/movim/package.nix8
-rw-r--r--pkgs/by-name/po/polybar/package.nix1
-rw-r--r--pkgs/by-name/qr/qrtool/package.nix6
-rw-r--r--pkgs/by-name/su/supersonic/package.nix6
-rw-r--r--pkgs/by-name/ya/yazi-unwrapped/package.nix3
-rw-r--r--pkgs/desktops/gnome/extensions/pop-shell/fix-gjs.patch12
-rw-r--r--pkgs/development/libraries/ucx/default.nix4
-rw-r--r--pkgs/development/python-modules/mailchecker/default.nix4
-rw-r--r--pkgs/development/python-modules/model-bakery/default.nix35
-rw-r--r--pkgs/development/python-modules/nanobind/default.nix72
-rw-r--r--pkgs/development/python-modules/psrpcore/default.nix38
-rw-r--r--pkgs/development/python-modules/pydantic-yaml-0/default.nix1
-rw-r--r--pkgs/development/python-modules/python-novaclient/default.nix2
-rw-r--r--pkgs/development/python-modules/tencentcloud-sdk-python/default.nix4
-rw-r--r--pkgs/development/python-modules/vacuum-map-parser-base/default.nix4
-rw-r--r--pkgs/development/tools/gauge/default.nix8
-rw-r--r--pkgs/development/tools/gauge/nix-check.patch50
-rw-r--r--pkgs/development/tools/gauge/plugins/default.nix14
-rw-r--r--pkgs/development/tools/gauge/plugins/dotnet/data.json5
-rw-r--r--pkgs/development/tools/gauge/plugins/dotnet/default.nix22
-rw-r--r--pkgs/development/tools/gauge/plugins/go/data.json15
-rw-r--r--pkgs/development/tools/gauge/plugins/go/default.nix19
-rw-r--r--pkgs/development/tools/gauge/plugins/html-report/data.json19
-rw-r--r--pkgs/development/tools/gauge/plugins/html-report/default.nix19
-rw-r--r--pkgs/development/tools/gauge/plugins/java/data.json19
-rw-r--r--pkgs/development/tools/gauge/plugins/java/default.nix24
-rw-r--r--pkgs/development/tools/gauge/plugins/js/default.nix42
-rw-r--r--pkgs/development/tools/gauge/plugins/make-gauge-plugin.nix94
-rw-r--r--pkgs/development/tools/gauge/plugins/ruby/data.json19
-rw-r--r--pkgs/development/tools/gauge/plugins/ruby/default.nix19
-rw-r--r--pkgs/development/tools/gauge/plugins/screenshot/data.json19
-rw-r--r--pkgs/development/tools/gauge/plugins/screenshot/default.nix19
-rw-r--r--pkgs/development/tools/gauge/plugins/xml-report/data.json19
-rw-r--r--pkgs/development/tools/gauge/plugins/xml-report/default.nix19
-rw-r--r--pkgs/development/tools/gauge/wrapper.nix59
-rw-r--r--pkgs/games/shipwright/default.nix8
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix5
-rw-r--r--pkgs/servers/home-assistant/default.nix8
-rw-r--r--pkgs/servers/home-assistant/stubs.nix4
-rwxr-xr-xpkgs/servers/home-assistant/update-component-packages.py (renamed from pkgs/servers/home-assistant/parse-requirements.py)2
-rwxr-xr-xpkgs/servers/home-assistant/update.py2
-rw-r--r--pkgs/test/config.nix19
-rw-r--r--pkgs/tools/graphics/argyllcms/default.nix4
-rw-r--r--pkgs/tools/misc/poweralertd/default.nix6
-rw-r--r--pkgs/tools/misc/pv/default.nix12
-rw-r--r--pkgs/tools/misc/rpm-ostree/default.nix4
-rw-r--r--pkgs/tools/misc/tmuxp/default.nix2
-rw-r--r--pkgs/tools/security/cnspec/default.nix6
-rw-r--r--pkgs/tools/security/trufflehog/default.nix6
-rw-r--r--pkgs/tools/typesetting/tex/texlive/bin.nix2
-rw-r--r--pkgs/tools/typesetting/tex/texlive/default.nix22
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tl2nix.sed3
-rw-r--r--pkgs/tools/typesetting/tex/texlive/tlpdb.nix248
-rw-r--r--pkgs/top-level/all-packages.nix4
-rw-r--r--pkgs/top-level/config.nix6
-rw-r--r--pkgs/top-level/python-packages.nix2
71 files changed, 5472 insertions, 344 deletions
diff --git a/pkgs/applications/audio/pyradio/default.nix b/pkgs/applications/audio/pyradio/default.nix
index e3bf3acf98d9b..72cbfd443c08b 100644
--- a/pkgs/applications/audio/pyradio/default.nix
+++ b/pkgs/applications/audio/pyradio/default.nix
@@ -6,13 +6,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pyradio";
-  version = "0.9.3.2";
+  version = "0.9.3.4";
 
   src = fetchFromGitHub {
     owner = "coderholic";
     repo = "pyradio";
     rev = "refs/tags/${version}";
-    hash = "sha256-aIWU68bdPUsIh8QRNnF0NcK7FemmYyUHbJg9KcUALBk=";
+    hash = "sha256-QifBzQsvYU5kP5mnidOgWGBh3h2MvJm8Wo0i1v6j/cU=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
index 1286c9fc6466d..e714a20cb3794 100644
--- a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
+++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ebuild-mode/default.nix
@@ -1,21 +1,26 @@
-{ lib, melpaBuild, fetchurl, writeText }:
+{
+  lib,
+  melpaBuild,
+  fetchzip,
+  writeText,
+}:
 
 melpaBuild rec {
   pname = "ebuild-mode";
-  version = "1.67";
+  version = "1.70";
 
-  src = fetchurl {
-    url = "https://dev.gentoo.org/~ulm/emacs/ebuild-mode-${version}.tar.xz";
-    hash = "sha256-5qxHpu1BLtI8LFnL/sAoqmo80zeyElxIdFtAsfMefUE=";
+  src = fetchzip {
+    url = "https://gitweb.gentoo.org/proj/ebuild-mode.git/snapshot/ebuild-mode-${version}.tar.bz2";
+    hash = "sha256-dOm3xJMFLelwcImIwckeQHx1GqV9PB+I45QA9UT1nCM=";
   };
 
   # not used but needs to be set; why?
-  commit = "e7b45096283ac8836f208babddfd1ea1c1d1d1d";
+  commit = "a643f177b58aa8869f2f24814e990320aa4f0f96";
 
   recipe = writeText "recipe" ''
     (ebuild-mode
-      :url "https://anongit.gentoo.org/git/proj/ebuild-mode.git"
-      :fetcher git)
+     :url "https://gitweb.gentoo.org/proj/ebuild-mode.git"
+     :fetcher git)
   '';
 
   meta = {
diff --git a/pkgs/applications/misc/bambu-studio/default.nix b/pkgs/applications/misc/bambu-studio/default.nix
index 64fa760ef9d24..43b6cb8769ef7 100644
--- a/pkgs/applications/misc/bambu-studio/default.nix
+++ b/pkgs/applications/misc/bambu-studio/default.nix
@@ -1,49 +1,50 @@
-{ stdenv
-, lib
-, openexr
-, jemalloc
-, c-blosc
-, binutils
-, fetchFromGitHub
-, cmake
-, pkg-config
-, wrapGAppsHook
-, boost179
-, cereal
-, cgal_5
-, curl
-, dbus
-, eigen
-, expat
-, gcc-unwrapped
-, glew
-, glfw
-, glib
-, glib-networking
-, gmp
-, gstreamer
-, gst-plugins-base
-, gst-plugins-bad
-, gst-plugins-good
-, gtest
-, gtk3
-, hicolor-icon-theme
-, ilmbase
-, libpng
-, mesa
-, mpfr
-, nlopt
-, opencascade-occt
-, openvdb
-, pcre
-, qhull
-, systemd
-, tbb_2021_11
-, webkitgtk
-, wxGTK31
-, xorg
-, fetchpatch
-, withSystemd ? stdenv.isLinux
+{
+  stdenv,
+  lib,
+  openexr,
+  jemalloc,
+  c-blosc,
+  binutils,
+  fetchFromGitHub,
+  cmake,
+  pkg-config,
+  wrapGAppsHook,
+  boost179,
+  cereal,
+  cgal_5,
+  curl,
+  dbus,
+  eigen,
+  expat,
+  gcc-unwrapped,
+  glew,
+  glfw,
+  glib,
+  glib-networking,
+  gmp,
+  gstreamer,
+  gst-plugins-base,
+  gst-plugins-bad,
+  gst-plugins-good,
+  gtest,
+  gtk3,
+  hicolor-icon-theme,
+  ilmbase,
+  libpng,
+  mesa,
+  mpfr,
+  nlopt,
+  opencascade-occt,
+  openvdb,
+  pcre,
+  qhull,
+  systemd,
+  tbb_2021_11,
+  webkitgtk,
+  wxGTK31,
+  xorg,
+  fetchpatch,
+  withSystemd ? stdenv.isLinux,
 }:
 let
   wxGTK31' = wxGTK31.overrideAttrs (old: {
@@ -53,7 +54,14 @@ let
     ];
   });
   openvdb_tbb_2021_8 = openvdb.overrideAttrs (old: rec {
-    buildInputs = [ openexr boost179 tbb_2021_11 jemalloc c-blosc ilmbase ];
+    buildInputs = [
+      openexr
+      boost179
+      tbb_2021_11
+      jemalloc
+      c-blosc
+      ilmbase
+    ];
   });
 in
 stdenv.mkDerivation rec {
@@ -106,9 +114,7 @@ stdenv.mkDerivation rec {
     webkitgtk
     wxGTK31'
     xorg.libX11
-  ] ++ lib.optionals withSystemd [
-    systemd
-  ] ++ checkInputs;
+  ] ++ lib.optionals withSystemd [ systemd ] ++ checkInputs;
 
   patches = [
     # Fix for webkitgtk linking
@@ -169,11 +175,8 @@ stdenv.mkDerivation rec {
   # needed to prevent collisions between the LICENSE.txt files of
   # bambu-studio and orca-slicer.
   postInstall = ''
-    mkdir -p $out/share/doc
-    mv $out/LICENSE.txt $out/share/doc/LICENSE.txt
-    if [ -f $out/README.md ]; then
-      mv $out/README.md $out/share/doc/README.md
-    fi
+    mv $out/LICENSE.txt $out/share/BambuStudio/LICENSE.txt
+    mv $out/README.md $out/share/BambuStudio/README.md
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/misc/bambu-studio/orca-slicer.nix b/pkgs/applications/misc/bambu-studio/orca-slicer.nix
index 5e10050078d6c..af89be65246d3 100644
--- a/pkgs/applications/misc/bambu-studio/orca-slicer.nix
+++ b/pkgs/applications/misc/bambu-studio/orca-slicer.nix
@@ -1,27 +1,41 @@
-{ lib, fetchFromGitHub, makeDesktopItem, bambu-studio }:
+{
+  lib,
+  fetchFromGitHub,
+  bambu-studio,
+}:
 
-bambu-studio.overrideAttrs (finalAttrs: previousAttrs: {
-  version = "2.0.0";
-  pname = "orca-slicer";
+bambu-studio.overrideAttrs (
+  finalAttrs: previousAttrs: {
+    version = "2.0.0";
+    pname = "orca-slicer";
 
-  # Don't inherit patches from bambu-studio
-  patches = [
-    ./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch
-  ];
+    # Don't inherit patches from bambu-studio
+    patches = [ ./0001-not-for-upstream-CMakeLists-Link-against-webkit2gtk-.patch ];
 
-  src = fetchFromGitHub {
-    owner = "SoftFever";
-    repo = "OrcaSlicer";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-YlLDUH3ODIfax5QwnsVJi1JjZ9WtxP3ssqRP1C4d4bw=";
-  };
+    src = fetchFromGitHub {
+      owner = "SoftFever";
+      repo = "OrcaSlicer";
+      rev = "v${finalAttrs.version}";
+      hash = "sha256-YlLDUH3ODIfax5QwnsVJi1JjZ9WtxP3ssqRP1C4d4bw=";
+    };
 
-  meta = with lib; {
-    description = "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc";
-    homepage = "https://github.com/SoftFever/OrcaSlicer";
-    license = licenses.agpl3Only;
-    maintainers = with maintainers; [ zhaofengli ovlach pinpox ];
-    mainProgram = "orca-slicer";
-    platforms = platforms.linux;
-  };
-})
+    # needed to prevent collisions between the LICENSE.txt files of
+    # bambu-studio and orca-slicer.
+    postInstall = ''
+      mv $out/LICENSE.txt $out/share/OrcaSlicer/LICENSE.txt
+    '';
+
+    meta = with lib; {
+      description = "G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc";
+      homepage = "https://github.com/SoftFever/OrcaSlicer";
+      license = licenses.agpl3Only;
+      maintainers = with maintainers; [
+        zhaofengli
+        ovlach
+        pinpox
+      ];
+      mainProgram = "orca-slicer";
+      platforms = platforms.linux;
+    };
+  }
+)
diff --git a/pkgs/applications/networking/instant-messengers/chatterino2/default.nix b/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
index 5e61fc78091e6..0f27e7a770223 100644
--- a/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
+++ b/pkgs/applications/networking/instant-messengers/chatterino2/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "chatterino2";
-  version = "2.4.6";
+  version = "2.5.0";
   src = fetchFromGitHub {
     owner = "Chatterino";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-CQviw5Fw6v5EwjCldAQoJfAIZMWKBfBzUIQZEgW34k0=";
+    sha256 = "sha256-uR2X0NNSLyOx5n3mZcp6+wW/7L7rHHH2MlOF+c0Uzm0=";
     fetchSubmodules = true;
   };
   nativeBuildInputs = [ cmake pkg-config qt6.wrapQtAppsHook ];
diff --git a/pkgs/applications/office/paperwork/paperwork-backend.nix b/pkgs/applications/office/paperwork/paperwork-backend.nix
index 4460e50ab6246..b5620d3f40df0 100644
--- a/pkgs/applications/office/paperwork/paperwork-backend.nix
+++ b/pkgs/applications/office/paperwork/paperwork-backend.nix
@@ -1,6 +1,7 @@
 { buildPythonPackage
 , lib
 , fetchFromGitLab
+, fetchpatch
 , pyenchant
 , scikit-learn
 , pypillowfight
@@ -33,6 +34,13 @@ buildPythonPackage rec {
   sourceRoot = "${src.name}/paperwork-backend";
 
   patches = [
+    # fixes building with recent scipy
+    # remove on next release
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/commit/abcebfe9714644d4e259e53b10e0e9417b5b864f.patch";
+      hash = "sha256-YjVpphThW5Livs+PZJZDSgJvhLSXhZ1bnlWMwfY4HTg=";
+    })
+
     # disables a flaky test https://gitlab.gnome.org/World/OpenPaperwork/paperwork/-/issues/1035#note_1493700
     ./flaky_test.patch
   ];
diff --git a/pkgs/by-name/al/alephone-durandal/package.nix b/pkgs/by-name/al/alephone-durandal/package.nix
index cd7927d69a141..d8376457f6441 100644
--- a/pkgs/by-name/al/alephone-durandal/package.nix
+++ b/pkgs/by-name/al/alephone-durandal/package.nix
@@ -3,13 +3,13 @@
 alephone.makeWrapper rec {
   pname = "durandal";
   desktopName = "Marathon-Durandal";
-  version = "20230119";
+  version = "20240119";
   icon = alephone.icons + "/marathon2.png";
 
   zip = fetchurl {
     url =
       "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon2-${version}-Data.zip";
-    sha256 = "sha256-Vbfk5wLgvNEZW2BohMY5mPXaRbNlHxJdWLYTsE8CSwI=";
+    sha256 = "sha256-Tp9EWMIY0moK6RLIpxB7rMzLOQ7zPfV58oeAyQsTbnM=";
   };
 
   meta = {
diff --git a/pkgs/by-name/al/alephone-infinity/package.nix b/pkgs/by-name/al/alephone-infinity/package.nix
index c49f9a8d2ac72..466f3bb7d4b65 100644
--- a/pkgs/by-name/al/alephone-infinity/package.nix
+++ b/pkgs/by-name/al/alephone-infinity/package.nix
@@ -3,13 +3,13 @@
 alephone.makeWrapper rec {
   pname = "marathon-infinity";
   desktopName = "Marathon-Infinity";
-  version = "20230119";
+  version = "20240119";
   icon = alephone.icons + "/marathon-infinity.png";
 
   zip = fetchurl {
     url =
       "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/MarathonInfinity-${version}-Data.zip";
-    sha256 = "sha256-0+xokhzWdXM+L4DBjWnfNVXZve4n1X/Aq6rxNGAFb3Q=";
+    sha256 = "sha256-KfFu+cboaZMfjnu3W84/Qbcrc9kbkIZ2Y0GM1fXeXh8=";
   };
 
   meta = {
diff --git a/pkgs/by-name/al/alephone-marathon/package.nix b/pkgs/by-name/al/alephone-marathon/package.nix
index ea295b7dcdce7..38018ec021b05 100644
--- a/pkgs/by-name/al/alephone-marathon/package.nix
+++ b/pkgs/by-name/al/alephone-marathon/package.nix
@@ -3,13 +3,13 @@
 alephone.makeWrapper rec {
   pname = "marathon";
   desktopName = "Marathon";
-  version = "20230119";
+  version = "20240119";
   icon = alephone.icons + "/marathon.png";
 
   zip = fetchurl {
     url =
       "https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${version}/Marathon-${version}-Data.zip";
-    sha256 = "sha256-uz/1ZW9epd1HP/pzTNN3d2EEbOzjj0qpdMkrVoxb8Aw=";
+    sha256 = "sha256-60+dvXyzHe5PDepyKHcEIdWoRiGMvx5zYehubWKqaB0=";
   };
 
   meta = {
diff --git a/pkgs/by-name/at/atac/package.nix b/pkgs/by-name/at/atac/package.nix
index f236413f33841..e06530202407e 100644
--- a/pkgs/by-name/at/atac/package.nix
+++ b/pkgs/by-name/at/atac/package.nix
@@ -9,16 +9,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "atac";
-  version = "0.12.0";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "Julien-cpsn";
     repo = "ATAC";
     rev = "v${version}";
-    hash = "sha256-yR+w6zrX7XHrK6XGWM7J74XPxGEmy8Gf6guOH/Du6rc=";
+    hash = "sha256-ChX2LMRbqoKzl+QKkeervrCHr3plAQ21RzC4RqEucCA=";
   };
 
-  cargoHash = "sha256-Ez8d1tb0Xi91e3+U1/LDmj5u/oORQzelEQPFAC96yEI=";
+  cargoHash = "sha256-nYkXL3SIjG3REE+w2vIlB04FWs7e0d4iu0hRjAPz7aU=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/by-name/bi/bite/Cargo.lock b/pkgs/by-name/bi/bite/Cargo.lock
new file mode 100644
index 0000000000000..a6a1e33f62b95
--- /dev/null
+++ b/pkgs/by-name/bi/bite/Cargo.lock
@@ -0,0 +1,4322 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "ab_glyph"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225"
+dependencies = [
+ "ab_glyph_rasterizer",
+ "owned_ttf_parser",
+]
+
+[[package]]
+name = "ab_glyph_rasterizer"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
+
+[[package]]
+name = "accesskit"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b"
+dependencies = [
+ "enumn",
+ "serde",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "ahash"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
+dependencies = [
+ "cfg-if",
+ "getrandom",
+ "once_cell",
+ "serde",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
+
+[[package]]
+name = "android-activity"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39b801912a977c3fd52d80511fe1c0c8480c6f957f21ae2ce1b92ffe970cf4b9"
+dependencies = [
+ "android-properties",
+ "bitflags 2.4.2",
+ "cc",
+ "cesu8",
+ "jni",
+ "jni-sys",
+ "libc 0.2.153",
+ "log 0.4.20",
+ "ndk",
+ "ndk-context",
+ "ndk-sys",
+ "num_enum",
+ "thiserror",
+]
+
+[[package]]
+name = "android-properties"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "arm"
+version = "0.0.0"
+dependencies = [
+ "bitvec",
+ "debugvault",
+ "decoder",
+ "tokenizing",
+]
+
+[[package]]
+name = "arrayref"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+
+[[package]]
+name = "as-raw-xcb-connection"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b"
+
+[[package]]
+name = "ash"
+version = "0.37.3+1.3.251"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a"
+dependencies = [
+ "libloading 0.7.4",
+]
+
+[[package]]
+name = "ashpd"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
+dependencies = [
+ "async-fs",
+ "async-net",
+ "enumflags2",
+ "futures-channel",
+ "futures-util",
+ "rand",
+ "serde",
+ "serde_repr",
+ "url",
+ "zbus",
+]
+
+[[package]]
+name = "async-broadcast"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
+dependencies = [
+ "event-listener 5.3.0",
+ "event-listener-strategy 0.5.1",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
+dependencies = [
+ "concurrent-queue",
+ "event-listener 5.3.0",
+ "event-listener-strategy 0.5.1",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10b3e585719c2358d2660232671ca8ca4ddb4be4ce8a1842d6c2dc8685303316"
+dependencies = [
+ "async-lock 3.3.0",
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-fs"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc19683171f287921f2405677dd2ed2549c3b3bda697a563ebc3a121ace2aba1"
+dependencies = [
+ "async-lock 3.3.0",
+ "blocking",
+ "futures-lite",
+]
+
+[[package]]
+name = "async-io"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884"
+dependencies = [
+ "async-lock 3.3.0",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-lock"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
+dependencies = [
+ "event-listener 4.0.3",
+ "event-listener-strategy 0.4.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-net"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7"
+dependencies = [
+ "async-io",
+ "blocking",
+ "futures-lite",
+]
+
+[[package]]
+name = "async-process"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3"
+dependencies = [
+ "async-channel",
+ "async-io",
+ "async-lock 3.3.0",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener 5.3.0",
+ "futures-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
+dependencies = [
+ "async-io",
+ "async-lock 2.8.0",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799"
+
+[[package]]
+name = "async-trait"
+version = "0.1.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "atk"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4"
+dependencies = [
+ "atk-sys",
+ "glib",
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "binformat"
+version = "0.0.0"
+dependencies = [
+ "log 0.0.0",
+ "object",
+ "processor_shared",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
+
+[[package]]
+name = "bite"
+version = "0.2.1"
+dependencies = [
+ "commands",
+ "debugvault",
+ "gui",
+ "log 0.0.0",
+ "nix 0.26.1",
+ "object",
+ "winres",
+]
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitvec"
+version = "0.19.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55f93d0ef3363c364d5976646a38f04cf67cfe1d4c8d160cdea02cab2c116b33"
+dependencies = [
+ "funty",
+ "radium",
+ "tap",
+ "wyz",
+]
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block-sys"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7"
+dependencies = [
+ "objc-sys",
+]
+
+[[package]]
+name = "block2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68"
+dependencies = [
+ "block-sys",
+ "objc2",
+]
+
+[[package]]
+name = "blocking"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
+dependencies = [
+ "async-channel",
+ "async-lock 3.3.0",
+ "async-task",
+ "fastrand",
+ "futures-io",
+ "futures-lite",
+ "piper",
+ "tracing",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f"
+
+[[package]]
+name = "bytemuck"
+version = "1.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
+dependencies = [
+ "bytemuck_derive",
+]
+
+[[package]]
+name = "bytemuck_derive"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+
+[[package]]
+name = "cairo-rs"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+dependencies = [
+ "bitflags 2.4.2",
+ "cairo-sys-rs",
+ "glib",
+ "libc 0.2.153",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+dependencies = [
+ "glib-sys",
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "calloop"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298"
+dependencies = [
+ "bitflags 2.4.2",
+ "log 0.4.20",
+ "polling",
+ "rustix",
+ "slab",
+ "thiserror",
+]
+
+[[package]]
+name = "calloop-wayland-source"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
+dependencies = [
+ "calloop",
+ "rustix",
+ "wayland-backend",
+ "wayland-client",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "jobserver",
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cfg_aliases"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e"
+
+[[package]]
+name = "clipboard-win"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342"
+dependencies = [
+ "lazy-bytes-cast",
+ "winapi",
+]
+
+[[package]]
+name = "cocoa"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc 0.2.153",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
+dependencies = [
+ "bitflags 1.3.2",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "libc 0.2.153",
+ "objc",
+]
+
+[[package]]
+name = "codespan-reporting"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e"
+dependencies = [
+ "termcolor",
+ "unicode-width",
+]
+
+[[package]]
+name = "com"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6"
+dependencies = [
+ "com_macros",
+]
+
+[[package]]
+name = "com_macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5"
+dependencies = [
+ "com_macros_support",
+ "proc-macro2",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "com_macros_support"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "commands"
+version = "0.0.0"
+dependencies = [
+ "debugvault",
+ "dirs",
+ "egui",
+ "log 0.0.0",
+ "once_cell",
+ "serde",
+ "serde_yaml",
+ "triple_accel",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "copypasta"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d35364349bf9e9e1c3a035ddcb00d188d23a3c40c50244c03c27a99fc6a65ae"
+dependencies = [
+ "clipboard-win",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "smithay-clipboard",
+ "x11-clipboard",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "core-graphics"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "crc"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe"
+dependencies = [
+ "crc-catalog",
+]
+
+[[package]]
+name = "crc-catalog"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-queue"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cursor-icon"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+
+[[package]]
+name = "d3d12"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307"
+dependencies = [
+ "bitflags 2.4.2",
+ "libloading 0.8.1",
+ "winapi",
+]
+
+[[package]]
+name = "dashmap"
+version = "5.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
+dependencies = [
+ "cfg-if",
+ "hashbrown",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "debugvault"
+version = "0.0.0"
+dependencies = [
+ "binformat",
+ "bitflags 2.4.2",
+ "crossbeam-queue",
+ "dashmap",
+ "gimli",
+ "log 0.0.0",
+ "memmap2",
+ "object",
+ "pdb",
+ "processor_shared",
+ "radix_trie",
+ "rustc-hash",
+ "tokenizing",
+ "typed-arena",
+]
+
+[[package]]
+name = "decoder"
+version = "0.0.0"
+dependencies = [
+ "debugvault",
+ "tokenizing",
+]
+
+[[package]]
+name = "derivative"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c"
+dependencies = [
+ "libc 0.2.153",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "dlib"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+dependencies = [
+ "libloading 0.8.1",
+]
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+
+[[package]]
+name = "dpi"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53"
+
+[[package]]
+name = "ecolor"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10"
+dependencies = [
+ "bytemuck",
+ "serde",
+]
+
+[[package]]
+name = "egui"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "584c5d1bf9a67b25778a3323af222dbe1a1feb532190e103901187f92c7fe29a"
+dependencies = [
+ "accesskit",
+ "ahash",
+ "epaint",
+ "nohash-hasher",
+ "serde",
+]
+
+[[package]]
+name = "egui_tiles"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e2c0ff99daddcbdc54b141dbb7be3b014463da48a03ebc801bf63e500b23d75"
+dependencies = [
+ "ahash",
+ "egui",
+ "itertools",
+ "log 0.4.20",
+ "serde",
+]
+
+[[package]]
+name = "either"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2"
+
+[[package]]
+name = "emath"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f"
+dependencies = [
+ "bytemuck",
+ "serde",
+]
+
+[[package]]
+name = "endi"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf"
+
+[[package]]
+name = "endian-type"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+
+[[package]]
+name = "enumflags2"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
+dependencies = [
+ "enumflags2_derive",
+ "serde",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.7.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "enumn"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "epaint"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b381f8b149657a4acf837095351839f32cd5c4aec1817fc4df84e18d76334176"
+dependencies = [
+ "ab_glyph",
+ "ahash",
+ "bytemuck",
+ "ecolor",
+ "emath",
+ "nohash-hasher",
+ "parking_lot",
+ "serde",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc 0.2.153",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "event-listener"
+version = "2.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+
+[[package]]
+name = "event-listener"
+version = "4.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3"
+dependencies = [
+ "event-listener 4.0.3",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3"
+dependencies = [
+ "event-listener 5.3.0",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fallible-iterator"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7"
+
+[[package]]
+name = "fallible-iterator"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649"
+
+[[package]]
+name = "fastrand"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
+
+[[package]]
+name = "fdeflate"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset 0.9.1",
+ "rustc_version",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "foreign-types"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
+dependencies = [
+ "foreign-types-macros",
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-macros"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "funty"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "gdk"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc 0.2.153",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc 0.2.153",
+ "once_cell",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "gethostname"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177"
+dependencies = [
+ "libc 0.2.153",
+ "winapi",
+]
+
+[[package]]
+name = "gethostname"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+dependencies = [
+ "libc 0.2.153",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "libc 0.2.153",
+ "wasi",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+dependencies = [
+ "fallible-iterator 0.3.0",
+ "indexmap",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "gio"
+version = "0.18.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc 0.2.153",
+ "once_cell",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "system-deps",
+ "winapi",
+]
+
+[[package]]
+name = "gl_generator"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
+dependencies = [
+ "khronos_api",
+ "log 0.4.20",
+ "xml-rs",
+]
+
+[[package]]
+name = "glib"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+dependencies = [
+ "bitflags 2.4.2",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "memchr",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro-crate 2.0.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+dependencies = [
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "glow"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1"
+dependencies = [
+ "js-sys",
+ "slotmap",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "glutin_wgl_sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead"
+dependencies = [
+ "gl_generator",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+dependencies = [
+ "glib-sys",
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "gpu-alloc"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
+dependencies = [
+ "bitflags 2.4.2",
+ "gpu-alloc-types",
+]
+
+[[package]]
+name = "gpu-alloc-types"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
+dependencies = [
+ "bitflags 2.4.2",
+]
+
+[[package]]
+name = "gpu-allocator"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884"
+dependencies = [
+ "log 0.4.20",
+ "presser",
+ "thiserror",
+ "winapi",
+ "windows",
+]
+
+[[package]]
+name = "gpu-descriptor"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c"
+dependencies = [
+ "bitflags 2.4.2",
+ "gpu-descriptor-types",
+ "hashbrown",
+]
+
+[[package]]
+name = "gpu-descriptor-types"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c"
+dependencies = [
+ "bitflags 2.4.2",
+]
+
+[[package]]
+name = "gtk"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c"
+dependencies = [
+ "atk",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc 0.2.153",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "gui"
+version = "0.0.0"
+dependencies = [
+ "bytemuck",
+ "cc",
+ "commands",
+ "copypasta",
+ "crossbeam-queue",
+ "debugvault",
+ "dirs",
+ "egui",
+ "egui_tiles",
+ "infinite_scroll",
+ "log 0.0.0",
+ "muda",
+ "once_cell",
+ "png",
+ "pollster",
+ "processor",
+ "processor_shared",
+ "rfd",
+ "tokenizing",
+ "tree-sitter",
+ "tree-sitter-c",
+ "tree-sitter-cpp",
+ "tree-sitter-highlight",
+ "tree-sitter-rust",
+ "wgpu",
+ "winit",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
+
+[[package]]
+name = "hassle-rs"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890"
+dependencies = [
+ "bitflags 2.4.2",
+ "com",
+ "libc 0.2.153",
+ "libloading 0.8.1",
+ "thiserror",
+ "widestring",
+ "winapi",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "hexf-parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
+
+[[package]]
+name = "icrate"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319"
+dependencies = [
+ "block2",
+ "dispatch",
+ "objc2",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "infinite_scroll"
+version = "0.0.0"
+dependencies = [
+ "egui",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+
+[[package]]
+name = "jni"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+dependencies = [
+ "cesu8",
+ "cfg-if",
+ "combine",
+ "jni-sys",
+ "log 0.4.20",
+ "thiserror",
+ "walkdir",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "jobserver"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "keyboard-types"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
+dependencies = [
+ "bitflags 2.4.2",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "khronos-egl"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76"
+dependencies = [
+ "libc 0.2.153",
+ "libloading 0.8.1",
+ "pkg-config",
+]
+
+[[package]]
+name = "khronos_api"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
+
+[[package]]
+name = "lazy-bytes-cast"
+version = "5.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b"
+
+[[package]]
+name = "libc"
+version = "0.2.140"
+source = "git+https://github.com/rust-lang/libc?rev=60bf6d7fa9d561820ea562751ee455ccf67d3015#60bf6d7fa9d561820ea562751ee455ccf67d3015"
+
+[[package]]
+name = "libc"
+version = "0.2.153"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "libredox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.4.2",
+ "libc 0.2.153",
+ "redox_syscall 0.4.1",
+]
+
+[[package]]
+name = "libredox"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
+dependencies = [
+ "bitflags 2.4.2",
+ "libc 0.2.153",
+ "redox_syscall 0.4.1",
+]
+
+[[package]]
+name = "libxdo"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00333b8756a3d28e78def82067a377de7fa61b24909000aeaa2b446a948d14db"
+dependencies = [
+ "libxdo-sys",
+]
+
+[[package]]
+name = "libxdo-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db23b9e7e2b7831bbd8aac0bbeeeb7b68cbebc162b227e7052e8e55829a09212"
+dependencies = [
+ "libc 0.2.153",
+ "x11",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+
+[[package]]
+name = "lock_api"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.0.0"
+dependencies = [
+ "egui",
+ "rfd",
+]
+
+[[package]]
+name = "log"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+
+[[package]]
+name = "memmap2"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45fd3a57831bf88bc63f8cebc0cf956116276e97fef3966103e96416209f7c92"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "metal"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25"
+dependencies = [
+ "bitflags 2.4.2",
+ "block",
+ "core-graphics-types",
+ "foreign-types",
+ "log 0.4.20",
+ "objc",
+ "paste",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+ "simd-adler32",
+]
+
+[[package]]
+name = "mips"
+version = "0.0.0"
+dependencies = [
+ "debugvault",
+ "decoder",
+ "tokenizing",
+]
+
+[[package]]
+name = "muda"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f428b4e9db3d17e2f809dfb1ff9ddfbbf16c71790d1656d10aee320877e1392f"
+dependencies = [
+ "cocoa",
+ "crossbeam-channel",
+ "dpi",
+ "gtk",
+ "keyboard-types",
+ "libxdo",
+ "objc",
+ "once_cell",
+ "png",
+ "thiserror",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "naga"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8878eb410fc90853da3908aebfe61d73d26d4437ef850b70050461f939509899"
+dependencies = [
+ "bit-set",
+ "bitflags 2.4.2",
+ "codespan-reporting",
+ "hexf-parse",
+ "indexmap",
+ "log 0.4.20",
+ "num-traits",
+ "rustc-hash",
+ "spirv",
+ "termcolor",
+ "thiserror",
+ "unicode-xid",
+]
+
+[[package]]
+name = "ndk"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
+dependencies = [
+ "bitflags 2.4.2",
+ "jni-sys",
+ "log 0.4.20",
+ "ndk-sys",
+ "num_enum",
+ "raw-window-handle",
+ "thiserror",
+]
+
+[[package]]
+name = "ndk-context"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b"
+
+[[package]]
+name = "ndk-sys"
+version = "0.5.0+25.2.9519653"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "nibble_vec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "nix"
+version = "0.26.1"
+source = "git+https://github.com/mbyzhang/nix#ac97b9fcd53b4713d0c9da34ee4dcba16fd1c457"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc 0.2.140",
+ "memoffset 0.8.0",
+ "pin-utils",
+ "static_assertions",
+]
+
+[[package]]
+name = "nix"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc 0.2.153",
+ "memoffset 0.7.1",
+]
+
+[[package]]
+name = "nix"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
+dependencies = [
+ "bitflags 2.4.2",
+ "cfg-if",
+ "cfg_aliases",
+ "libc 0.2.153",
+ "memoffset 0.9.1",
+]
+
+[[package]]
+name = "nohash-hasher"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
+
+[[package]]
+name = "num-traits"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+ "objc_exception",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc-sys"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7c71324e4180d0899963fc83d9d241ac39e699609fc1025a850aadac8257459"
+
+[[package]]
+name = "objc2"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d"
+dependencies = [
+ "objc-sys",
+ "objc2-encode",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666"
+
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+dependencies = [
+ "flate2",
+ "memchr",
+ "ruzstd",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "orbclient"
+version = "0.3.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166"
+dependencies = [
+ "libredox 0.0.2",
+]
+
+[[package]]
+name = "ordered-stream"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "owned_ttf_parser"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7"
+dependencies = [
+ "ttf-parser",
+]
+
+[[package]]
+name = "pango"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+dependencies = [
+ "gio",
+ "glib",
+ "libc 0.2.153",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc 0.2.153",
+ "system-deps",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+dependencies = [
+ "cfg-if",
+ "libc 0.2.153",
+ "redox_syscall 0.4.1",
+ "smallvec",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "pdb"
+version = "0.8.0"
+source = "git+https://github.com/WINSDK/pdb-rs#c51a01dc6b8d41afcbb6ed3df5ee2ec4ddec401e"
+dependencies = [
+ "fallible-iterator 0.2.0",
+ "scroll",
+ "uuid",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "piper"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
+
+[[package]]
+name = "png"
+version = "0.17.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "polling"
+version = "3.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "pollster"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "presser"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
+dependencies = [
+ "toml_edit 0.20.7",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.0",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "processor"
+version = "0.0.0"
+dependencies = [
+ "arm",
+ "binformat",
+ "commands",
+ "debugvault",
+ "decoder",
+ "log 0.0.0",
+ "memmap2",
+ "mips",
+ "object",
+ "processor_shared",
+ "riscv",
+ "tokenizing",
+ "x86_64",
+]
+
+[[package]]
+name = "processor_shared"
+version = "0.0.0"
+dependencies = [
+ "object",
+]
+
+[[package]]
+name = "profiling"
+version = "1.0.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d135ede8821cf6376eb7a64148901e1690b788c11ae94dc297ae917dbc91dc0e"
+
+[[package]]
+name = "quick-xml"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "radium"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
+
+[[package]]
+name = "radix_trie"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
+dependencies = [
+ "endian-type",
+ "nibble_vec",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc 0.2.153",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "range-alloc"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab"
+
+[[package]]
+name = "raw-window-handle"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
+
+[[package]]
+name = "redox_syscall"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+dependencies = [
+ "bitflags 1.3.2",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
+dependencies = [
+ "getrandom",
+ "libredox 0.0.1",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
+name = "renderdoc-sys"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b"
+
+[[package]]
+name = "rfd"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251"
+dependencies = [
+ "ashpd",
+ "block",
+ "dispatch",
+ "js-sys",
+ "log 0.4.20",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "pollster",
+ "raw-window-handle",
+ "urlencoding",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "riscv"
+version = "0.0.0"
+dependencies = [
+ "crc",
+ "debugvault",
+ "decoder",
+ "object",
+ "once_cell",
+ "tokenizing",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+dependencies = [
+ "bitflags 2.4.2",
+ "errno",
+ "libc 0.2.153",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "ruzstd"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d"
+dependencies = [
+ "byteorder",
+ "derive_more",
+ "twox-hash",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "scroll"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da"
+
+[[package]]
+name = "sctk-adwaita"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550"
+dependencies = [
+ "ab_glyph",
+ "log 0.4.20",
+ "memmap2",
+ "smithay-client-toolkit",
+ "tiny-skia",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+
+[[package]]
+name = "serde"
+version = "1.0.195"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.195"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_yaml"
+version = "0.9.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38"
+dependencies = [
+ "indexmap",
+ "itoa",
+ "ryu",
+ "serde",
+ "unsafe-libyaml",
+]
+
+[[package]]
+name = "sha1"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc 0.2.153",
+]
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "slotmap"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+
+[[package]]
+name = "smithay-client-toolkit"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f"
+dependencies = [
+ "bitflags 2.4.2",
+ "calloop",
+ "calloop-wayland-source",
+ "cursor-icon",
+ "libc 0.2.153",
+ "log 0.4.20",
+ "memmap2",
+ "rustix",
+ "thiserror",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-csd-frame",
+ "wayland-cursor",
+ "wayland-protocols",
+ "wayland-protocols-wlr",
+ "wayland-scanner",
+ "xkeysym",
+]
+
+[[package]]
+name = "smithay-clipboard"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bb62b280ce5a5cba847669933a0948d00904cf83845c944eae96a4738cea1a6"
+dependencies = [
+ "libc 0.2.153",
+ "smithay-client-toolkit",
+ "wayland-backend",
+]
+
+[[package]]
+name = "smol_str"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "spirv"
+version = "0.3.0+sdk-1.3.268.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
+dependencies = [
+ "bitflags 2.4.2",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strict-num"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+dependencies = [
+ "cfg-expr",
+ "heck 0.5.0",
+ "pkg-config",
+ "toml 0.8.12",
+ "version-compare",
+]
+
+[[package]]
+name = "tap"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
+
+[[package]]
+name = "tempfile"
+version = "3.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "redox_syscall 0.4.1",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tiny-skia"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6a067b809476893fce6a254cf285850ff69c847e6cfbade6a20b655b6c7e80d"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "bytemuck",
+ "cfg-if",
+ "log 0.4.20",
+ "tiny-skia-path",
+]
+
+[[package]]
+name = "tiny-skia-path"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5de35e8a90052baaaf61f171680ac2f8e925a1e43ea9d2e3a00514772250e541"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "strict-num",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokenizing"
+version = "0.0.0"
+dependencies = [
+ "egui",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.9",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.34",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.20.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.34",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.34",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.6",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "tree-sitter"
+version = "0.20.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e747b1f9b7b931ed39a548c1fae149101497de3c1fc8d9e18c62c1a66c683d3d"
+dependencies = [
+ "cc",
+ "regex",
+]
+
+[[package]]
+name = "tree-sitter-c"
+version = "0.21.0"
+source = "git+https://github.com/WINSDK/tree-sitter-c#32b7cab7dfbfe7c7877c6ec4bda40557e170399c"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-cpp"
+version = "0.21.0"
+source = "git+https://github.com/WINSDK/tree-sitter-cpp#ef9677b8aca6a5dbdf39437406add13b86ccc70e"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-highlight"
+version = "0.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "042342584c5a7a0b833d9fc4e2bdab3f9868ddc6c4b339a1e01451c6720868bc"
+dependencies = [
+ "regex",
+ "thiserror",
+ "tree-sitter",
+]
+
+[[package]]
+name = "tree-sitter-rust"
+version = "0.21.0"
+source = "git+https://github.com/WINSDK/tree-sitter-rust#ce8a251e40c696a0d95784720c2cc6a85873645d"
+dependencies = [
+ "cc",
+ "tree-sitter",
+]
+
+[[package]]
+name = "triple_accel"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22048bc95dfb2ffd05b1ff9a756290a009224b60b2f0e7525faeee7603851e63"
+
+[[package]]
+name = "ttf-parser"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4"
+
+[[package]]
+name = "twox-hash"
+version = "1.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675"
+dependencies = [
+ "cfg-if",
+ "static_assertions",
+]
+
+[[package]]
+name = "typed-arena"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a"
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "uds_windows"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9"
+dependencies = [
+ "memoffset 0.9.1",
+ "tempfile",
+ "winapi",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
+
+[[package]]
+name = "unsafe-libyaml"
+version = "0.2.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "urlencoding"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
+
+[[package]]
+name = "uuid"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
+
+[[package]]
+name = "version-compare"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
+dependencies = [
+ "bumpalo",
+ "log 0.4.20",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
+
+[[package]]
+name = "wayland-backend"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19152ddd73f45f024ed4534d9ca2594e0ef252c1847695255dae47f34df9fbe4"
+dependencies = [
+ "cc",
+ "downcast-rs",
+ "nix 0.26.4",
+ "scoped-tls",
+ "smallvec",
+ "wayland-sys",
+]
+
+[[package]]
+name = "wayland-client"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ca7d52347346f5473bf2f56705f360e8440873052e575e55890c4fa57843ed3"
+dependencies = [
+ "bitflags 2.4.2",
+ "nix 0.26.4",
+ "wayland-backend",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-csd-frame"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
+dependencies = [
+ "bitflags 2.4.2",
+ "cursor-icon",
+ "wayland-backend",
+]
+
+[[package]]
+name = "wayland-cursor"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44aa20ae986659d6c77d64d808a046996a932aa763913864dc40c359ef7ad5b"
+dependencies = [
+ "nix 0.26.4",
+ "wayland-client",
+ "xcursor",
+]
+
+[[package]]
+name = "wayland-protocols"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e253d7107ba913923dc253967f35e8561a3c65f914543e46843c88ddd729e21c"
+dependencies = [
+ "bitflags 2.4.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-plasma"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
+dependencies = [
+ "bitflags 2.4.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-protocols-wlr"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6"
+dependencies = [
+ "bitflags 2.4.2",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-scanner",
+]
+
+[[package]]
+name = "wayland-scanner"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb8e28403665c9f9513202b7e1ed71ec56fde5c107816843fb14057910b2c09c"
+dependencies = [
+ "proc-macro2",
+ "quick-xml",
+ "quote",
+]
+
+[[package]]
+name = "wayland-sys"
+version = "0.31.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af"
+dependencies = [
+ "dlib",
+ "log 0.4.20",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web-time"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "wgpu"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bfe9a310dcf2e6b85f00c46059aaeaf4184caa8e29a1ecd4b7a704c3482332d"
+dependencies = [
+ "arrayvec",
+ "cfg-if",
+ "cfg_aliases",
+ "js-sys",
+ "log 0.4.20",
+ "naga",
+ "parking_lot",
+ "profiling",
+ "raw-window-handle",
+ "smallvec",
+ "static_assertions",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "wgpu-core",
+ "wgpu-hal",
+ "wgpu-types",
+]
+
+[[package]]
+name = "wgpu-core"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b15e451d4060ada0d99a64df44e4d590213496da7c4f245572d51071e8e30ed"
+dependencies = [
+ "arrayvec",
+ "bit-vec",
+ "bitflags 2.4.2",
+ "cfg_aliases",
+ "codespan-reporting",
+ "indexmap",
+ "log 0.4.20",
+ "naga",
+ "once_cell",
+ "parking_lot",
+ "profiling",
+ "raw-window-handle",
+ "rustc-hash",
+ "smallvec",
+ "thiserror",
+ "web-sys",
+ "wgpu-hal",
+ "wgpu-types",
+]
+
+[[package]]
+name = "wgpu-hal"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3bb47856236bfafc0bc591a925eb036ac19cd987624a447ff353e7a7e7e6f72"
+dependencies = [
+ "android_system_properties",
+ "arrayvec",
+ "ash",
+ "bit-set",
+ "bitflags 2.4.2",
+ "block",
+ "cfg_aliases",
+ "core-graphics-types",
+ "d3d12",
+ "glow",
+ "glutin_wgl_sys",
+ "gpu-alloc",
+ "gpu-allocator",
+ "gpu-descriptor",
+ "hassle-rs",
+ "js-sys",
+ "khronos-egl",
+ "libc 0.2.153",
+ "libloading 0.8.1",
+ "log 0.4.20",
+ "metal",
+ "naga",
+ "objc",
+ "once_cell",
+ "parking_lot",
+ "profiling",
+ "range-alloc",
+ "raw-window-handle",
+ "renderdoc-sys",
+ "rustc-hash",
+ "smallvec",
+ "thiserror",
+ "wasm-bindgen",
+ "web-sys",
+ "wgpu-types",
+ "winapi",
+]
+
+[[package]]
+name = "wgpu-types"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "895fcbeb772bfb049eb80b2d6e47f6c9af235284e9703c96fc0218a42ffd5af2"
+dependencies = [
+ "bitflags 2.4.2",
+ "js-sys",
+ "web-sys",
+]
+
+[[package]]
+name = "widestring"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-wsapoll"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
+dependencies = [
+ "windows-core",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.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"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.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"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.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"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.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"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.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"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.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"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.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"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
+name = "winit"
+version = "0.29.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c824f11941eeae66ec71111cc2674373c772f482b58939bb4066b642aa2ffcf"
+dependencies = [
+ "ahash",
+ "android-activity",
+ "atomic-waker",
+ "bitflags 2.4.2",
+ "bytemuck",
+ "calloop",
+ "cfg_aliases",
+ "core-foundation",
+ "core-graphics",
+ "cursor-icon",
+ "icrate",
+ "js-sys",
+ "libc 0.2.153",
+ "log 0.4.20",
+ "memmap2",
+ "ndk",
+ "ndk-sys",
+ "objc2",
+ "once_cell",
+ "orbclient",
+ "percent-encoding",
+ "raw-window-handle",
+ "redox_syscall 0.3.5",
+ "rustix",
+ "sctk-adwaita",
+ "smithay-client-toolkit",
+ "smol_str",
+ "unicode-segmentation",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wayland-backend",
+ "wayland-client",
+ "wayland-protocols",
+ "wayland-protocols-plasma",
+ "web-sys",
+ "web-time",
+ "windows-sys 0.48.0",
+ "x11-dl",
+ "x11rb 0.13.0",
+ "xkbcommon-dl",
+]
+
+[[package]]
+name = "winnow"
+version = "0.5.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0c976aaaa0e1f90dbb21e9587cdaf1d9679a1cde8875c0d6bd83ab96a208352"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winres"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
+name = "wyz"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
+
+[[package]]
+name = "x11"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
+dependencies = [
+ "libc 0.2.153",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11-clipboard"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b41aca1115b1f195f21c541c5efb423470848d48143127d0f07f8b90c27440df"
+dependencies = [
+ "x11rb 0.12.0",
+]
+
+[[package]]
+name = "x11-dl"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
+dependencies = [
+ "libc 0.2.153",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11rb"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a"
+dependencies = [
+ "gethostname 0.3.0",
+ "nix 0.26.4",
+ "winapi",
+ "winapi-wsapoll",
+ "x11rb-protocol 0.12.0",
+]
+
+[[package]]
+name = "x11rb"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+dependencies = [
+ "as-raw-xcb-connection",
+ "gethostname 0.4.3",
+ "libc 0.2.153",
+ "libloading 0.8.1",
+ "once_cell",
+ "rustix",
+ "x11rb-protocol 0.13.0",
+]
+
+[[package]]
+name = "x11rb-protocol"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc"
+dependencies = [
+ "nix 0.26.4",
+]
+
+[[package]]
+name = "x11rb-protocol"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+
+[[package]]
+name = "x86_64"
+version = "0.0.0"
+dependencies = [
+ "debugvault",
+ "decoder",
+ "tokenizing",
+]
+
+[[package]]
+name = "xcursor"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
+
+[[package]]
+name = "xdg-home"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
+dependencies = [
+ "libc 0.2.153",
+ "winapi",
+]
+
+[[package]]
+name = "xkbcommon-dl"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6924668544c48c0133152e7eec86d644a056ca3d09275eb8d5cdb9855f9d8699"
+dependencies = [
+ "bitflags 2.4.2",
+ "dlib",
+ "log 0.4.20",
+ "once_cell",
+ "xkeysym",
+]
+
+[[package]]
+name = "xkeysym"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
+
+[[package]]
+name = "xml-rs"
+version = "0.8.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+
+[[package]]
+name = "zbus"
+version = "4.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9"
+dependencies = [
+ "async-broadcast",
+ "async-executor",
+ "async-fs",
+ "async-io",
+ "async-lock 3.3.0",
+ "async-process",
+ "async-recursion",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "derivative",
+ "enumflags2",
+ "event-listener 5.3.0",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "hex",
+ "nix 0.28.0",
+ "ordered-stream",
+ "rand",
+ "serde",
+ "serde_repr",
+ "sha1",
+ "static_assertions",
+ "tracing",
+ "uds_windows",
+ "windows-sys 0.52.0",
+ "xdg-home",
+ "zbus_macros",
+ "zbus_names",
+ "zvariant",
+]
+
+[[package]]
+name = "zbus_macros"
+version = "4.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zbus_names"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c"
+dependencies = [
+ "serde",
+ "static_assertions",
+ "zvariant",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "zvariant"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "static_assertions",
+ "url",
+ "zvariant_derive",
+]
+
+[[package]]
+name = "zvariant_derive"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc"
+dependencies = [
+ "proc-macro-crate 3.1.0",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_utils"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
diff --git a/pkgs/by-name/bi/bite/package.nix b/pkgs/by-name/bi/bite/package.nix
new file mode 100644
index 0000000000000..de072e33d4702
--- /dev/null
+++ b/pkgs/by-name/bi/bite/package.nix
@@ -0,0 +1,110 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  makeBinaryWrapper,
+  copyDesktopItems,
+  makeDesktopItem,
+  imagemagick,
+  atk,
+  cairo,
+  gdk-pixbuf,
+  glib,
+  gtk3,
+  libxkbcommon,
+  pango,
+  vulkan-loader,
+  stdenv,
+  darwin,
+  wayland,
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "bite";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "WINSDK";
+    repo = "bite";
+    rev = "V${version}";
+    hash = "sha256-A5NII5pLnM4BBy2L+ylXU0anqw4DpKgXmc29fcTq2z8=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "libc-0.2.140" = "sha256-5cP25BDfkrybiZjmwmzeqd0nzdItFdNSZ4te7FdLpnk=";
+      "nix-0.26.1" = "sha256-AsOX8sLGHJNJhq0P9WDxWsNiRXgZJl15paTcGdPMQXA=";
+      "pdb-0.8.0" = "sha256-CEglHzBpS3rN7+05tS09FbBcOM0jjyvR+DWrEbvRYwE=";
+      "tree-sitter-c-0.21.0" = "sha256-7L3Ua6LBeX2492RTikKYeCNIG5e5XSrCu4UyXX1eQiI=";
+      "tree-sitter-cpp-0.21.0" = "sha256-WZy3S8+bRkpzUFpnLVp18rY5DxN70fdEPYIYx0UqJhs=";
+      "tree-sitter-rust-0.21.0" = "sha256-kZT4Hil7u4GFWImuQCt9nQJ+HL3B5yHD5wjalpDLlSE=";
+    };
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    makeBinaryWrapper
+    copyDesktopItems
+    imagemagick
+  ];
+
+  buildInputs =
+    [
+      atk
+      cairo
+      gdk-pixbuf
+      glib
+      gtk3
+      libxkbcommon
+      pango
+      vulkan-loader
+    ]
+    ++ lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.AppKit
+      darwin.apple_sdk.frameworks.CoreGraphics
+      darwin.apple_sdk.frameworks.Foundation
+      darwin.apple_sdk.frameworks.Metal
+      darwin.apple_sdk.frameworks.QuartzCore
+    ]
+    ++ lib.optionals stdenv.isLinux [
+      wayland
+    ];
+
+  runtimeDependencies =
+    [
+      libxkbcommon
+      vulkan-loader
+    ]
+    ++ lib.optionals stdenv.isLinux [
+      wayland
+    ];
+
+  postInstall = ''
+    wrapProgram $out/bin/bite \
+      --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeDependencies}"
+
+    mkdir -p $out/share/icons/hicolor/64x64/apps
+    convert $src/assets/iconx64.png -background black -alpha remove -alpha off $out/share/icons/hicolor/64x64/apps/bite.png
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "BiTE";
+      exec = meta.mainProgram;
+      icon = "bite";
+      desktopName = "BiTE";
+      comment = meta.description;
+      categories = ["Development" "Utility"];
+    })
+  ];
+
+  meta = with lib; {
+    description = "Disassembler focused on comprehensive rust support";
+    homepage = "https://github.com/WINSDK/bite";
+    license = licenses.mit;
+    maintainers = with maintainers; [vinnymeller];
+    mainProgram = "bite";
+    broken = stdenv.isDarwin && stdenv.isx86_64;
+  };
+}
diff --git a/pkgs/by-name/ho/home-manager/package.nix b/pkgs/by-name/ho/home-manager/package.nix
index 6aea05d15a2c2..1347b1fe93fbf 100644
--- a/pkgs/by-name/ho/home-manager/package.nix
+++ b/pkgs/by-name/ho/home-manager/package.nix
@@ -16,14 +16,14 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "home-manager";
-  version = "unstable-2024-04-16";
+  version = "unstable-2024-04-23";
 
   src = fetchFromGitHub {
     name = "home-manager-source";
     owner = "nix-community";
     repo = "home-manager";
-    rev = "fa8c16e2452bf092ac76f09ee1fb1e9f7d0796e7";
-    hash = "sha256-LmaabaQZdx52MPGKPRt9Opoc9Gd9RbwvCdysUUYQoXI=";
+    rev = "33a20182e3164f451b6a4ac2ecadcab5c2c36703";
+    hash = "sha256-pHJYZIVFmzPAwyTfcMGJwlfz18nOsS4p0CuDnI1EDL4=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/hy/hyprland-activewindow/package.nix b/pkgs/by-name/hy/hyprland-activewindow/package.nix
new file mode 100644
index 0000000000000..bc061447d60f3
--- /dev/null
+++ b/pkgs/by-name/hy/hyprland-activewindow/package.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "hyprland-activewindow";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "FieldOfClay";
+    repo = "hyprland-activewindow";
+    rev = "v${version}";
+    hash = "sha256-8pzm8uIyvlz4nHbxtmbMblFIj38M2VsenaKzJ9di1Do=";
+  };
+
+  cargoHash = "sha256-wIF0qa1dyZlcsLPL2TflFQFPm4Pe9TWHe1F2L1YccZ8=";
+
+  meta = with lib; {
+    description = "A multi-monitor-aware Hyprland workspace widget helper";
+    homepage = "https://github.com/FieldofClay/hyprland-activewindow";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kiike donovanglover ];
+    mainProgram = "hyprland-activewindow";
+  };
+}
diff --git a/pkgs/by-name/hy/hyprland-workspaces/package.nix b/pkgs/by-name/hy/hyprland-workspaces/package.nix
new file mode 100644
index 0000000000000..4ca89b0da1188
--- /dev/null
+++ b/pkgs/by-name/hy/hyprland-workspaces/package.nix
@@ -0,0 +1,28 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "hyprland-workspaces";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "FieldofClay";
+    repo = "hyprland-workspaces";
+    rev = "v${version}";
+    hash = "sha256-4QGLTimIpx74gWUyHCheUZZT1WgVzBoJRY8OlUDdOh4=";
+  };
+
+  cargoHash = "sha256-9ndP0nyRBCdOGth4UWA263IvjbgnVW2x9PK8oTaMrxg=";
+
+  meta = with lib; {
+    description = "A multi-monitor aware Hyprland workspace widget";
+    homepage = "https://github.com/FieldofClay/hyprland-workspaces";
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kiike donovanglover ];
+    mainProgram = "hyprland-workspaces";
+  };
+}
diff --git a/pkgs/by-name/mo/movim/package.nix b/pkgs/by-name/mo/movim/package.nix
index 6380baf3d46fd..1c0d5863dfa15 100644
--- a/pkgs/by-name/mo/movim/package.nix
+++ b/pkgs/by-name/mo/movim/package.nix
@@ -39,13 +39,13 @@ let
 in
 php.buildComposerProject (finalAttrs: {
   pname = "movim";
-  version = "0.23.0.20240328";
+  version = "0.24";
 
   src = fetchFromGitHub {
     owner = "movim";
     repo = "movim";
-    rev = "c3a43cd7e3a1a3a6efd595470e6a85b2ec578cba";
-    hash = "sha256-x0C4w3SRP3NMOhGSZOQALk6PNWUre4MvFW5cESr8Wvk=";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-t63POjywZLk5ulppuCedFhhEhOsnB90vy3k/HhM3MGc=";
   };
 
   php = php.buildEnv ({
@@ -69,7 +69,7 @@ php.buildComposerProject (finalAttrs: {
   # pinned commonmark
   composerStrictValidation = false;
 
-  vendorHash = "sha256-RFIi1I+gcagRgkDpgQeR1oGJeBGA7z9q3DCfW+ZDr2Y=";
+  vendorHash = "sha256-SinS5ocf4kLMBR2HF3tcdmEomw9ICUqTg2IXPJFoujU=";
 
   postPatch = ''
     # Our modules are already wrapped, removes missing *.so warnings;
diff --git a/pkgs/by-name/po/polybar/package.nix b/pkgs/by-name/po/polybar/package.nix
index 613b75d646af7..76b3de10cdab4 100644
--- a/pkgs/by-name/po/polybar/package.nix
+++ b/pkgs/by-name/po/polybar/package.nix
@@ -111,6 +111,7 @@ stdenv.mkDerivation (finalAttrs: {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ afldcr Br1ght0ne moni ckie ];
+    mainProgram = "polybar";
     platforms = platforms.linux;
   };
 })
diff --git a/pkgs/by-name/qr/qrtool/package.nix b/pkgs/by-name/qr/qrtool/package.nix
index f35e6a0ef153e..a6e66fef29545 100644
--- a/pkgs/by-name/qr/qrtool/package.nix
+++ b/pkgs/by-name/qr/qrtool/package.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "qrtool";
-  version = "0.10.8";
+  version = "0.10.9";
 
   src = fetchFromGitHub {
     owner = "sorairolake";
     repo = "qrtool";
     rev = "v${version}";
-    sha256 = "sha256-YNA8LdqkgScBAoLyWsr4JIeFcU4KfNAYByXSvaccOoU=";
+    sha256 = "sha256-wLi2lb48+leH7AfpIj0/vDxPZhBjvuacVit8U8zArjs=";
   };
 
-  cargoHash = "sha256-6yQVH15oW8dCjNKwL2Gb6IQKilVYokBs2j+M4fWLm+4=";
+  cargoHash = "sha256-igbRsNWPtE/KcSLqzKIFEm3lmdkIxj/22yo/8Gye96k=";
 
   nativeBuildInputs = [ asciidoctor installShellFiles ];
 
diff --git a/pkgs/by-name/su/supersonic/package.nix b/pkgs/by-name/su/supersonic/package.nix
index 15621682aa649..fee32dc5f88d9 100644
--- a/pkgs/by-name/su/supersonic/package.nix
+++ b/pkgs/by-name/su/supersonic/package.nix
@@ -20,16 +20,16 @@ assert waylandSupport -> stdenv.isLinux;
 
 buildGoModule rec {
   pname = "supersonic" + lib.optionalString waylandSupport "-wayland";
-  version = "0.10.0";
+  version = "0.10.1";
 
   src = fetchFromGitHub {
     owner = "dweymouth";
     repo = "supersonic";
     rev = "v${version}";
-    hash = "sha256-sleXZnJ/JPlyCMf6Js+Yym1RhtfZT7Q+qYAWLCavZFA=";
+    hash = "sha256-0MbR6ah3UakLn/6Mfd156BlTZe7thNK6mAPLTuz298g=";
   };
 
-  vendorHash = "sha256-JKihU597ZBq1VygpWB73V2m9NN/GDrquX9hNzBdszSQ=";
+  vendorHash = "sha256-Ld1j/SFq5W+SKppAzk7UV74RD6/Dw+PWk0BhEGML5+k=";
 
   nativeBuildInputs = [
     copyDesktopItems
diff --git a/pkgs/by-name/ya/yazi-unwrapped/package.nix b/pkgs/by-name/ya/yazi-unwrapped/package.nix
index 9bf70a8645389..12350c6123411 100644
--- a/pkgs/by-name/ya/yazi-unwrapped/package.nix
+++ b/pkgs/by-name/ya/yazi-unwrapped/package.nix
@@ -5,6 +5,7 @@
 , installShellFiles
 , stdenv
 , Foundation
+, rust-jemalloc-sys
 
 , nix-update-script
 }:
@@ -25,7 +26,7 @@ rustPlatform.buildRustPackage rec {
   env.YAZI_GEN_COMPLETIONS = true;
 
   nativeBuildInputs = [ installShellFiles ];
-  buildInputs = lib.optionals stdenv.isDarwin [ Foundation ];
+  buildInputs = [ rust-jemalloc-sys ] ++ lib.optionals stdenv.isDarwin [ Foundation ];
 
   postInstall = ''
     installShellCompletion --cmd yazi \
diff --git a/pkgs/desktops/gnome/extensions/pop-shell/fix-gjs.patch b/pkgs/desktops/gnome/extensions/pop-shell/fix-gjs.patch
index 4d072f88708af..040c403738a37 100644
--- a/pkgs/desktops/gnome/extensions/pop-shell/fix-gjs.patch
+++ b/pkgs/desktops/gnome/extensions/pop-shell/fix-gjs.patch
@@ -24,3 +24,15 @@ index fbcafbf..ef409ee 100644
          if (!resp) {
              return null;
          }
+diff --git a/src/color_dialog/src/main.ts b/src/color_dialog/src/main.ts
+index a9637e5..5cb86ce 100644
+--- a/src/color_dialog/src/main.ts
++++ b/src/color_dialog/src/main.ts
+@@ -6,6 +6,7 @@ import Gtk from 'gi://Gtk?version=3.0';
+ import Gdk from 'gi://Gdk';
+ 
+ const EXT_PATH_DEFAULTS = [
++    '/run/current-system/sw/share/gnome-shell/extensions/',
+     GLib.get_home_dir() + '/.local/share/gnome-shell/extensions/',
+     '/usr/share/gnome-shell/extensions/',
+ ];
diff --git a/pkgs/development/libraries/ucx/default.nix b/pkgs/development/libraries/ucx/default.nix
index 35574d7c788aa..71a1b2a2001f4 100644
--- a/pkgs/development/libraries/ucx/default.nix
+++ b/pkgs/development/libraries/ucx/default.nix
@@ -19,13 +19,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "ucx";
-  version = "1.15.0";
+  version = "1.16.0";
 
   src = fetchFromGitHub {
     owner = "openucx";
     repo = "ucx";
     rev = "v${version}";
-    sha256 = "sha256-VxIxrk9qKM6Ncfczl4p2EhXiLNgPaYTmjhqi6/w2ZNY=";
+    sha256 = "sha256-dihWwGlQclfa2ke+1V5c6coqfFjjuMyI8QRzNdx33zQ=";
   };
 
   outputs = [ "out" "doc" "dev" ];
diff --git a/pkgs/development/python-modules/mailchecker/default.nix b/pkgs/development/python-modules/mailchecker/default.nix
index 00bb481c169bd..1f038308a76b9 100644
--- a/pkgs/development/python-modules/mailchecker/default.nix
+++ b/pkgs/development/python-modules/mailchecker/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "mailchecker";
-  version = "6.0.3";
+  version = "6.0.4";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QRysmtKo5KXXAVcyQx2WwuwySUP8vAN/gqXWmgoOPmo=";
+    hash = "sha256-XtZOk3KgIzu9vwI0HnoklGQVZ42KVOPQBXxJ1fpfJjA=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/model-bakery/default.nix b/pkgs/development/python-modules/model-bakery/default.nix
index a5b38b525f7d2..82b91dd10da51 100644
--- a/pkgs/development/python-modules/model-bakery/default.nix
+++ b/pkgs/development/python-modules/model-bakery/default.nix
@@ -1,17 +1,18 @@
-{ lib
-, buildPythonPackage
-, fetchFromGitHub
-, hatchling
-, django
-, pytestCheckHook
-, pythonOlder
-, pytest-django
+{
+  lib,
+  buildPythonPackage,
+  fetchFromGitHub,
+  hatchling,
+  django,
+  pytestCheckHook,
+  pythonOlder,
+  pytest-django,
 }:
 
 buildPythonPackage rec {
   pname = "model-bakery";
-  version = "1.17.0";
-  format = "pyproject";
+  version = "1.18.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,25 +20,19 @@ buildPythonPackage rec {
     owner = "model-bakers";
     repo = "model_bakery";
     rev = "refs/tags/${version}";
-    hash = "sha256-o3BI2lMwctR9tiGmY07dAOQUfv9K4rWkc/xI6uHnVfs=";
+    hash = "sha256-mf6NV7r/9kDCRlszx/QGtfEsC1O/SATd6+EX+w7ptEQ=";
   };
 
-  nativeBuildInputs = [
-    hatchling
-  ];
+  build-system = [ hatchling ];
 
-  propagatedBuildInputs = [
-    django
-  ];
+  dependencies = [ django ];
 
   nativeCheckInputs = [
     pytest-django
     pytestCheckHook
   ];
 
-  pythonImportsCheck = [
-    "model_bakery"
-  ];
+  pythonImportsCheck = [ "model_bakery" ];
 
   meta = with lib; {
     description = "Object factory for Django";
diff --git a/pkgs/development/python-modules/nanobind/default.nix b/pkgs/development/python-modules/nanobind/default.nix
new file mode 100644
index 0000000000000..27460b65a8dba
--- /dev/null
+++ b/pkgs/development/python-modules/nanobind/default.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  buildPythonPackage,
+  pythonOlder,
+  fetchFromGitHub,
+  cmake,
+  eigen,
+  ninja,
+  scikit-build,
+  pytestCheckHook,
+  numpy,
+  scipy,
+  torch,
+  jax,
+  jaxlib,
+  tensorflow,
+  setuptools,
+}:
+buildPythonPackage rec {
+  pname = "nanobind";
+  version = "1.9.2";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "wjakob";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-6swDqw7sEYOawQbNWD8VfSQoi+9wjhOhOOwPPkahDas=";
+    fetchSubmodules = true;
+  };
+
+  disabled = pythonOlder "3.8";
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    scikit-build
+    setuptools
+  ];
+  buildInputs = [ eigen ];
+  dontUseCmakeBuildDir = true;
+
+  preCheck = ''
+    # build tests
+    make -j $NIX_BUILD_CORES
+  '';
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    numpy
+    scipy
+    torch
+    tensorflow
+    jax
+    jaxlib
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/wjakob/nanobind";
+    changelog = "https://github.com/wjakob/nanobind/blob/${src.rev}/docs/changelog.rst";
+    description = "Tiny and efficient C++/Python bindings";
+    longDescription = ''
+      nanobind is a small binding library that exposes C++ types in Python and
+      vice versa. It is reminiscent of Boost.Python and pybind11 and uses
+      near-identical syntax. In contrast to these existing tools, nanobind is
+      more efficient: bindings compile in a shorter amount of time, produce
+      smaller binaries, and have better runtime performance.
+    '';
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ parras ];
+  };
+}
diff --git a/pkgs/development/python-modules/psrpcore/default.nix b/pkgs/development/python-modules/psrpcore/default.nix
index 8608c19c8dcdb..102d9ce9b7c0c 100644
--- a/pkgs/development/python-modules/psrpcore/default.nix
+++ b/pkgs/development/python-modules/psrpcore/default.nix
@@ -1,38 +1,40 @@
-{ lib
-, buildPythonPackage
-, cryptography
-, fetchFromGitHub
-, pytestCheckHook
-, pythonOlder
-, xmldiff
+{
+  lib,
+  buildPythonPackage,
+  cryptography,
+  fetchFromGitHub,
+  powershell,
+  pytestCheckHook,
+  pythonOlder,
+  setuptools,
+  xmldiff,
 }:
 
 buildPythonPackage rec {
   pname = "psrpcore";
-  version = "0.2.2";
-  format = "pyproject";
+  version = "0.3.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "jborean93";
-    repo = pname;
+    repo = "psrpcore";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6d5HQJEH/x+V0rpmQkprMlH1n151KyUF6d4tM9W5TFs=";
+    hash = "sha256-YThumRHMOTyhP6/EmNEew47v/X4Y1aYg1nvgZJz2XUg=";
   };
 
-  propagatedBuildInputs = [
-    cryptography
-  ];
+  build-system = [ setuptools ];
+
+  dependencies = [ cryptography ];
 
   nativeCheckInputs = [
+    powershell
     pytestCheckHook
     xmldiff
   ];
 
-  pythonImportsCheck = [
-    "psrpcore"
-  ];
+  pythonImportsCheck = [ "psrpcore" ];
 
   meta = with lib; {
     description = "Library for the PowerShell Remoting Protocol (PSRP)";
diff --git a/pkgs/development/python-modules/pydantic-yaml-0/default.nix b/pkgs/development/python-modules/pydantic-yaml-0/default.nix
index bc842e5dc5326..74c44b255283a 100644
--- a/pkgs/development/python-modules/pydantic-yaml-0/default.nix
+++ b/pkgs/development/python-modules/pydantic-yaml-0/default.nix
@@ -15,6 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pydantic_yaml-0";
+  # nixpkgs-update: no auto update
   version = "0.11.2";
 
   pyproject = true;
diff --git a/pkgs/development/python-modules/python-novaclient/default.nix b/pkgs/development/python-modules/python-novaclient/default.nix
index 8ce053cab37cc..d3451236d0914 100644
--- a/pkgs/development/python-modules/python-novaclient/default.nix
+++ b/pkgs/development/python-modules/python-novaclient/default.nix
@@ -46,6 +46,8 @@ buildPythonPackage rec {
 
   checkPhase = ''
     stestr run -e <(echo "
+    novaclient.tests.unit.test_shell.ParserTest.test_ambiguous_option
+    novaclient.tests.unit.test_shell.ParserTest.test_not_really_ambiguous_option
     novaclient.tests.unit.test_shell.ShellTest.test_osprofiler
     novaclient.tests.unit.test_shell.ShellTestKeystoneV3.test_osprofiler
     ")
diff --git a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
index 771971445156f..701400f3168fb 100644
--- a/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
+++ b/pkgs/development/python-modules/tencentcloud-sdk-python/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "tencentcloud-sdk-python";
-  version = "3.0.1133";
+  version = "3.0.1135";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "TencentCloud";
     repo = "tencentcloud-sdk-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-RQudhUn4BfsdwQOCt9CUuKVVlXbHLMEohg6C2srZ9pk=";
+    hash = "sha256-qrD33e9mOmgi/y9YArxjuV+wbkx9+/Jy0mJBYdVG4Ws=";
   };
 
   build-system = [ setuptools ];
diff --git a/pkgs/development/python-modules/vacuum-map-parser-base/default.nix b/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
index c6656eb97971b..e27ea9d8b6f07 100644
--- a/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
+++ b/pkgs/development/python-modules/vacuum-map-parser-base/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "vacuum-map-parser-base";
-  version = "0.1.2";
+  version = "0.1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "PiotrMachowski";
     repo = "Python-package-${pname}";
     rev = "refs/tags/v${version}";
-    hash = "sha256-moCWUPzn9stxehVEnjqpx8ILYhxzuy8QG+uxR53rCew=";
+    hash = "sha256-wX7RsJKSNZmi6uIDqsKxWe8VaYJPg4I3pwHHckMUOw4=";
   };
 
   postPatch = ''
diff --git a/pkgs/development/tools/gauge/default.nix b/pkgs/development/tools/gauge/default.nix
index efe9917a0d8a3..9c9c53c390737 100644
--- a/pkgs/development/tools/gauge/default.nix
+++ b/pkgs/development/tools/gauge/default.nix
@@ -4,6 +4,12 @@ buildGoModule rec {
   pname = "gauge";
   version = "1.6.6";
 
+  patches = [
+    # adds a check which adds an error message when trying to
+    # install plugins imperatively when using the wrapper
+    ./nix-check.patch
+  ];
+
   src = fetchFromGitHub {
     owner = "getgauge";
     repo = "gauge";
@@ -20,6 +26,6 @@ buildGoModule rec {
     mainProgram = "gauge";
     homepage = "https://gauge.org";
     license = licenses.asl20;
-    maintainers = [ maintainers.vdemeester ];
+    maintainers = with maintainers; [ vdemeester marie ];
   };
 }
diff --git a/pkgs/development/tools/gauge/nix-check.patch b/pkgs/development/tools/gauge/nix-check.patch
new file mode 100644
index 0000000000000..37aec8a51b62a
--- /dev/null
+++ b/pkgs/development/tools/gauge/nix-check.patch
@@ -0,0 +1,50 @@
+diff --git a/plugin/install/install.go b/plugin/install/install.go
+index 60c61550..d7573c2d 100644
+--- a/plugin/install/install.go
++++ b/plugin/install/install.go
+@@ -151,6 +151,7 @@ func isOSCompatible(zipfile string) bool {
+ 
+ // InstallPluginFromZipFile installs plugin from given zip file
+ func InstallPluginFromZipFile(zipFile string, pluginName string) InstallResult {
++	CheckForNixStore(fmt.Sprintf("Tried to install the plugin `%s`.", pluginName))
+ 	if !isPlatformIndependent(zipFile) && !isOSCompatible(zipFile) {
+ 		err := fmt.Errorf("provided plugin is not compatible with OS %s %s", runtime.GOOS, runtime.GOARCH)
+ 		return installError(err)
+@@ -314,6 +315,7 @@ func runPlatformCommands(commands platformSpecificCommand, workingDir string) er
+ // UninstallPlugin uninstall the given plugin of the given uninstallVersion
+ // If uninstallVersion is not specified, it uninstalls all the versions of given plugin
+ func UninstallPlugin(pluginName string, uninstallVersion string) {
++	CheckForNixStore(fmt.Sprintf("Tried to uninstall the plugin `%s`.", pluginName))
+ 	pluginsHome, err := common.GetPrimaryPluginsInstallDir()
+ 	if err != nil {
+ 		logger.Fatalf(true, "Failed to uninstall plugin %s. %s", pluginName, err.Error())
+@@ -518,6 +520,7 @@ func AllPlugins(silent, languageOnly bool) {
+ 
+ // UpdatePlugins updates all the currently installed plugins to its latest version
+ func UpdatePlugins(silent bool) {
++	CheckForNixStore("Tried to update plugins")
+ 	var failedPlugin []string
+ 	pluginInfos, err := pluginInfo.GetPluginsInfo()
+ 	if err != nil {
+@@ -673,3 +676,21 @@ func AddPluginToProject(pluginName string) error {
+ 	logger.Infof(true, "Plugin %s was successfully added to the project\n", pluginName)
+ 	return nil
+ }
++
++func CheckForNixStore(message string) error {
++	installDir, err := common.GetPrimaryPluginsInstallDir()
++	if err != nil {
++		return err
++	}
++	if strings.HasPrefix(installDir, "/nix/store") {
++
++		// check if we're installing in the sandbox
++		if os.Getenv("NIX_GAUGE_IN_SANDBOX") == "true" {
++			return nil
++		}
++		logger.Errorf(true, "%s\ngauge is installed with nix.\nPlease install plugins using nix or use the `gauge-unwrapped` package.", message)
++		os.Exit(1)
++
++	}
++	return nil
++}
diff --git a/pkgs/development/tools/gauge/plugins/default.nix b/pkgs/development/tools/gauge/plugins/default.nix
new file mode 100644
index 0000000000000..92ee2fca77d0b
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/default.nix
@@ -0,0 +1,14 @@
+{ lib, pkgs }:
+lib.makeScope pkgs.newScope (final: let
+  inherit (final) callPackage;
+in {
+  makeGaugePlugin = callPackage ./make-gauge-plugin.nix { };
+  dotnet = callPackage ./dotnet { };
+  html-report = callPackage ./html-report { };
+  java = callPackage ./java { };
+  js = callPackage ./js { };
+  ruby = callPackage ./ruby { };
+  go = callPackage ./go { };
+  screenshot = callPackage ./screenshot { };
+  xml-report = callPackage ./xml-report { };
+})
diff --git a/pkgs/development/tools/gauge/plugins/dotnet/data.json b/pkgs/development/tools/gauge/plugins/dotnet/data.json
new file mode 100644
index 0000000000000..fd2d19ec864e4
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/dotnet/data.json
@@ -0,0 +1,5 @@
+{
+  "version": "0.5.7",
+  "url": "https://github.com/getgauge/gauge-dotnet/releases/download/v0.5.7/gauge-dotnet-0.5.7.zip",
+  "hash": "sha256-VKs25WzS0UZAeCg91f/f6ZOGH28PulUvyDSc/dbJeoE="
+}
diff --git a/pkgs/development/tools/gauge/plugins/dotnet/default.nix b/pkgs/development/tools/gauge/plugins/dotnet/default.nix
new file mode 100644
index 0000000000000..7cf99f2e7b4f0
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/dotnet/default.nix
@@ -0,0 +1,22 @@
+{ lib
+, makeGaugePlugin
+, gauge-unwrapped
+}:
+
+makeGaugePlugin {
+  pname = "dotnet";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/gauge-dotnet";
+  releasePrefix = "gauge-dotnet-";
+  isCrossArch = true;
+
+  meta = {
+    description = "Gauge plugin that lets you write tests in C#";
+    homepage = "https://github.com/getgauge/gauge-dotnet/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
+    inherit (gauge-unwrapped.meta) platforms;
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/go/data.json b/pkgs/development/tools/gauge/plugins/go/data.json
new file mode 100644
index 0000000000000..b4c9904bbea46
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/go/data.json
@@ -0,0 +1,15 @@
+{
+  "version": "0.4.0",
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge-contrib/gauge-go/releases/download/v0.4.0/gauge-go-0.4.0-darwin.arm64.zip",
+    "hash": "sha256-tMo3+gQPnldCARm0WB7UYSMwaVpz90N2BiTzmvIFTg0="
+  },
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge-contrib/gauge-go/releases/download/v0.4.0/gauge-go-0.4.0-darwin.x86_64.zip",
+    "hash": "sha256-zfrEDRyflvvp4Hf2+42RL+5ooY0iBU0bkO2caOAGp74="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge-contrib/gauge-go/releases/download/v0.4.0/gauge-go-0.4.0-linux.x86_64.zip",
+    "hash": "sha256-JEHjk51vYCFAcj9xant2vBU3BZI0krYbfZk9ALjdIs0="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/go/default.nix b/pkgs/development/tools/gauge/plugins/go/default.nix
new file mode 100644
index 0000000000000..c21c517fb7d10
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/go/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "go";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge-contrib/gauge-go";
+  releasePrefix = "gauge-go-";
+
+  meta = {
+    description = "Gauge plugin that lets you write tests in Go";
+    homepage = "https://github.com/getgauge-contrib/gauge-go";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
+    platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/html-report/data.json b/pkgs/development/tools/gauge/plugins/html-report/data.json
new file mode 100644
index 0000000000000..e72be41f921e8
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/html-report/data.json
@@ -0,0 +1,19 @@
+{
+  "version": "4.3.1",
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge/html-report/releases/download/v4.3.1/html-report-4.3.1-darwin.arm64.zip",
+    "hash": "sha256-OovQxwi4NGrdbKYGfMLgqQ9BuT1gvl7NFu5aTrA2HWw="
+  },
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge/html-report/releases/download/v4.3.1/html-report-4.3.1-darwin.x86_64.zip",
+    "hash": "sha256-oOJE3VJH8Cwbvdc2kTs0dHjNb2r35tXTP18EAts6XYs="
+  },
+  "aarch64-linux": {
+    "url": "https://github.com/getgauge/html-report/releases/download/v4.3.1/html-report-4.3.1-linux.arm64.zip",
+    "hash": "sha256-ZhNPGKuB08V/fxJCOya/uHUNlVT223WEPX6BrOhxPc8="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge/html-report/releases/download/v4.3.1/html-report-4.3.1-linux.x86_64.zip",
+    "hash": "sha256-insNiAbJM5Xc/GY6UTgMJgYU6vnBzKC13aBlgq3GBpo="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/html-report/default.nix b/pkgs/development/tools/gauge/plugins/html-report/default.nix
new file mode 100644
index 0000000000000..33e0eb272275a
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/html-report/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "html-report";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/html-report";
+  releasePrefix = "html-report-";
+
+  meta = {
+    description = "HTML report generation plugin for Gauge";
+    homepage = "https://github.com/getgauge/html-report/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
+    platforms = [ "aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/java/data.json b/pkgs/development/tools/gauge/plugins/java/data.json
new file mode 100644
index 0000000000000..96c993e6f3061
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/java/data.json
@@ -0,0 +1,19 @@
+{
+  "version": "0.10.3",
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge/gauge-java/releases/download/v0.10.3/gauge-java-0.10.3-darwin.arm64.zip",
+    "hash": "sha256-Hs9ZNupj0s7YRjRZibphr7m5YjOj3MTgx/hqAbWyY6I="
+  },
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge/gauge-java/releases/download/v0.10.3/gauge-java-0.10.3-darwin.x86_64.zip",
+    "hash": "sha256-Hj/Lkwsx/RvyMiJO8dI6vFpIvvyhOA2Un5deC1syYY4="
+  },
+  "aarch64-linux": {
+    "url": "https://github.com/getgauge/gauge-java/releases/download/v0.10.3/gauge-java-0.10.3-linux.arm64.zip",
+    "hash": "sha256-XJqP2eew+aI1jFaDzsJhfML8Ft+adFJrHURF8F391Pc="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge/gauge-java/releases/download/v0.10.3/gauge-java-0.10.3-linux.x86_64.zip",
+    "hash": "sha256-sMyWhAGo6oa7MsqK8xApdrwhZo8NkSTIRbsCu5LW3ls="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/java/default.nix b/pkgs/development/tools/gauge/plugins/java/default.nix
new file mode 100644
index 0000000000000..1dafc4a04065e
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/java/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "java";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/gauge-java";
+  releasePrefix = "gauge-java-";
+
+  meta = {
+    description = "Gauge plugin that lets you write tests in Java";
+    homepage = "https://github.com/getgauge/gauge-java/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = with lib.sourceTypes; [
+      # Native binary written in go
+      binaryNativeCode
+      # Jar files
+      binaryBytecode
+    ];
+    platforms = [ "aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/js/default.nix b/pkgs/development/tools/gauge/plugins/js/default.nix
new file mode 100644
index 0000000000000..621cbbbc1938e
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/js/default.nix
@@ -0,0 +1,42 @@
+{ lib
+, nodejs
+, buildNpmPackage
+, fetchFromGitHub
+, unzip
+, gauge-unwrapped
+}:
+buildNpmPackage rec {
+  pname = "gauge-plugin-js";
+  version = "4.0.1";
+
+  src = fetchFromGitHub {
+    owner = "getgauge";
+    repo = "gauge-js";
+    rev = "v${version}";
+    hash = "sha256-qCn4EKndd0eM3X0+aLrCwvmEG5fgUfpVm76cg/n7B84=";
+    fetchSubmodules = true;
+  };
+
+  npmDepsHash = "sha256-5XkFwCFqNMe5xc/Tx69uUV7KMtgY7Z3zE7hbtxYqRf0=";
+  npmBuildScript = "package";
+
+  buildInputs = [ nodejs ];
+  nativeBuildInputs = [ unzip ];
+
+  postPatch = ''
+    patchShebangs index.js
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/gauge-plugins/js/${version}
+    unzip deploy/gauge-js-${version}.zip -d $out/share/gauge-plugins/js/${version}
+  '';
+
+  meta = {
+    description = "Gauge plugin that lets you write tests in JavaScript";
+    homepage = "https://github.com/getgauge/gauge-js/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ marie ];
+    inherit (gauge-unwrapped.meta) platforms;
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/make-gauge-plugin.nix b/pkgs/development/tools/gauge/plugins/make-gauge-plugin.nix
new file mode 100644
index 0000000000000..116effa45b14f
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/make-gauge-plugin.nix
@@ -0,0 +1,94 @@
+{ stdenvNoCC
+, fetchzip
+, lib
+, writeScript
+}:
+
+{ pname
+, data
+, repo
+, releasePrefix
+, isCrossArch ? false
+, meta
+, ...
+} @ args:
+let
+  otherArgs = lib.attrsets.removeAttrs args [ "pname" "data" "repo" "releasePrefix" "isMultiArch" ];
+  inherit (stdenvNoCC.hostPlatform) system;
+  inherit (if isCrossArch then data else data.${system}) url hash;
+  # Upstream uses a different naming scheme for platforms
+  systemMap = {
+    "x86_64-darwin" = "darwin.x86_64";
+    "aarch64-darwin" = "darwin.arm64";
+    "aarch64-linux" = "linux.arm64";
+    "x86_64-linux" = "linux.x86_64";
+  };
+in
+stdenvNoCC.mkDerivation (finalAttrs: (lib.recursiveUpdate {
+  pname = "gauge-plugin-${pname}";
+  inherit (data) version;
+
+  src = fetchzip {
+    inherit url hash;
+    stripRoot = false;
+  };
+
+  installPhase = ''
+    mkdir -p "$out/share/gauge-plugins/${pname}/${finalAttrs.version}"
+    cp -r . "$out/share/gauge-plugins/${pname}/${finalAttrs.version}"
+  '';
+
+  passthru.updateScript = writeScript "update-${finalAttrs.pname}" ''
+    #!/usr/bin/env nix-shell
+    #!nix-shell -i bash -p curl nix-prefetch yq-go
+
+    set -e
+
+    dirname="pkgs/development/tools/gauge/plugins/${pname}"
+
+    currentVersion=$(nix eval --raw -f default.nix gaugePlugins.${pname}.version)
+
+    latestTag=$(curl -s ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} https://api.github.com/repos/${repo}/releases/latest | yq ".tag_name")
+    latestVersion="$(expr $latestTag : 'v\(.*\)')"
+
+    tempfile=$(mktemp)
+
+    if [[ "$FORCE_UPDATE" != "true" && "$currentVersion" == "$latestVersion" ]]; then
+        echo "gauge-${pname} is up-to-date: ''${currentVersion}"
+        exit 0
+    fi
+
+    yq -iPoj "{ \"version\": \"$latestVersion\" }" "$tempfile"
+
+    updateSystem() {
+        system=$1
+        url=$2
+
+        echo "Fetching hash for $system"
+        hash=$(nix-prefetch-url --type sha256 $url --unpack)
+        sriHash="$(nix hash to-sri --type sha256 $hash)"
+
+        yq -iPoj '. + { "$system": { "url": "$url", "hash": "$sriHash" } }' "$tempfile"
+    }
+
+    updateSingle() {
+        url=$1
+
+        echo "Fetching hash"
+        hash=$(nix-prefetch-url --type sha256 $url --unpack)
+        sriHash="$(nix hash to-sri --type sha256 $hash)"
+
+        yq -iPoj '. + { "url": "$url", "hash": "$sriHash" }' "$tempfile"
+    }
+
+    baseUrl="https://github.com/${repo}/releases/download/$latestTag/${releasePrefix}$latestVersion"
+
+    ${if isCrossArch then
+        "updateSingle \${baseUrl}.zip"
+      else
+        lib.concatStringsSep "\n" (map (platform: ''updateSystem "${platform}" "''${baseUrl}-${systemMap.${platform}}.zip"'') meta.platforms)
+    }
+
+    mv "$tempfile" "$dirname/data.json"
+  '';
+} otherArgs))
diff --git a/pkgs/development/tools/gauge/plugins/ruby/data.json b/pkgs/development/tools/gauge/plugins/ruby/data.json
new file mode 100644
index 0000000000000..b7f827cfc5698
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/ruby/data.json
@@ -0,0 +1,19 @@
+{
+  "version": "0.8.0",
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge/gauge-ruby/releases/download/v0.8.0/gauge-ruby-0.8.0-darwin.arm64.zip",
+    "hash": "sha256-HQ7reuC7dQUMbhEzUBiEelPmFBsFJBHe42lmFufkZJY="
+  },
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge/gauge-ruby/releases/download/v0.8.0/gauge-ruby-0.8.0-darwin.x86_64.zip",
+    "hash": "sha256-poxT9wYgs21GRx/eVvD7jA1T0VBDEHgH0Zv941pZcKA="
+  },
+  "aarch64-linux": {
+    "url": "https://github.com/getgauge/gauge-ruby/releases/download/v0.8.0/gauge-ruby-0.8.0-linux.arm64.zip",
+    "hash": "sha256-SAEHPaWScux6C05jQBfDuLBN2J22Df9eKVM46kWawiU="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge/gauge-ruby/releases/download/v0.8.0/gauge-ruby-0.8.0-linux.x86_64.zip",
+    "hash": "sha256-aXLDK/7phdsX0CmIuxfK39mdrjGo2IpwYBL7uolP5Mk="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/ruby/default.nix b/pkgs/development/tools/gauge/plugins/ruby/default.nix
new file mode 100644
index 0000000000000..9a5283b649a14
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/ruby/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "ruby";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/gauge-ruby";
+  releasePrefix = "gauge-ruby-";
+
+  meta = {
+    description = "Gauge plugin that lets you write tests in Ruby";
+    homepage = "https://github.com/getgauge/gauge-ruby/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = [ "aarch64-darwin" "x86_64-darwin" "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/screenshot/data.json b/pkgs/development/tools/gauge/plugins/screenshot/data.json
new file mode 100644
index 0000000000000..c836d5a84a954
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/screenshot/data.json
@@ -0,0 +1,19 @@
+{
+  "version": "0.2.0",
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge/gauge_screenshot/releases/download/v0.2.0/screenshot-0.2.0-darwin.x86_64.zip",
+    "hash": "sha256-7bFuInEYAQ+fN12HTazQNfqpz5DAkYNCjUJbaj0DYb4="
+  },
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge/gauge_screenshot/releases/download/v0.2.0/screenshot-0.2.0-darwin.arm64.zip",
+    "hash": "sha256-Ly6iHBc2PfeFkKkZIkyD2JD5+EpFNL4SDjzG1oMpKfA="
+  },
+  "aarch64-linux": {
+    "url": "https://github.com/getgauge/gauge_screenshot/releases/download/v0.2.0/screenshot-0.2.0-linux.arm64.zip",
+    "hash": "sha256-Pzfnhs4H0MmeBIhrZElFmvC+PuabLNU/pftVdIu4+LI="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge/gauge_screenshot/releases/download/v0.2.0/screenshot-0.2.0-linux.x86_64.zip",
+    "hash": "sha256-Wpuq3aSgbIhd4WuJx4SMv+NbEZMVIpAOUMdKV2xxd7c="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/screenshot/default.nix b/pkgs/development/tools/gauge/plugins/screenshot/default.nix
new file mode 100644
index 0000000000000..a394338d7a641
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/screenshot/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "screenshot";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/gauge_screenshot";
+  releasePrefix = "screenshot-";
+
+  meta = {
+    description = "Gauge plugin to take screenshots";
+    homepage = "https://github.com/getgauge/gauge_screenshot/";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = [ "x86_64-darwin" "aarch64-darwin" "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/plugins/xml-report/data.json b/pkgs/development/tools/gauge/plugins/xml-report/data.json
new file mode 100644
index 0000000000000..7b1fbf21b648a
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/xml-report/data.json
@@ -0,0 +1,19 @@
+{
+  "version": "0.5.1",
+  "x86_64-darwin": {
+    "url": "https://github.com/getgauge/xml-report/releases/download/v0.5.1/xml-report-0.5.1-darwin.x86_64.zip",
+    "hash": "sha256-xLz9GFeXeZcLXa5P7DeiBljK3n7HKvsm/eJFEw5w+hU="
+  },
+  "aarch64-darwin": {
+    "url": "https://github.com/getgauge/xml-report/releases/download/v0.5.1/xml-report-0.5.1-darwin.arm64.zip",
+    "hash": "sha256-P8nqS22OibtAOpbn8G8WwfJ0vvAM/3IC6F0Nd/HfO5s="
+  },
+  "aarch64-linux": {
+    "url": "https://github.com/getgauge/xml-report/releases/download/v0.5.1/xml-report-0.5.1-linux.arm64.zip",
+    "hash": "sha256-ORMWXiahT8TAusqIPQSZm5t5r3p5jqLAKNghYw+tOYI="
+  },
+  "x86_64-linux": {
+    "url": "https://github.com/getgauge/xml-report/releases/download/v0.5.1/xml-report-0.5.1-linux.x86_64.zip",
+    "hash": "sha256-y0vpS09GlRKKPr7UwY+YAR8xwjQYnYf6TFkeT3SXwco="
+  }
+}
diff --git a/pkgs/development/tools/gauge/plugins/xml-report/default.nix b/pkgs/development/tools/gauge/plugins/xml-report/default.nix
new file mode 100644
index 0000000000000..0337ceca0605a
--- /dev/null
+++ b/pkgs/development/tools/gauge/plugins/xml-report/default.nix
@@ -0,0 +1,19 @@
+{ lib
+, makeGaugePlugin
+}:
+makeGaugePlugin {
+  pname = "xml-report";
+  data = lib.importJSON ./data.json;
+
+  repo = "getgauge/xml-report";
+  releasePrefix = "xml-report-";
+
+  meta = {
+    description = "XML report generation plugin for Gauge";
+    homepage = "https://github.com/getgauge/xml-report/";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ marie ];
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
+    platforms = [ "x86_64-darwin" "aarch64-darwin" "aarch64-linux" "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/development/tools/gauge/wrapper.nix b/pkgs/development/tools/gauge/wrapper.nix
new file mode 100644
index 0000000000000..67b1a8ddc52b1
--- /dev/null
+++ b/pkgs/development/tools/gauge/wrapper.nix
@@ -0,0 +1,59 @@
+{ gauge-unwrapped
+, gauge
+, makeWrapper
+, stdenvNoCC
+, lib
+, xorg
+, gaugePlugins
+, plugins ? []
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "gauge-wrapped";
+  inherit (gauge-unwrapped) version;
+
+  dontUnpack = true;
+
+  installPhase = ''
+    mkdir -p $out{bin,/share/gauge/{plugins,config}}
+    export NIX_GAUGE_IN_SANDBOX=true
+    export GAUGE_HOME=$(mktemp -d)
+
+    # run gauge to create config files
+    cd $(mktemp -d)
+    gauge init js || true
+
+    mkdir -p "$out/share/gauge/config"
+    mv "$GAUGE_HOME"/config/{gauge,template}.properties "$out/share/gauge/config"
+
+    export GAUGE_HOME="$out/share/gauge"
+
+    ${lib.concatMapStringsSep "\n" (plugin: ''
+      for plugin in "$(ls ${plugin}/share/gauge-plugins)"; do
+        echo Installing gauge plugin $plugin
+        mkdir -p "$GAUGE_HOME/plugins/$plugin"
+        # Use lndir here
+        # gauge checks for a directory, which fails if it's a symlink
+        # It's easier to link this with lndir, than patching an upstream dependency
+        lndir "${plugin}/share/gauge-plugins/$plugin" "$GAUGE_HOME/plugins/$plugin"
+      done
+    '') plugins}
+
+    makeWrapper ${gauge-unwrapped}/bin/gauge $out/bin/gauge \
+      --set GAUGE_HOME "$GAUGE_HOME"
+  '';
+
+  nativeBuildInputs = [ gauge-unwrapped makeWrapper xorg.lndir ];
+
+  passthru = {
+    withPlugins = f: gauge.override { plugins = f gaugePlugins; };
+    fromManifest = path:
+      let
+        manifest = lib.importJSON path;
+        requiredPlugins = with manifest; [ Language ] ++ Plugins;
+        manifestPlugins = plugins: map (name: plugins.${name} or (throw "Gauge plugin ${name} is not available!")) requiredPlugins;
+      in gauge.withPlugins manifestPlugins;
+  };
+
+  inherit (gauge-unwrapped) meta;
+}
diff --git a/pkgs/games/shipwright/default.nix b/pkgs/games/shipwright/default.nix
index e8b91a8141ace..397226fc4ba5c 100644
--- a/pkgs/games/shipwright/default.nix
+++ b/pkgs/games/shipwright/default.nix
@@ -28,13 +28,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "shipwright";
-  version = "8.0.4";
+  version = "8.0.5";
 
   src = fetchFromGitHub {
     owner = "harbourmasters";
     repo = "shipwright";
     rev = finalAttrs.version;
-    hash = "sha256-OoDToHCVNzccbKdsmek1kqCsW2HmVzA2vy3BtVW1DuM=";
+    hash = "sha256-o2VwOF46Iq4pwpumOau3bDXJ/CArx6NWBi00s3E4PnE=";
     fetchSubmodules = true;
   };
 
@@ -42,8 +42,8 @@ stdenv.mkDerivation (finalAttrs: {
   # https://github.com/HarbourMasters/Shipwright/blob/e46c60a7a1396374e23f7a1f7122ddf9efcadff7/soh/CMakeLists.txt#L736
   gamecontrollerdb = fetchurl {
     name = "gamecontrollerdb.txt";
-    url = "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/81d89fd1e2bd5878e57dfa629abeed3a8feea438/gamecontrollerdb.txt";
-    hash = "sha256-m1XzDc2dS0hkBTEGABgW4J/jjIw1TXtvHHtsvui6Bcc=";
+    url = "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/b7933e43ca2f8d26d8b668ea8ea52b736221af1e/gamecontrollerdb.txt";
+    hash = "sha256-XIuS9BkWkM9d+SgT1OYTfWtcmzqSUDbMrMLoVnPgidE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index d8da6b345eb46..186956baa9ff9 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -1,8 +1,8 @@
-# Generated by parse-requirements.py
+# Generated by update-component-packages.py
 # Do not edit!
 
 {
-  version = "2024.4.3";
+  version = "2024.4.4";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
@@ -5945,6 +5945,7 @@
     "airthings"
     "airthings_ble"
     "airtouch4"
+    "airtouch5"
     "airvisual"
     "airvisual_pro"
     "airzone"
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index f2302bf63f867..4a674415d6049 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -517,8 +517,8 @@ let
   # Ensure that we are using a consistent package set
   extraBuildInputs = extraPackages python.pkgs;
 
-  # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2024.4.3";
+  # Don't forget to run update-component-packages.py after updating
+  hassVersion = "2024.4.4";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -536,13 +536,13 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-jHt4cWi1JxUs2XKf0N9gqsYj5XZK7TXwgj7WPZ7dmEA=";
+    hash = "sha256-bZcrFtaO0S22M6Wt2otK8rCg+NhpXr+/yRFxi02QJJI=";
   };
 
   # Secondary source is pypi sdist for translations
   sdist = fetchPypi {
     inherit pname version;
-    hash = "sha256-sj3usdXUl/wNElO3OgGx6dsBqn9+h9zq/AC3Zdn379M=";
+    hash = "sha256-NyIBFpDstX1MEoLS9p7GXl/+V6xB2hklNf2LmNLUMQk=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/pkgs/servers/home-assistant/stubs.nix b/pkgs/servers/home-assistant/stubs.nix
index f8e4e49b13ff0..d31cf8104dbed 100644
--- a/pkgs/servers/home-assistant/stubs.nix
+++ b/pkgs/servers/home-assistant/stubs.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "homeassistant-stubs";
-  version = "2024.4.3";
+  version = "2024.4.4";
   format = "pyproject";
 
   disabled = python.version != home-assistant.python.version;
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "KapJI";
     repo = "homeassistant-stubs";
     rev = "refs/tags/${version}";
-    hash = "sha256-uFQQNcRfo4m3GnfCbAe4yjdphkpqnhpqVr1EZP3bqVM=";
+    hash = "sha256-BPmHorcyO6a7Ag7FQogkZYh2x3GoMRKiFh+9aSkjE7M=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/servers/home-assistant/parse-requirements.py b/pkgs/servers/home-assistant/update-component-packages.py
index 404120d062acb..10288f5e6d64f 100755
--- a/pkgs/servers/home-assistant/parse-requirements.py
+++ b/pkgs/servers/home-assistant/update-component-packages.py
@@ -268,7 +268,7 @@ def main() -> None:
             build_inputs[component] = (attr_paths, extra_attrs, missing_reqs)
 
     with open(os.path.dirname(sys.argv[0]) + "/component-packages.nix", "w") as f:
-        f.write("# Generated by parse-requirements.py\n")
+        f.write("# Generated by update-component-packages.py\n")
         f.write("# Do not edit!\n\n")
         f.write("{\n")
         f.write(f'  version = "{version}";\n')
diff --git a/pkgs/servers/home-assistant/update.py b/pkgs/servers/home-assistant/update.py
index c9b9eb183890e..70eb77ce9a1cd 100755
--- a/pkgs/servers/home-assistant/update.py
+++ b/pkgs/servers/home-assistant/update.py
@@ -222,7 +222,7 @@ class HomeAssistant:
 
     async def update_components(self):
         await run_async([
-            f"{ROOT}/pkgs/servers/home-assistant/parse-requirements.py"
+            f"{ROOT}/pkgs/servers/home-assistant/update-component-packages.py"
         ])
 
 
diff --git a/pkgs/test/config.nix b/pkgs/test/config.nix
index 734e1aace1487..24a840af0aead 100644
--- a/pkgs/test/config.nix
+++ b/pkgs/test/config.nix
@@ -2,22 +2,19 @@
 lib.recurseIntoAttrs {
 
   # https://github.com/NixOS/nixpkgs/issues/175196
+  # This test has since been simplified to test the recursion without
+  # the fluff to make it look like a real-world example.
+  # The requirement we test here is:
+  # - `permittedInsecurePackages` must be allowed to
+  #   use `pkgs` to retrieve at least *some* information.
+  #
+  # Instead of `builtins.seq`, the list may be constructed based on actual package info.
   allowPkgsInPermittedInsecurePackages =
     let pkgs = import ../.. {
           config = {
-            permittedInsecurePackages =
-              tempAllow pkgs.authy "2.1.0" [ "electron-9.4.4" ];
+            permittedInsecurePackages = builtins.seq pkgs.glibc.version [];
           };
         };
-        # A simplification of `tempAllow` that doesn't check the version, but
-        # has the same strictness characteristics. Actually checking a version
-        # here would add undue maintenance.
-        #
-        # Original:
-        #     tempAllow = p: v: pa:
-        #       lib.optionals (lib.assertMsg (p.version == v) "${p.name} is no longer at version ${v}, consider removing the tempAllow") pa;
-        #
-        tempAllow = p: v: pa: builtins.seq v builtins.seq p.version pa;
 
     in pkgs.hello;
 
diff --git a/pkgs/tools/graphics/argyllcms/default.nix b/pkgs/tools/graphics/argyllcms/default.nix
index a966b11382aa8..efb77b89a64bf 100644
--- a/pkgs/tools/graphics/argyllcms/default.nix
+++ b/pkgs/tools/graphics/argyllcms/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "argyllcms";
-  version = "3.1.0";
+  version = "3.2.0";
 
   src = fetchzip {
     # Kind of flacky URL, it was reaturning 406 and inconsistent binaries for a
     # while on me. It might be good to find a mirror
     url = "https://www.argyllcms.com/Argyll_V${version}_src.zip";
-    hash = "sha256-IZScf+xpvvMt5YFlYQprg51cw2ztMdOrqcLm7l5uBhU=";
+    hash = "sha256-t2dvbYFHEz9IUYpcM5HqDju4ugHrD7seG3QxumspxDg=";
   };
 
   nativeBuildInputs = [ jam unzip ];
diff --git a/pkgs/tools/misc/poweralertd/default.nix b/pkgs/tools/misc/poweralertd/default.nix
index 677d85e18f090..c61f5af1b41d1 100644
--- a/pkgs/tools/misc/poweralertd/default.nix
+++ b/pkgs/tools/misc/poweralertd/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "poweralertd";
-  version = "0.2.0";
+  version = "0.3.0";
 
   outputs = [ "out" "man" ];
 
@@ -10,11 +10,11 @@ stdenv.mkDerivation rec {
     owner = "~kennylevinsen";
     repo = "poweralertd";
     rev = version;
-    sha256 = "19rw9q4pcqw56nmzjfglfikzx5wwjl4n08awwdhg0jy1k0bm3dvp";
+    hash = "sha256-WzqThv3Vu8R+g6Bn8EfesRk18rchCvw/UMPwbn9YC80=";
   };
 
   postPatch = ''
-    substituteInPlace meson.build --replace "systemd.get_pkgconfig_variable('systemduserunitdir')" "'${placeholder "out"}/lib/systemd/user'"
+    substituteInPlace meson.build --replace-fail "systemd.get_pkgconfig_variable('systemduserunitdir')" "'${placeholder "out"}/lib/systemd/user'"
   '';
 
   buildInputs = [
diff --git a/pkgs/tools/misc/pv/default.nix b/pkgs/tools/misc/pv/default.nix
index 2c8f0d5521ba3..740bea469a393 100644
--- a/pkgs/tools/misc/pv/default.nix
+++ b/pkgs/tools/misc/pv/default.nix
@@ -3,21 +3,21 @@
 , fetchurl
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "pv";
-  version = "1.8.5";
+  version = "1.8.9";
 
   src = fetchurl {
-    url = "https://www.ivarch.com/programs/sources/pv-${version}.tar.gz";
-    sha256 = "sha256-0ilI0GvgalvjczYxjeVAoiFb4QqwFj+M0jogFJZHt4A=";
+    url = "https://www.ivarch.com/programs/sources/pv-${finalAttrs.version}.tar.gz";
+    sha256 = "sha256-oHidj4xaCPrzcLWgfR2Tau/5UEpPSdp21BZHl6xGBuY=";
   };
 
   meta = {
     homepage = "https://www.ivarch.com/programs/pv.shtml";
     description = "Tool for monitoring the progress of data through a pipeline";
-    license = lib.licenses.artistic2;
+    license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ matthiasbeyer ];
     platforms = lib.platforms.all;
     mainProgram = "pv";
   };
-}
+})
diff --git a/pkgs/tools/misc/rpm-ostree/default.nix b/pkgs/tools/misc/rpm-ostree/default.nix
index 60a086bbbedc0..8cf801da5712e 100644
--- a/pkgs/tools/misc/rpm-ostree/default.nix
+++ b/pkgs/tools/misc/rpm-ostree/default.nix
@@ -40,13 +40,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rpm-ostree";
-  version = "2024.4";
+  version = "2024.5";
 
   outputs = [ "out" "dev" "man" "devdoc" ];
 
   src = fetchurl {
     url = "https://github.com/coreos/${pname}/releases/download/v${version}/${pname}-${version}.tar.xz";
-    hash = "sha256-7gEHr0niDCjYaZAEB2tUuFVy5wIROCanHyL/HkbZkbw=";
+    hash = "sha256-lwgEOnV82/EHRem3owngq4ALcjIWj7V1J552JsNCrBw=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/tools/misc/tmuxp/default.nix b/pkgs/tools/misc/tmuxp/default.nix
index 98335cc895cf3..f718a59350a91 100644
--- a/pkgs/tools/misc/tmuxp/default.nix
+++ b/pkgs/tools/misc/tmuxp/default.nix
@@ -17,9 +17,7 @@ python3Packages.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3Packages; [
-    click
     colorama
-    kaptan
     libtmux
   ];
 
diff --git a/pkgs/tools/security/cnspec/default.nix b/pkgs/tools/security/cnspec/default.nix
index 50b1860535eb3..022ea754c7a49 100644
--- a/pkgs/tools/security/cnspec/default.nix
+++ b/pkgs/tools/security/cnspec/default.nix
@@ -6,18 +6,18 @@
 
 buildGoModule rec {
   pname = "cnspec";
-  version = "11.0.2";
+  version = "11.1.0";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnspec";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TSTOhfFNFwuF9kNf1q2HVcoxhKS1pKW4kSorSPyyeQU=";
+    hash = "sha256-fmvjjakKvsXBhXAfHp9+3X4vbgOPkBD9P9o6/UEdlGo=";
   };
 
   proxyVendor = true;
 
-  vendorHash = "sha256-Uuz/ghtd/1ol1ugDI7pz5Fyv6U5PpOdcoerU/qx4MPA=";
+  vendorHash = "sha256-q31SCURhtAWqD8IsQXYHek6l7DbbTNKS6J//z3ckD3M=";
 
   subPackages = [ "apps/cnspec" ];
 
diff --git a/pkgs/tools/security/trufflehog/default.nix b/pkgs/tools/security/trufflehog/default.nix
index 7771760dee6ed..4c5a536c882f4 100644
--- a/pkgs/tools/security/trufflehog/default.nix
+++ b/pkgs/tools/security/trufflehog/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "trufflehog";
-  version = "3.73.0";
+  version = "3.74.0";
 
   src = fetchFromGitHub {
     owner = "trufflesecurity";
     repo = "trufflehog";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5tyjSwuhrtiAzvS5F8TyPCZhjSasTWQE9wcNGDevucE=";
+    hash = "sha256-smG27WHWGe15Q0XIjeK4C45mEvJuYqsUf0SsaMyYGzs=";
   };
 
-  vendorHash = "sha256-eK4YwNkBvC7VW5Cn6/M4clN83LGRNuw5jpjtnM0B9g8=";
+  vendorHash = "sha256-FOFrFmILeONJyKGZ7I+sWd8Di0Ni6P5/buA5QbR41A4=";
 
   proxyVendor = true;
 
diff --git a/pkgs/tools/typesetting/tex/texlive/bin.nix b/pkgs/tools/typesetting/tex/texlive/bin.nix
index af810aa51d316..ece8a36aa5536 100644
--- a/pkgs/tools/typesetting/tex/texlive/bin.nix
+++ b/pkgs/tools/typesetting/tex/texlive/bin.nix
@@ -196,7 +196,7 @@ core = stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Basic binaries for TeX Live";
     homepage    = "http://www.tug.org/texlive";
-    license     = lib.licenses.gpl2;
+    license     = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ veprbl lovek323 raskin jwiegley ];
     platforms   = platforms.all;
   };
diff --git a/pkgs/tools/typesetting/tex/texlive/default.nix b/pkgs/tools/typesetting/tex/texlive/default.nix
index cab889f5f8b39..a54bb1876f97f 100644
--- a/pkgs/tools/typesetting/tex/texlive/default.nix
+++ b/pkgs/tools/typesetting/tex/texlive/default.nix
@@ -158,24 +158,24 @@ let
   # these license lists should be the sorted union of the licenses of the packages the schemes contain.
   # The correctness of this collation is tested by tests.texlive.licenses
   licenses = with lib.licenses; {
-    scheme-basic = [ free gfl gpl1Only gpl2 gpl2Plus knuth lgpl21 lppl1 lppl13c mit ofl publicDomain ];
-    scheme-bookpub = [ artistic2 asl20 bsd3 fdl13Only free gfl gpl1Only gpl2 gpl2Plus knuth lgpl21 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain ];
-    scheme-context = [ bsd2 bsd3 cc-by-sa-40 free gfl gfsl gpl1Only gpl2 gpl2Plus gpl3 gpl3Plus knuth lgpl2 lgpl21
+    scheme-basic = [ free gfl gpl1Only gpl2Only gpl2Plus knuth lgpl21 lppl1 lppl13c mit ofl publicDomain ];
+    scheme-bookpub = [ artistic2 asl20 bsd3 fdl13Only free gfl gpl1Only gpl2Only gpl2Plus knuth lgpl21 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain ];
+    scheme-context = [ bsd2 bsd3 cc-by-sa-40 free gfl gfsl gpl1Only gpl2Only gpl2Plus gpl3Only gpl3Plus knuth lgpl2 lgpl21
       lppl1 lppl13c mit ofl publicDomain x11 ];
     scheme-full = [ artistic1-cl8 artistic2 asl20 bsd2 bsd3 bsdOriginal cc-by-10 cc-by-20 cc-by-30 cc-by-40 cc-by-sa-10 cc-by-sa-20 cc-by-sa-30
-      cc-by-sa-40 cc0 fdl13Only free gfl gfsl gpl1Only gpl2 gpl2Plus gpl3 gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit
+      cc-by-sa-40 cc0 fdl13Only free gfl gfsl gpl1Only gpl2Only gpl2Plus gpl3Only gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit
       ofl publicDomain x11 ];
-    scheme-gust = [ artistic1-cl8 asl20 bsd2 bsd3 cc-by-40 cc-by-sa-40 cc0 fdl13Only free gfl gfsl gpl1Only gpl2
-      gpl2Plus gpl3 gpl3Plus knuth lgpl2 lgpl21 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain x11 ];
-    scheme-infraonly = [ gpl2 gpl2Plus lgpl21 ];
+    scheme-gust = [ artistic1-cl8 asl20 bsd2 bsd3 cc-by-40 cc-by-sa-40 cc0 fdl13Only free gfl gfsl gpl1Only gpl2Only
+      gpl2Plus gpl3Only gpl3Plus knuth lgpl2 lgpl21 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain x11 ];
+    scheme-infraonly = [ gpl2Plus lgpl21 ];
     scheme-medium = [ artistic1-cl8 asl20 bsd2 bsd3 cc-by-40 cc-by-sa-20 cc-by-sa-30 cc-by-sa-40 cc0 fdl13Only
-      free gfl gpl1Only gpl2 gpl2Plus gpl3 gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit ofl
+      free gfl gpl1Only gpl2Only gpl2Plus gpl3Only gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit ofl
       publicDomain x11 ];
-    scheme-minimal = [ free gpl1Only gpl2 gpl2Plus knuth lgpl21 lppl1 lppl13c mit ofl publicDomain ];
-    scheme-small = [ asl20 cc-by-40 cc-by-sa-40 cc0 fdl13Only free gfl gpl1Only gpl2 gpl2Plus gpl3 gpl3Plus knuth
+    scheme-minimal = [ free gpl1Only gpl2Plus knuth lgpl21 lppl1 lppl13c mit ofl publicDomain ];
+    scheme-small = [ asl20 cc-by-40 cc-by-sa-40 cc0 fdl13Only free gfl gpl1Only gpl2Only gpl2Plus gpl3Only gpl3Plus knuth
       lgpl2 lgpl21 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain x11 ];
     scheme-tetex = [ artistic1-cl8 asl20 bsd2 bsd3 cc-by-30 cc-by-40 cc-by-sa-10 cc-by-sa-20 cc-by-sa-30 cc-by-sa-40 cc0 fdl13Only free gfl gpl1Only
-      gpl2 gpl2Plus gpl3 gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain x11 ];
+      gpl2Only gpl2Plus gpl3Only gpl3Plus isc knuth lgpl2 lgpl21 lgpl3 lppl1 lppl12 lppl13a lppl13c mit ofl publicDomain x11 ];
   };
 
   meta = {
diff --git a/pkgs/tools/typesetting/tex/texlive/tl2nix.sed b/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
index 66a59ced5af75..00885cc3affed 100644
--- a/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
+++ b/pkgs/tools/typesetting/tex/texlive/tl2nix.sed
@@ -47,7 +47,8 @@ $a}
     s/"bsd4"/"bsdOriginal"/g
     s/"collection"/"free"/g   # used for collections of individual packages with distinct licenses. As TeXlive only contains free software, we can use "free" as a catchall
     s/"fdl"/"fdl13Only"/g
-    s/"gpl1?"/"gpl1Only"/g
+    s/"gpl"/"gpl1Only"/g
+    s/"gpl([1-3])"/"gpl\1Only"/g
     s/"gpl2\+"/"gpl2Plus"/g
     s/"gpl3\+"/"gpl3Plus"/g
     s/"lgpl"/"lgpl2"/g
diff --git a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
index 7ff3e89bdb2aa..fc1a9e67d2cb5 100644
--- a/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
+++ b/pkgs/tools/typesetting/tex/texlive/tlpdb.nix
@@ -387,7 +387,7 @@ adforn = {
   sha512.run = "7a4a4da6c72ff2f8ab4b2a9a5e92887306a8e2aee4bcc5a93c18bf41d1bf9c05bd23fd6401bda054994aafa8d6002dbc16d8483b951acb705cd46fda08aaf060";
   sha512.doc = "2a287f8685154359c914b13e8e153aa64bb19708a9f5b122180cead53ee31ab829dc934dcab43f09ded4fe5d2a81ee32528855f1a4a1bd07b795eaabcb204f48";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
   version = "1.1b";
 };
 adfsymbols = {
@@ -400,7 +400,7 @@ adfsymbols = {
   sha512.run = "7100648956a68719d1a449a3aee0a4acb3788aea7f082a6e7e38c8d8dfa2c712a4b896a9b036e8ae8b2732b11414ab71a49e2f513e7d689f4b0ad9e44c052019";
   sha512.doc = "fbdd78030826918a3599a1f843db692390ebdcf4ca9a853d8c2e78706cfafe83ae79d23d09fb097339d8c726608a27436b3bf22725935c55060f1e8579ea1eaf";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
   version = "1.2b";
 };
 adhocfilelist = {
@@ -1341,7 +1341,7 @@ appendixnumberbeamer = {
   sha512.run = "d5f4573a0f6c31be7e910512d86ee0443e713abea11e71694b58f1d1d65f4249f967aa5b873941e1d8b7686d408f411aad1a76009a3bbcb528693ae14dc60e63";
   sha512.doc = "58b32eacfbcd8e024a4cf3dcea0c1d057010dd454c1e54b6752b970a3fa1a9e10eb15d8cee9dbb9ae032aaa8b6c070079b112f5a91b1c9617df40877a4a3454b";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.2";
 };
 apprendre-a-programmer-en-tex = {
@@ -2971,7 +2971,7 @@ barracuda = {
   sha512.run = "8081a9b253c77cc5e68efeb8c66beffc189898cc6ba80cd96be88c57d3117b2c270e439fbe47983309625c90def14f3b2d2c50b567f4f461e4c0ef591c7ba63a";
   sha512.doc = "18767583117a7e16e5b292aa2e82082eed1f48e7f2d8033cf605d9a0b9f09f460826ba4c43af5e43b003e6514909cdea30e24666b8c518655a9e6ab7b6129953";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.0.12";
 };
 bartel-chess-fonts = {
@@ -3337,7 +3337,7 @@ beamertheme-focus = {
   sha512.run = "bb09ca551108dace02506987f246f1de4672444e8d6ca7f53bbf1cbfb573a7e07b3d2f937b4724821b30b60f1c63b360e200754957289c95379aab06dde14a8a";
   sha512.doc = "5ca583264ee68cec6df53f5e4a32d4c3ce408372fd3ec4c8ec74f2757ac9f5e817a23ea875760994fd7e45a8cc2e45686251aa785adc960b5730c5059ab353e9";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "3.4.0";
 };
 beamertheme-light = {
@@ -3346,7 +3346,7 @@ beamertheme-light = {
   sha512.run = "5cc15c3ee0222678c1c97b31805421caac8b20fca03b1d748fd2a71756d5d764b8fbfb32ab70937e890f7755966b520362db98a9ae65be3f83509cfa287d600a";
   sha512.doc = "e2d0cdb7fdabe582f2b6f1a656a5b9b61ee3680fd4944c06f108cf69eced96bed7b25e56563b1cb9879e8da42fdbbeaa41d769158c5e256bc70b5d695571a5af";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.0";
 };
 beamertheme-metropolis = {
@@ -3365,7 +3365,7 @@ beamertheme-npbt = {
   sha512.run = "9125794ab2ebc4d15ab500b67b9943234d80088393d9b31989ae8209359dca97778feaab3d11365ae1b4131f06dad2fe73bb21fae1220b401c5f31f413cff171";
   sha512.doc = "7703951f2afee05627847980a05b0bef0cb2fe87eec078f64a3e4796feb4057bdf93708ef0476090d40dad2605c69e23f695b9164a969e6a67f8329e6e340a3b";
   hasRunfiles = true;
-  license = [ "gpl3" "publicDomain" ];
+  license = [ "gpl3Only" "publicDomain" ];
   version = "4.1";
 };
 beamertheme-phnompenh = {
@@ -4701,7 +4701,7 @@ bigfoot = {
   sha512.doc = "f5935a5ede836798f3eab1ff61d528870a07be712047a64aa5af5576a1c6032e9d88fb5c42cf216e0f9812266f9a8562b5290301446c654dcb46146d7b60a16e";
   sha512.source = "75316aff3c594fd904adec7cadd0b24aff9d527479d0c59f3fc654772e29cdb4cca938fe5fef6e14b9928fb25f37fdd3f7a894a81f95810813875c4fd419dff6";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.1";
 };
 bigintcalc = {
@@ -4845,7 +4845,7 @@ bjfuthesis = {
   sha512.run = "e017032edb4e87ae31318179de5da789cbe2164ea5679d69e928a138242adb1afa8dfb3f8b9b7796bc6d5bf21c143f51e931656439a451ddf868c77c7a7ac559";
   sha512.doc = "657e45d4faf201c2d878c5323e3fd7a283bbe4bb4f868b1413e9b8eaa1db00d03771a4d4211e23549121c5dd480cfcfd8ee8e0edd7e56615a3c941c100465c44";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.2.1";
 };
 blacklettert1 = {
@@ -5007,7 +5007,7 @@ boisik = {
   sha512.run = "48403f4b18cb23e7e16e3cbf19d066dc7e1576f4d9ae42b94a4a34508905f5e6e2f8f60f2de7881a29b8525c86a8120a76f1f66f8b9ea047da0a884637b1bb9e";
   sha512.doc = "c68e8434fe456c5e58a6ebb9e744c81dfba5098c0fb12024de750f73022e300016a424bd1ad9cc85c3122c9a0c863737b2e27f2b151667955f92ebbdc060c6bd";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.5";
 };
 boites = {
@@ -6779,7 +6779,7 @@ chklref = {
   sha512.doc = "5aeb13824c1781feefe94215f3efce15c212e0d38f9e0d5fb393e96c2159ba43f165c600cd64ee9d8c42c0a4f0db6c2e462ee85a93993965bad0420b6b662ef6";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "3.1.2";
 };
 chklref.binfiles = [
@@ -7052,7 +7052,7 @@ cjk = {
   sha512.doc = "a8c6b2d4d0899b841ccc32b378855d61bdaa65d5f68fd408df3894d386bcde18f384410f34e6f33ee2a5ce770e1e663a05ab038d9b7483012a3cb414739c3705";
   sha512.source = "88be587328daedfed3bdcb289b1a03343bd7257ae180a9e0857a6b00f173f601eccd8e5978dd29c2d95fbab180fcfd5135a682c5218325fc6b664f2cd505213c";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "4.8.5";
 };
 cjk-gs-integrate = {
@@ -7061,7 +7061,7 @@ cjk-gs-integrate = {
   sha512.doc = "c1165f2ecd08b279cd0d0b028682eecbb3953659426a1885bbe5aab9838a90107c576a3b9bf80b0d54dbe3fc438c8af8a8c82f5faf79052c37d2c5e85ea9ae42";
   sha512.source = "ee53a480230824eb7aa1ff270652eba4f39e5f160fdd091d596b9da610d8c8c211db3aa3d89931ec16edd36b2662d07a93513563efb3bb5a9ffc9dba0d274ee4";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "20210625.0";
 };
 cjk-gs-integrate.binfiles = [
@@ -7095,7 +7095,7 @@ cjkutils = {
   sha512.doc = "636e6486f9661061d22d248b0b7a8debdb81cd08c56b449067782568fcc7db58922f7c9d40fbc992bdd008908f22a6733af4a8115d85c0572556d01e925c5587";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "4.8.5";
 };
 cjkutils.binfiles = [
@@ -12623,7 +12623,7 @@ colourchange = {
   sha512.run = "dba4ef8d97324c3da71de1c6a37e268618bab0a876e1da37226ec9fb187087d39f32507e97f4ab4fa801fd4bbb98c51a322c6f2493b719133154b24223bfba46";
   sha512.doc = "628bc515058108ba97312c15ee5af00e086ea3dc124b4e7b038b176d4175e2146afc6f571593c006d749634896fa286d16c923c17d4dc9e55e81ac3a8aa95442";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.22";
 };
 combelow = {
@@ -12733,7 +12733,7 @@ comment = {
   sha512.run = "36b5b4c4d4345a4fcf706f5040c02c2de52567fae76146a06b7f084d59b12d151e65faba1ee4aeeaebee018d81200c2902feb81ae575de35a68c00fa14ed6ba3";
   sha512.doc = "d5a360c6a0c549fee1d46fa0e9c3f9aaaa4b19b30ac48046e736008ddb42393062824950684185175f8ab569cec221bc8f9a798a07623dbe26cc92a3fd6bc72b";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.8";
 };
 commonunicode = {
@@ -12991,7 +12991,7 @@ context-handlecsv = {
   sha512.run = "b4a38aa0e04812e328e3d6225462078ddf45d8791d789e2730461630db55b397754ca192acf37b9ae7f1fc10c61d412022a9e56d3465d19ceca7f5875e3d580f";
   sha512.doc = "763f75ab94a317788d9d96b88f1b7e25847ed316b4dcd84158719ef1c3cc48c90c884ec3158412d574839adf1ce8bcb12f9c0cefb6650338afa424fbd0213be3";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 context-legacy = {
   revision = 69173;
@@ -13056,7 +13056,7 @@ context-notes-zh-cn = {
   ];
   sha512.run = "46be6b5f9f86d6da5514f0ae0cd77aa9beab67572699f9779f3a6cd461a8600336103eaf71d6e6d99fd7ac300a3e5fedcd6e378d349cf648c9aa5a8be2aaa5b5";
   sha512.doc = "a49b1c85508128e0a2e9ae0218e3622f7479da528f51380c1e109bf877f401531689e8119cab3bde6a91e507f0bd7f16e334cb3affaba7fae5927cc23b17a207";
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 context-pocketdiary = {
   revision = 66953;
@@ -13128,7 +13128,7 @@ context-typescripts = {
   sha512.run = "a13d06b9a792cbd2352016df508a7860e45b541d04cef1c9d9c8b5a6199120a71dfd69f990700c4a76ac31ec11209caef431a190b9045bdc46cc44f88cbef0a3";
   sha512.doc = "3d948f22da14b1d481817477235657cee714e4a2a69834729c20e18157f1175890ddc7fce992e8f5f27e26cd6d08186ff1521e2186681557cfff1a4778267324";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 context-vim = {
   revision = 62071;
@@ -13936,7 +13936,7 @@ ctan_chk = {
   stripPrefix = 0;
   sha512.run = "6eabd7281d79ff0ad19080350dfcca8ee3a33ddfa6d17827a7851cc53f09f627729c8d715a1dfe50e0c079add44331a07d543cb8b6a57000efa6d73c30f2ffe0";
   sha512.doc = "c61bc0d70cadcc4382dae55cdc1af076882801321a2de16f164223267732e476e41f949f566808c928f446d69aa22bd9965adb155c97905e32b93808810c76c0";
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.0";
 };
 ctanbib = {
@@ -13968,7 +13968,7 @@ ctanupload = {
   sha512.run = "4464bdfbf72318b24abcd88e1c25dae5925a96e867c694f3f02a594ed7b8b24cffdcdb345f0054e200a6af63f88b591ff84058af0adfb4a1b3feff2a057d9d72";
   sha512.doc = "9e027f7ce08041be7668a7a404fad6b6c7cfc71e581ad1216956d0b53c379d204bd84d2d55d186c74f784df8911770b96f934775f44f7141a5f1b9b5e773cb7a";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.2c";
 };
 ctanupload.binfiles = [
@@ -14074,7 +14074,7 @@ culmus = {
   sha512.doc = "4c1217f0cd27bcd56c11006b7b3749e661aba567798b2e397a21b3b0df39a35acb6355836d4eac4fd619509b09b57c7e39a97068343b6e28005944ebf0430adc";
   sha512.source = "2dc2e6bd71ee949208625fc259cecc6a0ffdd0701416c5775cc32855a2bbf8a533238e07d4fa08c090ed3ff627613c27f0cddeb2c86eda1b320cbc68e236a6a0";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
   version = "1.1";
 };
 cuprum = {
@@ -16038,7 +16038,7 @@ dvi2tty = {
   sha512.run = "1051c3448703fdd6395d78b0d8b7658197da6114fb7455b31502bad5c2eda24fd4eba2ceaba1f65d106f981bbc60caf9f3bd0db29403e898b293514d086bf91d";
   sha512.doc = "3ee736f5fbf91472008a5c8613c0e629a9f76f61fee4c4491b67045ddaad7aa2f89a22937b172e058b072ae1a013478fdf5a9f68dd2e225e8a8e77c8e3b3a289";
   hasManpages = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "6.0.0";
 };
 dvi2tty.binfiles = [
@@ -16605,7 +16605,7 @@ edmac = {
   sha512.doc = "d78db33bf2b2fdd17f23eae23ab9605efb29a217e52d89df5feb64db1907c1b5a497441eeb1fe2373342b7c9b09296c06efa24d6776edce84406e22a1967bb64";
   sha512.source = "995092e2ea0776377938076b67f25042329ab76ef31f83f6f40aba449a735a90bc697be52f16fa6a2ac02cbe4ff2ef99762fdc03bd14eebff7a363f6c7f46c13";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.17";
 };
 edmargin = {
@@ -16969,7 +16969,7 @@ emf = {
   sha512.run = "bc1b601aa523b30a54493ac92e15bcdb918775e9f57514b62357b85b5919fb05cc945b3120cea474fab714585fe2a81603f43eae51bb266e8989af6105ebc65c";
   sha512.doc = "f2e37967476ed678dce7c01f195ec03f77327d59beb2b15cc6a64ef92cc377700a2b7b528ae6c42497cde0ac127cd10c51e3ecf5fda0cf7954d598a0dc92b5df";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1";
 };
 emisa = {
@@ -17393,7 +17393,7 @@ epspdf = {
     "tcl"
     "tlu"
   ];
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.6.5.1";
 };
 epspdf.binfiles = [
@@ -17492,7 +17492,7 @@ eqnarray = {
   sha512.doc = "7ea3d87f81eca28dd52f9e9cf4f7df1ce4f7b9cd82cc40d0a7fff234415b2a3e033fa1c8a11594b2c08e5edf87ae265e5f7a65eb92a79cd523568f37853de30a";
   sha512.source = "9dd02c43fca4f6e8dba0bd44292c8f97aef4cbf39d521b9df10206a2309e82492f344fb65c35ac0509532e9efb2571aecb2a5894e639de5efa1444bba9916587";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.3";
 };
 eqnnumwarn = {
@@ -18152,7 +18152,7 @@ exercise = {
   sha512.doc = "3059c297ecb8a990bac32e1e52bcd6fe39e6958c96c145ad70b937ba89284a6f447a84e2f144d31aefa1c446331c7ce80ccba926e288d7ade917c7aa68095076";
   sha512.source = "fa76e8b16def4f53a968c897e12e37707c054c3a964f14ee9654bae4e7285a3d300d62f0a79ba7fd80b2fa15e9a334bf38f3a744f0c0f6c32659853bc9b57855";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.6";
 };
 exercisebank = {
@@ -18502,7 +18502,7 @@ fancyqr = {
   sha512.run = "fe2a8078e8491384ca4cc25fd058433dde3d4d4fdbd5784ad67150169f1ff5eec85c6f2c2ae7efb6aff6e6fc731c18cc4a156d968872b69d58a36bc042825c2c";
   sha512.doc = "afd49422e17012b84a9ddf9ead15af3eb4f5b0e8291f76b9a672d4a3097d9f390753e0090cb67df94cbd5cc88c45ec2bd67b55594bae9ed4b945ad293e4f07df";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1";
 };
 fancyref = {
@@ -18625,7 +18625,7 @@ fc = {
   sha512.run = "12bb408f7ba4774d943aa954bd3d2558a329d383a65cd4780f6c5bdc39f51b943f01d87ad203aea3b02768dc0b9ab42f681175c18a1e1dd901255aae05156558";
   sha512.doc = "a7495a0d6bd394811ff22438a42afe3c5109633da7c606a732f4c5746cc4162fa1c86ac3774aa7754e9b07c499f3519423d4b6fb212ecae156b0b8e8f848d914";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.4";
 };
 fcavtex = {
@@ -18861,7 +18861,7 @@ fig4latex = {
   sha512.run = "3f01676ea85d64e09376da4481794e1537b9e19c0ff0bac77c022b10b5d49c39d789de6e4f0356b4ea4b23326f9ef320f4b08035bc04a827951cbf44ed7c6228";
   sha512.doc = "c05d3c08b916785b765694e68b8f7cd96c3c359325e8f84166102beb4caeada7490ed24ad0b4f52a66cb822000f8b4d75d1013b93055898e88e82d7f23d5095a";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.2";
 };
 fig4latex.binfiles = [
@@ -18990,7 +18990,7 @@ findhyph = {
   sha512.doc = "97f3fa22fe490d21bc9e5ce5ea0b23ff25ab9afd9c5dbf6e8d78b24fd306ddc132c5ba7ca7ea7e3d7aaeb48993c7968b0c02ae0b765416a939d84b53171f4179";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.4";
 };
 findhyph.binfiles = [
@@ -19640,7 +19640,7 @@ fontools = {
   sha512.doc = "bcb3ab7f49e817ef5b6f710bbc227309f28396c6f4233e39e94163663f10db3daaa41b6db93a9ae85a26599dfce352a0c132a36b0c047ecf8f5269f428af4f6c";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 fontools.binfiles = [
   "afm2afm"
@@ -19687,7 +19687,7 @@ fontsetup = {
   sha512.run = "e599ae4f458be9375343dc4eade6c4ea56175224b785e48193af974d0b8f4a0d1f9426f8bd0fa22b15c962b7e10ef856f938699324c4b51e46d3e06602952e02";
   sha512.doc = "18c8d669b19274eda6e8daffe5fa3e6906a98026052ac668ef51e97e2e49e73b749dba7ac369d532020faccff121d210b5c1ec3540f353a98fe276f4aebd4c2f";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.1.1";
 };
 fontsize = {
@@ -19982,7 +19982,7 @@ fpl = {
   sha512.doc = "7b951310a10295bb453eed81ae668f042262094971dcd48c83ab721220094b3a62b79b5090002cc8a7a1fa12b4e75157fd8ead7c4deed8fa1d3629cc6746e8d8";
   sha512.source = "64da822f5b40bb6abfa33d19bec50d8e002452a710d0d6ba3c5e66097e9a33f6718524471fdc716ecb951fcb2ad82659288a08ef85b72229ba40297fc33f7727";
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
   version = "1.003";
 };
 fragmaster = {
@@ -20096,7 +20096,7 @@ frimurer = {
   sha512.doc = "d2c8dd345fed5935fe2e329ebfe7c2e9a5c836f3af5d52605e35ce32ebf51cee529c182505db8eaec7772476f758bc5905a8b57cad5ebd162732801c2cf6d352";
   sha512.source = "a0fc0076cb4beaf081f21ca474ee287cfcfac07c889907d690093ff7b188214875766746bfade8f7de9182e5c32c7bdf912b71336f078bee120b042615056e46";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1";
 };
 frletter = {
@@ -20181,7 +20181,7 @@ fullminipage = {
   sha512.doc = "111145d2f1c81f74692df8ef397d36c4c0d7b6c89efe0250571c0153b22b9d562df0dcefa90e3be96f8eb518af75ee8a23d42ad898e23668265dcf39d3c678ff";
   sha512.source = "d95dabc4565fd48b8a6e8b35777fd456934a3cba8bac34629ee6ff4847cd1578f70a06e6b87a9b76d26e341a502d1c284e4e155aaea9c92a12dbf6d0043d8249";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.1.1";
 };
 fullwidth = {
@@ -20682,7 +20682,7 @@ gfnotation = {
   sha512.run = "4f99442eacf28ea13cd98ee4bbe981b95ae9d849e6bf2682cac2305fd793f6e9f5e4211362385890956fdb24ef03748e9cb0184c7ba9ed89e7985b2caa3e2da2";
   sha512.doc = "b65d173c11400a7681510cd837ac6e8ebf65a458327bfdee140013d49a0c6fcc339f6c45d4b4ee918585acaf785c12e66b3df5f73f01a1f2d8c5b8db58b9c47e";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.9";
 };
 gfsartemisia = {
@@ -21262,7 +21262,7 @@ gnu-freefont = {
   sha512.doc = "232e8d0be31f77adbb62383da35e1e37d7b952cc2e6157d6eeb4cbb7d5e1dc0794d9fb3185e68073c5cb2980a3d5a6c447f878ea8cd45c7e2b806afdab21f8b5";
   sha512.source = "b81ca0245e9a7b1bdfb0745ade7cd9da0734a407dd8c5cf3859a7fa269b949f38a3ca18341b6ff0e1c3d99ca04282ed6dd9fe2923901a06506fc9bd6b677006e";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 gnuplottex = {
   revision = 54758;
@@ -21271,7 +21271,7 @@ gnuplottex = {
   sha512.doc = "c0e56811b5b4340c770d61ab605961bcdd5ab1abf72b9fcdb0c13c5e56a7481944aedbab70bf5d2daa90751528f0b9d7efd04a1453c08a4a6e40a46a41a1296d";
   sha512.source = "9db5deaac39afbef502db7cca3c28d0669803af3d927d6650ff39abe365c39be8dff8d7ae7537ab139fe747b7acd7e9fbc3a66dd30ac8495f30dff143dcbdb5e";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.9.5";
 };
 go = {
@@ -21585,7 +21585,7 @@ gregoriotex = {
   scriptExts = [
     "lua"
   ];
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "6.0.0";
 };
 gregoriotex.binfiles = [
@@ -21665,7 +21665,7 @@ gridslides = {
   sha512.run = "9f9c3fc88cdf9e3641aae264eac0c116c3dc410ddab4c688521289baaf67cb4c8c605c734fbf45538b6498f7c337aeaaa4b90d2584c6becf06a97b81894c63c9";
   sha512.doc = "ea3a2ed6334a5e160cb27b096e0868aae28908f77d67626b9d1d86840e615bf1b296ff5813ef5ed24ca0435eea39f4afe601216f243f2be585eb952f4df33255";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
   version = "0.1.1";
 };
 grotesq = {
@@ -21686,7 +21686,7 @@ grundgesetze = {
   sha512.doc = "7dfacbd4686f5296cc1f677b99f42946f6ba1e761454308568ecb013df3eb0a505273e1cc357d11780f7d4762d03007ab44b87343062c50666bc8e89e1512ed6";
   sha512.source = "dfa00982121cd247149768a95ac8555a2061ebfa1bcc154ff944d07843d213ab7c7bf0931cad3dac118cd995abf0fcfe03f12285e2e7fc3e808223939d4c1d58";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.03";
 };
 gs1 = {
@@ -21842,7 +21842,7 @@ h2020proposal = {
   sha512.run = "ddee9c5c1838bad606f212c1a7ebb7ac4d7ae571f1e29e83d55744dd50afb55e302f4f20a3cedd0d4446886cfa515371fb913b862d4549618858896de2a543ef";
   sha512.doc = "5ffad62ed8eb39c8cf07d4840983990009e5696a2d7714d2cbab13a69c77634d01f10a18f612c853a09dfd91ae1ea453bb3373681e89a6994ff4924dd64c3093";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.0";
 };
 ha-prosper = {
@@ -22063,7 +22063,7 @@ harveyballs = {
   sha512.run = "c282249d5758f6c8aa9dfd06cc4671211e76adc2e7c4f5cf925e713472e60f3d44c8a389c9ab4db5b8096336d46d99b62bde0f8c1f9fb5d22857e3cba98994e0";
   sha512.doc = "89ede2f13e82600a2e78047a08766e99879ef5c64dcbcf747a2c21b1a395f4c1a1184921a8a0064b15b86f574834f602870f6641f0f265f92dce506959c6c4e7";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1";
 };
 harvmac = {
@@ -22692,7 +22692,7 @@ hook-pre-commit-pkg = {
   stripPrefix = 0;
   sha512.run = "6fb3009d4bb4016f0d6e92571d52aaf7e3780d39a6b2ec73ffb37112b3f153ed71ecbcd985b81dd841f296a39da83e9004a2d6e6e85e9a49765e1682563cfde3";
   sha512.doc = "3873c4714a8a6d221f860a5d0606113c64482b363727067e0017d27e99d73f31cfdac88a799fb1412225baffaecd7bb03dbdc66b607a075b1e4539ffc0df2a9d";
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1.2";
 };
 hopatch = {
@@ -22766,7 +22766,7 @@ hu-berlin-bundle = {
   sha512.doc = "91483639fbbe4b073eb299b0153eb57383dc59c7d669bfc07e275bf445b22f2eff35a7abd632388d701eb23eb833561d9ad4d865f3e8d7495bf44c74be8dd12e";
   sha512.source = "eaea8de8f9ff48ee7cc3d1d91819cfad340f9f8aa2b666bc23fd28489c585b4344a946cfca6334620acbefa2602f90050476c5da56552088b1c1ddd3c483af0f";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" "bsd3" ];
+  license = [ "lppl13c" "gpl2Only" "bsd3" ];
   version = "1.1.2";
 };
 huawei = {
@@ -24564,7 +24564,7 @@ identkey = {
   sha512.run = "3f41af7a6b1f253dd34c670c3726f9b5fba2849230787827f69dfffd7008ec7bdf8bf84d11e7151b9e0a47b486f60ed2e475f30ed3f6cf35d68e283ff6a9c558";
   sha512.doc = "58574d462eee30612617c9340e00e956968f04b8da292babced36016516272e4d190f06862c9bc41466c85ced264f380192c4e9376c4b0ed58e673f37efd3cd0";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.1.0";
 };
 idxcmds = {
@@ -25004,7 +25004,7 @@ inkpaper = {
   sha512.run = "d07bd9d2f32981607f4baf3bc348fdd99aae0c331423bf1f678231a2ab9830e4a824357df067e52643e6c89ecd1b850afb2444686fa33d75e6a3e598b003553b";
   sha512.doc = "acc6ffc291db3164d8428a50ee0792907435b90d3677a0e9ec883e0d3b81b6c04785a08217bd6c9554545eb5bc328a702c2958301245bcce68949ce76726c389";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.0";
 };
 inline-images = {
@@ -27283,7 +27283,7 @@ latex2nemeth = {
   scriptExts = [
     "jar"
   ];
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1.3";
 };
 latex2nemeth.binfiles = [
@@ -27413,7 +27413,7 @@ latexdiff = {
   sha512.doc = "2f484db22ec12886a4d76fabde3a65a982d3e659f524120b377221f91c7ad5973ad6023aa3226dd35baa687c86ec8dd8e736553d1604690d87e68d3cf7be84f8";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.3.3";
 };
 latexdiff.binfiles = [
@@ -27449,14 +27449,14 @@ latexgit = {
   sha512.doc = "bfc6ce99ca1b66c0b1d5d98453716cf9e3a7e65ac55d7d17e5b06417f57d13f532602b537c804581e2e81b5265d554dd99e4d4307ef6d634d25916aae1892cab";
   sha512.source = "8a09f128428644335c9d909d23acc91ede2020304ebf009be00928cdef670aba23d245b979e5fd8d927c9d0e652bc195c717a744015a31fbb2aed1c566abfaf4";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 latexindent = {
   revision = 69472;
   sha512.run = "23c35d38e78c3debf1c89cad7f719727edaa21e93d1cdc3f845f3badc0e4211919bd8e8a495010fde7eef78f9784f04c545d67546f30f16179624e36f82d31e8";
   sha512.doc = "6b0de79326494370b3fba30cf44b0edf7ec925462152c6c11d7e4b9de489b58a94ea64b0e9059b28ec17817cd73e75f0f327aff2ef190dc9fe35aca2b24af66b";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "3.23.6";
 };
 latexindent.binfiles = [
@@ -27468,7 +27468,7 @@ latexmk = {
   sha512.doc = "0ce5229b80291809437e57518551e0ab0b06bdc381e07ae100ac2fff3f66965b64c4df096dc90fc5814b1110a9080322742b92af57675cc53b26ab1548a37582";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "4.83";
 };
 latexmk.binfiles = [
@@ -27782,7 +27782,7 @@ levy = {
   sha512.run = "a71294df1b2bdb1402892ebc0c82dd60275cf41f6844cdd284e1ba73c8515e98258118c5a1e5158fb6d09acdc53427eb4e3f62f24591fd2eafc90d0bb69b71ea";
   sha512.doc = "e69a1e2e421100a50416f86bda40702aa9a4d5c5b0b8c783e328e56e1ce587f832cad984fee2cad259603e893413155bc4539e853e1df0d95c89e9167c67b2e1";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 lewis = {
   revision = 15878;
@@ -27835,7 +27835,7 @@ lgreek = {
   sha512.run = "f0b5cc9b7267aa07dc0b0f8c6d23a164bc239591fd13b5d77c5c840d33e131546c63c63a3bbbee2851000bda2e8593e7617f8a7ae381e7cd0561302a667acac1";
   sha512.doc = "915df985f4766f492a70a35342e086567d17c155ea0dfce5514c6edebaf1dacb78998dc4bf5cc44415fef580a7779083bc2261a22dfd668e8f2023f1f15bff35";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 lgrmath = {
   revision = 65038;
@@ -27944,7 +27944,7 @@ libertinus-type1 = {
   sha512.run = "6c84de57b1778ec35d9f56b00e577f9f8c1293132cedba43e657f4425e9bf01ab4243fe6ffb872aeb99b446019539a640d29c88cf29cc86d649d2a00f77952f7";
   sha512.doc = "c656af53b98735bec8c63c3e56160da943379f4b908f553a27cd1c82111b201eb15c1f1eb1b6ff89fee281c27ea36d6fffc5592b75722cd561c8770ef2d3f6a6";
   hasRunfiles = true;
-  license = [ "gpl2" "ofl" "lppl13c" ];
+  license = [ "gpl2Only" "ofl" "lppl13c" ];
 };
 libertinust1math = {
   revision = 69440;
@@ -28471,7 +28471,7 @@ logical-markup-utils = {
   sha512.run = "87f7fc345935804705ab25ab010376fb72bc4722c75bb115b0c9dd0e0a51fc8bdd6dd4051b76dd083ec07d80b8c59c5d18423da55e0430db7a9f94ad0bd45906";
   sha512.doc = "80c44068a6e474071e40a0bf3dc67f0201b21eb84a041fad8423c59c9e34ce138833c54ead638979357dc3026eea55da034daa05e71a56ecabe701ebf53faf24";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 logicproof = {
   revision = 33254;
@@ -28549,7 +28549,7 @@ lollipop = {
   sha512.run = "03a780145d4e761f3d494ccc54117e2f92f1c32b8f35a88a77b3145442b040c195b2bae10aaf39557530e548961230c7550e25ea77472a8b0e272f0e72609a8c";
   sha512.doc = "3ee627e18491a48c58132b85cc1079b2a2f857b9453cdda113bedd7c9393f04e15c6215e6cbae99fe3d4c24a297d230a687e3bb7aeb67cc45ef105051838c6dd";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.07";
 };
 lollipop.binfiles = [
@@ -28702,7 +28702,7 @@ lshort-english = {
   stripPrefix = 0;
   sha512.run = "73e7cebb51b9ae5ce2c6ddfd191a1d7e5358e5a1bfc61ff8d921cf0928e2cde839f232dae6cb0d9dd1b05df907c8c56c3f72a4d89917a6930762a46e1b1aa286";
   sha512.doc = "ab6dccb0110d7033a36d743b9f8132ec5ab4a0b4b334ab7800dd68f9e65bdc7de6c5e766fba6a7a3596d3fd8d6a3a16299344fcbfd67585f1fbe5e519876d7ba";
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "6.4";
 };
 lshort-estonian = {
@@ -28710,7 +28710,7 @@ lshort-estonian = {
   stripPrefix = 0;
   sha512.run = "6bd3c07c1e5f9d543b0f67a5585cc33252567cc346a8d7feca050baf8ab437be97e73d2c4b4b159102e9c4772f8cce2abcbc25486d73e976b83a3d2f4b9e9487";
   sha512.doc = "e16397fac3e6cefa699b412ada1851c7792520da8af1230274fa1a337b890629b68f71d94b3894044f28e687c6aa60d766377e12232d0e522e82e18dc97428e3";
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "5.05";
 };
 lshort-finnish = {
@@ -29389,7 +29389,7 @@ lualibs = {
   sha512.doc = "a4c878209934b2b044688dc77b4b467ae4e106adfb5f728f398d7adaa279ba612883ae22f30e667a79a22d633a507b689525356ff24daf12c50bc84dfa798ca5";
   sha512.source = "98fb3af23ec41561f0ffb12461ec2977472f4182b49a37c0365c16bc3d52ce61c382e6ca172ef92638cc0496d5e3073e4c96b13acf390e783f1bf46d34226d2d";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.76";
 };
 lualinalg = {
@@ -29445,7 +29445,7 @@ luamplib = {
   sha512.doc = "6c366637d27c498cedbeb6222ea8b48a807ce806bcee89cbbba7f7fb5d6b3bacc7fa4ffb3c1288a02b803bfd7b96725b12fd46eb2e9ec965e2b69f057b1c2c03";
   sha512.source = "546d9403d20ed58a470b9e2fbd5b34c1863c4ef69e90156a6c0071f09ff425f6bbd9d39813b870f55997cafa520caa9326b79e31708630f9b3a44b0b0ceddc3d";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.26.4";
 };
 luanumint = {
@@ -29482,7 +29482,7 @@ luaotfload = {
   scriptExts = [
     "lua"
   ];
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.28";
 };
 luaotfload.binfiles = [
@@ -30354,7 +30354,7 @@ mathpartir = {
   sha512.doc = "fca6b3e2650ada022617af137dc86858c83c51c55fcadf2ff21832a1fcd9fc44f371f89e8943c5e1d117a09893c3587f15a3e8021b11f7472dd3c9d37383f8a0";
   sha512.source = "f5c5b328745494965d1907f6dc187859a5f9bda5a8beda164e7317dc1b8a6e886073f9d2e9b564c6aa56d55e7cb7191afeea38edc059b2dd55066e68ff826dd8";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.3.2";
 };
 mathpazo = {
@@ -31189,7 +31189,7 @@ mgltex = {
   sha512.doc = "a8954ba22a30368ce01329b930486c02b317375636d85c7fdb7f14cf032173ab3f7a28ff6261d20cebdb8995560d4c7f41c03ed6285cfcaa555d405a06891432";
   sha512.source = "63b874341f2e18f88862ec5e6cf7064e9d4219070d274f0daa2dbacf8eb0eee5b4206167bd86520d10ffa0316d7ffe93615604932924b4cc04936db352073d1c";
   hasRunfiles = true;
-  license = [ "gpl3" "cc-by-sa-30" ];
+  license = [ "gpl3Only" "cc-by-sa-30" ];
   version = "4.2";
 };
 mhchem = {
@@ -32431,7 +32431,7 @@ musixtnt = {
   sha512.doc = "9d5646e3657c74a6d6c6be0c3f07e91ece88c9f0430e7cd54fec45769ac308b813a0f39ed202b518092d856e3fa0876c589f36f37c38b62adf078647aab42a63";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 musixtnt.binfiles = [
   "msxlint"
@@ -32953,7 +32953,7 @@ newtxtt = {
   sha512.run = "fe95d2c4d2ff7a83f362f55bf2579576b94251fdeb3556c2f417e0118b2dd215a705d06d79e66b9aadeca09cadd5c19f2898cbba8624ea089fef804749d350cc";
   sha512.doc = "02879af2ae05a703502966acc561df08762a9fe01a873180672652a9c931ceadcfb85d411523eb81425e7f1944f514673e8d04a208d54b27d0d26916077a81a3";
   hasRunfiles = true;
-  license = [ "gpl3" "lppl13c" ];
+  license = [ "gpl3Only" "lppl13c" ];
   version = "1.058";
 };
 newunicodechar = {
@@ -33586,7 +33586,7 @@ numericplots = {
   sha512.run = "6b51a7c68357dced9627d3c618a167d689b573ea44c2f36de5417735f39f5b3d1034558cf188bad2da5eb25f81a2bdee3df6059b8c14879770c3b300422cf016";
   sha512.doc = "1c9f9856ec2f8cfef61829256f1076099e6bcb79cb45e8155116d6c24feaa52f481c739593c6cc51df803fa76e8ec38b8d276e796660327a2bd1d86957896332";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.0.2";
 };
 numname = {
@@ -34781,7 +34781,7 @@ pbox = {
   sha512.doc = "1955a1cd5336a7d71483f49bbc8c65426485fd38447282262b58b4633398cda0753c5574455421b19d92d5c88c599f9c227b54a7c340a35daf233a4f48a1c276";
   sha512.source = "67cf5bae9494a81b97738ca8ed5877c009d631cb8ac681915559bc4919f536c657fe4e3ade36b8e4a0ee3b614ca4a23bde8a9cae19f3a9aca12cb2e3926160b1";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.2";
 };
 pbsheet = {
@@ -34837,7 +34837,7 @@ pdfbook2 = {
   sha512.doc = "3048de4be891e270e8efe9f9d85524aff948c9483da25f491669a7181967dc281f42b984c9ee46464bc563c42a4f171589066f67818a291a136e1f49d40912ef";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.4";
 };
 pdfbook2.binfiles = [
@@ -35141,7 +35141,7 @@ pdftex-quiet = {
   sha512.run = "7b33e37a4b33060abee48ccf825cacecdee552d641da48dae47e3615fa0ab91ea9912b52fbd5c5ba6cdaa9c0d2cc7baa7c48a80bebb6d1887e5c633dacb4d104";
   sha512.doc = "e13392cfefaed2c154c086ffcf85e21725e4230ce78d10e07dcb0a1c8b3685bef2572c5f5e249c56120320f2b0167cd5055ade50625a296446a197c0ba4b85cc";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1.0";
 };
 pdftex-quiet.binfiles = [
@@ -35187,7 +35187,7 @@ pdftricks2 = {
   sha512.run = "e50406cd680e1d5cfabcfd8000b743fde61dcff7e3c686b06f58fd1fd36e414d53140b5d244ef65931aeec67dbf458e5e2d43266f26ee9de301babbc0f88853d";
   sha512.doc = "4a22c280a28e4a45f068d52f4d75f19b5ccfec30609d7c8d143cccc67d16fc04cd1ae63e7d6a5a659a0805ed85d96d57ff5fba4b246f67029457088e7696ad23";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.01";
 };
 pdfwin = {
@@ -35235,7 +35235,7 @@ pedigree-perl = {
   hasManpages = true;
   sha512.source = "febf928301eddf00aa84ede679712a3e58520368f7ecd488e9d696b82dc6ed5afc403d88b344071b4291391528a4552620c4882ba2d2e6ee518fc3a8733a2f41";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.1";
 };
 pedigree-perl.binfiles = [
@@ -35363,7 +35363,7 @@ pgf = {
   sha512.run = "d7fbf0dc83f88a2f6d2de3117365d3f4ac2379ecbc530e343bc3e02ac8083e9a9843d479d375d086e39b6377b21d2fcba22883485e040fab1601642ba80128b9";
   sha512.doc = "e3be45f63b46124218592ffb8083998b9d25e81dbba7ec8ee58d578335247b05ecc46c145f5de8b859c72dd54cafac58ee784f9aa33888fc129817c66a819568";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" "fdl13Only" ];
+  license = [ "lppl13c" "gpl2Only" "fdl13Only" ];
   version = "3.1.10";
 };
 pgf-blur = {
@@ -35405,7 +35405,7 @@ pgf-pie = {
   sha512.run = "3e5cdb5def0918ab1c3d38d35bb85f07711144d1fcaf0f3af8b2c5e0eacd9af6c3b92bc6e1f45438e40d7f5838770b91ab513970cdd9a3f7dad2918eefb875f6";
   sha512.doc = "ac151cb61ea4fc440ffeeea9b987f6dd648b53596934900f41437f787bedcabe2ca8dd53c37828aab816e9334d0d26573f81000333e50d0761d70c586a5d87e3";
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
   version = "0.7";
 };
 pgf-soroban = {
@@ -35436,7 +35436,7 @@ pgf-umlcd = {
   sha512.run = "a55281a157a2a347f1c9d82679cd663f4493e03123d14dbef0d71582613772252b693a25b3d3e5b72b948c4fd12d0d7b0354d2e38083583b550d7cfb5e634d93";
   sha512.doc = "6d798d93590d859d69bda9f0bd391049db91e2d4fb6f0b019a6f76eeaae9e73c9f249ec356cf5a5d4505af6948d4c70c2ad4685c1c41a7ba40ec62d3d8a9dd00";
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
   version = "0.3";
 };
 pgf-umlsd = {
@@ -36338,7 +36338,7 @@ pmx = {
   sha512.doc = "dedba4570b68a8628442716dc3a9b1699e5f531aef2737e4b3f47862a91ba69bda91d6fe6692914d2bd7b8fe3188a83fdfce8bdd219ab7c4f238a9c6ec273ffb";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.00";
 };
 pmx.binfiles = [
@@ -36354,7 +36354,7 @@ pmxchords = {
   scriptExts = [
     "lua"
   ];
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.0.2";
 };
 pmxchords.binfiles = [
@@ -36682,7 +36682,7 @@ prerex = {
   sha512.doc = "af17b95e20638fecfe6d431cc320b6d3207dd739779636206899d7bf39c26018718521dabf76adab33db28f975e99d2b2dcd9b13a164dc24927d2017e947bdba";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
 };
 present = {
   revision = 50048;
@@ -36734,7 +36734,7 @@ preview = {
   sha512.doc = "d0f797210790ee1ed8a80df8090f9273cdab22de2bbe8d72b609385ff2f0e2004dcaf2a91d0ebe3fcbf0693cf4f83b2a978f7b02744185ebc9c803205e88d7a0";
   sha512.source = "e2dde7963e5337c8d0b0f0fd2a7adee2f09e8bd3900d2d8d6cca7d612e3401fd6567a42141734e72e6cdb043aa1fd786ca0dcbf42a776880447f81d0ba4e8838";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "13.3";
 };
 prftree = {
@@ -36863,7 +36863,7 @@ program = {
   sha512.run = "a9ef7d68ad86b42657681e2b798899b5c7c472c5e272a9098a1424a35a109dc4a946be54c4007db73edb861cb475f293e404cee9fa0dca8cdf086eb6c4790319";
   sha512.doc = "4213b5bc9cd6b2604bf1c667dd123729c0674d1c74338ebeb86b1551af14be3e24c4e94b4e5cc2c06a25ebf934d56eb6d3b5ce80e452798ea02fbb0ac6533580";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "3.3.14";
 };
 progress = {
@@ -38028,7 +38028,7 @@ pst2pdf = {
   sha512.run = "a266409d6740653bacb23e83b98e545dc462ed879299b195d65761b10e4700a797005ca231fc24e37a42591c09ba93b5ea6b8b82ad8b14a29a7649cdb3f39b33";
   sha512.doc = "5805c535c8a043fea721093a4b7d2ab06c86c80d4a45eb3d603986b898b6d2053d041b638874e53c79e2d815a929749e02ca0986a2f8cbb400a2fa87581462dc";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.20";
 };
 pst2pdf.binfiles = [
@@ -38147,7 +38147,7 @@ ptex-fontmaps = {
   sha512.source = "028304d777bfd5155baf89fcd4003bec43e5a7f3009aa9250cfd13277d085cbe52cf49511cf664efa0c886b1681475b0c25eaa65624bf0b77d4ab4403ebb457a";
   hasRunfiles = true;
   hasTlpkg = true;
-  license = [ "publicDomain" "gpl3" ];
+  license = [ "publicDomain" "gpl3Only" ];
   version = "20210625.0";
 };
 ptex-fontmaps.binfiles = [
@@ -38194,7 +38194,7 @@ ptex2pdf = {
   scriptExts = [
     "lua"
   ];
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "20200520.0";
 };
 ptex2pdf.binfiles = [
@@ -38513,7 +38513,7 @@ qcircuit = {
   sha512.run = "72dc726d377bfa13b30d5440f65e3f451a717c32785c9338bc95107a3fd29326d5011ea31a6805fd751e276279b8bb577f2b4a488ad0f380ffad84fbe46e272e";
   sha512.doc = "cb4d00d575ed8f859722b97af7f15323af85e69b7276947c05770a6c745dbf0e4b3aa1546b3cc82d9555a5ce839b142ea8edd3da166d2c109bf6b829b2ebb74f";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.6.0";
 };
 qcm = {
@@ -38687,7 +38687,7 @@ quotchap = {
   sha512.doc = "e2fa71ee21ad019ef785a3c74ddab5f232d3a6d1e9fcdcedb34c216eb5e6d44abbafcaae5d1c4557bc1e4aae92561a75ba2c3723707328a12cdb6ff4c1b72dbf";
   sha512.source = "eed36464f1b04852e8af08c5fd91c42ccccbbaeccad565e6f338ed5c87b003b2dd1704e1dad0ce0e49651461b637e8ed613399a0ae8122081e9084e47704665a";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.3";
 };
 quoting = {
@@ -40919,7 +40919,7 @@ serbian-date-lat = {
   sha512.run = "420b77a36a08e75f8020edffed704ff0398115a6bfe694fa46957ad8b35c58435ecde4c16176a72bbcbcd16139502f8fb679399852bfc9000df6d5f305fbb04e";
   sha512.doc = "5c10fe13a4e1d6117ebfe8d737d50047dc97483c7a0cc287a9e79d367af50ec1cbdc0800161919b92c6d82774c9e756970db71344259028c254fbf2c1fe86219";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 serbian-def-cyr = {
   revision = 23734;
@@ -40963,7 +40963,7 @@ setdeck = {
   sha512.run = "817474bc928883f4bbe97391a477bf492a4e339879fc85d7aec3ca932f9b46c310f8fec5b732deb2196c705c2bd3a22721376ea8289a1bbdc12555447f12f757";
   sha512.doc = "c27f7ab563f35293ee6019560f643d562ff2bf06747402930c767031a8dccffac0ebae9cd16b9e3009b5883f594c541ccf4c38883aa89f4256f7db83e378e1e9";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.1";
 };
 setspace = {
@@ -41001,7 +41001,7 @@ seuthesis = {
   sha512.doc = "5bbc5770bc42c62da7ca569b10558dc02bbe7fda2a463a3a2a78bc76fda3f1d0e7023c311f62a91bef73ae3c4026561403284404acc6bc72cb2e308ad4092ab8";
   sha512.source = "a442b5ca4e1e8a4a3f8d331e5575066a8c63d1521d1f774fa7d386a8e42b09a2c4727fae1f0a51a31c6a98c173113349738caac8991d50e4459082a874fed1ad";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.1.2";
 };
 seuthesix = {
@@ -41011,7 +41011,7 @@ seuthesix = {
   sha512.doc = "1d54dacc742d558af5fb006cb4f26e073bbf6a3a572b7e81fbacf691995a4a96c72251225fb7cff598c930a4c9984d0d01d080c797f202f7e30aced20b8b3e5b";
   sha512.source = "fbc848315e2b76ac915aa6abc0a9e7bf2f63c4af716ccf65c9af3ae05e049952703c1f86db97a5825b92f43dc2d1163e6544c30fcfce4b672272b4ba9057c171";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.0.1";
 };
 sexam = {
@@ -41287,7 +41287,7 @@ shtthesis = {
   sha512.run = "da3b02cc3558a337d7d35018fad00faf6d9183f3f4bc5b5b31e168a11dcfa705a77cad6c42f3fe3d98ce67f50d94ca1f75a82999d5a27837ea8fba6c01602594";
   sha512.doc = "04f1ccf2bef9e11364d7f066ed1a7fc218e39ef7a08824eb65537d88ed03097399eb01d07ba6d0a34e7456fc6de1291ea4f1c9264074eecd2e1af341c42e9197";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.3.3";
 };
 shuffle = {
@@ -41440,7 +41440,7 @@ simpleinvoice = {
   sha512.run = "8d3d905dd9dc418503bde7cd51c90ff6fc6f688502ff871040f9eb6bf96b6c1ef999d3dd98b16c8739ce9518a22a8e99a23b5cc66c437504b3837c30ea19cca1";
   sha512.doc = "81e5ff2bf76f2b35549feb9b6336bd04b9273d4e6b951ee327101d4e5a5d3c429276735238b63c3b2ee03466b477ca2d7990a68615c1d0eee4f12a37d6b65472";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 simplekv = {
   revision = 68439;
@@ -41521,7 +41521,7 @@ simurgh = {
   sha512.run = "11b77f831aff6796e41ccf2024496ae1c9d4b9b5f4c029daf33e0eb4b4fd3d1e5c78137b945e3c9fe7a16380365fb88165a46e614dc3078657ce025a55f90d44";
   sha512.doc = "30ddd7a9bbf3f568ad4876336228842651d8f95eb5f21df81ac524b99a7a695e68e0469f79867668dc3b9913cf223b72a22f6a0d0c818233c081ba90ac67de1a";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.01b";
 };
 sistyle = {
@@ -41812,7 +41812,7 @@ songs = {
   sha512.doc = "72c374aab68334b050a5d801299179c8484b6fa46db8c8e20b9fceef3cb9a8c0c1dc51de93f34115d4e34767233179c5872054cd03ea3e622abb63a49ad81f24";
   sha512.source = "016d389033589ab9334180edf70321858ba3b6000d8f560a18631e13ef28130f4b39aed81f7ddf0a178540a463789955d14620b37b7979ac0ea6abeec77d29bd";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "3.1";
 };
 sort-by-letters = {
@@ -42156,7 +42156,7 @@ srcredact = {
   sha512.doc = "dba9916acf75e800af1e581b4276e82bfe4c421a500a400773354766b37849568c1f19752a75983374ca41f793903f9776423888215f00376db1e0f5f3b3dbbc";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.0";
 };
 srcredact.binfiles = [
@@ -42611,7 +42611,7 @@ sty2dtx = {
   sha512.doc = "1bc66506350b07341c8c4b858c6b1c637d9f0bf48323714ee7dedd701faf20e3cadb318f56bfb1a05f4fcaf84cdd6e9db18299801a69e0359937d7852ac6a824";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.4";
 };
 sty2dtx.binfiles = [
@@ -42759,7 +42759,7 @@ subtext = {
   sha512.run = "0ab32328d346bddddd37094ec086727222bd386bd24c1aa164aaa0cba85d60cf6be2aa26d64bd0bcf63f49b0188e79a7212e8b98d2d7400f828ccf10f60272f3";
   sha512.doc = "cd3fdf312f2bd7d30c3aee67309220e8e75d20ea69ffcb17106812f0423791dbeb26a8ddd3621cd48e6b3cab5c910083f49aa18b439d9f8114c08002cdf8826b";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1";
 };
 sudoku = {
@@ -43002,7 +43002,7 @@ sympytexpackage = {
   sha512.doc = "0013c9c1e21f70e36e6b30f12d777f9f78b727ee1beb2f893133248fffb75f0bc4523c0787c0e292f197ce1c01b5f37b34c33ae97ed713bd900848657d803c59";
   sha512.source = "45df3251efd8a8e5669f72b83fc8c07c9df777ec90bdae9b8a92ff3c1875fe623574365f69162cc4c2f89e4fc7ea32dd1ac0ce164ee804799496be25466a12bc";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "0.3";
 };
 synctex = {
@@ -43446,7 +43446,7 @@ tdclock = {
   sha512.run = "29e2e50d9fa432b08ea730b8a12228cd2bd3eefe61946e576a262bab06a966c0b28c13d48b1074a838a1a567f9797a943282d17e936db146f15e7631261761fe";
   sha512.doc = "139c82690e2c9b695a10a6f3e6f94a54c3ae4d4a929ddc18763e248114926554206fb4c007ed758695476de3750ffc1dce3db75efdf2598434f27abd1ac84baa";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "2.5";
 };
 tds = {
@@ -43529,7 +43529,7 @@ tempora = {
   sha512.run = "0e1cc1a13f7937e5497f454b15ca66e0975b784b80223a902bf12a9587abdfdb56116b100e04306b1999e053b7c3716b32e1183dd7e6624162611f3b70388df6";
   sha512.doc = "18259e25b2c9f2a9cfbce9a9303d8827af069bbe2a7ade5c14518ce2c19dc973a86fadaa99b2abc8bc65644ee5371c745abba03cca76a685382b7d8b6d20bc6e";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.05";
 };
 tengwarscript = {
@@ -43917,7 +43917,7 @@ texdef = {
   sha512.doc = "bf84f04183654db606a7ebcd30d4986bca69e633439511cc7d9cf57a3a1210231ed158d2bcd86c5014065d355ec94faf3d5f9ab08be568eadc6637ae9cb72aaf";
   sha512.source = "d8c20d77f5b5c68e0acf2fc26a8a0d142aec1377554c3f6b6cf469aef28ae2b82ab4c6844ed8414cad073dada8a035175d6e48b53699daf029ca181cea41f112";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.9";
 };
 texdef.binfiles = [
@@ -44010,7 +44010,7 @@ texfindpkg = {
   scriptExts = [
     "lua"
   ];
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2023E";
 };
 texfindpkg.binfiles = [
@@ -44210,7 +44210,7 @@ texliveonfly = {
   scriptExts = [
     "py"
   ];
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 texliveonfly.binfiles = [
   "texliveonfly"
@@ -44356,7 +44356,7 @@ texshade = {
   sha512.doc = "e06fcb1e6d743561ecc1b6a1a14e252fa5a7eceb2bb0ceb27409dd52c62ec5a1397cdbde7bf61e62b143af2fe6787a49ad3b6b9117f8418e409e54b26deb2a25";
   sha512.source = "23bc248ea1ee572c6ac13fcf9697810ad6881530a44adf9a16927801b0a951c3fe012295ac2816c85f203fcadfb35f04460510ea7fbe2fd758b05098a4f06dee";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.28";
 };
 texsis = {
@@ -44533,7 +44533,7 @@ tfrupee = {
   sha512.doc = "19da18d665a8369e58a26d4e979d5fd6c8b3187dfba97a281008627aeb8c5ee824dc2ad3f5c94c3b35c67fe28a646f44aa5f532912de5f5640b0a7d56afec2f8";
   sha512.source = "30133dbf65f1a33f79ad8b2c8ee84ff376b39d12cf0d48c4e72e86b393e0d55f5768c7af5f5f3f6ff1d78fe2c7d4f2b09d2980107dd5aa1d94fb5ea27545ee9d";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.02";
 };
 thaienum = {
@@ -44620,7 +44620,7 @@ theoremref = {
   sha512.run = "ed6990b6c7a9ec4e72770252bcd07ad5ddf4015cde0129dc0a89cb95bc96958963209fe46f0ba9a614ebc0cdb358d8125ee3eb22b9a4249367d975ec12250a3e";
   sha512.doc = "022ef42c6765c661f5828a8adcad7710d74f168b3a2dfad0e73218d1a5295b25ea24d5fa010a01151939e87989cfd6457917167e69cebf5ee5a364347eea5f2f";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
 };
 thermodynamics = {
   revision = 69086;
@@ -44648,7 +44648,7 @@ thesis-gwu = {
   sha512.run = "7001a1f11d069fd15894b34a2d220394924802c3ef1a37869e0d717bdb650bb53c01078dc14760f7887addece64bfb0f6662741bfb6dc4dd77d2ff1f3d0d7415";
   sha512.doc = "e53925a31286089cb5e8f051cdf969c6bbf29db0ae2629c1a584ead2885cc0e1f95c5b2cd9583056c8ab40b1c41d4f8203b876a1e6365d8967e3942440e04e2e";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.7.0";
 };
 thesis-qom = {
@@ -44801,7 +44801,7 @@ thumby = {
   sha512.run = "485bb2670133c3c83f0f7aaa685defc6d36f5d24173652d869f526770e1f55c55a31f3a3180f115aef45fb824d9032ee915b91c1c59b9b33794c95c92f03c3e6";
   sha512.doc = "bac645197085968fe8a7bd41f4a9ec3c6e51e17e6750b87ca1a458acc9f6a4f244d1f3b36b9c622c98492b90abddf9a4df1636b1874c02820dcdb6340bad0910";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.1";
 };
 thuthesis = {
@@ -44914,7 +44914,7 @@ tikz-dependency = {
   sha512.run = "f13e652066ed2237c22b397b76f628e9108a999138ab5d8349792551205cada4709031f5c4b458982618871d4d65abfe5623f700ee9d8f474c66b1e31df374b8";
   sha512.doc = "3ab32e535d11802b3a828b8b49e78f31df5e5d3c7c36509a3b8aa0d81c02c465ec84d45b9d951ad833dea705381b4df05fa3d9a478db9af0622bc0d69008b227";
   hasRunfiles = true;
-  license = [ "lppl13c" "gpl2" ];
+  license = [ "lppl13c" "gpl2Only" ];
   version = "1.2";
 };
 tikz-dimline = {
@@ -45331,7 +45331,7 @@ tikzpingus = {
   sha512.run = "78041352e86e68eb99f875a1c8bf7d4a50c527a4b405e4c93e9da6ecd716bbb0c5fad053fff80229723b4550345077371a52132258cb9d251c319f743767cb7f";
   sha512.doc = "1748e17af7b3190e19a0c446e78f5b40b6a135633850d610179f33927650c8cd92babca86e4fd10408586d1fd81814cbb54985ab0fadfbfd05219b033e4323c6";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1";
 };
 tikzposter = {
@@ -45388,7 +45388,7 @@ tikztosvg = {
   sha512.doc = "3d90c0963c570a115390603bcd5f39a224a155faea8ac6eec511b9689ab98383386d3d6e92076129e0f704d69bd18da52cf2f89f5db024a4d5c34a75c1edf279";
   hasManpages = true;
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "0.3.0";
 };
 tikztosvg.binfiles = [
@@ -45653,7 +45653,7 @@ tkz-orm = {
   sha512.run = "41263c9ad122a3cfce3eca3cd4ba8798e61ef662ebf7f00be99dd16a25b50f5419fb6c04a84bae6bd0ce2b349d4b3216a1a88c6e3d081d8a064ff561536a7e71";
   sha512.doc = "ba9a6a67384478cbcf5b76f7148f60bb0f2f1932033f95945b28794f146d89b21e82c4d59b87735d46bacacd10c1ddca2b19e2e7ae4045a331383f4085a99221";
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
   version = "0.1.4";
 };
 tkz-tab = {
@@ -46123,7 +46123,7 @@ transparent-io = {
   stripPrefix = 0;
   sha512.run = "69d27356f57d5b610fc9e6e839f6df111f6b98b8bf446327ecfba473dea6bc997cb6802ca382b3438d44de85fd5f50f82bd4e5508bfa43d08223463b5436950c";
   sha512.doc = "2e54e51744c482f98c1b35588cc934ba18e3358fc2be043459d7e16f8c85ee6aae7acf4b6c3b329cdfddcf1b3126000c6559d41d5b2c4e88d5018844717cb8eb";
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
 };
 tree-dvips = {
   revision = 21751;
@@ -46390,7 +46390,7 @@ tutodoc = {
   sha512.run = "acd6fc6114ab1c25259485514b54d848b75cb5f45dc05cdb8324a91b127031c0db8c84c445b0e1b429dc1a5ca0a6a394987465363265c0f830ea60e72c6ab7de";
   sha512.doc = "8f58c8eaa4db17315d69088b9cb446b90504fe62395fcb07495742695f2c8e8215ab76596d4d98cad3c432f3e6079a2ec3088074345d0ace4d309db3163ce405";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.1.0";
 };
 twemoji-colr = {
@@ -46482,7 +46482,7 @@ txuprcal = {
   sha512.run = "f6840ff0846b52130b65c81513d4bf358dfea413ac6d7f324eab592b96d5277d7036e5d991dbfc1ecf6376fd35baaf0351818eed69a21b6ba88e25f878a41ef1";
   sha512.doc = "f5bd216c689b0368bbbfe29f7fbd57bb7c02344d8696af488fdd7f1078fc5ad9ac7ad5565f1408b7b7d19224093d1418c1e3d8920b8cb0cece770811576c894a";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "1.00";
 };
 type1cm = {
@@ -46864,7 +46864,7 @@ umbclegislation = {
   sha512.run = "ea6a55698b51da3939a1bfc10963dd74d9e772ebd18ad9018f649077224f7ee30ca20f051a68c9bd8d8bac94baf1d0d28ab2f864419c61385ebf9bc82aacb7f0";
   sha512.doc = "d4d5f318baa1f1ecd446bb864d0670ed2dcd7208429bfd2ce587810b27dde22f49a6f7c072aad8f6515e721a98ea0ec356ee36eb970cdee385910a291d964394";
   hasRunfiles = true;
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2016-6-8";
 };
 umich-thesis = {
@@ -46937,7 +46937,7 @@ unamth-template = {
   stripPrefix = 0;
   sha512.run = "c6b6d86dacb71575a7f76e33eac081f630b81815e3501ff5ba5a5e056d5bab76c709b19b8843adca39330fb644cc49e70c8687b5a66d0dc636caa74af6c3bf5e";
   sha512.doc = "e7e17ba71d47769db4766628d334ed66980d7f133ec0bf2bf21d7a00e92d661dfa624def736891c5d70f11755215bff47b8cc9ffaded3baebbaf52e0365227e4";
-  license = [ "gpl3" ];
+  license = [ "gpl3Only" ];
   version = "2.0";
 };
 unamthesis = {
@@ -47018,7 +47018,7 @@ unfonts-core = {
   sha512.run = "5476421a802ec3daa8fcb8354924ffb090aa9ea337db315c813637fafa445ef82601edc61cb7aa424bd7e2deee7607902ed33f0cfe70c214901d4c52dfcff6c5";
   sha512.doc = "8f51172be1093ff9da6ebb7071f5fea435e2bdace5619faa24ebdef52b3e34197d91b8f9d302844d4e1377a2a4712247743172afcd4b01367e9f166bd76112fd";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 unfonts-extra = {
   revision = 56291;
@@ -47026,7 +47026,7 @@ unfonts-extra = {
   sha512.run = "9cf9a73ba3c2190da7999c3b770e92d8afb43c640d651173c126e930155e9f87f371392accd4eadae8922ee846a5e02c0eeab845561dea943b34b185164bba3c";
   sha512.doc = "6173d49bb64c9b162763ff08af445e518fa650fcc13e02f5c72454d335285d9c82347cf79f945fae94429f3a9d15f9c9b58ff1d175c8f59ea7b75766cd279303";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 uni-titlepage = {
   revision = 68917;
@@ -47542,7 +47542,7 @@ urlbst = {
   sha512.doc = "897c866ab03bdd5ab741537182788c5f484009681d6fb98f1149329068be707abae7ef012c0bd0170e2b4b673eaa63b46f5d0d55714015e8a451457f5a6c540c";
   sha512.source = "5bbad9719daeeb8c03e7db6ef956881994bc17d7ced9b45165ad45899a7230ea8c0ceeb23d209d36535d2081b6b611d46c19b1f0f03e8fbae1788f31ab09e7bd";
   hasRunfiles = true;
-  license = [ "gpl2" "lppl13c" ];
+  license = [ "gpl2Only" "lppl13c" ];
   version = "0.9.1";
 };
 urlbst.binfiles = [
@@ -48402,7 +48402,7 @@ wnri-latex = {
   sha512.doc = "924266d547910d25ed5355ec2ef697d271dd992aeb6767d5bcb703d4d07cd34b6844e9a821ed93f5a04237aba1c185fb68926967e78043f390785b619c2389d2";
   sha512.source = "e3c5cfaae7b14a28489344392d66a1e2570c900ffd571c54b4f2d13b16d6dabb5cf58cad9259f8b662a218567982d1ac51ef8b2a757902c36540200fd984a497";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
   version = "1.0b";
 };
 wordcloud = {
@@ -49565,7 +49565,7 @@ yannisgr = {
   sha512.run = "509e69acdef68eadc65fef6980e9166c6327e8927fb9cdf6a7a33786a8668ac9b900954a4bb661f223967b26dd240d5ebd91683658b324be284e46876c39061d";
   sha512.doc = "40ecdfe71670357e8ec84fd262015b5b5d0b8e486ab80c05d0863a335649501e9548d785cc2b2374f989b820dadd9a074cc229674dd1ae9a6252d4a0ebeb4191";
   hasRunfiles = true;
-  license = [ "gpl2" ];
+  license = [ "gpl2Only" ];
 };
 yathesis = {
   revision = 70512;
@@ -49815,7 +49815,7 @@ zbmath-review-template = {
   sha512.run = "c9685b151679e7516e146f3d97f4242c7cdf084f84a7ac857a8aa27031c60950d0da07d66b7b57d7bdec384d3501c30b339231654cf845bbed2945b0ac069368";
   sha512.doc = "470ee6c9895effd3c6bcac5a9faaa3862380bb137044411dd0013f4f465dc923dc1de507f2d1d087fb4b4178cb2f43f435e71b090d55744a8be6e59f8cc010fa";
   hasRunfiles = true;
-  license = [ "gpl3" "cc-by-sa-40" ];
+  license = [ "gpl3Only" "cc-by-sa-40" ];
   version = "2.1";
 };
 zebra-goodies = {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 78a12dd53c6a4..caad4c568c21a 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8324,7 +8324,9 @@ with pkgs;
 
   gau = callPackage ../tools/security/gau { };
 
-  gauge = callPackage ../development/tools/gauge { };
+  gauge-unwrapped = callPackage ../development/tools/gauge { };
+  gauge = callPackage ../development/tools/gauge/wrapper.nix { };
+  gaugePlugins = recurseIntoAttrs (callPackage ../development/tools/gauge/plugins {});
 
   gawd = python3Packages.toPythonApplication python3Packages.gawd;
 
diff --git a/pkgs/top-level/config.nix b/pkgs/top-level/config.nix
index 5c538abcf5cef..67a9a60dbaeaa 100644
--- a/pkgs/top-level/config.nix
+++ b/pkgs/top-level/config.nix
@@ -1,5 +1,11 @@
 # This file defines the structure of the `config` nixpkgs option.
 
+# This file is tested in `pkgs/test/config.nix`.
+# Run tests with:
+#
+#     nix-build -A tests.config
+#
+
 { config, lib, ... }:
 
 let
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 38ee1ffcff382..5d242bc0114fd 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -8534,6 +8534,8 @@ self: super: with self; {
 
   nampa = callPackage ../development/python-modules/nampa { };
 
+  nanobind = callPackage ../development/python-modules/nanobind { };
+
   nanoid = callPackage ../development/python-modules/nanoid { };
 
   nanoleaf = callPackage ../development/python-modules/nanoleaf { };