about summary refs log tree commit diff
path: root/pkgs/by-name
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name')
-rw-r--r--pkgs/by-name/_2/_2ship2harkinian/package.nix1
-rw-r--r--pkgs/by-name/af/affine/package.nix6
-rw-r--r--pkgs/by-name/ag/agate/package.nix70
-rw-r--r--pkgs/by-name/al/alephone-eternal/package.nix2
-rw-r--r--pkgs/by-name/al/alephone-evil/package.nix2
-rw-r--r--pkgs/by-name/al/alephone-red/package.nix2
-rw-r--r--pkgs/by-name/al/alpaca/package.nix16
-rw-r--r--pkgs/by-name/am/am2rlauncher/package.nix1
-rw-r--r--pkgs/by-name/an/ananicy-cpp/package.nix63
-rw-r--r--pkgs/by-name/an/ananicy-rules-cachyos/package.nix6
-rw-r--r--pkgs/by-name/an/any-nix-shell/package.nix4
-rw-r--r--pkgs/by-name/ap/apvlv/package.nix1
-rw-r--r--pkgs/by-name/ap/apx/package.nix60
-rw-r--r--pkgs/by-name/ar/arc-browser/package.nix4
-rw-r--r--pkgs/by-name/ar/arcan/package.nix2
-rw-r--r--pkgs/by-name/ar/arduino-cli/package.nix113
-rw-r--r--pkgs/by-name/ar/argc/package.nix15
-rw-r--r--pkgs/by-name/as/asm-lsp/package.nix6
-rw-r--r--pkgs/by-name/at/atf/package.nix1
-rw-r--r--pkgs/by-name/au/audiness/package.nix3
-rw-r--r--pkgs/by-name/au/authentik/ldap.nix2
-rw-r--r--pkgs/by-name/au/authentik/package.nix53
-rw-r--r--pkgs/by-name/au/authentik/radius.nix2
-rw-r--r--pkgs/by-name/av/av1an-unwrapped/package.nix58
-rw-r--r--pkgs/by-name/av/av1an/package.nix77
-rw-r--r--pkgs/by-name/ay/ayatana-indicator-datetime/package.nix1
-rw-r--r--pkgs/by-name/ba/bankstown-lv2/package.nix2
-rw-r--r--pkgs/by-name/ba/basedpyright/package.nix8
-rw-r--r--pkgs/by-name/ba/batmon/package.nix2
-rw-r--r--pkgs/by-name/bi/bicep/deps.nix551
-rw-r--r--pkgs/by-name/bi/bicep/package.nix4
-rw-r--r--pkgs/by-name/bi/bitmagnet/package.nix4
-rw-r--r--pkgs/by-name/bi/bitwarden-cli/package.nix4
-rw-r--r--pkgs/by-name/bl/blanket/package.nix1
-rw-r--r--pkgs/by-name/bl/bluez/package.nix15
-rw-r--r--pkgs/by-name/bo/boilr/package.nix4
-rw-r--r--pkgs/by-name/bo/bonsai/package.nix4
-rw-r--r--pkgs/by-name/bo/boogie/package.nix4
-rw-r--r--pkgs/by-name/br/bruno/package.nix13
-rw-r--r--pkgs/by-name/br/bruno/scroll-width-fix.patch37
-rw-r--r--pkgs/by-name/bs/bsc/package.nix36
-rw-r--r--pkgs/by-name/bt/bt-migrate/package.nix1
-rw-r--r--pkgs/by-name/bu/budgie-analogue-clock-applet/package.nix4
-rw-r--r--pkgs/by-name/ca/caido/package.nix102
-rw-r--r--pkgs/by-name/ca/calibre-web/package.nix1
-rw-r--r--pkgs/by-name/ca/cameractrls/package.nix133
-rw-r--r--pkgs/by-name/ca/cargo-profiler/package.nix4
-rw-r--r--pkgs/by-name/ca/cargo-shear/package.nix6
-rw-r--r--pkgs/by-name/ca/cargo-xwin/package.nix6
-rw-r--r--pkgs/by-name/cc/ccache/package.nix4
-rw-r--r--pkgs/by-name/cc/cctools/0001-Fix-build-issues-with-misc-redo_prebinding.c.patch53
-rw-r--r--pkgs/by-name/cc/cctools/0002-Rely-on-libcd_is_blob_a_linker_signature.patch25
-rw-r--r--pkgs/by-name/cc/cctools/0003-Fix-utimensat-compatability-with-the-10.12-SDK.patch50
-rw-r--r--pkgs/by-name/cc/cctools/0004-Use-nixpkgs-clang-with-the-assembler-driver.patch57
-rw-r--r--pkgs/by-name/cc/cctools/0005-Find-ld64-in-the-store.patch28
-rw-r--r--pkgs/by-name/cc/cctools/0006-Support-target-prefixes-in-ranlib-detection.patch30
-rw-r--r--pkgs/by-name/cc/cctools/meson.build657
-rw-r--r--pkgs/by-name/cc/cctools/meson.options6
-rw-r--r--pkgs/by-name/cc/cctools/package.nix175
-rw-r--r--pkgs/by-name/ce/celeste64/package.nix1
-rw-r--r--pkgs/by-name/ce/cemu/package.nix5
-rw-r--r--pkgs/by-name/ch/charmcraft/package.nix49
-rw-r--r--pkgs/by-name/ci/cinnamon-common/libdir.patch25
-rw-r--r--pkgs/by-name/ci/cinnamon-common/package.nix205
-rw-r--r--pkgs/by-name/ci/cinnamon-common/use-sane-install-dir.patch33
-rw-r--r--pkgs/by-name/ci/cinnamon-control-center/package.nix105
-rw-r--r--pkgs/by-name/ci/cinnamon-desktop/package.nix80
-rw-r--r--pkgs/by-name/ci/cinnamon-gsettings-overrides/package.nix73
-rw-r--r--pkgs/by-name/ci/cinnamon-menus/package.nix42
-rw-r--r--pkgs/by-name/ci/cinnamon-screensaver/package.nix103
-rw-r--r--pkgs/by-name/ci/cinnamon-session/0001-Use-dbus_glib-instead-of-elogind.patch38
-rw-r--r--pkgs/by-name/ci/cinnamon-session/package.nix111
-rw-r--r--pkgs/by-name/ci/cinnamon-settings-daemon/csd-backlight-helper-fix.patch49
-rw-r--r--pkgs/by-name/ci/cinnamon-settings-daemon/package.nix106
-rw-r--r--pkgs/by-name/ci/cinnamon-translations/package.nix33
-rw-r--r--pkgs/by-name/cj/cjs/package.nix83
-rw-r--r--pkgs/by-name/cl/clang-tidy-sarif/package.nix30
-rw-r--r--pkgs/by-name/cl/clevis/0000-tang-timeout.patch13
-rw-r--r--pkgs/by-name/cl/clevis/package.nix130
-rw-r--r--pkgs/by-name/cl/clojure-lsp/package.nix2
-rw-r--r--pkgs/by-name/cm/cmake-lint/package.nix17
-rwxr-xr-xpkgs/by-name/cm/cmake/setup-hook.sh2
-rw-r--r--pkgs/by-name/co/codeium/package.nix10
-rw-r--r--pkgs/by-name/co/commitmsgfmt/package.nix2
-rw-r--r--pkgs/by-name/co/connectome-workbench/package.nix65
-rw-r--r--pkgs/by-name/co/convco/package.nix6
-rw-r--r--pkgs/by-name/co/cosmic-edit/package.nix1
-rw-r--r--pkgs/by-name/co/cosmic-store/package.nix2
-rw-r--r--pkgs/by-name/co/cosmic-term/package.nix1
-rw-r--r--pkgs/by-name/co/coulr/package.nix71
-rw-r--r--pkgs/by-name/cr/cryptpad/0001-env.js-fix-httpSafePort-handling.patch56
-rw-r--r--pkgs/by-name/cr/cryptpad/package.nix135
-rw-r--r--pkgs/by-name/cu/cue/tests/001-all-good.nix3
-rw-r--r--pkgs/by-name/cu/cups-printers/package.nix3
-rw-r--r--pkgs/by-name/cy/cyme/package.nix6
-rw-r--r--pkgs/by-name/de/deltachat-repl/package.nix3
-rw-r--r--pkgs/by-name/de/deltachat-rpc-server/package.nix3
-rw-r--r--pkgs/by-name/de/devenv/package.nix6
-rw-r--r--pkgs/by-name/di/digikam/disable-tests-download.patch15
-rw-r--r--pkgs/by-name/di/digikam/package.nix273
-rw-r--r--pkgs/by-name/di/dim/Cargo.lock33
-rw-r--r--pkgs/by-name/di/dim/bump-nightfall.patch48
-rw-r--r--pkgs/by-name/di/dim/package.nix14
-rw-r--r--pkgs/by-name/di/dita-ot/package.nix48
-rw-r--r--pkgs/by-name/do/docker-credential-gcr/package.nix4
-rw-r--r--pkgs/by-name/do/downonspot/package.nix6
-rw-r--r--pkgs/by-name/dp/dpp/package.nix1
-rw-r--r--pkgs/by-name/dr/druid/package.nix82
-rw-r--r--pkgs/by-name/du/duckstation/shaderc-patched.nix20
-rw-r--r--pkgs/by-name/du/dumbpipe/package.nix6
-rw-r--r--pkgs/by-name/du/dust/package.nix6
-rw-r--r--pkgs/by-name/ed/ed/package.nix60
-rw-r--r--pkgs/by-name/ed/edido/package.nix3
-rw-r--r--pkgs/by-name/ei/eintopf/frontend.nix4
-rw-r--r--pkgs/by-name/ek/eksctl/package.nix4
-rw-r--r--pkgs/by-name/el/elf2nucleus/package.nix2
-rw-r--r--pkgs/by-name/el/elvish/tests/expect-version.nix3
-rw-r--r--pkgs/by-name/em/emulationstation/package.nix71
-rw-r--r--pkgs/by-name/em/emulationstation/sources.nix35
-rw-r--r--pkgs/by-name/et/ethercat/package.nix1
-rw-r--r--pkgs/by-name/ex/exe2hex/package.nix1
-rw-r--r--pkgs/by-name/ey/eyewitness/package.nix1
-rw-r--r--pkgs/by-name/ez/eza/package.nix6
-rw-r--r--pkgs/by-name/fa/fanbox-dl/package.nix4
-rw-r--r--pkgs/by-name/fa/fast-float/package.nix4
-rw-r--r--pkgs/by-name/fa/fastfetch/package.nix4
-rw-r--r--pkgs/by-name/fe/fedimint/package.nix6
-rw-r--r--pkgs/by-name/fi/fichub-cli/package.nix62
-rw-r--r--pkgs/by-name/fi/fira-math/package.nix2
-rw-r--r--pkgs/by-name/fi/firefly-iii/package.nix8
-rw-r--r--pkgs/by-name/fn/fnott/package.nix5
-rw-r--r--pkgs/by-name/fo/folder-color-switcher/package.nix6
-rw-r--r--pkgs/by-name/fo/fooyin/package.nix2
-rw-r--r--pkgs/by-name/fo/forgejo/package.nix1
-rw-r--r--pkgs/by-name/fr/frankenphp/package.nix3
-rw-r--r--pkgs/by-name/fr/freecad/package.nix2
-rw-r--r--pkgs/by-name/fw/fwupd/package.nix4
-rw-r--r--pkgs/by-name/fz/fzf-make/package.nix6
-rw-r--r--pkgs/by-name/fz/fzf/package.nix4
-rw-r--r--pkgs/by-name/ga/gapless/package.nix60
-rw-r--r--pkgs/by-name/ge/gearlever/package.nix117
-rw-r--r--pkgs/by-name/gf/gfal2/package.nix1
-rw-r--r--pkgs/by-name/gh/ghdl/test-simple.nix2
-rw-r--r--pkgs/by-name/gh/ghex/package.nix1
-rw-r--r--pkgs/by-name/gh/ghi/gemset.nix199
-rw-r--r--pkgs/by-name/gh/ghi/package.nix45
-rw-r--r--pkgs/by-name/gi/git-get/package.nix2
-rw-r--r--pkgs/by-name/gi/git-igitt/package.nix46
-rw-r--r--pkgs/by-name/gi/git-instafix/package.nix1
-rw-r--r--pkgs/by-name/gi/git-spice/package.nix44
-rw-r--r--pkgs/by-name/go/goatcounter/package.nix23
-rw-r--r--pkgs/by-name/go/goldwarden/package.nix1
-rw-r--r--pkgs/by-name/go/google-chrome/package.nix8
-rw-r--r--pkgs/by-name/go/goss/package.nix6
-rw-r--r--pkgs/by-name/go/gotenberg/package.nix6
-rw-r--r--pkgs/by-name/go/gotree/package.nix28
-rw-r--r--pkgs/by-name/gp/gprename/package.nix3
-rw-r--r--pkgs/by-name/gp/gpustat/package.nix2
-rw-r--r--pkgs/by-name/gr/grafterm/package.nix28
-rw-r--r--pkgs/by-name/gr/grpc-health-check/package.nix32
-rw-r--r--pkgs/by-name/ha/halo/package.nix4
-rw-r--r--pkgs/by-name/ha/handheld-daemon/package.nix1
-rw-r--r--pkgs/by-name/ha/haunt/tests/001-test-version.nix3
-rw-r--r--pkgs/by-name/ha/havn/package.nix6
-rw-r--r--pkgs/by-name/he/hextazy/package.nix13
-rw-r--r--pkgs/by-name/hi/himalaya/package.nix2
-rw-r--r--pkgs/by-name/ho/home-manager/package.nix6
-rw-r--r--pkgs/by-name/ht/htb-toolkit/package.nix2
-rw-r--r--pkgs/by-name/ht/httm/package.nix49
-rw-r--r--pkgs/by-name/hy/hyprlock/package.nix2
-rw-r--r--pkgs/by-name/im/immich-go/package.nix4
-rw-r--r--pkgs/by-name/im/imsprog/package.nix4
-rw-r--r--pkgs/by-name/in/ingress2gateway/package.nix2
-rw-r--r--pkgs/by-name/io/ios-webkit-debug-proxy/package.nix1
-rw-r--r--pkgs/by-name/is/isisdl/package.nix58
-rw-r--r--pkgs/by-name/it/itools/package.nix1
-rw-r--r--pkgs/by-name/ja/jansson/package.nix52
-rw-r--r--pkgs/by-name/jn/jnr-posix/package.nix2
-rw-r--r--pkgs/by-name/ka/kanidm/package.nix3
-rw-r--r--pkgs/by-name/ka/karla/package.nix36
-rw-r--r--pkgs/by-name/kc/kcl/package.nix29
-rw-r--r--pkgs/by-name/kc/kclvm/Cargo.lock1041
-rw-r--r--pkgs/by-name/kc/kclvm/enable_protoc_env.patch57
-rw-r--r--pkgs/by-name/kc/kclvm/package.nix21
-rw-r--r--pkgs/by-name/kc/kclvm_cli/Cargo.lock7
-rw-r--r--pkgs/by-name/kc/kclvm_cli/cargo_lock.patch2
-rw-r--r--pkgs/by-name/kc/kclvm_cli/package.nix20
-rw-r--r--pkgs/by-name/ko/konf/package.nix28
-rw-r--r--pkgs/by-name/kr/krr/package.nix2
-rw-r--r--pkgs/by-name/kr/krun/package.nix70
-rw-r--r--pkgs/by-name/kt/ktfmt/package.nix6
-rw-r--r--pkgs/by-name/la/lager/package.nix1
-rw-r--r--pkgs/by-name/ld/ld64/0004-Use-std-atomics-and-std-mutex.patch181
-rw-r--r--pkgs/by-name/ld/ld64/0005-Support-LTO-in-nixpkgs.patch48
-rw-r--r--pkgs/by-name/ld/ld64/0006-Add-libcd_is_blob_a_linker_signature-implementation.patch113
-rw-r--r--pkgs/by-name/ld/ld64/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch311
-rw-r--r--pkgs/by-name/ld/ld64/0008-Disable-searching-in-standard-library-locations.patch25
-rw-r--r--pkgs/by-name/ld/ld64/gen_compile_stubs.py8
-rw-r--r--pkgs/by-name/ld/ld64/meson.build249
-rw-r--r--pkgs/by-name/ld/ld64/meson.options6
-rw-r--r--pkgs/by-name/ld/ld64/package.nix202
-rw-r--r--pkgs/by-name/ld/ldc/package.nix7
-rw-r--r--pkgs/by-name/le/lemminx/package.nix3
-rw-r--r--pkgs/by-name/li/libcamera/package.nix4
-rw-r--r--pkgs/by-name/li/libcircle/package.nix1
-rw-r--r--pkgs/by-name/li/libedit/package.nix4
-rw-r--r--pkgs/by-name/li/libetonyek/package.nix2
-rw-r--r--pkgs/by-name/li/libgnome-keyring/package.nix3
-rw-r--r--pkgs/by-name/li/libisoburn/package.nix2
-rw-r--r--pkgs/by-name/li/libitl/package.nix1
-rw-r--r--pkgs/by-name/li/librime-octagram/package.nix36
-rw-r--r--pkgs/by-name/li/libtapi/0001-Check-for-no_exported_symbols-linker-support.patch37
-rw-r--r--pkgs/by-name/li/libtapi/0002-Pass-fileType-to-writeToStream.patch25
-rw-r--r--pkgs/by-name/li/libtapi/0003-Match-designator-order-with-declaration-order.patch28
-rw-r--r--pkgs/by-name/li/libtapi/package.nix184
-rw-r--r--pkgs/by-name/li/libusbmuxd/package.nix43
-rw-r--r--pkgs/by-name/li/live-server/package.nix45
-rw-r--r--pkgs/by-name/li/live555/package.nix4
-rw-r--r--pkgs/by-name/ll/llama-cpp/package.nix2
-rw-r--r--pkgs/by-name/lm/lmstudio/darwin.nix1
-rw-r--r--pkgs/by-name/lm/lmstudio/linux.nix3
-rw-r--r--pkgs/by-name/lo/lollypop/package.nix120
-rw-r--r--pkgs/by-name/lx/lxd-ui/package.nix6
-rw-r--r--pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix1
-rw-r--r--pkgs/by-name/ma/major-mono-display/package.nix39
-rw-r--r--pkgs/by-name/ma/mangal/package.nix47
-rw-r--r--pkgs/by-name/ma/mariadb-connector-java/package.nix6
-rw-r--r--pkgs/by-name/ma/markdown-oxide/Cargo.lock25
-rw-r--r--pkgs/by-name/ma/markdown-oxide/package.nix22
-rw-r--r--pkgs/by-name/ma/markuplinkchecker/package.nix55
-rw-r--r--pkgs/by-name/ma/marwaita-red/package.nix6
-rw-r--r--pkgs/by-name/ma/matrix-gtk-theme/package.nix123
-rw-r--r--pkgs/by-name/ma/maturin/package.nix6
-rw-r--r--pkgs/by-name/ma/mautrix-meta/package.nix1
-rw-r--r--pkgs/by-name/md/md-tui/package.nix6
-rw-r--r--pkgs/by-name/md/mdbook-alerts/package.nix37
-rw-r--r--pkgs/by-name/me/mealie/package.nix13
-rw-r--r--pkgs/by-name/me/media-downloader/package.nix1
-rw-r--r--pkgs/by-name/me/melonDS/package.nix60
-rw-r--r--pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch17
-rw-r--r--pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch190
-rw-r--r--pkgs/by-name/me/meson/package.nix21
-rw-r--r--pkgs/by-name/me/meson/setup-hook.sh5
-rw-r--r--pkgs/by-name/mf/mfcj880dwlpr/package.nix2
-rw-r--r--pkgs/by-name/mi/minijinja/package.nix6
-rw-r--r--pkgs/by-name/mi/mint-l-icons/package.nix6
-rw-r--r--pkgs/by-name/mi/misconfig-mapper/package.nix4
-rw-r--r--pkgs/by-name/mo/mo/package.nix1
-rw-r--r--pkgs/by-name/mo/modrinth-app/package.nix4
-rw-r--r--pkgs/by-name/mo/mousai/package.nix1
-rw-r--r--pkgs/by-name/mo/mouse_m908/package.nix24
-rw-r--r--pkgs/by-name/mp/mpvc/package.nix51
-rw-r--r--pkgs/by-name/mr/mricron/package.nix89
-rw-r--r--pkgs/by-name/ms/msolve/package.nix4
-rw-r--r--pkgs/by-name/mu/muffin/fix-paths.patch13
-rw-r--r--pkgs/by-name/mu/muffin/package.nix123
-rw-r--r--pkgs/by-name/my/mysql84/package.nix4
-rw-r--r--pkgs/by-name/na/namespace-cli/package.nix6
-rw-r--r--pkgs/by-name/na/narsil/package.nix53
-rw-r--r--pkgs/by-name/nc/ncdc/package.nix4
-rw-r--r--pkgs/by-name/ne/nemo-emblems/package.nix41
-rw-r--r--pkgs/by-name/ne/nemo-fileroller/package.nix54
-rw-r--r--pkgs/by-name/ne/nemo-python/load-extensions-from-env.patch27
-rw-r--r--pkgs/by-name/ne/nemo-python/package.nix66
-rw-r--r--pkgs/by-name/ne/nemo-python/python-path.patch13
-rw-r--r--pkgs/by-name/ne/nemo-with-extensions/package.nix55
-rw-r--r--pkgs/by-name/ne/nemo/load-extensions-from-env.patch40
-rw-r--r--pkgs/by-name/ne/nemo/package.nix101
-rw-r--r--pkgs/by-name/ne/neovide/package.nix6
-rw-r--r--pkgs/by-name/ne/neovim-unwrapped/package.nix12
-rw-r--r--pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix20
-rw-r--r--pkgs/by-name/ne/neverest/package.nix2
-rw-r--r--pkgs/by-name/ne/nextpnr/package.nix4
-rw-r--r--pkgs/by-name/ne/nezha-agent/package.nix6
-rw-r--r--pkgs/by-name/ni/nix-required-mounts/package.nix4
-rw-r--r--pkgs/by-name/ni/nix-web/package.nix1
-rw-r--r--pkgs/by-name/ni/nixfmt-rfc-style/package.nix1
-rw-r--r--pkgs/by-name/nm/nmap/package.nix72
-rw-r--r--pkgs/by-name/nm/nmapsi4/package.nix68
-rw-r--r--pkgs/by-name/no/nomnatong/package.nix4
-rw-r--r--pkgs/by-name/np/npkill/package.nix32
-rw-r--r--pkgs/by-name/nr/nrr/package.nix6
-rw-r--r--pkgs/by-name/nu/nuclei-templates/package.nix4
-rw-r--r--pkgs/by-name/nu/nuv/package.nix1
-rw-r--r--pkgs/by-name/nv/nvidia-container-toolkit/nvidia-docker.nix2
-rw-r--r--pkgs/by-name/nw/nwg-panel/package.nix4
-rw-r--r--pkgs/by-name/oc/ocis-bin/package.nix2
-rw-r--r--pkgs/by-name/oc/octosql/package.nix32
-rw-r--r--pkgs/by-name/of/offat/package.nix4
-rw-r--r--pkgs/by-name/ol/ollama/package.nix345
-rw-r--r--pkgs/by-name/on/onlyoffice-bin/package.nix210
-rw-r--r--pkgs/by-name/on/onlyoffice-bin_latest/package.nix202
-rw-r--r--pkgs/by-name/on/onlyoffice-bin_latest/update.sh5
-rw-r--r--pkgs/by-name/oo/oo7/package.nix1
-rw-r--r--pkgs/by-name/op/openapi-tui/package.nix1
-rw-r--r--pkgs/by-name/op/openasar/package.nix1
-rw-r--r--pkgs/by-name/op/opencomposite/package.nix56
-rw-r--r--pkgs/by-name/op/opengfw/package.nix37
-rw-r--r--pkgs/by-name/op/openh264/package.nix5
-rw-r--r--pkgs/by-name/op/openjph/package.nix4
-rw-r--r--pkgs/by-name/op/openpam/package.nix31
-rw-r--r--pkgs/by-name/op/openscad-unstable/package.nix15
-rw-r--r--pkgs/by-name/op/openscad-unstable/thrust-cmake.patch13
-rw-r--r--pkgs/by-name/op/opentelemetry-cpp/package.nix4
-rw-r--r--pkgs/by-name/op/opshin/package.nix16
-rw-r--r--pkgs/by-name/or/orca/package.nix4
-rw-r--r--pkgs/by-name/os/oswald/package.nix36
-rw-r--r--pkgs/by-name/pa/pahole/package.nix16
-rw-r--r--pkgs/by-name/pa/pahole/threading-reproducibility.patch27
-rw-r--r--pkgs/by-name/pa/paralus-cli/package.nix2
-rw-r--r--pkgs/by-name/pa/parinfer-rust-emacs/package.nix1
-rw-r--r--pkgs/by-name/pa/parsedmarc/package.nix3
-rw-r--r--pkgs/by-name/pc/pcsx2-bin/package.nix40
-rwxr-xr-xpkgs/by-name/pc/pcsx2-bin/update.sh8
-rw-r--r--pkgs/by-name/pd/pdf2odt/package.nix4
-rw-r--r--pkgs/by-name/pd/pdf4qt/package.nix1
-rw-r--r--pkgs/by-name/pe/perl-debug-adapter/package.nix1
-rw-r--r--pkgs/by-name/pe/petsc/package.nix4
-rw-r--r--pkgs/by-name/pg/pg-gvm/package.nix60
-rw-r--r--pkgs/by-name/pg/pghero/package.nix1
-rw-r--r--pkgs/by-name/ph/phpdocumentor/package.nix4
-rw-r--r--pkgs/by-name/ph/phpunit/package.nix4
-rw-r--r--pkgs/by-name/ph/physac/package.nix2
-rw-r--r--pkgs/by-name/pi/picocrypt/package.nix1
-rw-r--r--pkgs/by-name/pi/pix/package.nix4
-rw-r--r--pkgs/by-name/pl/plasma-panel-colorizer/package.nix36
-rw-r--r--pkgs/by-name/pl/plasma-plugin-blurredwallpaper/package.nix39
-rw-r--r--pkgs/by-name/pr/pretix/package.nix1
-rw-r--r--pkgs/by-name/pr/prettier-plugin-go-template/package.nix2
-rw-r--r--pkgs/by-name/pr/previewqt/package.nix64
-rw-r--r--pkgs/by-name/pr/prismlauncher/package.nix4
-rw-r--r--pkgs/by-name/pr/prometheus-deluge-exporter/package.nix1
-rw-r--r--pkgs/by-name/pr/promql-cli/package.nix32
-rw-r--r--pkgs/by-name/pr/protoc-gen-js/package.nix4
-rw-r--r--pkgs/by-name/pr/proton-pass/package.nix4
-rw-r--r--pkgs/by-name/pr/protonmail-desktop/package.nix83
-rwxr-xr-xpkgs/by-name/pr/protonmail-desktop/update.sh30
-rw-r--r--pkgs/by-name/pr/prowler/package.nix10
-rw-r--r--pkgs/by-name/pr/prox/package.nix2
-rw-r--r--pkgs/by-name/pu/pupdate/package.nix9
-rw-r--r--pkgs/by-name/pv/pv/package.nix23
-rw-r--r--pkgs/by-name/pw/pw3270/package.nix2
-rw-r--r--pkgs/by-name/py/pyright/package.nix8
-rw-r--r--pkgs/by-name/qr/qrcode/package.nix6
-rw-r--r--pkgs/by-name/qr/qrtool/package.nix6
-rw-r--r--pkgs/by-name/qt/qtractor/package.nix2
-rw-r--r--pkgs/by-name/ra/rabbit/package.nix10
-rw-r--r--pkgs/by-name/ra/rasm/package.nix6
-rw-r--r--pkgs/by-name/ra/ratchet/tests.nix1
-rw-r--r--pkgs/by-name/ra/rav1e/package.nix2
-rw-r--r--pkgs/by-name/re/realvnc-vnc-viewer/darwin.nix3
-rw-r--r--pkgs/by-name/re/realvnc-vnc-viewer/linux.nix3
-rw-r--r--pkgs/by-name/re/release-plz/package.nix6
-rw-r--r--pkgs/by-name/re/remind/package.nix58
-rw-r--r--pkgs/by-name/re/remnote/package.nix4
-rw-r--r--pkgs/by-name/re/renovate/package.nix6
-rw-r--r--pkgs/by-name/re/resources/package.nix11
-rw-r--r--pkgs/by-name/re/resticprofile/package.nix91
-rw-r--r--pkgs/by-name/ri/ricochet-refresh/package.nix1
-rw-r--r--pkgs/by-name/ri/ride/package.nix4
-rw-r--r--pkgs/by-name/rm/rmg/package.nix1
-rw-r--r--pkgs/by-name/rm/rmpc/Cargo.lock.patch28
-rw-r--r--pkgs/by-name/rm/rmpc/package.nix57
-rw-r--r--pkgs/by-name/rn/rnote/Cargo.lock4902
-rw-r--r--pkgs/by-name/rn/rnote/package.nix99
-rw-r--r--pkgs/by-name/ro/rockcraft/package.nix52
-rw-r--r--pkgs/by-name/ro/roddhjav-apparmor-rules/package.nix6
-rw-r--r--pkgs/by-name/ro/route-graph/package.nix2
-rw-r--r--pkgs/by-name/rs/rs-tftpd/package.nix8
-rw-r--r--pkgs/by-name/rs/rspamd-trainer/package.nix1
-rw-r--r--pkgs/by-name/ry/ryujinx/deps.nix412
-rw-r--r--pkgs/by-name/ry/ryujinx/package.nix6
-rw-r--r--pkgs/by-name/sa/salmon/package.nix2
-rw-r--r--pkgs/by-name/sa/sanjuuni/package.nix1
-rw-r--r--pkgs/by-name/sa/sarasa-gothic/package.nix4
-rw-r--r--pkgs/by-name/sc/schemamap/package.nix51
-rw-r--r--pkgs/by-name/sc/scons/env.patch9
-rw-r--r--pkgs/by-name/sc/scons/no-man-pages.patch14
-rw-r--r--pkgs/by-name/sc/scons/package.nix45
-rw-r--r--pkgs/by-name/sc/scons/setup-hook.sh87
-rw-r--r--pkgs/by-name/sc/screego/package.nix78
-rw-r--r--pkgs/by-name/sd/SDL2_image_2_0/package.nix6
-rw-r--r--pkgs/by-name/sd/SDL2_image_2_6/package.nix6
-rw-r--r--pkgs/by-name/se/seabird/package.nix6
-rw-r--r--pkgs/by-name/se/sendme/package.nix6
-rw-r--r--pkgs/by-name/sk/skimpdf/package.nix19
-rw-r--r--pkgs/by-name/sk/skypeexport/package.nix2
-rw-r--r--pkgs/by-name/sk/skypilot/package.nix2
-rw-r--r--pkgs/by-name/sm/smassh/package.nix26
-rw-r--r--pkgs/by-name/sm/smile/package.nix11
-rw-r--r--pkgs/by-name/sn/snapcraft/package.nix62
-rw-r--r--pkgs/by-name/sn/snekim/package.nix2
-rw-r--r--pkgs/by-name/sn/snippetexpandergui/package.nix1
-rw-r--r--pkgs/by-name/so/sonarr/package.nix4
-rw-r--r--pkgs/by-name/sp/spectral-language-server/package.nix2
-rw-r--r--pkgs/by-name/sp/spigot/tests/approximation.nix3
-rw-r--r--pkgs/by-name/sp/sploitscan/package.nix4
-rw-r--r--pkgs/by-name/sq/sqlite-vss/package.nix3
-rw-r--r--pkgs/by-name/sr/srb2kart/package.nix2
-rw-r--r--pkgs/by-name/ss/ssh-openpgp-auth/generic.nix1
-rw-r--r--pkgs/by-name/ss/sshesame/package.nix6
-rw-r--r--pkgs/by-name/st/stackit-cli/package.nix1
-rw-r--r--pkgs/by-name/st/stackql/package.nix6
-rw-r--r--pkgs/by-name/st/stalwart-mail/package.nix1
-rw-r--r--pkgs/by-name/st/stats/package.nix4
-rw-r--r--pkgs/by-name/st/step-cli/package.nix2
-rw-r--r--pkgs/by-name/st/stevenblack-blocklist/package.nix4
-rw-r--r--pkgs/by-name/sw/swaycons/package.nix2
-rw-r--r--pkgs/by-name/sw/swayfx/package.nix1
-rw-r--r--pkgs/by-name/sw/swayws/package.nix2
-rw-r--r--pkgs/by-name/sw/switch-to-configuration-ng/Cargo.lock48
-rw-r--r--pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs19
-rw-r--r--pkgs/by-name/sw/swt/package.nix1
-rw-r--r--pkgs/by-name/sy/symfony-cli/package.nix6
-rw-r--r--pkgs/by-name/sy/symphony/package.nix1
-rw-r--r--pkgs/by-name/ta/tabiew/package.nix6
-rw-r--r--pkgs/by-name/ta/taskwarrior3/package.nix1
-rw-r--r--pkgs/by-name/te/tenv/package.nix4
-rw-r--r--pkgs/by-name/te/termshot/package.nix6
-rw-r--r--pkgs/by-name/te/termsnap/package.nix2
-rw-r--r--pkgs/by-name/te/terragrunt/package.nix6
-rw-r--r--pkgs/by-name/te/tetrio-desktop/package.nix4
-rw-r--r--pkgs/by-name/ti/tic-80/package.nix4
-rw-r--r--pkgs/by-name/ti/tio/package.nix6
-rw-r--r--pkgs/by-name/ti/tippecanoe/package.nix4
-rw-r--r--pkgs/by-name/to/tomb/package.nix87
-rw-r--r--pkgs/by-name/to/toolong/package.nix45
-rw-r--r--pkgs/by-name/tr/tracker-miners/package.nix4
-rw-r--r--pkgs/by-name/tr/tracker-miners/tracker-landlock-nix-store-permission.patch15
-rw-r--r--pkgs/by-name/tr/tracy/package.nix4
-rw-r--r--pkgs/by-name/tr/trak/package.nix2
-rw-r--r--pkgs/by-name/tr/transmission_3/package.nix1
-rw-r--r--pkgs/by-name/tr/trealla/package.nix4
-rw-r--r--pkgs/by-name/tr/treefmt1/package.nix2
-rw-r--r--pkgs/by-name/tr/tribler/package.nix2
-rw-r--r--pkgs/by-name/tr/trickest-cli/package.nix4
-rw-r--r--pkgs/by-name/tr/triton-llvm/package.nix (renamed from pkgs/by-name/op/openai-triton-llvm/package.nix)6
-rw-r--r--pkgs/by-name/tr/trrntzip/package.nix4
-rw-r--r--pkgs/by-name/tt/ttf-indic/package.nix31
-rw-r--r--pkgs/by-name/tu/tuifimanager/package.nix6
-rw-r--r--pkgs/by-name/tu/tuxclocker-nvidia-plugin/package.nix5
-rw-r--r--pkgs/by-name/tu/tuxclocker-plugins/package.nix6
-rw-r--r--pkgs/by-name/tw/tweego/package.nix31
-rw-r--r--pkgs/by-name/tw/twiggy/package.nix2
-rw-r--r--pkgs/by-name/ub/ubuntu-classic/package.nix1
-rw-r--r--pkgs/by-name/ub/ubuntu-sans-mono/package.nix4
-rw-r--r--pkgs/by-name/uc/ucg/tests/simple.nix3
-rw-r--r--pkgs/by-name/un/unison/package.nix2
-rw-r--r--pkgs/by-name/up/updatecli/package.nix6
-rw-r--r--pkgs/by-name/ur/urban-cli/package.nix32
-rw-r--r--pkgs/by-name/us/ustr/package.nix6
-rw-r--r--pkgs/by-name/uw/uwsm/package.nix71
-rw-r--r--pkgs/by-name/ux/uxn/package.nix6
-rw-r--r--pkgs/by-name/va/vatprism/0001-Fix-build-on-JDK-21.patch25
-rw-r--r--pkgs/by-name/va/vatprism/package.nix102
-rw-r--r--pkgs/by-name/va/vaults/package.nix1
-rw-r--r--pkgs/by-name/vc/vcluster/package.nix74
-rw-r--r--pkgs/by-name/vc/vcpkg/package.nix3
-rw-r--r--pkgs/by-name/vi/vidmerger/package.nix2
-rw-r--r--pkgs/by-name/vi/vieb/package.nix2
-rw-r--r--pkgs/by-name/vl/vlc-bin/package.nix8
-rw-r--r--pkgs/by-name/vw/vwsfriend/package.nix63
-rw-r--r--pkgs/by-name/wa/waf/hook.nix4
-rw-r--r--pkgs/by-name/wa/wakatime-cli/package.nix6
-rw-r--r--pkgs/by-name/wa/wapm/package.nix2
-rw-r--r--pkgs/by-name/wa/warp-terminal/versions.json8
-rw-r--r--pkgs/by-name/wa/warpinator/package.nix4
-rw-r--r--pkgs/by-name/wi/windowmaker/dockapps/default.nix2
-rw-r--r--pkgs/by-name/wi/wiremock/package.nix4
-rw-r--r--pkgs/by-name/wl/wldash/package.nix3
-rw-r--r--pkgs/by-name/wr/wrangler/package.nix7
-rw-r--r--pkgs/by-name/wt/wttrbar/package.nix6
-rw-r--r--pkgs/by-name/wv/wvdial/package.nix44
-rw-r--r--pkgs/by-name/wv/wvstreams/package.nix110
-rw-r--r--pkgs/by-name/x5/x509-limbo/package.nix3
-rw-r--r--pkgs/by-name/xa/xapp/package.nix4
-rw-r--r--pkgs/by-name/xe/xed-editor/package.nix4
-rw-r--r--pkgs/by-name/xe/xemu/package.nix4
-rw-r--r--pkgs/by-name/xm/xmldiff/package.nix2
-rw-r--r--pkgs/by-name/xr/xreader/package.nix4
-rw-r--r--pkgs/by-name/xv/xviewer/package.nix8
-rw-r--r--pkgs/by-name/ya/yamlscript/package.nix4
-rw-r--r--pkgs/by-name/ya/yazi-unwrapped/package.nix6
-rwxr-xr-xpkgs/by-name/ya/yazi-unwrapped/update.sh41
-rw-r--r--pkgs/by-name/ye/yeswiki/package.nix1
-rw-r--r--pkgs/by-name/yt/yt-dlp/package.nix86
-rw-r--r--pkgs/by-name/yu/yunfaavatar/package.nix1
-rw-r--r--pkgs/by-name/za/zabbix-agent2-plugin-postgresql/package.nix2
-rw-r--r--pkgs/by-name/ze/zed-editor/Cargo.lock777
-rw-r--r--pkgs/by-name/ze/zed-editor/package.nix10
-rw-r--r--pkgs/by-name/ze/zeronsd/package.nix39
-rw-r--r--pkgs/by-name/zi/zig-shell-completions/package.nix6
-rw-r--r--pkgs/by-name/zu/zug/package.nix1
493 files changed, 17788 insertions, 2844 deletions
diff --git a/pkgs/by-name/_2/_2ship2harkinian/package.nix b/pkgs/by-name/_2/_2ship2harkinian/package.nix
index c0c9ee4a7fa8..38212172c085 100644
--- a/pkgs/by-name/_2/_2ship2harkinian/package.nix
+++ b/pkgs/by-name/_2/_2ship2harkinian/package.nix
@@ -9,7 +9,6 @@
   copyDesktopItems,
   makeDesktopItem,
   python3,
-  boost,
   SDL2,
   pkg-config,
   libpulseaudio,
diff --git a/pkgs/by-name/af/affine/package.nix b/pkgs/by-name/af/affine/package.nix
index ed2615ed7fab..229d32bc1df8 100644
--- a/pkgs/by-name/af/affine/package.nix
+++ b/pkgs/by-name/af/affine/package.nix
@@ -1,12 +1,10 @@
 { lib
-, writeText
 , fetchurl
 , stdenvNoCC
 , copyDesktopItems
 , makeDesktopItem
 , makeWrapper
 , unzip
-, bash
 , electron
 , commandLineArgs ? ""
 }:
@@ -18,10 +16,10 @@ stdenvNoCC.mkDerivation (finalAttrs: let
   };
 in {
   pname = "affine";
-  version = "0.15.6";
+  version = "0.15.7";
   src = fetchurl {
     url = "https://github.com/toeverything/AFFiNE/releases/download/v${finalAttrs.version}/affine-${finalAttrs.version}-stable-linux-x64.zip";
-    hash = "sha256-0XlKmjL9rYUYIMgpJ9knM+RbtLlzB1P5Rk62naTmznw=";
+    hash = "sha256-CbbCYcZ6z5Prj9GwIoneHU3LUsae0S4o40LgunLmQ8s=";
   };
   nativeBuildInputs = [
     copyDesktopItems
diff --git a/pkgs/by-name/ag/agate/package.nix b/pkgs/by-name/ag/agate/package.nix
new file mode 100644
index 000000000000..90e2cf394a50
--- /dev/null
+++ b/pkgs/by-name/ag/agate/package.nix
@@ -0,0 +1,70 @@
+{
+  lib,
+  stdenv,
+  nixosTests,
+  fetchFromGitHub,
+  rustPlatform,
+  libiconv,
+  darwin,
+  openssl,
+  pkg-config,
+  nix-update-script,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "agate";
+  version = "3.3.8";
+
+  src = fetchFromGitHub {
+    owner = "mbrubeck";
+    repo = "agate";
+    rev = "v${version}";
+    hash = "sha256-HK4ZTpRe6dEvBnjZLisSGXJmD5gTPEnf6f/gN0AHUsI=";
+  };
+
+  cargoHash = "sha256-yRCH4TRZ3m7ZG/NAEi1YDisSoad6FxCyojtXVvwbU9w=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.isDarwin [
+      libiconv
+      darwin.apple_sdk.frameworks.Security
+    ];
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    runHook preInstallCheck
+    $out/bin/agate --help
+    $out/bin/agate --version 2>&1 | grep "agate ${version}"
+    runHook postInstallCheck
+  '';
+
+  __darwinAllowLocalNetworking = true;
+
+  passthru = {
+    tests = {
+      inherit (nixosTests) agate;
+    };
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    homepage = "https://github.com/mbrubeck/agate";
+    changelog = "https://github.com/mbrubeck/agate/releases/tag/v${version}";
+    description = "Very simple server for the Gemini hypertext protocol";
+    mainProgram = "agate";
+    longDescription = ''
+      Agate is a server for the Gemini network protocol, built with the Rust
+      programming language. Agate has very few features, and can only serve
+      static files. It uses async I/O, and should be quite efficient even when
+      running on low-end hardware and serving many concurrent requests.
+    '';
+    license = with lib.licenses; [
+      asl20
+      mit
+    ];
+    maintainers = with lib.maintainers; [ jk ];
+  };
+}
diff --git a/pkgs/by-name/al/alephone-eternal/package.nix b/pkgs/by-name/al/alephone-eternal/package.nix
index c21284150618..186352db7ec1 100644
--- a/pkgs/by-name/al/alephone-eternal/package.nix
+++ b/pkgs/by-name/al/alephone-eternal/package.nix
@@ -1,4 +1,4 @@
-{ alephone, fetchurl, unrar }:
+{ alephone, fetchurl }:
 
 alephone.makeWrapper rec {
   pname = "marathon-eternal";
diff --git a/pkgs/by-name/al/alephone-evil/package.nix b/pkgs/by-name/al/alephone-evil/package.nix
index cf12f471a179..d6b59557133b 100644
--- a/pkgs/by-name/al/alephone-evil/package.nix
+++ b/pkgs/by-name/al/alephone-evil/package.nix
@@ -1,4 +1,4 @@
-{ alephone, fetchurl, unrar }:
+{ alephone, fetchurl }:
 
 alephone.makeWrapper rec {
   pname = "marathon-evil";
diff --git a/pkgs/by-name/al/alephone-red/package.nix b/pkgs/by-name/al/alephone-red/package.nix
index f24c9010cd63..a2f6a0279017 100644
--- a/pkgs/by-name/al/alephone-red/package.nix
+++ b/pkgs/by-name/al/alephone-red/package.nix
@@ -1,4 +1,4 @@
-{ alephone, fetchurl, unrar }:
+{ alephone, fetchurl }:
 
 alephone.makeWrapper rec {
   pname = "marathon-red";
diff --git a/pkgs/by-name/al/alpaca/package.nix b/pkgs/by-name/al/alpaca/package.nix
index 5ce7ce0b0261..d19e97eac30a 100644
--- a/pkgs/by-name/al/alpaca/package.nix
+++ b/pkgs/by-name/al/alpaca/package.nix
@@ -2,7 +2,6 @@
   lib,
   python3Packages,
   fetchFromGitHub,
-  fetchpatch,
   appstream,
   meson,
   ninja,
@@ -18,30 +17,26 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "alpaca";
-  version = "0.9.6.1";
+  version = "1.0.1";
   pyproject = false; # Built with meson
 
   src = fetchFromGitHub {
     owner = "Jeffser";
     repo = "Alpaca";
     rev = version;
-    hash = "sha256-EbaEjKqfotJBceaYEyz3LHilK3GnnwEpfMR7Teq96hI=";
+    hash = "sha256-GxnYPnrjaJ47/i+pigw+on2dmbHwQSX+STasvqnAtuQ=";
   };
 
   patches = [
     # Change the way XDG paths are handled so it makes sense outside of flatpak
     ./fix_xdg_path_flatpak.patch
-
-    # Let ollama instance stop gracefully so we don't have model instance left behind
-    (fetchpatch {
-      url = "https://github.com/Jeffser/Alpaca/commit/e81d918675896c1670cf5aa5a55e1b706be5ed51.patch";
-      hash = "sha256-gYYFvaoBI/Qn0g2qgS1cB0B4F08swznrSd5KCb51vh0=";
-    })
   ];
 
   postPatch = ''
     substituteInPlace src/local_instance.py \
       --replace-fail '/app/bin/ollama' 'ollama'
+    substituteInPlace src/window.py \
+      --replace-fail '/app/share' "$out/share"
   '';
 
   nativeBuildInputs = [
@@ -64,6 +59,8 @@ python3Packages.buildPythonApplication rec {
     requests
     pillow
     pypdf
+    pytube
+    html2text
   ];
 
   dontWrapGApps = true;
@@ -85,6 +82,7 @@ python3Packages.buildPythonApplication rec {
         ollama = pkgs.ollama-cuda;
       }
       ```
+      Or using `pkgs.ollama-rocm` for AMD GPUs.
     '';
     homepage = "https://jeffser.com/alpaca";
     license = lib.licenses.gpl3Plus;
diff --git a/pkgs/by-name/am/am2rlauncher/package.nix b/pkgs/by-name/am/am2rlauncher/package.nix
index 0698100d5bdd..2b47d0fbaafd 100644
--- a/pkgs/by-name/am/am2rlauncher/package.nix
+++ b/pkgs/by-name/am/am2rlauncher/package.nix
@@ -11,7 +11,6 @@
 , openssl
 , xdelta
 , file
-, busybox
 , openjdk
 , patchelf
 , fetchFromGitHub
diff --git a/pkgs/by-name/an/ananicy-cpp/package.nix b/pkgs/by-name/an/ananicy-cpp/package.nix
index 1906773921b4..e34bebff8f26 100644
--- a/pkgs/by-name/an/ananicy-cpp/package.nix
+++ b/pkgs/by-name/an/ananicy-cpp/package.nix
@@ -1,27 +1,29 @@
-{ lib
-, clangStdenv
-, fetchFromGitLab
-, fetchpatch
-, cmake
-, pkg-config
-, spdlog
-, nlohmann_json
-, systemd
-, libbpf
-, elfutils
-, bpftools
-, pcre2
-, zlib
+{
+  lib,
+  clangStdenv,
+  fetchFromGitLab,
+  fetchpatch,
+  cmake,
+  pkg-config,
+  spdlog,
+  nlohmann_json,
+  systemd,
+  libbpf,
+  elfutils,
+  bpftools,
+  pcre2,
+  zlib,
+  withBpf ? true,
 }:
 
-clangStdenv.mkDerivation rec {
+clangStdenv.mkDerivation (finalAttrs: {
   pname = "ananicy-cpp";
   version = "1.1.1";
 
   src = fetchFromGitLab {
     owner = "ananicy-cpp";
     repo = "ananicy-cpp";
-    rev = "v${version}";
+    rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
     hash = "sha256-oPinSc00+Z6SxjfTh7DttcXSjsLv1X0NI+O37C8M8GY=";
   };
@@ -41,6 +43,7 @@ clangStdenv.mkDerivation rec {
   nativeBuildInputs = [
     cmake
     pkg-config
+  ] ++ lib.optionals withBpf [
     bpftools
   ];
 
@@ -49,23 +52,29 @@ clangStdenv.mkDerivation rec {
     spdlog
     nlohmann_json
     systemd
+    zlib
+  ] ++ lib.optionals withBpf [
     libbpf
     elfutils
-    zlib
   ];
 
   # BPF A call to built-in function '__stack_chk_fail' is not supported.
-  hardeningDisable = [ "stackprotector" "zerocallusedregs" ];
+  hardeningDisable = [
+    "stackprotector"
+    "zerocallusedregs"
+  ];
 
   cmakeFlags = [
-    "-DUSE_EXTERNAL_JSON=ON"
-    "-DUSE_EXTERNAL_SPDLOG=ON"
-    "-DUSE_EXTERNAL_FMTLIB=ON"
-    "-DUSE_BPF_PROC_IMPL=ON"
-    "-DBPF_BUILD_LIBBPF=OFF"
-    "-DENABLE_SYSTEMD=ON"
-    "-DENABLE_REGEX_SUPPORT=ON"
-    "-DVERSION=${version}"
+    (lib.mapAttrsToList lib.cmakeBool {
+      "USE_EXTERNAL_JSON" = true;
+      "USE_EXTERNAL_SPDLOG" = true;
+      "USE_EXTERNAL_FMTLIB" = true;
+      "USE_BPF_PROC_IMPL" = withBpf;
+      "BPF_BUILD_LIBBPF" = false;
+      "ENABLE_SYSTEMD" = true;
+      "ENABLE_REGEX_SUPPORT" = true;
+    })
+    (lib.cmakeFeature "VERSION" finalAttrs.version)
   ];
 
   postInstall = ''
@@ -85,4 +94,4 @@ clangStdenv.mkDerivation rec {
     ];
     mainProgram = "ananicy-cpp";
   };
-}
+})
diff --git a/pkgs/by-name/an/ananicy-rules-cachyos/package.nix b/pkgs/by-name/an/ananicy-rules-cachyos/package.nix
index 4c24010bfb52..f23a32daa4c3 100644
--- a/pkgs/by-name/an/ananicy-rules-cachyos/package.nix
+++ b/pkgs/by-name/an/ananicy-rules-cachyos/package.nix
@@ -7,13 +7,13 @@
 
 stdenvNoCC.mkDerivation {
   pname = "ananicy-rules-cachyos";
-  version = "0-unstable-2024-07-11";
+  version = "0-unstable-2024-07-23";
 
   src = fetchFromGitHub {
     owner = "CachyOS";
     repo = "ananicy-rules";
-    rev = "d0cfc437783a2ca2bb0f071419df753a98981614";
-    hash = "sha256-FMZok6rW3UbkotPPG1xmdlMPfHB2JBqJZ1oTg8eUux8=";
+    rev = "2453e457d44422164c616b548114ffc5c13bc11b";
+    hash = "sha256-aILzlb/sZy3UuYlnaqYEj93hzuzCx1ZwDjU5iC5Mjpc=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/by-name/an/any-nix-shell/package.nix b/pkgs/by-name/an/any-nix-shell/package.nix
index 16fe36cecf24..3ef59864af47 100644
--- a/pkgs/by-name/an/any-nix-shell/package.nix
+++ b/pkgs/by-name/an/any-nix-shell/package.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "any-nix-shell";
-  version = "2.0.0";
+  version = "2.0.1";
 
   src = fetchFromGitHub {
     owner = "haslersn";
     repo = "any-nix-shell";
     rev = "v${version}";
-    hash = "sha256-n4+aokW5o3EuXKqyc12vRsn5Mlkvdso27AdpahhySYw=";
+    hash = "sha256-t6+LKSGWmkHQhfqw/4Ztz4QgDXQ2RZr9R/mMEEA3jlY=";
   };
 
   strictDeps = true;
diff --git a/pkgs/by-name/ap/apvlv/package.nix b/pkgs/by-name/ap/apvlv/package.nix
index 77ad5a034daa..0e5b60fd4a85 100644
--- a/pkgs/by-name/ap/apvlv/package.nix
+++ b/pkgs/by-name/ap/apvlv/package.nix
@@ -15,7 +15,6 @@
   libxml2,
   libxshmfence,
   man,
-  nix-update-script,
   pcre,
   pkg-config,
   poppler,
diff --git a/pkgs/by-name/ap/apx/package.nix b/pkgs/by-name/ap/apx/package.nix
new file mode 100644
index 000000000000..569559147a53
--- /dev/null
+++ b/pkgs/by-name/ap/apx/package.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  distrobox,
+  podman,
+}:
+
+buildGoModule rec {
+  pname = "apx";
+  version = "2.4.3";
+
+  src = fetchFromGitHub {
+    owner = "Vanilla-OS";
+    repo = "apx";
+    rev = "v${version}";
+    hash = "sha256-zzdg8cIu4+l8f//Rn11NByh6jfVpidZ+5PT+DubzYPU=";
+  };
+
+  vendorHash = "sha256-YHnPLjZWUYoARHF4V1Pm1LYdCJGubPCve0wQ5FpeXUg=";
+
+  # podman needed for apx to not error when building shell completions
+  nativeBuildInputs = [ installShellFiles podman ];
+
+  ldflags = [ "-s" "-w" "-X 'main.Version=v${version}'" ];
+
+  postPatch = ''
+    substituteInPlace config/apx.json \
+      --replace-fail "/usr/share/apx/distrobox/distrobox" "${distrobox}/bin/distrobox" \
+      --replace-fail "/usr/share/apx" "$out/bin/apx"
+    substituteInPlace settings/config.go \
+      --replace-fail "/usr/share/apx/" "$out/share/apx/"
+  '';
+
+  postInstall = ''
+    install -Dm444 config/apx.json -t $out/share/apx/
+    installManPage man/man1/*
+    install -Dm444 README.md -t $out/share/docs/apx
+    install -Dm444 COPYING.md $out/share/licenses/apx/LICENSE
+
+    # Create a temp writable home-dir so apx outputs completions without error
+    export HOME=$(mktemp -d)
+    # apx command now works (for completions)
+    # though complains "Error: no such file or directory"
+    installShellCompletion --cmd apx \
+      --bash <($out/bin/apx completion bash) \
+      --fish <($out/bin/apx completion fish) \
+      --zsh <($out/bin/apx completion zsh)
+  '';
+
+  meta = with lib; {
+    description = "Vanilla OS package manager";
+    homepage = "https://github.com/Vanilla-OS/apx";
+    changelog = "https://github.com/Vanilla-OS/apx/releases/tag/v${version}";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ dit7ya chewblacka ];
+    mainProgram = "apx";
+  };
+}
diff --git a/pkgs/by-name/ar/arc-browser/package.nix b/pkgs/by-name/ar/arc-browser/package.nix
index a3b7f014473d..e9d5e81db5ad 100644
--- a/pkgs/by-name/ar/arc-browser/package.nix
+++ b/pkgs/by-name/ar/arc-browser/package.nix
@@ -9,11 +9,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "arc-browser";
-  version = "1.51.0-51691";
+  version = "1.52.0-51895";
 
   src = fetchurl {
     url = "https://releases.arc.net/release/Arc-${finalAttrs.version}.dmg";
-    hash = "sha256-d1dCx9knh7LqtRWzDsuPW1OD65CuZ9SPkOvyoDT4Q6c=";
+    hash = "sha256-IGUrU6J7xI0ay/ZQaC6xaI+Tl7ateAVOpGxtmR0yGIA=";
   };
 
   nativeBuildInputs = [ undmg ];
diff --git a/pkgs/by-name/ar/arcan/package.nix b/pkgs/by-name/ar/arcan/package.nix
index d3eeec5c5838..d472b9f13228 100644
--- a/pkgs/by-name/ar/arcan/package.nix
+++ b/pkgs/by-name/ar/arcan/package.nix
@@ -41,6 +41,7 @@
   valgrind,
   wayland,
   wayland-protocols,
+  wayland-scanner,
   xcbutil,
   xcbutilwm,
   xz,
@@ -63,6 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
     cmake
     makeWrapper
     pkg-config
+    wayland-scanner
   ] ++ lib.optionals buildManPages [ ruby ];
 
   buildInputs = [
diff --git a/pkgs/by-name/ar/arduino-cli/package.nix b/pkgs/by-name/ar/arduino-cli/package.nix
new file mode 100644
index 000000000000..9d887c5f200b
--- /dev/null
+++ b/pkgs/by-name/ar/arduino-cli/package.nix
@@ -0,0 +1,113 @@
+{
+  lib,
+  stdenv,
+  buildGoModule,
+  fetchFromGitHub,
+  buildFHSEnv,
+  installShellFiles,
+  go-task,
+}:
+
+let
+
+  pkg = buildGoModule rec {
+    pname = "arduino-cli";
+    version = "1.0.3";
+
+    src = fetchFromGitHub {
+      owner = "arduino";
+      repo = pname;
+      rev = "v${version}";
+      hash = "sha256-/2GtWiks/d8sTJ6slX2nQtFpGkqm4PSfgDd0uVG+qN8=";
+    };
+
+    nativeBuildInputs = [ installShellFiles ];
+
+    nativeCheckInputs = [ go-task ];
+
+    subPackages = [ "." ];
+
+    vendorHash = "sha256-OkilZMDTueHfn6T5Af8e+CVersSPDMcAUUB2o1ny6nc=";
+
+    postPatch =
+      let
+        skipTests = [
+          # tries to "go install"
+          "TestDummyMonitor"
+          # try to Get "https://downloads.arduino.cc/libraries/library_index.tar.bz2"
+          "TestDownloadAndChecksums"
+          "TestParseArgs"
+          "TestParseReferenceCores"
+          "TestPlatformSearch"
+          "TestPlatformSearchSorting"
+        ];
+      in
+      ''
+        substituteInPlace Taskfile.yml \
+          --replace-fail "go test" "go test -p $NIX_BUILD_CORES -skip '(${lib.concatStringsSep "|" skipTests})'"
+      '';
+
+    doCheck = stdenv.isLinux;
+
+    checkPhase = ''
+      runHook preCheck
+      task go:test
+      runHook postCheck
+    '';
+
+    ldflags = [
+      "-s"
+      "-w"
+      "-X github.com/arduino/arduino-cli/version.versionString=${version}"
+      "-X github.com/arduino/arduino-cli/version.commit=unknown"
+    ] ++ lib.optionals stdenv.isLinux [ "-extldflags '-static'" ];
+
+    postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
+      export HOME="$(mktemp -d)"
+      installShellCompletion --cmd arduino-cli \
+        --bash <($out/bin/arduino-cli completion bash) \
+        --zsh <($out/bin/arduino-cli completion zsh) \
+        --fish <($out/bin/arduino-cli completion fish)
+      unset HOME
+    '';
+
+    meta = with lib; {
+      inherit (src.meta) homepage;
+      description = "Arduino from the command line";
+      mainProgram = "arduino-cli";
+      changelog = "https://github.com/arduino/arduino-cli/releases/tag/${version}";
+      license = [
+        licenses.gpl3Only
+        licenses.asl20
+      ];
+      maintainers = with maintainers; [
+        ryantm
+        sfrijters
+      ];
+    };
+
+  };
+
+in
+if stdenv.isLinux then
+  # buildFHSEnv is needed because the arduino-cli downloads compiler
+  # toolchains from the internet that have their interpreters pointed at
+  # /lib64/ld-linux-x86-64.so.2
+  buildFHSEnv {
+    inherit (pkg) name meta;
+
+    runScript = "${pkg.outPath}/bin/arduino-cli";
+
+    extraInstallCommands =
+      ''
+        mv $out/bin/$name $out/bin/arduino-cli
+      ''
+      + lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
+        cp -r ${pkg.outPath}/share $out/share
+      '';
+    passthru.pureGoPkg = pkg;
+
+    targetPkgs = pkgs: with pkgs; [ zlib ];
+  }
+else
+  pkg
diff --git a/pkgs/by-name/ar/argc/package.nix b/pkgs/by-name/ar/argc/package.nix
index 8c286ebff9e6..4e98fd790039 100644
--- a/pkgs/by-name/ar/argc/package.nix
+++ b/pkgs/by-name/ar/argc/package.nix
@@ -4,6 +4,7 @@
   pkgsCross,
   rustPlatform,
   stdenv,
+  glibcLocales,
   fetchFromGitHub,
   installShellFiles,
 }:
@@ -13,16 +14,16 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "argc";
-  version = "1.14.0";
+  version = "1.19.0";
 
   src = fetchFromGitHub {
     owner = "sigoden";
     repo = "argc";
     rev = "v${version}";
-    hash = "sha256-Li/K5/SLG6JuoRJDz2DQoj1Oi9LQgZWHNvtZ1HVbj88=";
+    hash = "sha256-I5dx0/aHCGmzgAEBL9gZcG7DFWCkSpndGvv2enQIZGU=";
   };
 
-  cargoHash = "sha256-D1T9FWTvwKtAYoqFlR2OmLRLGWhPJ9D8J7lq/QKcBoM=";
+  cargoHash = "sha256-30BY6ceJj0UeZE30O/LovR+YXSd7jIxFo6ojKFuecFM=";
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optional (!canExecuteHost) buildPackages.argc;
 
@@ -37,6 +38,14 @@ rustPlatform.buildRustPackage rec {
 
   disallowedReferences = lib.optional (!canExecuteHost) buildPackages.argc;
 
+  env =
+    {
+      LANG = "C.UTF-8";
+    }
+    // lib.optionalAttrs (glibcLocales != null) {
+      LOCALE_ARCHIVE = "${glibcLocales}/lib/locale/locale-archive";
+    };
+
   passthru = {
     tests = {
       cross =
diff --git a/pkgs/by-name/as/asm-lsp/package.nix b/pkgs/by-name/as/asm-lsp/package.nix
index a314e16db7fd..24e561e132a7 100644
--- a/pkgs/by-name/as/asm-lsp/package.nix
+++ b/pkgs/by-name/as/asm-lsp/package.nix
@@ -6,7 +6,7 @@
 }:
 let
   pname = "asm-lsp";
-  version = "0.7.1";
+  version = "0.7.3";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage {
     owner = "bergercookie";
     repo = "asm-lsp";
     rev = "v${version}";
-    hash = "sha256-nHLM4cwVo6esrrpr4s+DfJIUWWKSrYwWLOPC84tb68o=";
+    hash = "sha256-LWsawBh1czS7LUX70IXrJHUonIt2XEN8L26iP5cVyRk=";
   };
 
   nativeBuildInputs = [
@@ -26,7 +26,7 @@ rustPlatform.buildRustPackage {
     openssl
   ];
 
-  cargoHash = "sha256-CiHXfy8Xqrg8SAWA4nTHSGZKS0pGcoQem9kLRtTLpRs=";
+  cargoHash = "sha256-pIjOelOQ5X8jl/ZtE8IzXPtcLmANDtWsJaNXno8CT6Y=";
 
   # tests expect ~/.cache/asm-lsp to be writable
   preCheck = ''
diff --git a/pkgs/by-name/at/atf/package.nix b/pkgs/by-name/at/atf/package.nix
index a9810826dc89..e77eb5244d6c 100644
--- a/pkgs/by-name/at/atf/package.nix
+++ b/pkgs/by-name/at/atf/package.nix
@@ -5,7 +5,6 @@
   fetchpatch,
   autoreconfHook,
   kyua,
-  pkg-config,
   gitUpdater,
 }:
 
diff --git a/pkgs/by-name/au/audiness/package.nix b/pkgs/by-name/au/audiness/package.nix
index 8ad9d6397341..d7cff9d14e4b 100644
--- a/pkgs/by-name/au/audiness/package.nix
+++ b/pkgs/by-name/au/audiness/package.nix
@@ -30,8 +30,7 @@ python3.pkgs.buildPythonApplication rec {
       pytenable
       typer
       validators
-    ]
-    ++ typer.optional-dependencies.all;
+    ];
 
   pythonImportsCheck = [ "audiness" ];
 
diff --git a/pkgs/by-name/au/authentik/ldap.nix b/pkgs/by-name/au/authentik/ldap.nix
index d2e40497ce9b..1e1a5abf8754 100644
--- a/pkgs/by-name/au/authentik/ldap.nix
+++ b/pkgs/by-name/au/authentik/ldap.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, authentik }:
+{ buildGoModule, authentik }:
 
 buildGoModule {
   pname = "authentik-ldap-outpost";
diff --git a/pkgs/by-name/au/authentik/package.nix b/pkgs/by-name/au/authentik/package.nix
index 52d17d430ca0..47729e8db2d6 100644
--- a/pkgs/by-name/au/authentik/package.nix
+++ b/pkgs/by-name/au/authentik/package.nix
@@ -2,6 +2,7 @@
 , stdenvNoCC
 , callPackages
 , fetchFromGitHub
+, fetchpatch
 , fetchzip
 , buildNpmPackage
 , buildGoModule
@@ -178,6 +179,40 @@ let
         pyproject = true;
       };
 
+      # Use 3.14.0 until https://github.com/encode/django-rest-framework/issues/9358 is fixed.
+      # Otherwise applying blueprints/default/default-brand.yaml fails with:
+      #   authentik.flows.models.RelatedObjectDoesNotExist: FlowStageBinding has no target.
+      djangorestframework = prev.buildPythonPackage rec {
+        pname = "djangorestframework";
+        version = "3.14.0";
+        format = "setuptools";
+
+        src = fetchFromGitHub {
+          owner = "encode";
+          repo = "django-rest-framework";
+          rev = version;
+          hash = "sha256-Fnj0n3NS3SetOlwSmGkLE979vNJnYE6i6xwVBslpNz4=";
+        };
+
+        propagatedBuildInputs = with final; [
+          django
+          pytz
+        ];
+
+        nativeCheckInputs = with final; [
+          pytest-django
+          pytest7CheckHook
+
+          # optional tests
+          coreapi
+          django-guardian
+          pyyaml
+          uritemplate
+        ];
+
+        pythonImportsCheck = [ "rest_framework" ];
+      };
+
       tenant-schemas-celery = prev.buildPythonPackage rec {
         pname = "tenant-schemas-celery";
         version = "3.0.0";
@@ -225,16 +260,23 @@ let
         inherit version src meta;
         pyproject = true;
 
+        patches = [
+          (fetchpatch {
+            name = "scim-schema-load.patch";
+            url = "https://github.com/goauthentik/authentik/commit/f3640bd3c0ee2f43efcfd506bb71d2b7b6761017.patch";
+            hash = "sha256-4AC7Dc4TM7ok964ztc+XdHvoU/DKyi9yJoz5u1dljEM=";
+          })
+        ];
+
         postPatch = ''
           rm lifecycle/system_migrations/tenant_files.py
           substituteInPlace authentik/root/settings.py \
-            --replace-fail 'Path(__file__).absolute().parent.parent.parent' "\"$out\""
+            --replace-fail 'Path(__file__).absolute().parent.parent.parent' "Path(\"$out\")"
           substituteInPlace authentik/lib/default.yml \
             --replace-fail '/blueprints' "$out/blueprints" \
             --replace-fail './media' '/var/lib/authentik/media'
           substituteInPlace pyproject.toml \
             --replace-fail 'dumb-init = "*"' "" \
-            --replace-fail 'djangorestframework = "3.14.0"' 'djangorestframework = "*"' \
             --replace-fail 'djangorestframework-guardian' 'djangorestframework-guardian2'
           substituteInPlace authentik/stages/email/utils.py \
             --replace-fail 'web/' '${webui}/'
@@ -306,9 +348,9 @@ let
           wsproto
           xmlsec
           zxcvbn
-        ] ++ [
-          codespell
-        ];
+        ]
+        ++ uvicorn.optional-dependencies.standard
+        ++ [ codespell ];
 
         postInstall = ''
           mkdir -p $out/web $out/website
@@ -316,6 +358,7 @@ let
           cp -r blueprints $out/
           cp -r ${webui}/dist ${webui}/authentik $out/web/
           cp -r ${website} $out/website/help
+          ln -s $out/${prev.python.sitePackages}/authentik $out/authentik
           ln -s $out/${prev.python.sitePackages}/lifecycle $out/lifecycle
         '';
       };
diff --git a/pkgs/by-name/au/authentik/radius.nix b/pkgs/by-name/au/authentik/radius.nix
index 957fd3702b77..04efa139efea 100644
--- a/pkgs/by-name/au/authentik/radius.nix
+++ b/pkgs/by-name/au/authentik/radius.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, authentik }:
+{ buildGoModule, authentik }:
 
 buildGoModule {
   pname = "authentik-radius-outpost";
diff --git a/pkgs/by-name/av/av1an-unwrapped/package.nix b/pkgs/by-name/av/av1an-unwrapped/package.nix
new file mode 100644
index 000000000000..df9364d17e1d
--- /dev/null
+++ b/pkgs/by-name/av/av1an-unwrapped/package.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  ffmpeg,
+  nasm,
+  vapoursynth,
+  libaom,
+  rav1e,
+  nix-update-script,
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "av1an-unwrapped";
+  version = "0.4.2";
+
+  src = fetchFromGitHub {
+    owner = "master-of-zen";
+    repo = "av1an";
+    rev = version;
+    hash = "sha256-A4/1UdM8N5CHP44PBNB+ZH2Gcl84rcpUBwQRSnubBGc=";
+  };
+
+  cargoHash = "sha256-ahoiCAUREtXgXLNrWVQ2Gc65bWMo4pIJXP9xjnQAlaI=";
+
+  nativeBuildInputs = [
+    rustPlatform.bindgenHook
+    pkg-config
+    nasm
+  ];
+
+  buildInputs = [
+    ffmpeg
+    vapoursynth
+  ];
+
+  nativeCheckInputs = [
+    libaom
+    rav1e
+  ];
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "Cross-platform command-line encoding framework";
+    longDescription = ''
+      Cross-platform command-line AV1 / VP9 / HEVC / H264 encoding framework with per scene quality encoding.
+      It can increase your encoding speed and improve cpu utilization by running multiple encoder processes in parallel.
+    '';
+    homepage = "https://github.com/master-of-zen/Av1an";
+    changelog = "https://github.com/master-of-zen/Av1an/releases/tag/${src.rev}";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ getchoo ];
+    mainProgram = "av1an";
+  };
+}
diff --git a/pkgs/by-name/av/av1an/package.nix b/pkgs/by-name/av/av1an/package.nix
new file mode 100644
index 000000000000..ec3a4d66ae8b
--- /dev/null
+++ b/pkgs/by-name/av/av1an/package.nix
@@ -0,0 +1,77 @@
+{
+  lib,
+  symlinkJoin,
+  makeBinaryWrapper,
+  testers,
+  av1an-unwrapped,
+  ffmpeg,
+  python3Packages,
+  libaom,
+  svt-av1,
+  rav1e,
+  libvpx,
+  x264,
+  x265,
+  libvmaf,
+  withAom ? true, # AV1 reference encoder
+  withSvtav1 ? false, # AV1 encoder/decoder (focused on speed and correctness)
+  withRav1e ? false, # AV1 encoder (focused on speed and safety)
+  withVpx ? true, # VP8 & VP9 de/encoding
+  withX264 ? true, # H.264/AVC encoder
+  withX265 ? true, # H.265/HEVC encoder
+  withVmaf ? false, # Perceptual video quality assessment algorithm
+}:
+# av1an requires at least one encoder
+assert lib.assertMsg (lib.elem true [
+  withAom
+  withSvtav1
+  withRav1e
+  withVpx
+  withX264
+  withX265
+]) "At least one encoder is required!";
+symlinkJoin {
+  name = "av1an-${av1an-unwrapped.version}";
+
+  paths = [ av1an-unwrapped ];
+
+  nativeBuildInputs = [ makeBinaryWrapper ];
+
+  postBuild =
+    let
+      runtimePrograms =
+        [ (ffmpeg.override { inherit withVmaf; }) ]
+        ++ lib.optional withAom libaom
+        ++ lib.optional withSvtav1 svt-av1
+        ++ lib.optional withRav1e rav1e
+        ++ lib.optional withVpx libvpx
+        ++ lib.optional withX264 x264
+        ++ lib.optional withX265 x265
+        ++ lib.optional withVmaf libvmaf;
+    in
+    ''
+      wrapProgram $out/bin/av1an \
+        --prefix PATH : ${lib.makeBinPath runtimePrograms} \
+        --prefix PYTHONPATH : ${python3Packages.makePythonPath [ python3Packages.vapoursynth ]}
+    '';
+
+  passthru = {
+    # TODO: uncomment when upstream actually bumps CARGO_PKG_VERSION
+    #tests.version = testers.testVersion {
+    #  package = av1an;
+    #  inherit (av1an-unwrapped) version;
+    #};
+  };
+
+  meta = {
+    inherit (av1an-unwrapped.meta)
+      description
+      longDescription
+      homepage
+      changelog
+      license
+      maintainers
+      mainProgram
+      ;
+  };
+}
diff --git a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
index 0f7ce4b43d11..d55574c0629e 100644
--- a/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
+++ b/pkgs/by-name/ay/ayatana-indicator-datetime/package.nix
@@ -85,6 +85,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   nativeCheckInputs = [
     dbus
+    dbus-test-runner
     (python3.withPackages (ps: with ps; [
       python-dbusmock
     ]))
diff --git a/pkgs/by-name/ba/bankstown-lv2/package.nix b/pkgs/by-name/ba/bankstown-lv2/package.nix
index 2ee7b4486e01..7cbe4708ff38 100644
--- a/pkgs/by-name/ba/bankstown-lv2/package.nix
+++ b/pkgs/by-name/ba/bankstown-lv2/package.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-IThXEY+mvT2MCw0PSWU/182xbUafd6dtm6hNjieLlKg=";
   };
 
-  cargoSha256 = "sha256-yRzM4tcYc6mweTpLnnlCeKgP00L2wRgHamtUzK9Kstc=";
+  cargoHash = "sha256-yRzM4tcYc6mweTpLnnlCeKgP00L2wRgHamtUzK9Kstc=";
 
   installPhase = ''
     export LIBDIR=$out/lib
diff --git a/pkgs/by-name/ba/basedpyright/package.nix b/pkgs/by-name/ba/basedpyright/package.nix
index b33c55186674..e244266b32b3 100644
--- a/pkgs/by-name/ba/basedpyright/package.nix
+++ b/pkgs/by-name/ba/basedpyright/package.nix
@@ -11,13 +11,13 @@
 }:
 
 let
-  version = "1.14.0";
+  version = "1.15.0";
 
   src = fetchFromGitHub {
     owner = "detachhead";
     repo = "basedpyright";
     rev = "refs/tags/v${version}";
-    hash = "sha256-WNXIlBdnubV8hbhLXNOpoO5llN0h3G820BkX5cgRU1A=";
+    hash = "sha256-SMF7BXPhoMyUqGY8WK5pIVAy+p/mS+Li+Lz0uLyhFjY=";
   };
 
   patchedPackageJSON = runCommand "package.json" { } ''
@@ -47,7 +47,7 @@ let
     pname = "pyright-internal";
     inherit version src;
     sourceRoot = "${src.name}/packages/pyright-internal";
-    npmDepsHash = "sha256-68+HmPFsiC01c+B0zD/b8FTemzVrc6wnUvcjWj5uWNo=";
+    npmDepsHash = "sha256-GO6ozBtf9P6tKhqtgNJjNdziJ9rYImH0fdYi7KZ1NgI=";
     dontNpmBuild = true;
     # FIXME: Remove this flag when TypeScript 5.5 is released
     npmFlags = [ "--legacy-peer-deps" ];
@@ -94,7 +94,7 @@ buildNpmPackage rec {
   inherit version src;
 
   sourceRoot = "${src.name}/packages/pyright";
-  npmDepsHash = "sha256-SN1x7D+HZHRmlixTzZFcuG929lEEWpd813EtgwHtdRM=";
+  npmDepsHash = "sha256-areRNvJXmnK/yNCwQ//SNVI6eDOqweYxTULvrANLwPo=";
 
   postPatch = ''
     chmod +w ../../
diff --git a/pkgs/by-name/ba/batmon/package.nix b/pkgs/by-name/ba/batmon/package.nix
index e41587b1f57b..5e5cf3f6501f 100644
--- a/pkgs/by-name/ba/batmon/package.nix
+++ b/pkgs/by-name/ba/batmon/package.nix
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-+kjDNQKlaoI5fQ5FqYF6IPCKeE92WKxIhVCKafqfE0o=";
   };
 
-  cargoSha256 = "sha256-DJpWBset6SW7Ahg60+Tu1VpH34LcVOyrEs9suKyTE9g=";
+  cargoHash = "sha256-DJpWBset6SW7Ahg60+Tu1VpH34LcVOyrEs9suKyTE9g=";
 
   meta = with lib; {
     description = "Interactive batteries viewer";
diff --git a/pkgs/by-name/bi/bicep/deps.nix b/pkgs/by-name/bi/bicep/deps.nix
index 17f84614364f..40abcef89aac 100644
--- a/pkgs/by-name/bi/bicep/deps.nix
+++ b/pkgs/by-name/bi/bicep/deps.nix
@@ -2,262 +2,297 @@
 # Please dont edit it manually, your changes might get overwritten!
 
 { fetchNuGet }: [
-  (fetchNuGet { pname = "Azure.Bicep.Internal.RoslynAnalyzers"; version = "0.1.38"; sha256 = "1b13vbl0y851nr7rfhyxc0djihxfr7xv010f9zvvbibyz5wqis7v"; })
-  (fetchNuGet { pname = "Azure.Bicep.Types"; version = "0.5.9"; sha256 = "02v5jzrap5flk5r6jwbw3mzvkxb51kmz4g71j2nnikqgnc4v5dh2"; })
-  (fetchNuGet { pname = "Azure.Bicep.Types.Az"; version = "0.2.692"; sha256 = "1cc48z47wsqyhzszpkmm949qk85b9jq04qnahk4xwg643xkysr1b"; })
-  (fetchNuGet { pname = "Azure.Bicep.Types.K8s"; version = "0.1.626"; sha256 = "1c07igq6jqxkg9iln452fnng2n6ddd0008vb5lgbzdpgp1amz2ji"; })
-  (fetchNuGet { pname = "Azure.Containers.ContainerRegistry"; version = "1.1.1"; sha256 = "0hn6mq1bffcq7d5w4rj4ffdxb3grvymzrpyl1qrbxksqpfbd0bh4"; })
-  (fetchNuGet { pname = "Azure.Core"; version = "1.36.0"; sha256 = "14lsc6zik7s5by3gp86pf77wh58fcqrjy2xhx5p03gmhdn6iz2cn"; })
-  (fetchNuGet { pname = "Azure.Core"; version = "1.38.0"; sha256 = "1rnnip757kdzipfvrz9qc730mpkcq8r36lspwx20p0s9hss8qdc3"; })
-  (fetchNuGet { pname = "Azure.Core"; version = "1.39.0"; sha256 = "0b36vi12pzqls6ad1dwzc8zq8wb07rkg2y52divl8gh2za43x5wp"; })
-  (fetchNuGet { pname = "Azure.Deployments.Core"; version = "1.0.1243.1"; sha256 = "18lh45y9axc494hpxdp8w6d8c92n8m6k4lqjyh4znd2mcmm57wbz"; })
-  (fetchNuGet { pname = "Azure.Deployments.Expression"; version = "1.0.1243.1"; sha256 = "1shk9amp9d3v6lbf2s0j1fxf5xm468fvphhnni95v6w2cpv1fdv8"; })
-  (fetchNuGet { pname = "Azure.Deployments.Internal.GenerateNotice"; version = "0.1.38"; sha256 = "00jzm0c1ch24mh50hqmzs2jxda929zg1j1dgnhs5gbsyk7zjlvrd"; })
-  (fetchNuGet { pname = "Azure.Deployments.Templates"; version = "1.0.1243.1"; sha256 = "11glwwxq9xzi3vrnqx833dry9n6ykspf6gfab0g23d8fygd5d2rf"; })
-  (fetchNuGet { pname = "Azure.Identity"; version = "1.11.3"; sha256 = "1hxjr7np25b3pr2z8vnkq6v4dvmrd7brm8zfz2qggvpqr48yyzxf"; })
-  (fetchNuGet { pname = "Azure.ResourceManager"; version = "1.11.1"; sha256 = "0vfp2rs4r9x3zkvw0za8q6xz3rrb8nywjd1137rpbpy0zx7qnbry"; })
-  (fetchNuGet { pname = "Azure.ResourceManager.Resources"; version = "1.7.3"; sha256 = "1nlaammdg10xyq7g0kig093l6nl1fxn2yk6dbc7xqagfmdnkbx29"; })
-  (fetchNuGet { pname = "coverlet.collector"; version = "6.0.2"; sha256 = "0fll8yssdzi2wv8l26qz2zl0qqrp5nlbdqxjwfh5p356nd991m1d"; })
-  (fetchNuGet { pname = "FluentAssertions"; version = "6.12.0"; sha256 = "04fhn67930zv3i0d8xbrbw5vwz99c83bbvgdwqiir55vw5xlys9c"; })
-  (fetchNuGet { pname = "Humanizer.Core"; version = "2.14.1"; sha256 = "1ai7hgr0qwd7xlqfd92immddyi41j3ag91h3594yzfsgsy6yhyqi"; })
-  (fetchNuGet { pname = "IPNetwork2"; version = "2.6.598"; sha256 = "03nxkiwy1bxgpv5n1lfd06grdyjc10a3k9gyc04rhzysjsswiy0l"; })
-  (fetchNuGet { pname = "JetBrains.Annotations"; version = "2023.3.0"; sha256 = "0vp4mpn6gfckn8grzjm1jxlbqiq2fglm2rk9wq787adw7rxs8k7w"; })
-  (fetchNuGet { pname = "Json.More.Net"; version = "2.0.1.2"; sha256 = "1fzw9d55hvynrwz01gj0xv6ybjm7nsrm2vxqy6d15wr75w3pyyky"; })
-  (fetchNuGet { pname = "JsonPatch.Net"; version = "3.1.0"; sha256 = "1dq9wl2xvkq8yplq1l9qknfj4jb8824kv8szbjcvnjpn44x8xw3f"; })
-  (fetchNuGet { pname = "JsonPath.Net"; version = "1.1.0"; sha256 = "0jn5k2iwr0q8cii63nzxr4m54zrpgd4q9iyx8jghq7xisshqy08m"; })
-  (fetchNuGet { pname = "JsonPointer.Net"; version = "5.0.0"; sha256 = "0rwxhyf2brw5x56pndfyxpi8qawx7jv9xsbbhyr9873jj8g9f9rq"; })
-  (fetchNuGet { pname = "MessagePack"; version = "2.5.108"; sha256 = "0cnaz28lhrdmavnxjkakl9q8p2yv8mricvp1b0wxdfnz8v41gwzs"; })
-  (fetchNuGet { pname = "MessagePack.Annotations"; version = "2.5.108"; sha256 = "0nb1fx8dwl7304kw0bc375bvlhb7pg351l4cl3vqqd7d8zqjwx5v"; })
-  (fetchNuGet { pname = "Microsoft.ApplicationInsights"; version = "2.21.0"; sha256 = "1q034jbqkxb8lddkd0ijp0wp0ymnnf3bg2mjpay027zv7jswnc4x"; })
-  (fetchNuGet { pname = "Microsoft.Automata.SRM"; version = "1.2.2"; sha256 = "0329j527pk3scfap9pjx8vi9n3g49wj1ydp98qb8ymrfm0m72mbi"; })
-  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.1"; sha256 = "0a1ahssqds2ympr7s4xcxv5y8jgxs7ahd6ah6fbgglj4rki1f1vw"; })
-  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "5.0.0"; sha256 = "0cp5jbax2mf6xr3dqiljzlwi05fv6n9a35z337s92jcljiq674kf"; })
-  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "7.0.0"; sha256 = "1waiggh3g1cclc81gmjrqbh128kwfjky3z79ma4bd2ms9pa3gvfm"; })
-  (fetchNuGet { pname = "Microsoft.Build.Tasks.Git"; version = "8.0.0"; sha256 = "0055f69q3hbagqp8gl3nk0vfn4qyqyxsxyy7pd0g7wm3z28byzmx"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.BannedApiAnalyzers"; version = "3.3.4"; sha256 = "1vzrni7n94f17bzc13lrvcxvgspx9s25ap1p005z6i1ikx6wgx30"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.10.0"; sha256 = "0s0v7jmrq85n356xv7zixvwa4z94fszjcr5vll8x4im1a2lp00f9"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.0.1"; sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; })
-  (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.EventRegister"; version = "1.1.28"; sha256 = "1lh0ifj9xndiqspmnj7x9lcz2c7kdhyjgcmk5wz2yn8gimg0xy03"; })
-  (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.TraceEvent"; version = "3.1.3"; sha256 = "1bappkn6vzaaq5yw9fzhds2gz557bhgmxvh38ifw6l39jkar2lii"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "8.0.0"; sha256 = "080kab87qgq2kh0ijry5kfdiq9afyzb8s0k3jqi5zbbi540yq4zl"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "8.0.0"; sha256 = "1jlpa4ggl1gr5fs7fdcw04li3y3iy05w3klr9lrrlc7v8w76kq71"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "8.0.1"; sha256 = "0w5w0h1clv7585qkajy0vqb28blghhcv5j9ygfi13219idhx10r9"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "8.0.0"; sha256 = "1jrmlfzy4h32nzf1nm5q8bhkpx958b0ww9qx1k1zm4pyaf6mqb04"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "8.0.0"; sha256 = "1n3ss26v1lq6b69fxk1vz3kqv9ppxq8ypgdqpd7415xrq66y4bqn"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "8.0.0"; sha256 = "0i7qziz0iqmbk8zzln7kx9vd0lbx1x3va0yi3j1bgkjir13h78ps"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "8.0.0"; sha256 = "1zw0bpp5742jzx03wvqc8csnvsbgdqi0ls9jfc5i2vd3cl8b74pg"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "8.0.0"; sha256 = "1idq65fxwcn882c06yci7nscy9i0rgw6mqjrl7362prvvsd9f15r"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "8.0.0"; sha256 = "05wxjvjbx79ir7vfkri6b28k8zl8fa6bbr0i7gahqrim2ijvkp6v"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "8.0.0"; sha256 = "1igf2bqism22fxv7km5yv028r4rg12a4lki2jh4xg3brjkagiv7q"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "8.0.0"; sha256 = "0nppj34nmq25gnrg0wh1q22y4wdqbih4ax493f226azv8mkp9s1i"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "8.0.0"; sha256 = "1klcqhg3hk55hb6vmjiq2wgqidsl81aldw0li2z98lrwx26msrr6"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.ObjectPool"; version = "5.0.10"; sha256 = "07fk669pjydkcg6bxxv7aj548fzab4yb7ba8370d719lgi9y425l"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "8.0.0"; sha256 = "0p50qn6zhinzyhq9sy5svnmqqwhw2jajs2pbjh9sah504wjvhscz"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "8.0.0"; sha256 = "0aldaz5aapngchgdr7dax9jw5wy7k7hmjgjpfgfv1wfif27jlkqm"; })
-  (fetchNuGet { pname = "Microsoft.Graph.Bicep.Types"; version = "0.1.5-preview"; sha256 = "0k26hh1mbrchmkymhf0in7g7dpgyzn2i1dfffi58w5wi5f25gsph"; })
-  (fetchNuGet { pname = "Microsoft.Identity.Client"; version = "4.60.3"; sha256 = "065iifhffri8wc5i4nfbnkzjrvflav9v5bfkwvmax8f35rks1mnn"; })
-  (fetchNuGet { pname = "Microsoft.Identity.Client.Extensions.Msal"; version = "4.60.3"; sha256 = "19l92ynvrhb76r0zpj8qhyymxgz45knyhdqr6za4s7rzbssibi08"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "6.35.0"; sha256 = "0i6kdvqdbzynzrr4g5idx4ph4ckggsbsy0869lwa10fhmyxrh73g"; })
-  (fetchNuGet { pname = "Microsoft.NET.StringTools"; version = "17.4.0"; sha256 = "1smx30nq22plrn2mw4wb5vfgxk6hyx12b60c4wabmpnr81lq3nzv"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.10.0"; sha256 = "13g8fwl09li8fc71nk13dgkb7gahd4qhamyg2xby7am63nlchhdf"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
-  (fetchNuGet { pname = "Microsoft.PowerPlatform.ResourceStack"; version = "7.0.0.2007"; sha256 = "1higvig4ajwgcw6bdhxmf0s5p4gy1m69rnngdi1ik42731wrafay"; })
-  (fetchNuGet { pname = "Microsoft.SourceLink.Common"; version = "8.0.0"; sha256 = "0xrr8yd34ij7dqnyddkp2awfmf9qn3c89xmw2f3npaa4wnajmx81"; })
-  (fetchNuGet { pname = "Microsoft.SourceLink.GitHub"; version = "8.0.0"; sha256 = "1gdx7n45wwia3yvang3ls92sk3wrymqcx9p349j8wba2lyjf9m44"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.Telemetry"; version = "1.0.2"; sha256 = "00psv2mvynd2bz8xnzvqvb32qr33glqxg4ni5j91b93k84yjy5ma"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.TrxReport.Abstractions"; version = "1.0.2"; sha256 = "09yn3hi9npgi8rs2vyfyzcl8vbfa1lqcl6lgpymw5d7lg0hc511w"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Extensions.VSTestBridge"; version = "1.0.2"; sha256 = "0c65fsc23xxw648xh83sjcmrn9hvs9q58l5lb36wflvaajbsjf2r"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Platform"; version = "1.0.2"; sha256 = "0bq46f4v2r4nzwly7g0dsakyc1lcql9nh85sp59d1fwzaknf1n94"; })
-  (fetchNuGet { pname = "Microsoft.Testing.Platform.MSBuild"; version = "1.0.2"; sha256 = "1vjqrpqjx3z1irqgy0ckmkgyvrzqqqcikxs36q6gadyj643ra1c5"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.10.0"; sha256 = "07j69cw8r39533w4p39mnj00kahazz38760in3jfc45kmlcdb26x"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.5.0"; sha256 = "0qkjyf3ky6xpjg5is2sdsawm99ka7fzgid2bvpglwmmawqgm8gls"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.10.0"; sha256 = "1bl471s7fx9jycr0cc8rylwf34mrvlg9qn1an6l86nisavfcyb7v"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading"; version = "17.7.35"; sha256 = "1sr2ydgl6clnpf7axjhnffx3z2jz1zhnxfiizsv1prl26r3y52f9"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading.Analyzers"; version = "17.10.48"; sha256 = "00p3ywq4ppfl14l9yzxl5id5zmay8fv42b4w3ppr1b3d5ipldxhj"; })
-  (fetchNuGet { pname = "Microsoft.VisualStudio.Validation"; version = "17.6.11"; sha256 = "0qx4nzsx28galgzzjkgf541254d433dgxcaf7y2y1qyyxgsfjj1f"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.7.0"; sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; sha256 = "102hvhq2gmlcbq8y2cb7hdr2dnmjzfp2k3asr1ycwrfacwyaak7n"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry.AccessControl"; version = "6.0.0"; sha256 = "1c1x47c6p21l6l84kw8wvsdhnd7ifrrrl8in0bnkaq7y1va4fvsn"; })
-  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.1"; sha256 = "1map729br97ny6mqkaw5qsg55yjbfz2hskvy56qz8rf7p1bjhky2"; })
-  (fetchNuGet { pname = "Microsoft.Windows.Compatibility"; version = "6.0.7"; sha256 = "1b01dg77mw2ih3dy5sajjvqd89zv4yjqffmb8gs7dpzwnncin91d"; })
-  (fetchNuGet { pname = "MSTest.TestAdapter"; version = "3.2.2"; sha256 = "14nrxg1cd3lzaxw7zz8z91168sgnsf1xxnrpdy7wkd6ggk22hi19"; })
-  (fetchNuGet { pname = "MSTest.TestFramework"; version = "3.3.1"; sha256 = "1k706rfifdx28kxhnqpfhfc79zvzd7wnyqvf3g6r27p9ramzw3j9"; })
-  (fetchNuGet { pname = "Nerdbank.GitVersioning"; version = "3.6.133"; sha256 = "1cdw8krvsnx0n34f7fm5hiiy7bs6h3asvncqcikc0g46l50w2j80"; })
-  (fetchNuGet { pname = "Nerdbank.Streams"; version = "2.10.69"; sha256 = "1klsyly7k1xhbhrpq2s2iwdlmw3xyvh51rcakfazwxkv2hm5fj3b"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; sha256 = "0xrwysmrn4midrjal8g2hr1bbg38iyisl0svamb11arqws4w2bw7"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; })
-  (fetchNuGet { pname = "NuGet.Frameworks"; version = "5.11.0"; sha256 = "0wv26gq39hfqw9md32amr5771s73f5zn1z9vs4y77cgynxr73s4z"; })
-  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
-  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; })
-  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; })
-  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
-  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
-  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
-  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
-  (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; })
-  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
-  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
-  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
-  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
-  (fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "0mazvx8npn10vh0k1pvck8ijz4pin7h9mjrvdydim4bmnn4iwgdc"; })
-  (fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "0yrcswvz1xyv17gy39gxpn2cr9ynnlnbm9112nqzkj58s6gk2iyj"; })
-  (fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "0ss8fzqnvxps1ybfy70fj4vs2w78mizg4sxdriw8bvcdcfsv0rg2"; })
-  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
-  (fetchNuGet { pname = "runtime.native.System.Data.SqlClient.sni"; version = "4.7.0"; sha256 = "1b84b8rkwwwgvx1hh5r6icd975rl1ry3bc1xb87br2d8k433wgbj"; })
-  (fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "0nl8z42aiqfz0v4h1lx84jz312n1f01rlr2kzd7yfiv7p7i1dl3w"; })
-  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
-  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
-  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
-  (fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "114swwc99lg4zjzywfcfxvbxynrlh9pvgl1wpihf88jbs2mjicw5"; })
-  (fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "6.0.0"; sha256 = "1kwip1pj1xaqrlkf5flkk30zn2lg4821g64nfj1glpjjcj49b3wv"; })
-  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
-  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
-  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
-  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
-  (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; })
-  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
-  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
-  (fetchNuGet { pname = "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; sha256 = "07byf1iyqb7jkb17sp0mmjk46fwq6fx8mlpzywxl7qk09sma44gk"; })
-  (fetchNuGet { pname = "runtime.win-x64.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; sha256 = "0167s4mpq8bzk3y11pylnynzjr2nc84w96al9x4l8yrf34ccm18y"; })
-  (fetchNuGet { pname = "runtime.win-x86.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; sha256 = "0k3rkfrlm9jjz56dra61jgxinb8zsqlqzik2sjwz7f8v6z6ddycc"; })
-  (fetchNuGet { pname = "Sarif.Sdk"; version = "4.5.4"; sha256 = "0bw2r6qndqj49x2g90rxyp966mdzik9355jgjan6ijib1rad2z2w"; })
-  (fetchNuGet { pname = "SharpYaml"; version = "2.1.1"; sha256 = "171s60qpqj5r7krkn2zq6fg6f09ixsd5czrw91qm5lg3vpvknar9"; })
-  (fetchNuGet { pname = "StreamJsonRpc"; version = "2.17.11"; sha256 = "1y6pr2lcpqbwian0iiyf9bagwyx0l7dbarazk3cyah1fl3rrjaqd"; })
-  (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; })
-  (fetchNuGet { pname = "System.ClientModel"; version = "1.0.0"; sha256 = "0rhbabgfnxx6qcaxq218h5si4gbq6sn4rgg6cn9bgw6rrzcgnxn8"; })
-  (fetchNuGet { pname = "System.CodeDom"; version = "6.0.0"; sha256 = "1i55cxp8ycc03dmxx4n22qi6jkwfl23cgffb95izq7bjar8avxxq"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.6.0"; sha256 = "1pbxzdz3pwqyybzv5ff2b7nrc281bhg7hq34w0fn1w3qfgrbwyw2"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "7.0.0"; sha256 = "1n9122cy6v3qhsisc9lzwa1m1j62b8pi2678nsmnlyvfpk0zdagm"; })
-  (fetchNuGet { pname = "System.ComponentModel.Composition"; version = "6.0.0"; sha256 = "16zfx5mivkkykp76krw8x68izmjf79ldfmn26k9x3m55lmp9i77c"; })
-  (fetchNuGet { pname = "System.ComponentModel.Composition.Registration"; version = "6.0.0"; sha256 = "1lv5b42lssrkzbk2fz9phmdgwmqzi2n3yg3rl081q661nij3vv1l"; })
-  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.0"; sha256 = "1hjgmz47v5229cbzd2pwz2h0dkq78lb2wp9grx8qr72pb5i0dk7v"; })
-  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "6.0.1"; sha256 = "1d6cx49fzycbl2fam8d1j3491sqx6mh7qkb5ddrawr00x74hgzak"; })
-  (fetchNuGet { pname = "System.Data.Odbc"; version = "6.0.1"; sha256 = "12g9fzx6y5gb1bb5lyfxin1d5snw69pdwv481x13m6qhkfhk3lx4"; })
-  (fetchNuGet { pname = "System.Data.OleDb"; version = "6.0.0"; sha256 = "0cbf6qw7k13rjrk5zfd158yri023ryaifd6fz5cbqgwdg4vpnvpz"; })
-  (fetchNuGet { pname = "System.Data.SqlClient"; version = "4.8.6"; sha256 = "153wgkb8gcbqk00zsdj8lw8d4ms60h6k08n57yiyxlyyimrg5ks1"; })
-  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
-  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "5.0.0"; sha256 = "0phd2qizshjvglhzws1jd0cq4m54gscz4ychzr3x6wbgl4vvfrga"; })
-  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "6.0.1"; sha256 = "17h8bkcv0vf9a7gp9ajkd107zid98wql5kzlzwrjm5nm92nk0bsy"; })
-  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "7.0.2"; sha256 = "1h97ikph775gya93qsjjaka87qcygbyh1064rh1hnfcnp5xv0ipi"; })
-  (fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "6.0.0"; sha256 = "08y1x2d5w2hnhkh9r1998pjc7r4qp0rmzax062abha85s11chifd"; })
-  (fetchNuGet { pname = "System.Diagnostics.PerformanceCounter"; version = "6.0.1"; sha256 = "17p5vwbgrycsrvv9a9ksxbiziy75x4s25dw71fnbw1ci5kpp8yz7"; })
-  (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; })
-  (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; })
-  (fetchNuGet { pname = "System.DirectoryServices"; version = "6.0.1"; sha256 = "17abibzqmr4amxpnbpv198qzdpb5mafn655ayisfc4mmhmyks39a"; })
-  (fetchNuGet { pname = "System.DirectoryServices.AccountManagement"; version = "6.0.0"; sha256 = "1hvmasf4zsjpds0q8j8k5n61lr6mqhi37bsz1m65r6fs5kx5jrfn"; })
-  (fetchNuGet { pname = "System.DirectoryServices.Protocols"; version = "6.0.2"; sha256 = "0zy5ga8ys72bmw65zikg4qv4cizx9mcns3mc0dddi6657mpzp2pv"; })
-  (fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; sha256 = "02n8rzm58dac2np8b3xw8ychbvylja4nh6938l5k2fhyn40imlgz"; })
-  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; })
-  (fetchNuGet { pname = "System.Formats.Asn1"; version = "6.0.0"; sha256 = "1vvr7hs4qzjqb37r0w1mxq7xql2b17la63jwvmgv65s1hj00g8r9"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.1.0"; sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
-  (fetchNuGet { pname = "System.IO.Abstractions"; version = "21.0.2"; sha256 = "1mp73hkrxb83bs16458qgf7l3n20ddnfkij1pd603dr8w22j7279"; })
-  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; })
-  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; })
-  (fetchNuGet { pname = "System.IO.Packaging"; version = "6.0.0"; sha256 = "112nq0k2jc4vh71rifqqmpjxkaanxfapk7g8947jkfgq3lmfmaac"; })
-  (fetchNuGet { pname = "System.IO.Pipelines"; version = "7.0.0"; sha256 = "1ila2vgi1w435j7g2y7ykp2pdbh9c5a02vm85vql89az93b7qvav"; })
-  (fetchNuGet { pname = "System.IO.Ports"; version = "6.0.0"; sha256 = "0b0gvn7b2xsy2b0wwa170jzm5cwy3xxwpyqm21m4cbpc0ckri802"; })
-  (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; })
-  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; })
-  (fetchNuGet { pname = "System.Management"; version = "6.0.2"; sha256 = "190bxmg0y5dmzh0yv9gzh8k6safdz20gqaifpnl8v7yw3z5wcpgj"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; })
-  (fetchNuGet { pname = "System.Memory.Data"; version = "1.0.2"; sha256 = "1p8qdg0gzxhjvabryc3xws2629pj8w5zz2iqh86kw8sh0rann9ay"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
-  (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; })
-  (fetchNuGet { pname = "System.Private.ServiceModel"; version = "4.9.0"; sha256 = "117vxa0pfgg6xfdxfpza4296ay7sqiaynyvfbsai43yrkh0lmch1"; })
-  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
-  (fetchNuGet { pname = "System.Reflection.Context"; version = "6.0.0"; sha256 = "1vy3b143429amaa0501xjgdszvpdygkrs5rkivnrkl69f67dad5j"; })
-  (fetchNuGet { pname = "System.Reflection.DispatchProxy"; version = "4.7.1"; sha256 = "10yh3q2i71gcw7c0dfz9qxql2vlvnqjav1hyf1q9rpbvdbgsabrs"; })
-  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.7.0"; sha256 = "0mbjfajmafkca47zr8v36brvknzks5a7pgb49kfq2d188pyv6iap"; })
-  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
-  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
-  (fetchNuGet { pname = "System.Runtime.Caching"; version = "6.0.0"; sha256 = "0wh98a77cby4i3h2mar241k01105x661kh03vlyd399shxkfk60a"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.2"; sha256 = "1vz4275fjij8inf31np78hw50al8nqkngk04p3xv5n4fcmf1grgi"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
-  (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; sha256 = "17n3lrrl6vahkqmhlpn3w20afgz09n7i6rv0r3qypngwi7wqdr5r"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "6.0.0"; sha256 = "0a678bzj8yxxiffyzy60z2w1nczzpi8v97igr4ip3byd2q89dv58"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.Pkcs"; version = "6.0.4"; sha256 = "0hh5h38pnxmlrnvs72f2hzzpz4b2caiiv6xf8y7fzdg84r3imvfr"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.4.0"; sha256 = "1q8ljvqhasyynp94a1d7jknk946m20lkwy2c3wa8zw2pc517fbj6"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.7.0"; sha256 = "1s1sh8k10s0apa09c5m2lkavi3ys90y657whg2smb3y8mpkfr5vm"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "6.0.0"; sha256 = "05kd3a8w7658hjxq9vvszxip30a479fjmfq4bq1r95nrsvs4hbss"; })
-  (fetchNuGet { pname = "System.Security.Cryptography.Xml"; version = "6.0.1"; sha256 = "15d0np1njvy2ywf0qzdqyjk5sjs4zbfxg917jrvlbfwrqpqxb5dj"; })
-  (fetchNuGet { pname = "System.Security.Permissions"; version = "6.0.0"; sha256 = "0jsl4xdrkqi11iwmisi1r2f2qn5pbvl79mzq877gndw6ans2zhzw"; })
-  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.7.0"; sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; })
-  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; sha256 = "1mpk7xj76lxgz97a5yg93wi8lj0l8p157a5d50mmjy3gbz1904q8"; })
-  (fetchNuGet { pname = "System.ServiceModel.Duplex"; version = "4.9.0"; sha256 = "0jwbpcpgxv5zar3raypgvfnwvn4bv3n212cbcgyj7r0xj33c1kqi"; })
-  (fetchNuGet { pname = "System.ServiceModel.Http"; version = "4.9.0"; sha256 = "1nxch0m50yvp0dxckl65802086bncs010lnx816196m2kc4bpc5p"; })
-  (fetchNuGet { pname = "System.ServiceModel.NetTcp"; version = "4.9.0"; sha256 = "06l7ffkxf6nj3x8dm5b42ansqq3nm17xpzrrmp0905602dr3z8zg"; })
-  (fetchNuGet { pname = "System.ServiceModel.Primitives"; version = "4.9.0"; sha256 = "1lzl69ar18fn4iqya2ymm9kdv54d4mi0hcdnyvyxjq3bnhnb22qf"; })
-  (fetchNuGet { pname = "System.ServiceModel.Security"; version = "4.9.0"; sha256 = "0ai2h31hrz1js3k8q0lh1y87757la300slqp3g7544kil5wcbmpw"; })
-  (fetchNuGet { pname = "System.ServiceModel.Syndication"; version = "6.0.0"; sha256 = "1xk1dh5nd5h6fhrkys9r9na6kww7v4fsg4ianaibjkl9f0a1w929"; })
-  (fetchNuGet { pname = "System.ServiceProcess.ServiceController"; version = "6.0.1"; sha256 = "15nvnflqfrz2fsclcwgaq8r532x2fbv1ds3rck95l8psb7pgx1v5"; })
-  (fetchNuGet { pname = "System.Speech"; version = "6.0.0"; sha256 = "1g7b077189x9xy4l9yrh2yfnhc83mk6aj7b0v64xdqsrsqv1z16v"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.3.0"; sha256 = "0lgxg1gn7pg7j0f942pfdc9q7wamzxsgq3ng248ikdasxz0iadkv"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "6.0.0"; sha256 = "0gm2kiz2ndm9xyzxgi0jhazgwslcs427waxgfa30m7yqll1kcrww"; })
-  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; })
-  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "4.7.2"; sha256 = "0ap286ykazrl42if59bxhzv81safdfrrmfqr3112siwyajx4wih9"; })
-  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "7.0.0"; sha256 = "1151hbyrcf8kyg1jz8k9awpbic98lwz9x129rg7zk1wrs6vjlpxl"; })
-  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "8.0.0"; sha256 = "1wbypkx0m8dgpsaqgyywz4z760xblnwalb241d5qv9kx8m128i11"; })
-  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.2"; sha256 = "10xj1pw2dgd42anikvj9qm23ccssrcp7dpznpj4j7xjp1ikhy3y4"; })
-  (fetchNuGet { pname = "System.Text.Json"; version = "7.0.3"; sha256 = "0zjrnc9lshagm6kdb9bdh45dmlnkpwcpyssa896sda93ngbmj8k9"; })
-  (fetchNuGet { pname = "System.Text.Json"; version = "8.0.0"; sha256 = "134savxw0sq7s448jnzw17bxcijsi1v38mirpbb6zfxmqlf04msw"; })
-  (fetchNuGet { pname = "System.Text.Json"; version = "8.0.2"; sha256 = "1pi1dkypmn34qqspvwfcp1fx78v0nh78dpdyj4rcaa2qch40y15r"; })
-  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.0.11"; sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
-  (fetchNuGet { pname = "System.Threading.AccessControl"; version = "6.0.0"; sha256 = "1f036x8994yqz13a1cx6vvzd2bqzwy4mchn1pgfsybaw1xa10jk6"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Dataflow"; version = "7.0.0"; sha256 = "0ham9l8xrmlq2qwin53n82iz1wanci2h695i3cq83jcw4n28qdr9"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
-  (fetchNuGet { pname = "System.Web.Services.Description"; version = "4.9.0"; sha256 = "08f9ksj826nz4pfw1bw7xg811x99yyj871nfmvav6yxfkx9faqkh"; })
-  (fetchNuGet { pname = "System.Windows.Extensions"; version = "6.0.0"; sha256 = "1wy9pq9vn1bqg5qnv53iqrbx04yzdmjw4x5yyi09y3459vaa1sip"; })
-  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; })
-  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; })
-  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions"; version = "21.0.2"; sha256 = "1mc358wlq9y21gzj44af8hxlyjm0ws0i9f5vmsn31dn5wbfh4dy5"; })
-  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions.Wrappers"; version = "21.0.2"; sha256 = "0q3vghssyh6rd7w7n4rjv5ngh5byf1y80i22yw9fx10f4hcsw1az"; })
+  (fetchNuGet { pname = "Azure.Bicep.Internal.RoslynAnalyzers"; version = "0.1.38"; hash = "sha256-++iIefl+xbX3Tw4EsPvJrsMoG2DdQ5dPtqEgD+jaI6w="; })
+  (fetchNuGet { pname = "Azure.Bicep.Types"; version = "0.5.81"; hash = "sha256-eggoXh3X4h8UeyUN7EJEECW77yuM4sms7yogfasIB2I="; })
+  (fetchNuGet { pname = "Azure.Bicep.Types"; version = "0.5.9"; hash = "sha256-ArayCbMPz2itkOE88usMZfW5fx18cWlymdSVq/KXZQs="; })
+  (fetchNuGet { pname = "Azure.Bicep.Types.Az"; version = "0.2.698"; hash = "sha256-3O+CO+y8sqB3rJttuH9ymyoqygJVCtM4ybvPllCv+IU="; })
+  (fetchNuGet { pname = "Azure.Bicep.Types.K8s"; version = "0.1.626"; hash = "sha256-UYpfVbjvtr8eLWsjAEBrzVjxrHWiEEtjerNjafCLB7A="; })
+  (fetchNuGet { pname = "Azure.Containers.ContainerRegistry"; version = "1.1.1"; hash = "sha256-BC7QlrtYz74yDtTf/Kvf+Y3Vm3NEZsJLO5g5twKuxkI="; })
+  (fetchNuGet { pname = "Azure.Core"; version = "1.36.0"; hash = "sha256-lokfjW2wvgFu6bALLzNmDhXIz3HXoPuGX0WfGb9hmpI="; })
+  (fetchNuGet { pname = "Azure.Core"; version = "1.39.0"; hash = "sha256-l5c+iPoCPkR3bKJ48WY+YHGEP2Kft9CU0RT/K0LcZiw="; })
+  (fetchNuGet { pname = "Azure.Core"; version = "1.40.0"; hash = "sha256-c1DBQ+OmNAKoQkj3kC3U7yWy77yG+fo+H3vR1e+Qrpo="; })
+  (fetchNuGet { pname = "Azure.Deployments.Core"; version = "1.71.0"; hash = "sha256-voVequHvoUfk1SLLCibzsZrmYx6vQa4LCG1Na/m4weM="; })
+  (fetchNuGet { pname = "Azure.Deployments.DiffEngine"; version = "1.71.0"; hash = "sha256-tGy2ienvvMHd4jjGye5DdoGJlzBao8YKddqL3CQCAEA="; })
+  (fetchNuGet { pname = "Azure.Deployments.Engine"; version = "1.71.0"; hash = "sha256-J5mIPdbZcXuMT/sxb5aFQ0hFWn19yLyzoKqa0V+QEME="; })
+  (fetchNuGet { pname = "Azure.Deployments.Expression"; version = "1.71.0"; hash = "sha256-zycWbem1lFP49WosaYep7QwDdKm6cxx0ZHWWPXKnyqo="; })
+  (fetchNuGet { pname = "Azure.Deployments.Extensibility"; version = "1.71.0"; hash = "sha256-u16l7T2o4y+BA0wQ/u10ZGGjUI+bgzJBEE29ncsNEjI="; })
+  (fetchNuGet { pname = "Azure.Deployments.Extensibility.Core"; version = "0.1.55"; hash = "sha256-u5Xo/TkFJSOeI+/T1fWuEeFVQVT4gM6pE09jhY6b2vU="; })
+  (fetchNuGet { pname = "Azure.Deployments.Internal.GenerateNotice"; version = "0.1.38"; hash = "sha256-LW8q/5ler1c0tK8FGd5PIqnWpdC/YggKrERAFhioXwI="; })
+  (fetchNuGet { pname = "Azure.Deployments.JsonPath"; version = "1.0.1265"; hash = "sha256-67xm85aTEJHv/6iYXxnjmkHDEtRnTnFhzs9gv1H/J4c="; })
+  (fetchNuGet { pname = "Azure.Deployments.ResourceMetadata"; version = "1.0.1265"; hash = "sha256-kvFL2oHG7javm4K8Wkyjc72jUbJBWKunlt0yrL360Wg="; })
+  (fetchNuGet { pname = "Azure.Deployments.Templates"; version = "1.71.0"; hash = "sha256-ORtuQEvMr5j0yCKZMzBO5GuDfG9XFEho2gkpGtk944k="; })
+  (fetchNuGet { pname = "Azure.Identity"; version = "1.12.0"; hash = "sha256-F3dFL8/HHqYgINxe9OAkHW067KPcsKgLjcPTHmpfBAo="; })
+  (fetchNuGet { pname = "Azure.ResourceManager"; version = "1.11.1"; hash = "sha256-Pi+LT//A33XzGSE0yb1FK+fxu8FIfcD3/KOnTHQW120="; })
+  (fetchNuGet { pname = "Azure.ResourceManager.Resources"; version = "1.7.3"; hash = "sha256-SfQ1bavuKdwPW81ML2x3gVpDRwIvTvAO9h2E12pVito="; })
+  (fetchNuGet { pname = "CommandLineParser"; version = "2.9.1"; hash = "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo="; })
+  (fetchNuGet { pname = "coverlet.collector"; version = "6.0.2"; hash = "sha256-LdSQUrOmjFug47LjtqgtN2MM6BcfG0HR5iL+prVHlDo="; })
+  (fetchNuGet { pname = "FluentAssertions"; version = "6.12.0"; hash = "sha256-LGlPe+G7lBwj5u3ttQZiKX2+C195ddRAHPuDkY6x0BE="; })
+  (fetchNuGet { pname = "Google.Protobuf"; version = "3.27.1"; hash = "sha256-6BdAwStdmfFEwCqkYO4yffdq6QBDZskfmopI5fl0Dy8="; })
+  (fetchNuGet { pname = "Grpc.Core.Api"; version = "2.63.0"; hash = "sha256-tPvrMdQoVn6quCOkfiDyuTPzJN55vghMeIWmn1Gy2Ig="; })
+  (fetchNuGet { pname = "Grpc.Net.Client"; version = "2.63.0"; hash = "sha256-iq5O1Aa1SlBeuW5MoZnRotmQbPJmqSkhbyO53WVwSSk="; })
+  (fetchNuGet { pname = "Grpc.Net.Common"; version = "2.63.0"; hash = "sha256-JHpSo+cymATjLloCXRATzkXJr6zYRM2X2B/nQfXAdQ0="; })
+  (fetchNuGet { pname = "Grpc.Tools"; version = "2.64.0"; hash = "sha256-vL8NnlHu6X4g6VLMQ7K6ZpBg3SgahaELonRK2B8/47E="; })
+  (fetchNuGet { pname = "Humanizer.Core"; version = "2.14.1"; hash = "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o="; })
+  (fetchNuGet { pname = "IPNetwork2"; version = "2.6.548"; hash = "sha256-6N61UG/WrJWNv+bO/l9BNWA17iPIMn5G4J7maw54UPg="; })
+  (fetchNuGet { pname = "IPNetwork2"; version = "2.6.598"; hash = "sha256-FPjItZbaf5gJYP6lORQITPqWnwHN0WDLvq+v4Hmc3Q4="; })
+  (fetchNuGet { pname = "JetBrains.Annotations"; version = "2019.1.3"; hash = "sha256-gn2Z7yANT+2tnK+qbOA2PviRf1M1VtvamABGajgGC6E="; })
+  (fetchNuGet { pname = "JetBrains.Annotations"; version = "2023.3.0"; hash = "sha256-/Eykez68qYMO5mlmUelzAke8aJehyp8fspO5Z+yt5G4="; })
+  (fetchNuGet { pname = "Json.More.Net"; version = "2.0.1.2"; hash = "sha256-fnp/By8n8xKa8bhvUbO2p8rlze5AvgA+z9ZvWEpL/Ls="; })
+  (fetchNuGet { pname = "JsonDiffPatch.Net"; version = "2.1.0"; hash = "sha256-lyUOusPMv1ZF3EcrEFG4Fze603CVPxLwOPmTVOy/HmU="; })
+  (fetchNuGet { pname = "JsonPatch.Net"; version = "3.1.0"; hash = "sha256-bvCOOiH2SruZXF+jPYlAaEkinZ040YDp9QjP3QXlCbc="; })
+  (fetchNuGet { pname = "JsonPath.Net"; version = "1.1.0"; hash = "sha256-FQGPodaxHwyfRN3HhEl7N39SKsn922FiZAiDzKOYxUo="; })
+  (fetchNuGet { pname = "JsonPointer.Net"; version = "5.0.0"; hash = "sha256-OCeXHpJyHJSyh2vpnrY8nSuM4u3eNXtN6YXnJZyHnWc="; })
+  (fetchNuGet { pname = "JsonSchema.Net"; version = "7.0.4"; hash = "sha256-sCaGr8m20DzNEkF3TS7Cb+wmvo3hYZPZwQ2bTqwlB5g="; })
+  (fetchNuGet { pname = "MessagePack"; version = "2.5.108"; hash = "sha256-+vMXyEbfutY5WOFuFnNF24uLcKJTTdntVrVlSJH4yjI="; })
+  (fetchNuGet { pname = "MessagePack.Annotations"; version = "2.5.108"; hash = "sha256-u3Qu8UftNIz3oIzQUMa7Z0G6VzmDLcAnAeNQ3lB3YVk="; })
+  (fetchNuGet { pname = "Microsoft.ApplicationInsights"; version = "2.22.0"; hash = "sha256-mUQ63atpT00r49ca50uZu2YCiLg3yd6r3HzTryqcuEA="; })
+  (fetchNuGet { pname = "Microsoft.AspNet.WebApi.Client"; version = "6.0.0"; hash = "sha256-lNL5C4W7/p8homWooO/3ZKDZQ2M0FUTDixJwqWBPVbo="; })
+  (fetchNuGet { pname = "Microsoft.Automata.SRM"; version = "1.2.2"; hash = "sha256-cVVxKqguV48WRuk2HyRP5A2b4kZd3nSVY3rMe0SRSQw="; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "1.1.1"; hash = "sha256-fAcX4sxE0veWM1CZBtXR/Unky+6sE33yrV7ohrWGKig="; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "5.0.0"; hash = "sha256-bpJjcJSUSZH0GeOXoZI12xUQOf2SRtxG7sZV0dWS5TI="; })
+  (fetchNuGet { pname = "Microsoft.Bcl.AsyncInterfaces"; version = "8.0.0"; hash = "sha256-9aWmiwMJKrKr9ohD1KSuol37y+jdDxPGJct3m2/Bknw="; })
+  (fetchNuGet { pname = "Microsoft.Build.Tasks.Git"; version = "8.0.0"; hash = "sha256-vX6/kPij8vNAu8f7rrvHHhPrNph20IcufmrBgZNxpQA="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.BannedApiAnalyzers"; version = "3.3.4"; hash = "sha256-YPTHTZ8xRPMLADdcVYRO/eq3O9uZjsD+OsGRZE+0+e8="; })
+  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.10.0"; hash = "sha256-yQFwqVChRtIRpbtkJr92JH2i+O7xn91NGbYgnKs8G2g="; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.0.1"; hash = "sha256-0huoqR2CJ3Z9Q2peaKD09TV3E6saYSqDGZ290K8CrH8="; })
+  (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.EventRegister"; version = "1.1.28"; hash = "sha256-A/gOXo0PWS8+L7OyJz1s8zDxGU39SFuvxrHZnqSLANI="; })
+  (fetchNuGet { pname = "Microsoft.Diagnostics.Tracing.TraceEvent"; version = "3.1.3"; hash = "sha256-MVKR1ZRpUMNdRAPuXh9cp5T/hG7wu8R9wUr9bey8V60="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration"; version = "8.0.0"; hash = "sha256-9BPsASlxrV8ilmMCjdb3TiUcm5vFZxkBnAI/fNBSEyA="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Abstractions"; version = "8.0.0"; hash = "sha256-4eBpDkf7MJozTZnOwQvwcfgRKQGcNXe0K/kF+h5Rl8o="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Binder"; version = "8.0.1"; hash = "sha256-KYPQYYspiBGiez7JshmEjy4kFt7ASzVxQeVsygIEvHA="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.FileExtensions"; version = "8.0.0"; hash = "sha256-BCxcjVP+kvrDDB0nzsFCJfU74UK4VBvct2JA4r+jNcs="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Configuration.Json"; version = "8.0.0"; hash = "sha256-Fi/ijcG5l0BOu7i96xHu96aN5/g7zO6SWQbTsI3Qetg="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection"; version = "8.0.0"; hash = "sha256-+qIDR8hRzreCHNEDtUcPfVHQdurzWPo/mqviCH78+EQ="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyInjection.Abstractions"; version = "8.0.0"; hash = "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Diagnostics"; version = "8.0.0"; hash = "sha256-fBLlb9xAfTgZb1cpBxFs/9eA+BlBvF8Xg0DMkBqdHD4="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Diagnostics.Abstractions"; version = "8.0.0"; hash = "sha256-USD5uZOaahMqi6u7owNWx/LR4EDrOwqPrAAim7iRpJY="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Abstractions"; version = "8.0.0"; hash = "sha256-uQSXmt47X2HGoVniavjLICbPtD2ReQOYQMgy3l0xuMU="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileProviders.Physical"; version = "8.0.0"; hash = "sha256-29y5ZRQ1ZgzVOxHktYxyiH40kVgm5un2yTGdvuSWnRc="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.FileSystemGlobbing"; version = "8.0.0"; hash = "sha256-+Oz41JR5jdcJlCJOSpQIL5OMBNi+1Hl2d0JUHfES7sU="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Http"; version = "8.0.0"; hash = "sha256-UgljypOLld1lL7k7h1noazNzvyEHIJw+r+6uGzucFSY="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging"; version = "8.0.0"; hash = "sha256-Meh0Z0X7KyOEG4l0RWBcuHHihcABcvCyfUXgasmQ91o="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "6.0.0"; hash = "sha256-QNqcQ3x+MOK7lXbWkCzSOWa/2QyYNbdM/OEEbWN15Sw="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "8.0.0"; hash = "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.ObjectPool"; version = "5.0.10"; hash = "sha256-tAjiU3w0hdPAGUitszxZ6jtEilRn977MY7N5eZMx0x0="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "8.0.0"; hash = "sha256-n2m4JSegQKUTlOsKLZUUHHKMq926eJ0w9N9G+I3FoFw="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Options.ConfigurationExtensions"; version = "8.0.0"; hash = "sha256-A5Bbzw1kiNkgirk5x8kyxwg9lLTcSngojeD+ocpG1RI="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.Primitives"; version = "8.0.0"; hash = "sha256-FU8qj3DR8bDdc1c+WeGZx/PCZeqqndweZM9epcpXjSo="; })
+  (fetchNuGet { pname = "Microsoft.Graph.Bicep.Types"; version = "0.1.6-preview"; hash = "sha256-01IC1xejcwK5da5UEhxgzfBcuT1plAajbFp2jNgS4II="; })
+  (fetchNuGet { pname = "Microsoft.Identity.Client"; version = "4.61.3"; hash = "sha256-1cccC8EWlIQlJ3SSOB7CNImOYSaxsJpRHvlCgv2yOtA="; })
+  (fetchNuGet { pname = "Microsoft.Identity.Client.Extensions.Msal"; version = "4.61.3"; hash = "sha256-nFQ2C7S4BQ4nvQmGAc5Ar7/ynKyztvK7fPKrpJXaQFE="; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "6.35.0"; hash = "sha256-bxyYu6/QgaA4TQYBr5d+bzICL+ktlkdy/tb/1fBu00Q="; })
+  (fetchNuGet { pname = "Microsoft.NET.StringTools"; version = "17.4.0"; hash = "sha256-+9uBaUDZ3roUJwyYJUL30Mz+3C6LE16FzfQKgS0Yveo="; })
+  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.10.0"; hash = "sha256-rkHIqB2mquNXF89XBTFpUL2z5msjTBsOcyjSBCh36I0="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.0.1"; hash = "sha256-mZotlGZqtrqDSoBrZhsxFe6fuOv5/BIo0w2Z2x0zVAU="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; hash = "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.1"; hash = "sha256-8hLiUKvy/YirCWlFwzdejD2Db3DaXhHxT7GSZx/znJg="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "3.1.0"; hash = "sha256-cnygditsEaU86bnYtIthNMymAHqaT/sf9Gjykhzqgb0="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; hash = "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.0.1"; hash = "sha256-lxxw/Gy32xHi0fLgFWNj4YTFBSBkjx5l6ucmbTyf7V4="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; hash = "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.3"; hash = "sha256-WLsf1NuUfRWyr7C7Rl9jiua9jximnVvzy6nk2D2bVRc="; })
+  (fetchNuGet { pname = "Microsoft.PowerPlatform.ResourceStack"; version = "7.0.0.2007"; hash = "sha256-XjmVeRhHkBlDbM/anEwN/pFbNHC1w7YMZ49LRV7cL8I="; })
+  (fetchNuGet { pname = "Microsoft.SourceLink.Common"; version = "8.0.0"; hash = "sha256-AfUqleVEqWuHE7z2hNiwOLnquBJ3tuYtbkdGMppHOXc="; })
+  (fetchNuGet { pname = "Microsoft.SourceLink.GitHub"; version = "8.0.0"; hash = "sha256-hNTkpKdCLY5kIuOmznD1mY+pRdJ0PKu2HypyXog9vb0="; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.Telemetry"; version = "1.2.1"; hash = "sha256-/KshvKuql1A7zI1kTseWEYsOVMyOWZDXlFfKr0fz0Kg="; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.TrxReport.Abstractions"; version = "1.2.1"; hash = "sha256-YciAKvo1VBDoqGohABY2uD+Tt7wxpSqICV6ytEBNYKQ="; })
+  (fetchNuGet { pname = "Microsoft.Testing.Extensions.VSTestBridge"; version = "1.2.1"; hash = "sha256-vcf+MYu9Rp/Xpy1cA/azVz1KAkMgNrekD+LZX85Anq4="; })
+  (fetchNuGet { pname = "Microsoft.Testing.Platform"; version = "1.2.1"; hash = "sha256-ExXw+kScOwZsRDos3Myvh53yazGTGtjrtn2H1XbFi34="; })
+  (fetchNuGet { pname = "Microsoft.Testing.Platform.MSBuild"; version = "1.2.1"; hash = "sha256-B0AGaqwtuoT9DxXDvkR0bwEvVzSd67+vGZAgBm0nxxw="; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.10.0"; hash = "sha256-3YjVGK2zEObksBGYg8b/CqoJgLQ1jUv4GCWNjDhLRh4="; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.5.0"; hash = "sha256-mj5UH+aqVk7f3Uu0+L47aqZUudJNCx3Lk7cbP4fzcmI="; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.10.0"; hash = "sha256-+yzP3FY6WoOosSpYnB7duZLhOPUZMQYy8zJ1d3Q4hK4="; })
+  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading"; version = "17.9.28"; hash = "sha256-4Z/uKv/jJPHXCJD9W/2vHNDfas3o4EfLh6+Tmkv44YE="; })
+  (fetchNuGet { pname = "Microsoft.VisualStudio.Threading.Analyzers"; version = "17.10.48"; hash = "sha256-EvZGbyxtrJDvHZwsQbZDXtVfWiy0f58oCdTdSzD34wI="; })
+  (fetchNuGet { pname = "Microsoft.VisualStudio.Validation"; version = "17.8.8"; hash = "sha256-sB8GLRiJHX3Py7qeBUnUANiDWhyPtISon6HQs+8wKms="; })
+  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.7.0"; hash = "sha256-+jWCwRqU/J/jLdQKDFm93WfIDrDMXMJ984UevaQMoi8="; })
+  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "5.0.0"; hash = "sha256-9kylPGfKZc58yFqNKa77stomcoNnMeERXozWJzDcUIA="; })
+  (fetchNuGet { pname = "Microsoft.Win32.Registry.AccessControl"; version = "6.0.0"; hash = "sha256-Vm9H1A7+YDXtAjYimnN28TQLm94c8UkQNTSIa9ghPbA="; })
+  (fetchNuGet { pname = "Microsoft.Win32.SystemEvents"; version = "6.0.1"; hash = "sha256-wk8oV7jHZfSxKX5PDcV3S/pSnsaFq4mr8fakvJI4V9U="; })
+  (fetchNuGet { pname = "Microsoft.Windows.Compatibility"; version = "6.0.7"; hash = "sha256-LSQbmbX833b0Q6s6h6Un+yfU8JZS6eLbgFHwes5rAaw="; })
+  (fetchNuGet { pname = "MSTest.TestAdapter"; version = "3.4.3"; hash = "sha256-uOhEZp71KV0DFfkD4fMhy9zEggPBvzof1GZ5Z5ulWkM="; })
+  (fetchNuGet { pname = "MSTest.TestFramework"; version = "3.4.3"; hash = "sha256-d3fTMQese3ld1WTw0v6MGczgdSnE28/UaM2E7T59cUM="; })
+  (fetchNuGet { pname = "Nerdbank.GitVersioning"; version = "3.6.139"; hash = "sha256-DMEdNlYh9tqkqQ/98zwk7NcRYBpTApLiFwzkgaHP7Fo="; })
+  (fetchNuGet { pname = "Nerdbank.Streams"; version = "2.10.69"; hash = "sha256-a0hXKhR7dv6Vm4rlUOD2ffBKG49CC3wzXLCHeTz1ms4="; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; hash = "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.2"; hash = "sha256-ESyjt/R7y9dDvvz5Sftozk+e/3Otn38bOcLGGh69Ot0="; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; hash = "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "9.0.1"; hash = "sha256-mYCBrgUhIJFzRuLLV9SIiIFHovzfR8Uuqfg6e08EnlU="; })
+  (fetchNuGet { pname = "Newtonsoft.Json.Bson"; version = "1.0.2"; hash = "sha256-ZUj6YFSMZp5CZtXiamw49eZmbp1iYBuNsIKNnjxcRzA="; })
+  (fetchNuGet { pname = "NuGet.Frameworks"; version = "5.11.0"; hash = "sha256-n+hxcrf+sXM80Tv9YH9x4+hwTslVidFq4tjBNPAzYnM="; })
+  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; hash = "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="; })
+  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tools"; version = "4.3.0"; hash = "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I="; })
+  (fetchNuGet { pname = "runtime.any.System.Diagnostics.Tracing"; version = "4.3.0"; hash = "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI="; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; hash = "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="; })
+  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; hash = "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; hash = "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; hash = "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="; })
+  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; hash = "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding.Extensions"; version = "4.3.0"; hash = "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM="; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="; })
+  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="; })
+  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="; })
+  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="; })
+  (fetchNuGet { pname = "runtime.linux-arm.runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-rD0eibV1kRqbbzvLmuCx8ZIvI5ps3zAB3CDYa1HfX1U="; })
+  (fetchNuGet { pname = "runtime.linux-arm64.runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-0kcxn9GoyPmxFSGkuiy11qfMhL39peHfCdv38DfXLHs="; })
+  (fetchNuGet { pname = "runtime.linux-x64.runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-4mWwtWON7YV4zK1r8n6s6HChN5EOHO+WD/r2bfF3SGs="; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="; })
+  (fetchNuGet { pname = "runtime.native.System.Data.SqlClient.sni"; version = "4.7.0"; hash = "sha256-cj0+BpmoibwOWj2wNXwONJeTGosmFwhD349zPjNaBK0="; })
+  (fetchNuGet { pname = "runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-fNAW4rlnR+dP+1NkmgNwwYowviSo0wDJBt/hqAT5iFo="; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="; })
+  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="; })
+  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="; })
+  (fetchNuGet { pname = "runtime.osx-arm64.runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-hbMoq9BLIuRgvDzQt2+CNFvf1+6OOe6//OTRlBjnmoQ="; })
+  (fetchNuGet { pname = "runtime.osx-x64.runtime.native.System.IO.Ports"; version = "6.0.0"; hash = "sha256-m4+ViGRSXvqCdJaYFwQijwr7wZiTuuImzVj1IG+4kc8="; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="; })
+  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="; })
+  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="; })
+  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="; })
+  (fetchNuGet { pname = "runtime.unix.System.IO.FileSystem"; version = "4.3.0"; hash = "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I="; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="; })
+  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="; })
+  (fetchNuGet { pname = "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; hash = "sha256-8xGiqk5g4kM79//SirozmDtDpqwVXH3CmvIs7GNwfh0="; })
+  (fetchNuGet { pname = "runtime.win-x64.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; hash = "sha256-HoXKGBkue0RJT1SZxAliVmT5rbfU3xD8mH8hfCvRxwQ="; })
+  (fetchNuGet { pname = "runtime.win-x86.runtime.native.System.Data.SqlClient.sni"; version = "4.4.0"; hash = "sha256-jPnWzDcbufO51GLGjynWHy0b+5PBqNxM+VKmSrObeUw="; })
+  (fetchNuGet { pname = "Sarif.Sdk"; version = "4.5.4"; hash = "sha256-XHzRVA4rymiskk+WMtKMv1Vj0vU9g/RET0TiZrHJgi8="; })
+  (fetchNuGet { pname = "Semver"; version = "2.3.0"; hash = "sha256-77/J/w41PLEMIxA5Uj475TeReBGw8QwptQsbQDtdsMI="; })
+  (fetchNuGet { pname = "SharpYaml"; version = "2.1.1"; hash = "sha256-KSs7993j0VJxSDx/VpruMQFnnjP4CzvzPLlIfDEwOpw="; })
+  (fetchNuGet { pname = "Sprache.StrongNamed"; version = "2.3.2"; hash = "sha256-q6G1Y1/oellt0ABex7UQZdc0ACEBKFT6Ah+mNIHWyVw="; })
+  (fetchNuGet { pname = "StreamJsonRpc"; version = "2.18.48"; hash = "sha256-/vjpwKMFoJfSf+uKEjmWzW/HdIfDGMLb7el91ni6gFQ="; })
+  (fetchNuGet { pname = "System.Buffers"; version = "4.3.0"; hash = "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="; })
+  (fetchNuGet { pname = "System.ClientModel"; version = "1.0.0"; hash = "sha256-yHb72M/Z8LeSZea9TKw2eD0SdYEoCNwVw6Z3695SC2Y="; })
+  (fetchNuGet { pname = "System.CodeDom"; version = "6.0.0"; hash = "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.0.11"; hash = "sha256-puoFMkx4Z55C1XPxNw3np8nzNGjH+G24j43yTIsDRL0="; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; hash = "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "1.6.0"; hash = "sha256-gnu+8nN48GAd4GRgeB5cAQmW7VnCubL/8h7zO377fd0="; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; hash = "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8="; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "7.0.0"; hash = "sha256-9an2wbxue2qrtugYES9awshQg+KfJqajhnhs45kQIdk="; })
+  (fetchNuGet { pname = "System.ComponentModel.Composition"; version = "6.0.0"; hash = "sha256-7JyYbqWl1NHTNMJW12g6TtYfkemI52nOnX7OHWvp7ps="; })
+  (fetchNuGet { pname = "System.ComponentModel.Composition.Registration"; version = "6.0.0"; hash = "sha256-NOw9ZLTBGBwQoHk8P6yIH1f+WoU3fSfm+jNrTQVZZdM="; })
+  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "4.4.0"; hash = "sha256-+8wGYllXnIxRzy9dLhZFB88GoPj8ivYXS0KUfcivT8I="; })
+  (fetchNuGet { pname = "System.Configuration.ConfigurationManager"; version = "6.0.1"; hash = "sha256-U/0HyekAZK5ya2VNfGA1HeuQyJChoaqcoIv57xLpzLQ="; })
+  (fetchNuGet { pname = "System.Data.Odbc"; version = "6.0.1"; hash = "sha256-pNMxoZsQmzpCD4hs3m4y3OrSgo3deVrWCusVb/p36Yk="; })
+  (fetchNuGet { pname = "System.Data.OleDb"; version = "6.0.0"; hash = "sha256-/257N3mNP7xY+c40F5XPQ4CYPSqhuV9mlnmEeTg2bjE="; })
+  (fetchNuGet { pname = "System.Data.SqlClient"; version = "4.8.6"; hash = "sha256-Qc/yco3e0+6jP8UiMA0ERlfSEKdINv0BmHixh9Z8fJQ="; })
+  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "5.0.0"; hash = "sha256-6mW3N6FvcdNH/pB58pl+pFSCGWgyaP4hfVtC/SMWDV4="; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "5.0.1"; hash = "sha256-GhsDHdSohoMBfYcCsEZN+Frfc8zH6rSovvugqjkh/Fc="; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "6.0.1"; hash = "sha256-Xi8wrUjVlioz//TPQjFHqcV/QGhTqnTfUcltsNlcCJ4="; })
+  (fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "8.0.0"; hash = "sha256-+aODaDEQMqla5RYZeq0Lh66j+xkPYxykrVvSCmJQ+Vs="; })
+  (fetchNuGet { pname = "System.Diagnostics.EventLog"; version = "6.0.0"; hash = "sha256-zUXIQtAFKbiUMKCrXzO4mOTD5EUphZzghBYKXprowSM="; })
+  (fetchNuGet { pname = "System.Diagnostics.PerformanceCounter"; version = "6.0.1"; hash = "sha256-53t07yyRBb6sC4e3IjTp5fj44+p6JpX2zpr5/Bbf5Z4="; })
+  (fetchNuGet { pname = "System.Diagnostics.Tools"; version = "4.0.1"; hash = "sha256-vSBqTbmWXylvRa37aWyktym+gOpsvH43mwr6A962k6U="; })
+  (fetchNuGet { pname = "System.Diagnostics.Tracing"; version = "4.3.0"; hash = "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q="; })
+  (fetchNuGet { pname = "System.DirectoryServices"; version = "6.0.1"; hash = "sha256-Kg09fYW1EuZ09KoUY52qZd32MUph32Vvr4rkiv+KS50="; })
+  (fetchNuGet { pname = "System.DirectoryServices.AccountManagement"; version = "6.0.0"; hash = "sha256-1mVZ+izamVxMDV+vMyLE1WQajC0TSYSBblfqT5xWdcM="; })
+  (fetchNuGet { pname = "System.DirectoryServices.Protocols"; version = "6.0.2"; hash = "sha256-+4r7bz3FmNhaA6wObVlN/UdGNiZvxl8Mr0sc7ZF6xX8="; })
+  (fetchNuGet { pname = "System.Drawing.Common"; version = "6.0.0"; hash = "sha256-/9EaAbEeOjELRSMZaImS1O8FmUe8j4WuFUw1VOrPyAo="; })
+  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.0.11"; hash = "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4="; })
+  (fetchNuGet { pname = "System.Formats.Asn1"; version = "6.0.0"; hash = "sha256-KaMHgIRBF7Nf3VwOo+gJS1DcD+41cJDPWFh+TDQ8ee8="; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.0.11"; hash = "sha256-rbSgc2PIEc2c2rN6LK3qCREAX3DqA2Nq1WcLrZYsDBw="; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; hash = "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="; })
+  (fetchNuGet { pname = "System.IO"; version = "4.1.0"; hash = "sha256-V6oyQFwWb8NvGxAwvzWnhPxy9dKOfj/XBM3tEC5aHrw="; })
+  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; hash = "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="; })
+  (fetchNuGet { pname = "System.IO.Abstractions"; version = "21.0.22"; hash = "sha256-UTdB/kD39zeXjUxdgQbXSxS/yyzDtc2rLre2+pLoQWk="; })
+  (fetchNuGet { pname = "System.IO.FileSystem"; version = "4.0.1"; hash = "sha256-4VKXFgcGYCTWVXjAlniAVq0dO3o5s8KHylg2wg2/7k0="; })
+  (fetchNuGet { pname = "System.IO.FileSystem.Primitives"; version = "4.3.0"; hash = "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg="; })
+  (fetchNuGet { pname = "System.IO.Packaging"; version = "6.0.0"; hash = "sha256-TKnqKh34uSkPSeideZXrVqnZ5a0Yu5jDgZswKSbAVoQ="; })
+  (fetchNuGet { pname = "System.IO.Pipelines"; version = "7.0.0"; hash = "sha256-W2181khfJUTxLqhuAVRhCa52xZ3+ePGOLIPwEN8WisY="; })
+  (fetchNuGet { pname = "System.IO.Ports"; version = "6.0.0"; hash = "sha256-AqCYJwPsLkZqEBX7y3sfnrNSvwQnKM7BEl53sY7dDyw="; })
+  (fetchNuGet { pname = "System.Linq"; version = "4.1.0"; hash = "sha256-ZQpFtYw5N1F1aX0jUK3Tw+XvM5tnlnshkTCNtfVA794="; })
+  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; hash = "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="; })
+  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.1.0"; hash = "sha256-7zqB+FXgkvhtlBzpcZyd81xczWP0D3uWssyAGw3t7b4="; })
+  (fetchNuGet { pname = "System.Management"; version = "6.0.2"; hash = "sha256-8l3Gyx/cn42ovS4q/ID4zSltJoL/pe0B/LUVD17tC6Q="; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; hash = "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E="; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; hash = "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="; })
+  (fetchNuGet { pname = "System.Memory.Data"; version = "1.0.2"; hash = "sha256-XiVrVQZQIz4NgjiK/wtH8iZhhOZ9MJ+X2hL2/8BrGN0="; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; hash = "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8="; })
+  (fetchNuGet { pname = "System.ObjectModel"; version = "4.0.12"; hash = "sha256-MudZ/KYcvYsn2cST3EE049mLikrNkmE7QoUoYKKby+s="; })
+  (fetchNuGet { pname = "System.Private.ServiceModel"; version = "4.9.0"; hash = "sha256-AbJKAZzZDxKVXm5761XE+nhlkiDqX9eb6+Y9d4Hq+4Q="; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.2"; hash = "sha256-jB2+W3tTQ6D9XHy5sEFMAazIe1fu2jrENUO0cb48OgU="; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.1.0"; hash = "sha256-idZHGH2Yl/hha1CM4VzLhsaR8Ljo/rV7TYe7mwRJSMs="; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; hash = "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="; })
+  (fetchNuGet { pname = "System.Reflection.Context"; version = "6.0.0"; hash = "sha256-sjTVjnHJ0JntjjMXnefz7e6v25M9gAKUqioJMkhYw+8="; })
+  (fetchNuGet { pname = "System.Reflection.DispatchProxy"; version = "4.7.1"; hash = "sha256-Oi+l32p73ZxwcB6GrSS2m25BccfpuwbY4eyFEwUe0IM="; })
+  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.0.1"; hash = "sha256-F1MvYoQWHCY89/O4JBwswogitqVvKuVfILFqA7dmuHk="; })
+  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.0.1"; hash = "sha256-YG+eJBG5P+5adsHiw/lhJwvREnvdHw6CJyS8ZV4Ujd0="; })
+  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.0.1"; hash = "sha256-uVvNOnL64CPqsgZP2OLqNmxdkZl6Q0fTmKmv9gcBi+g="; })
+  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.7.0"; hash = "sha256-V0Wz/UUoNIHdTGS9e1TR89u58zJjo/wPUWw6VaVyclU="; })
+  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.0.1"; hash = "sha256-NsfmzM9G/sN3H8X2cdnheTGRsh7zbRzvegnjDzDH/FQ="; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; hash = "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.0.1"; hash = "sha256-SFSfpWEyCBMAOerrMCOiKnpT+UAWTvRcmoRquJR6Vq0="; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="; })
+  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.1.0"; hash = "sha256-R0YZowmFda+xzKNR4kKg7neFoE30KfZwp/IwfRSKVK4="; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.0.1"; hash = "sha256-cZ2/3/fczLjEpn6j3xkgQV9ouOVjy4Kisgw5xWw9kSw="; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.1.0"; hash = "sha256-FViNGM/4oWtlP6w0JC0vJU+k9efLKZ+yaXrnEeabDQo="; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; hash = "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.1"; hash = "sha256-R9T68AzS1PJJ7v6ARz9vo88pKL1dWqLOANg4pkQjkA0="; })
+  (fetchNuGet { pname = "System.Runtime.Caching"; version = "6.0.0"; hash = "sha256-CpjpZoc6pdE83QPAGYzpBYQAZiAiqyrgiMQvdo5CCXI="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.5.2"; hash = "sha256-8eUXXGWO2LL7uATMZye2iCpQOETn2jCcjUhG6coR5O8="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; hash = "sha256-neARSpLPUzPxEKhJRwoBzhPxK+cKIitLx7WBYncsYgo="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; hash = "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.1.0"; hash = "sha256-X7DZ5CbPY7jHs20YZ7bmcXs9B5Mxptu/HnBUvUnNhGc="; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.0.1"; hash = "sha256-j2QgVO9ZOjv7D1het98CoFpjoYgxjupuIhuBUmLLH7w="; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.1.0"; hash = "sha256-QceAYlJvkPRJc/+5jR+wQpNNI3aqGySWWSO30e/FfQY="; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="; })
+  (fetchNuGet { pname = "System.Runtime.Serialization.Primitives"; version = "4.1.1"; hash = "sha256-80B05oxJbPLGq2pGOSl6NlZvintX9A1CNpna2aN0WRA="; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.7.0"; hash = "sha256-/9ZCPIHLdhzq7OW4UKqTsR0O93jjHd6BRG1SRwgHE1g="; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "5.0.0"; hash = "sha256-ueSG+Yn82evxyGBnE49N4D+ngODDXgornlBtQ3Omw54="; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "6.0.0"; hash = "sha256-qOyWEBbNr3EjyS+etFG8/zMbuPjA+O+di717JP9Cxyg="; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Pkcs"; version = "6.0.4"; hash = "sha256-2e0aRybote+OR66bHaNiYpF//4fCiaO3zbR2e9GABUI="; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.4.0"; hash = "sha256-Ri53QmFX8I8UH0x4PikQ1ZA07ZSnBUXStd5rBfGWFOE="; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "4.7.0"; hash = "sha256-dZfs5q3Ij1W1eJCfYjxI2o+41aSiFpaAugpoECaCOug="; })
+  (fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "6.0.0"; hash = "sha256-Wi9I9NbZlpQDXgS7Kl06RIFxY/9674S7hKiYw5EabRY="; })
+  (fetchNuGet { pname = "System.Security.Cryptography.Xml"; version = "6.0.1"; hash = "sha256-spXV8cWZu0V3liek1936REtdpvS4fQwc98JvacO1oJU="; })
+  (fetchNuGet { pname = "System.Security.Permissions"; version = "6.0.0"; hash = "sha256-/MMvtFWGN/vOQfjXdOhet1gsnMgh6lh5DCHimVsnVEs="; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.7.0"; hash = "sha256-rWBM2U8Kq3rEdaa1MPZSYOOkbtMGgWyB8iPrpIqmpqg="; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "5.0.0"; hash = "sha256-CBOQwl9veFkrKK2oU8JFFEiKIh/p+aJO+q9Tc2Q/89Y="; })
+  (fetchNuGet { pname = "System.ServiceModel.Duplex"; version = "4.9.0"; hash = "sha256-Ec/AxpAd5CP9Y4uJIOzYi9jNrdvvepVHVr/s/i67i0s="; })
+  (fetchNuGet { pname = "System.ServiceModel.Http"; version = "4.9.0"; hash = "sha256-t7C7CJuimhRMQN1SEIBmdhkEBEDF0Ml6A3d7UCqArNs="; })
+  (fetchNuGet { pname = "System.ServiceModel.NetTcp"; version = "4.9.0"; hash = "sha256-76M/chPAFJDArTn/20+odmCsrRJkldpQH9Ia16dzhxo="; })
+  (fetchNuGet { pname = "System.ServiceModel.Primitives"; version = "4.9.0"; hash = "sha256-DguxLLRrYNn99rYxCGIljZTdZqrVC+VxJNahkFUy9NM="; })
+  (fetchNuGet { pname = "System.ServiceModel.Security"; version = "4.9.0"; hash = "sha256-/NbFeKFxElLOGxdTDcBQ9JRzkA+QAozm0DL8DMOAIio="; })
+  (fetchNuGet { pname = "System.ServiceModel.Syndication"; version = "6.0.0"; hash = "sha256-SSQeFHCJTrmisiqSpx3Zh/NplE05aT8zdAaWZgtsYfY="; })
+  (fetchNuGet { pname = "System.ServiceProcess.ServiceController"; version = "6.0.1"; hash = "sha256-ZYf+7ln6IlrSZHnoFvZyootRMsLqcUaZduJnh6mz25Y="; })
+  (fetchNuGet { pname = "System.Speech"; version = "6.0.0"; hash = "sha256-24QfNtZZ49aJ2WAdqcysAzFonRcw+0SJ76knFM4B67w="; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.0.11"; hash = "sha256-PEailOvG05CVgPTyKLtpAgRydlSHmtd5K0Y8GSHY2Lc="; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; hash = "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.3.0"; hash = "sha256-ezYVwe9atRkREc8O/HT/VfGDE2vuCpIckOfdY194/VE="; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "6.0.0"; hash = "sha256-nGc2A6XYnwqGcq8rfgTRjGr+voISxNe/76k2K36coj4="; })
+  (fetchNuGet { pname = "System.Text.Encoding.Extensions"; version = "4.3.0"; hash = "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc="; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "4.7.2"; hash = "sha256-CUZOulSeRy1CGBm7mrNrTumA9od9peKiIDR/Nb1B4io="; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "7.0.0"; hash = "sha256-tF8qt9GZh/nPy0mEnj6nKLG4Lldpoi/D8xM5lv2CoYQ="; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "8.0.0"; hash = "sha256-IUQkQkV9po1LC0QsqrilqwNzPvnc+4eVvq+hCvq8fvE="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "4.7.2"; hash = "sha256-xA8PZwxX9iOJvPbfdi7LWjM2RMVJ7hmtEqS9JvgNsoM="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "7.0.3"; hash = "sha256-aSJZ17MjqaZNQkprfxm/09LaCoFtpdWmqU9BTROzWX4="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "8.0.0"; hash = "sha256-XFcCHMW1u2/WujlWNHaIWkbW1wn8W4kI0QdrwPtWmow="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "8.0.2"; hash = "sha256-uQQPCGRYKMUykb7dhg60YKPTXbjM8X01xmTYev1sId4="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "8.0.4"; hash = "sha256-g5oT7fbXxQ9Iah1nMCr4UUX/a2l+EVjJyTrw3FTbIaI="; })
+  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.1.0"; hash = "sha256-x6OQN6MCN7S0fJ6EFTfv4rczdUWjwuWE9QQ0P6fbh9c="; })
+  (fetchNuGet { pname = "System.Text.RegularExpressions"; version = "4.3.1"; hash = "sha256-DxsEZ0nnPozyC1W164yrMUXwnAdHShS9En7ImD/GJMM="; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.0.11"; hash = "sha256-mob1Zv3qLQhQ1/xOLXZmYqpniNUMCfn02n8ZkaAhqac="; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; hash = "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="; })
+  (fetchNuGet { pname = "System.Threading.AccessControl"; version = "6.0.0"; hash = "sha256-ZkoQVA9cLa/du8FCVonnHy/R/t6ms6BG+NiTlFA3A7g="; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.0.11"; hash = "sha256-5SLxzFg1df6bTm2t09xeI01wa5qQglqUwwJNlQPJIVs="; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Dataflow"; version = "7.0.0"; hash = "sha256-KTeMhCWcyYEwG7EkA0VkVvHwo0B2FBs5FpjW3BFNVUE="; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.0.0"; hash = "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE="; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; hash = "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng="; })
+  (fetchNuGet { pname = "System.Web.Services.Description"; version = "4.9.0"; hash = "sha256-cGLlUp+ue7PVrs6Gg6T3KfUQ0OuHr8DdJd8agaSeySE="; })
+  (fetchNuGet { pname = "System.Windows.Extensions"; version = "6.0.0"; hash = "sha256-N+qg1E6FDJ9A9L50wmVt3xPQV8ZxlG1xeXgFuxO+yfM="; })
+  (fetchNuGet { pname = "System.Xml.ReaderWriter"; version = "4.0.11"; hash = "sha256-haZAFFQ9Sl2DhfvEbdx2YRqKEoxNMU5STaqpMmXw0zA="; })
+  (fetchNuGet { pname = "System.Xml.XDocument"; version = "4.0.11"; hash = "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg="; })
+  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions"; version = "21.0.22"; hash = "sha256-900+hyDm/wCd7iD5hnPJue/In/ZcA3NlGNk9kHWLoX0="; })
+  (fetchNuGet { pname = "TestableIO.System.IO.Abstractions.Wrappers"; version = "21.0.22"; hash = "sha256-xDe16iGy2i0SyYnlauFxZMTUx44PM+kas+jRtagDV50="; })
 ]
diff --git a/pkgs/by-name/bi/bicep/package.nix b/pkgs/by-name/bi/bicep/package.nix
index 20763b9524b6..d8246c545890 100644
--- a/pkgs/by-name/bi/bicep/package.nix
+++ b/pkgs/by-name/bi/bicep/package.nix
@@ -9,13 +9,13 @@
 
 buildDotnetModule rec {
   pname = "bicep";
-  version = "0.28.1";
+  version = "0.29.47";
 
   src = fetchFromGitHub {
     owner = "Azure";
     repo = "bicep";
     rev = "v${version}";
-    hash = "sha256-9yWfzYrs7LxVmb+AZUI+G0TQQteJP7gpISJGdY0qKAg=";
+    hash = "sha256-KdaoOejoM/3P1WwDCjDhChOpKA7c4UulPLK7IOVw3o4=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/bi/bitmagnet/package.nix b/pkgs/by-name/bi/bitmagnet/package.nix
index 15d9d7c012cc..dfeb7b31e86c 100644
--- a/pkgs/by-name/bi/bitmagnet/package.nix
+++ b/pkgs/by-name/bi/bitmagnet/package.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "bitmagnet";
-  version = "0.9.4";
+  version = "0.9.5";
 
   src = fetchFromGitHub {
     owner = "bitmagnet-io";
     repo = "bitmagnet";
     rev = "v${version}";
-    hash = "sha256-IUWt6CBW2SXE6lc52ArKrmW+7uR1vczfbx4SOeE30IA=";
+    hash = "sha256-so9GD9hyGfuqqYq61OD1WJXba22cR4msOPp1wLI5vAU=";
   };
 
   vendorHash = "sha256-aauXgHPZbSiTW9utuHXzJr7GsWs/2aFiGuukA/B9BRc=";
diff --git a/pkgs/by-name/bi/bitwarden-cli/package.nix b/pkgs/by-name/bi/bitwarden-cli/package.nix
index b1879dce4797..b001e22adda6 100644
--- a/pkgs/by-name/bi/bitwarden-cli/package.nix
+++ b/pkgs/by-name/bi/bitwarden-cli/package.nix
@@ -4,7 +4,7 @@
 , nodejs_20
 , fetchFromGitHub
 , python311
-, darwin
+, cctools
 , nixosTests
 , xcbuild
 }:
@@ -27,7 +27,7 @@ buildNpmPackage rec {
   nativeBuildInputs = [
     python311
   ] ++ lib.optionals stdenv.isDarwin [
-    darwin.cctools
+    cctools
     xcbuild.xcrun
   ];
 
diff --git a/pkgs/by-name/bl/blanket/package.nix b/pkgs/by-name/bl/blanket/package.nix
index 6171cf0f88c7..72cb5c8faa65 100644
--- a/pkgs/by-name/bl/blanket/package.nix
+++ b/pkgs/by-name/bl/blanket/package.nix
@@ -7,7 +7,6 @@
   wrapGAppsHook4,
   blueprint-compiler,
   desktop-file-utils,
-  appstream-glib,
   python3Packages,
   glib,
   gtk4,
diff --git a/pkgs/by-name/bl/bluez/package.nix b/pkgs/by-name/bl/bluez/package.nix
index 454d677d907f..1a459bba189b 100644
--- a/pkgs/by-name/bl/bluez/package.nix
+++ b/pkgs/by-name/bl/bluez/package.nix
@@ -5,6 +5,7 @@
 , docutils
 , ell
 , enableExperimental ? false
+, fetchpatch
 , fetchurl
 , glib
 , json_c
@@ -18,17 +19,23 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "bluez";
-  version = "5.75";
+  version = "5.76";
 
   src = fetchurl {
     url = "mirror://kernel/linux/bluetooth/bluez-${finalAttrs.version}.tar.xz";
-    hash = "sha256-mIyzxFUfbjpmdwilePXKn5P8iWUI+Y8IcJvk+KsDPC8=";
+    hash = "sha256-VeLGRZCa2C2DPELOhewgQ04O8AcJQbHqtz+s3SQLvWM=";
   };
 
-  patches =
+  patches = [
+    # hog-lib: Fix passing wrong parameters to bt_uhid_get_report_reply
+    (fetchpatch {
+      url = "https://github.com/bluez/bluez/commit/5ebaeab4164f80539904b9a520d9b7a8307e06e2.patch";
+      hash = "sha256-f1A8DmRPfm+zid4XMj1zsfcLZ0WTEax3YPbydKZF9RE=";
+    })
+  ]
     # Disable one failing test with musl libc, also seen by alpine
     # https://github.com/bluez/bluez/issues/726
-    lib.optional (stdenv.hostPlatform.isMusl && stdenv.hostPlatform.isx86_64)
+    ++ lib.optional (stdenv.hostPlatform.isMusl && stdenv.hostPlatform.isx86_64)
       (fetchurl {
         url = "https://git.alpinelinux.org/aports/plain/main/bluez/disable_aics_unit_testcases.patch?id=8e96f7faf01a45f0ad8449c1cd825db63a8dfd48";
         hash = "sha256-1PJkipqBO3qxxOqRFQKfpWlne1kzTCgtnTFYI1cFQt4=";
diff --git a/pkgs/by-name/bo/boilr/package.nix b/pkgs/by-name/bo/boilr/package.nix
index 381fcd1617a4..d7e95b5a8bf9 100644
--- a/pkgs/by-name/bo/boilr/package.nix
+++ b/pkgs/by-name/bo/boilr/package.nix
@@ -7,14 +7,14 @@
 , xorg
 , perl
 , openssl
-, speechd
+, speechd-minimal
 , libxkbcommon
 , libGL
 , wayland
 }:
 let
   rpathLibs = [
-    speechd
+    speechd-minimal
     openssl
     gtk3
     libxkbcommon
diff --git a/pkgs/by-name/bo/bonsai/package.nix b/pkgs/by-name/bo/bonsai/package.nix
index 98b19be7e6fc..186c77f6c81c 100644
--- a/pkgs/by-name/bo/bonsai/package.nix
+++ b/pkgs/by-name/bo/bonsai/package.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "bonsai";
-  version = "1.1.0";
+  version = "1.2.0";
 
   src = fetchFromSourcehut {
     owner = "~stacyharper";
     repo = "bonsai";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-Wsr76OQOIqRPCx/8GK9NovxxPZ3dEP8pSo8wgMK1Hfo=";
+    hash = "sha256-Ggk+OKaRE+kVa8/ij3znuY3b0dT2F5F1CSse4l0MAA8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/bo/boogie/package.nix b/pkgs/by-name/bo/boogie/package.nix
index ce5d84983294..528e62179eb0 100644
--- a/pkgs/by-name/bo/boogie/package.nix
+++ b/pkgs/by-name/bo/boogie/package.nix
@@ -2,13 +2,13 @@
 
 buildDotnetModule rec {
   pname = "Boogie";
-  version = "3.2.0";
+  version = "3.2.1";
 
   src = fetchFromGitHub {
     owner = "boogie-org";
     repo = "boogie";
     rev = "v${version}";
-    sha256 = "sha256-3+9zOoKk8IdqkxoMzjZofizyx+294mer3t6illXUr2M=";
+    sha256 = "sha256-89S3yBjEUHbQbuWWLe/pTMaDOCqDR04hNJwIRzh5xaI=";
   };
 
   projectFile = [ "Source/Boogie.sln" ];
diff --git a/pkgs/by-name/br/bruno/package.nix b/pkgs/by-name/br/bruno/package.nix
index 0bcf2fdc7bad..751dc2fbc74c 100644
--- a/pkgs/by-name/br/bruno/package.nix
+++ b/pkgs/by-name/br/bruno/package.nix
@@ -28,20 +28,20 @@ let
 in
 buildNpmPackage' rec {
   pname = "bruno";
-  version = "1.21.0";
+  version = "1.22.0";
 
   src = fetchFromGitHub {
     owner = "usebruno";
     repo = "bruno";
     rev = "v${version}";
-    hash = "sha256-k8pRSAQpE//qH7XRjSTXmxundgK5dmOQTRKP9D2RUdY=";
+    hash = "sha256-RcMmW1+XbQSVeaYnK7y8/WdQLYOIozyt9OCDAsSZ3HU=";
 
     postFetch = ''
       ${lib.getExe npm-lockfile-fix} $out/package-lock.json
     '';
   };
 
-  npmDepsHash = "sha256-aw4jOvlfZHCRrgoXT69XrMYe40YXULrfbVG1pQAFGr4=";
+  npmDepsHash = "sha256-157hm7h5FWuOuxoo6WTtlMPq5LcRZIsSt5NDg0pvim8=";
   npmFlags = [ "--legacy-peer-deps" ];
 
   nativeBuildInputs = [
@@ -73,11 +73,6 @@ buildNpmPackage' rec {
     })
   ];
 
-  patches = [
-    # Workaround to fix css issue in bruno due to electron difference between Nix and mainstream. https://github.com/NixOS/nixpkgs/issues/324176
-    ./scroll-width-fix.patch
-  ];
-
   postPatch = ''
     substituteInPlace scripts/build-electron.sh \
       --replace-fail 'if [ "$1" == "snap" ]; then' 'exit 0; if [ "$1" == "snap" ]; then'
@@ -156,7 +151,7 @@ buildNpmPackage' rec {
   meta = with lib; {
     description = "Open-source IDE For exploring and testing APIs";
     homepage = "https://www.usebruno.com";
-    inherit (electron.meta) platforms;
+    platforms = platforms.linux ++ platforms.darwin;
     license = licenses.mit;
     maintainers = with maintainers; [ gepbird kashw2 lucasew mattpolzin water-sucks redyf ];
     mainProgram = "bruno";
diff --git a/pkgs/by-name/br/bruno/scroll-width-fix.patch b/pkgs/by-name/br/bruno/scroll-width-fix.patch
deleted file mode 100644
index e2a0326d1714..000000000000
--- a/pkgs/by-name/br/bruno/scroll-width-fix.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/packages/bruno-app/src/globalStyles.js b/packages/bruno-app/src/globalStyles.js
-index c2b16781..936449ed 100644
---- a/packages/bruno-app/src/globalStyles.js
-+++ b/packages/bruno-app/src/globalStyles.js
-@@ -163,32 +163,6 @@ const GlobalStyle = createGlobalStyle`
-   }
- 
- 
--  // scrollbar styling
--  // the below media query target non-macos devices
--  // (macos scrollbar styling is the ideal style reference)
--  @media not all and (pointer: coarse) {
--    * {
--      scrollbar-width: thin;
--      scrollbar-color: ${(props) => props.theme.scrollbar.color};
--    }
--    
--    *::-webkit-scrollbar {
--      width: 5px;
--    }
--    
--    *::-webkit-scrollbar-track {
--      background: transparent;
--      border-radius: 5px;
--    }
--    
--    *::-webkit-scrollbar-thumb {
--      background-color: ${(props) => props.theme.scrollbar.color};
--      border-radius: 14px;
--      border: 3px solid ${(props) => props.theme.scrollbar.color};
--    }
--  }
--
--
-   // codemirror
-   .CodeMirror {
-     .cm-variable-valid {
diff --git a/pkgs/by-name/bs/bsc/package.nix b/pkgs/by-name/bs/bsc/package.nix
new file mode 100644
index 000000000000..48a1c8f994de
--- /dev/null
+++ b/pkgs/by-name/bs/bsc/package.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  llvmPackages,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "bsc";
+  version = "3.3.4";
+
+  src = fetchFromGitHub {
+    owner = "IlyaGrebnov";
+    repo = "libbsc";
+    rev = "refs/tags/v${finalAttrs.version}";
+    sha256 = "sha256-reGg5xvoZBbNFFYPPyT2P1LA7oSCUIm9NIDjXyvkP9Q=";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = lib.optional stdenv.isDarwin llvmPackages.openmp;
+
+  makeFlags = [
+    "CC=$(CXX)"
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  meta = with lib; {
+    description = "High performance block-sorting data compression library";
+    homepage = "http://libbsc.com/";
+    maintainers = with maintainers; [ sigmanificient ];
+    license = lib.licenses.asl20;
+    platforms = platforms.unix;
+    mainProgram = "bsc";
+  };
+})
diff --git a/pkgs/by-name/bt/bt-migrate/package.nix b/pkgs/by-name/bt/bt-migrate/package.nix
index 289e15960c0f..26701d1dc4f2 100644
--- a/pkgs/by-name/bt/bt-migrate/package.nix
+++ b/pkgs/by-name/bt/bt-migrate/package.nix
@@ -7,7 +7,6 @@
 , fmt
 , jsoncons
 , pugixml
-, sqlite
 , sqlite_orm
 , stdenv
 }:
diff --git a/pkgs/by-name/bu/budgie-analogue-clock-applet/package.nix b/pkgs/by-name/bu/budgie-analogue-clock-applet/package.nix
index ebc2947a4e5b..fe3c54487f6d 100644
--- a/pkgs/by-name/bu/budgie-analogue-clock-applet/package.nix
+++ b/pkgs/by-name/bu/budgie-analogue-clock-applet/package.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "budgie-analogue-clock-applet";
-  version = "2.0";
+  version = "2.1";
 
   src = fetchFromGitHub {
     owner = "samlane-ma";
     repo = "analogue-clock-applet";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-yId5bbdmELinBmZ5eISa5hQSYkeZCkix2FJ287GdcCs=";
+    hash = "sha256-NvXX5paRrjeJFqnOeJS9yNp+7cRohsN3+eocLqvcVj8=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ca/caido/package.nix b/pkgs/by-name/ca/caido/package.nix
index a9cfb7d460d8..97d3d5b99d3c 100644
--- a/pkgs/by-name/ca/caido/package.nix
+++ b/pkgs/by-name/ca/caido/package.nix
@@ -1,40 +1,92 @@
-{ lib
-, fetchurl
-, appimageTools
-, makeWrapper
+{
+  lib,
+  stdenv,
+  fetchurl,
+  appimageTools,
+  makeWrapper,
+  autoPatchelfHook,
+  libgcc,
+  appVariants ? [ ],
 }:
 
 let
   pname = "caido";
-  version = "0.33.0";
-  src = fetchurl {
+  appVariantList = [
+    "cli"
+    "desktop"
+  ];
+  version = "0.39.0";
+  cli = fetchurl {
+    url = "https://storage.googleapis.com/caido-releases/v${version}/caido-cli-v${version}-linux-x86_64.tar.gz";
+    hash = "sha256-I8UF2rzIKfpcrxyvDa4AReWDIHOKTCj3ERaWhG1xGG0=";
+  };
+  desktop = fetchurl {
     url = "https://storage.googleapis.com/caido-releases/v${version}/caido-desktop-v${version}-linux-x86_64.AppImage";
-    hash = "sha256-MUQ1tVcIpLrC2RKsWDqv8MBGaHfh56OxIC/ARArQjiU=";
+    hash = "sha256-KYQck2+YYPLJN3L6qchacjyVyyXR3nmJDTX5GPB4WvI=";
+  };
+  appimageContents = appimageTools.extractType2 {
+    inherit pname version;
+    src = desktop;
+  };
+
+  wrappedDesktop = appimageTools.wrapType2 {
+    src = desktop;
+    inherit pname version;
+
+    extraPkgs = pkgs: [ pkgs.libthai ];
+
+    extraInstallCommands = ''
+      install -m 444 -D ${appimageContents}/caido.desktop -t $out/share/applications
+      install -m 444 -D ${appimageContents}/caido.png \
+        $out/share/icons/hicolor/512x512/apps/caido.png
+      source "${makeWrapper}/nix-support/setup-hook"
+      wrapProgram $out/bin/caido \
+        --set WEBKIT_DISABLE_COMPOSITING_MODE 1
+    '';
   };
-  appimageContents = appimageTools.extractType2 { inherit pname src version; };
 
-in appimageTools.wrapType2 {
-  inherit pname src version;
+  wrappedCli = stdenv.mkDerivation {
+    src = cli;
+    inherit pname version;
+
+    nativeBuildInputs = [ autoPatchelfHook ];
 
-  extraPkgs = pkgs: [ pkgs.libthai ];
+    buildInputs = [ libgcc ];
 
-  extraInstallCommands = ''
-    install -m 444 -D ${appimageContents}/caido.desktop -t $out/share/applications
-    install -m 444 -D ${appimageContents}/caido.png \
-      $out/share/icons/hicolor/512x512/apps/caido.png
-    source "${makeWrapper}/nix-support/setup-hook"
-    wrapProgram $out/bin/${pname} \
-      --set WEBKIT_DISABLE_COMPOSITING_MODE 1
-  '';
+    sourceRoot = ".";
 
-  meta = with lib; {
+    installPhase = ''
+      runHook preInstall
+      install -m755 -D caido-cli $out/bin/caido-cli
+    '';
+  };
+
+  meta = {
     description = "Lightweight web security auditing toolkit";
     homepage = "https://caido.io/";
     changelog = "https://github.com/caido/caido/releases/tag/v${version}";
-    license = licenses.unfree;
-    maintainers = with maintainers; [ octodi ];
-    mainProgram = "caido";
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license = lib.licenses.unfree;
+    maintainers = with lib.maintainers; [
+      octodi
+      d3vil0p3r
+    ];
     platforms = [ "x86_64-linux" ];
   };
-}
+
+in
+lib.checkListOfEnum "${pname}: appVariants" appVariantList appVariants (
+  if appVariants == [ "desktop" ] then
+    wrappedDesktop
+  else if appVariants == [ "cli" ] then
+    wrappedCli
+  else
+    stdenv.mkDerivation {
+      inherit pname version meta;
+      dontUnpack = true;
+      installPhase = ''
+        mkdir -p $out/bin
+        ln -s ${wrappedDesktop}/bin/caido $out/bin/caido
+        ln -s ${wrappedCli}/bin/caido-cli $out/bin/caido-cli
+      '';
+    }
+)
diff --git a/pkgs/by-name/ca/calibre-web/package.nix b/pkgs/by-name/ca/calibre-web/package.nix
index b2045d0570a3..75da25427c3b 100644
--- a/pkgs/by-name/ca/calibre-web/package.nix
+++ b/pkgs/by-name/ca/calibre-web/package.nix
@@ -36,6 +36,7 @@ python.pkgs.buildPythonApplication rec {
     flask-principal
     flask-wtf
     iso-639
+    jsonschema
     lxml
     pypdf
     python-magic
diff --git a/pkgs/by-name/ca/cameractrls/package.nix b/pkgs/by-name/ca/cameractrls/package.nix
new file mode 100644
index 000000000000..2b715397150c
--- /dev/null
+++ b/pkgs/by-name/ca/cameractrls/package.nix
@@ -0,0 +1,133 @@
+{
+  lib,
+  python3Packages,
+  fetchFromGitHub,
+  glibc,
+  SDL2,
+  libjpeg_turbo,
+  alsa-lib,
+  libspnav,
+  desktop-file-utils,
+  gobject-introspection,
+  wrapGAppsHook3,
+  wrapGAppsHook4,
+  cameractrls-gtk3,
+  cameractrls-gtk4,
+  withGtk ? null,
+}:
+
+assert lib.assertOneOf "'withGtk' in cameractrls" withGtk [
+  3
+  4
+  null
+];
+
+let
+  mainExecutable =
+    "cameractrls" + lib.optionalString (withGtk != null) "gtk" + lib.optionalString (withGtk == 4) "4";
+
+  modulePath = "${placeholder "out"}/${python3Packages.python.sitePackages}/CameraCtrls";
+
+  installExecutables = [
+    "cameractrls"
+    "cameractrlsd"
+    "cameraptzgame"
+    "cameraptzmidi"
+    "cameraptzspnav"
+    "cameraview"
+  ] ++ lib.optionals (withGtk != null) [ mainExecutable ];
+in
+python3Packages.buildPythonApplication rec {
+  pname = "cameractrls";
+  version = "0.6.6";
+  pyproject = false;
+
+  src = fetchFromGitHub {
+    owner = "soyersoyer";
+    repo = "cameractrls";
+    rev = "v${version}";
+    hash = "sha256-QjjLd5L+8Slxc3ywurhsWp1pZ2E1Y7NOdnCV2ZYBlqU=";
+  };
+
+  postPatch = ''
+    substituteInPlace cameractrlsd.py \
+      --replace-fail "ctypes.util.find_library('c')" '"${lib.getLib glibc}/lib/libc.so.6"'
+    substituteInPlace cameraptzgame.py cameraview.py \
+      --replace-fail "ctypes.util.find_library('SDL2-2.0')" '"${lib.getLib SDL2}/lib/libSDL2-2.0.so.0"'
+    substituteInPlace cameraview.py \
+      --replace-fail "ctypes.util.find_library('turbojpeg')" '"${lib.getLib libjpeg_turbo}/lib/libturbojpeg.so"'
+    substituteInPlace cameraptzmidi.py \
+      --replace-fail "ctypes.util.find_library('asound')" '"${lib.getLib alsa-lib}/lib/libasound.so"'
+    substituteInPlace cameraptzspnav.py \
+      --replace-fail "ctypes.util.find_library('spnav')" '"${lib.getLib libspnav}/lib/libspnav.so"'
+  '';
+
+  nativeBuildInputs =
+    lib.optionals (withGtk != null) [
+      desktop-file-utils
+      gobject-introspection
+    ]
+    ++ lib.optionals (withGtk == 3) [ wrapGAppsHook3 ]
+    ++ lib.optionals (withGtk == 4) [ wrapGAppsHook4 ];
+
+  # Only used when withGtk != null
+  dependencies = with python3Packages; [ pygobject3 ];
+
+  installPhase =
+    ''
+      runHook preInstall
+
+      mkdir -p $out/bin
+
+      for file in ${lib.concatStringsSep " " installExecutables}; do
+        install -Dm755 $file.py -t ${modulePath}
+        ln -s ${modulePath}/$file.py $out/bin/$file
+      done
+    ''
+    + lib.optionalString (withGtk != null) ''
+      install -Dm644 pkg/hu.irl.cameractrls.svg -t $out/share/icons/hicolor/scalable/apps
+      install -Dm644 pkg/hu.irl.cameractrls.metainfo.xml -t $out/share/metainfo
+      mkdir -p $out/share/applications
+      desktop-file-install \
+        --dir="$out/share/applications" \
+        --set-key=Exec --set-value="${mainExecutable}" \
+        pkg/hu.irl.cameractrls.desktop
+    ''
+    + ''
+      runHook postInstall
+    '';
+
+  dontWrapGApps = true;
+  dontWrapPythonPrograms = true;
+
+  postFixup = lib.optionalString (withGtk != null) ''
+    wrapPythonPrograms
+    patchPythonScript ${modulePath}/${mainExecutable}.py
+    wrapProgram $out/bin/${mainExecutable} ''${makeWrapperArgs[@]} ''${gappsWrapperArgs[@]}
+  '';
+
+  passthru.tests = {
+    # Also build these packages in ofBorg (defined in top-level/all-packages.nix)
+    inherit cameractrls-gtk3 cameractrls-gtk4;
+  };
+
+  meta = {
+    description = "Camera controls for Linux";
+    longDescription = ''
+      It's a standalone Python CLI and GUI (GTK3, GTK4) and
+      camera Viewer (SDL) to set the camera controls in Linux.
+      It can set the V4L2 controls and it is extendable with
+      the non standard controls. Currently it has a Logitech
+      extension (LED mode, LED frequency, BRIO FoV, Relative
+      Pan/Tilt, PTZ presets), Kiyo Pro extension (HDR, HDR
+      mode, FoV, AF mode, Save), Preset extension (Save and
+      restore controls), Control Restore Daemon (to restore
+      presets at device connection).
+    '';
+    homepage = "https://github.com/soyersoyer/cameractrls";
+    license = lib.licenses.gpl3Plus;
+    mainProgram = mainExecutable;
+    maintainers = with lib.maintainers; [ aleksana ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/ca/cargo-profiler/package.nix b/pkgs/by-name/ca/cargo-profiler/package.nix
index 595bf6d8d032..63b6aa567d89 100644
--- a/pkgs/by-name/ca/cargo-profiler/package.nix
+++ b/pkgs/by-name/ca/cargo-profiler/package.nix
@@ -11,7 +11,7 @@ let
   version = "0.2.0";
   rev = "0a8ab772fd5c0f1579e4847c5d05aa443ffa2bc8";
   sha256 = "sha256-ZRAbvSMrPtgaWy9RwlykQ3iiPxHCMh/tS5p67/4XqqA=";
-  cargoSha256 = "sha256-qt3S6ZcLEP9ZQoP5+kSQdmBlxdMgGUqLszdU7JkFNVI=";
+  cargoHash = "sha256-qt3S6ZcLEP9ZQoP5+kSQdmBlxdMgGUqLszdU7JkFNVI=";
 
   inherit (rustPlatform) buildRustPackage;
 in buildRustPackage rec {
@@ -22,7 +22,7 @@ in buildRustPackage rec {
     repo = pname;
   };
 
-  inherit cargoSha256;
+  inherit cargoHash;
 
   meta = with lib; {
     description = "Cargo subcommand for profiling Rust binaries";
diff --git a/pkgs/by-name/ca/cargo-shear/package.nix b/pkgs/by-name/ca/cargo-shear/package.nix
index 1258e8dc71bd..88b8a4b9fc3a 100644
--- a/pkgs/by-name/ca/cargo-shear/package.nix
+++ b/pkgs/by-name/ca/cargo-shear/package.nix
@@ -6,7 +6,7 @@
   cargo-shear,
 }:
 let
-  version = "1.1.0";
+  version = "1.1.1";
 in
 rustPlatform.buildRustPackage {
   pname = "cargo-shear";
@@ -16,10 +16,10 @@ rustPlatform.buildRustPackage {
     owner = "Boshen";
     repo = "cargo-shear";
     rev = "v${version}";
-    hash = "sha256-D6O8raELxmcv47vaIa7XSmnPNhrsEx8fIpt/n1dp+8Y=";
+    hash = "sha256-4HGI0G3fOzj787fXyUMt4XK4KMtrilOJUw1DqRpUoYY=";
   };
 
-  cargoHash = "sha256-GpEG6yoRTmnjeC74tz6mq6vbG4hnIWbbijIIos7Ng3Y=";
+  cargoHash = "sha256-sQiWd8onSJMo7+ouCPye7IaGzYp0N3rMC4PZv+/DPt4=";
 
   # https://github.com/Boshen/cargo-shear/blob/a0535415a3ea94c86642f39f343f91af5cdc3829/src/lib.rs#L20-L23
   SHEAR_VERSION = version;
diff --git a/pkgs/by-name/ca/cargo-xwin/package.nix b/pkgs/by-name/ca/cargo-xwin/package.nix
index 5b0a8c82beb2..78c6c9933e83 100644
--- a/pkgs/by-name/ca/cargo-xwin/package.nix
+++ b/pkgs/by-name/ca/cargo-xwin/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-xwin";
-  version = "0.17.2";
+  version = "0.17.3";
 
   src = fetchFromGitHub {
     owner = "rust-cross";
     repo = "cargo-xwin";
     rev = "v${version}";
-    hash = "sha256-lz1IykhdJy3540g6A5EpxGM2czM5psi/zZdKkgJd7BA=";
+    hash = "sha256-Lpcofb4yz1pR6dNJEnpkkCFdYjgt0qMzVP55kgKqjFA=";
   };
 
-  cargoHash = "sha256-qKLHrHQhjWysvOwVvlCjaQOoidUz42wEyJPyo/nz5Ro=";
+  cargoHash = "sha256-xVG1nET020rfMIjhIcCtNr9ZCj8SgQAvXePjyKSPjUs=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
diff --git a/pkgs/by-name/cc/ccache/package.nix b/pkgs/by-name/cc/ccache/package.nix
index f685076d6727..9984771b7ce9 100644
--- a/pkgs/by-name/cc/ccache/package.nix
+++ b/pkgs/by-name/cc/ccache/package.nix
@@ -20,7 +20,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ccache";
-  version = "4.10.1";
+  version = "4.10.2";
 
   src = fetchFromGitHub {
     owner = "ccache";
@@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
         exit 1
       fi
     '';
-    hash = "sha256-CUQ16VthGl2vtixOv8UGI9gCsb6iEVD9XHKAYivWMrw=";
+    hash = "sha256-j7Cjr5R/fN/1C6hR9400Y/hwgG++qjPvo9PYyetzrx0=";
   };
 
   outputs = [
diff --git a/pkgs/by-name/cc/cctools/0001-Fix-build-issues-with-misc-redo_prebinding.c.patch b/pkgs/by-name/cc/cctools/0001-Fix-build-issues-with-misc-redo_prebinding.c.patch
new file mode 100644
index 000000000000..5908d030dbfd
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0001-Fix-build-issues-with-misc-redo_prebinding.c.patch
@@ -0,0 +1,53 @@
+From 55b2a5fcc38eb62f53e155bd8c741481690f1c73 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Wed, 10 Apr 2024 19:08:39 -0400
+Subject: [PATCH 1/6] Fix build issues with misc/redo_prebinding.c
+
+- Add missing headers; and
+- Add missing arguments to `writeout`.
+---
+ misc/redo_prebinding.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/misc/redo_prebinding.c b/misc/redo_prebinding.c
+index a5a3c81..9d0f4c8 100644
+--- a/misc/redo_prebinding.c
++++ b/misc/redo_prebinding.c
+@@ -83,6 +83,7 @@
+ #include <mach-o/redo_prebinding.h>
+ #endif /* defined(LIBRARY_API) */
+ 
++#import <stdint.h>
+ #import <stdio.h>
+ #import <stdlib.h>
+ #import <string.h>
+@@ -106,7 +107,7 @@
+ #import <stuff/hppa.h>
+ #import <stuff/execute.h>
+ #import <stuff/guess_short_name.h>
+-//#import <stuff/seg_addr_table.h>
++#import <stuff/seg_addr_table.h>
+ #import <stuff/macosx_deployment_target.h>
+ 
+ #include <mach-o/dyld.h>
+@@ -918,7 +919,7 @@ char *envp[])
+                 if(write_to_stdout)
+                     output_file = NULL;
+ 		writeout(archs, narchs, output_file, mode, TRUE, FALSE, FALSE,
+-		         FALSE, NULL);
++		         FALSE, FALSE, NULL);
+ 		if(errors){
+                     if(write_to_stdout == FALSE)
+                         unlink(output_file);
+@@ -928,7 +929,7 @@ char *envp[])
+ 	    else{
+ 		output_file = makestr(input_file, ".redo_prebinding", NULL);
+ 		writeout(archs, narchs, output_file, mode, TRUE, FALSE, FALSE,
+-			 FALSE, NULL);
++			 FALSE, FALSE, NULL);
+ 		if(errors){
+ 		    unlink(output_file);
+ 		    return(2);
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/0002-Rely-on-libcd_is_blob_a_linker_signature.patch b/pkgs/by-name/cc/cctools/0002-Rely-on-libcd_is_blob_a_linker_signature.patch
new file mode 100644
index 000000000000..014281039ae8
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0002-Rely-on-libcd_is_blob_a_linker_signature.patch
@@ -0,0 +1,25 @@
+From 419c469634891d09f6688d56da9e26431018f342 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Wed, 10 Apr 2024 20:36:53 -0400
+Subject: [PATCH 2/6] Rely on libcd_is_blob_a_linker_signature
+
+---
+ libstuff/code_directory.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libstuff/code_directory.c b/libstuff/code_directory.c
+index 7c158fa..3b8eb77 100644
+--- a/libstuff/code_directory.c
++++ b/libstuff/code_directory.c
+@@ -146,7 +146,7 @@ static const char* format_version_xyz(uint32_t version)
+  */
+ int codedir_is_linker_signed(const char* data, uint32_t size)
+ {
+-#if 1
++#if 0
+     // HACK: libcodedirectory.h is in both the macOS SDK in /usr/local/include, and in the tool chain at /usr/include.
+     // but there is no way to control clang's search path to look in the toolchain first.
+     // So, declare newer API locally. Once this new header is in all SDKs we can remove this.
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/0003-Fix-utimensat-compatability-with-the-10.12-SDK.patch b/pkgs/by-name/cc/cctools/0003-Fix-utimensat-compatability-with-the-10.12-SDK.patch
new file mode 100644
index 000000000000..4abe9ee863aa
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0003-Fix-utimensat-compatability-with-the-10.12-SDK.patch
@@ -0,0 +1,50 @@
+From 989ba5e30cefa0dd8990da158661713c4a21c0fe Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Thu, 11 Apr 2024 18:05:34 -0400
+Subject: [PATCH 3/6] Fix utimensat compatability with the 10.12 SDK
+
+---
+ include/compat.h    | 3 +++
+ libstuff/writeout.c | 2 +-
+ misc/lipo.c         | 2 +-
+ 3 files changed, 5 insertions(+), 2 deletions(-)
+ create mode 100644 include/compat.h
+
+diff --git a/include/compat.h b/include/compat.h
+new file mode 100644
+index 0000000..8b1b866
+--- /dev/null
++++ b/include/compat.h
+@@ -0,0 +1,3 @@
++#pragma once
++#include <time.h>
++extern int utimensat(int dirfd, const char* pathname, const struct timespec times[_Nullable 2], int flags);
+diff --git a/libstuff/writeout.c b/libstuff/writeout.c
+index f904caa..03fa535 100644
+--- a/libstuff/writeout.c
++++ b/libstuff/writeout.c
+@@ -297,7 +297,7 @@ no_throttle:
+ 	     * have been zeroed out when the library was created. writeout
+ 	     * will not zero out the modification time in the filesystem.
+ 	     */
+-	    if (__builtin_available(macOS 10.12, *)) {
++	    if (__builtin_available(macOS 10.13, *)) {
+ 		struct timespec times[2] = {0};
+ 		memcpy(&times[0], &toc_timespec, sizeof(struct timespec));
+ 		memcpy(&times[1], &toc_timespec, sizeof(struct timespec));
+diff --git a/misc/lipo.c b/misc/lipo.c
+index 04a3eca..887c049 100644
+--- a/misc/lipo.c
++++ b/misc/lipo.c
+@@ -607,7 +607,7 @@ unknown_flag:
+ 		    if(close(fd) == -1)
+ 			system_fatal("can't close output file: %s",output_file);
+ #ifndef __OPENSTEP__
+-		    if (__builtin_available(macOS 10.12, *)) {
++		    if (__builtin_available(macOS 10.13, *)) {
+ 			time_result = utimensat(AT_FDCWD, output_file,
+ 						output_times, 0);
+ 		    }
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/0004-Use-nixpkgs-clang-with-the-assembler-driver.patch b/pkgs/by-name/cc/cctools/0004-Use-nixpkgs-clang-with-the-assembler-driver.patch
new file mode 100644
index 000000000000..058cfcdf0c49
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0004-Use-nixpkgs-clang-with-the-assembler-driver.patch
@@ -0,0 +1,57 @@
+From 86b5ad551ef0ffc7ca4da24b7619937bec738522 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Mon, 15 Apr 2024 20:47:59 -0400
+Subject: [PATCH 4/6] Use nixpkgs clang with the assembler driver
+
+---
+ as/driver.c | 20 +++-----------------
+ 1 file changed, 3 insertions(+), 17 deletions(-)
+
+diff --git a/as/driver.c b/as/driver.c
+index a0d49ad..c15dcbf 100644
+--- a/as/driver.c
++++ b/as/driver.c
+@@ -36,7 +36,7 @@ char **envp)
+     char *p, c, *arch_name, *as, *as_local;
+     char **new_argv;
+     const char *CLANG = "clang";
+-    char *prefix, buf[MAXPATHLEN], resolved_name[PATH_MAX];
++    char *prefix = "@clang-unwrapped@/bin/";
+     uint32_t bufsize;
+     struct arch_flag arch_flag;
+     const struct arch_flag *arch_flags, *family_arch_flag;
+@@ -50,22 +50,6 @@ char **envp)
+ 	qflag = FALSE;
+ 	Qflag = FALSE;
+ 	some_input_files = FALSE;
+-	/*
+-	 * Construct the prefix to the assembler driver.
+-	 */
+-	bufsize = MAXPATHLEN;
+-	p = buf;
+-	i = _NSGetExecutablePath(p, &bufsize);
+-	if(i == -1){
+-	    p = allocate(bufsize);
+-	    _NSGetExecutablePath(p, &bufsize);
+-	}
+-	prefix = realpath(p, resolved_name);
+-	if(prefix == NULL)
+-	    system_fatal("realpath(3) for %s failed", p);
+-	p = rindex(prefix, '/');
+-	if(p != NULL)
+-	    p[1] = '\0';
+ 	/*
+ 	 * Process the assembler flags exactly like the assembler would (except
+ 	 * let the assembler complain about multiple flags, bad combinations of
+@@ -362,6 +346,8 @@ char **envp)
+ 		exit(1);
+ 	}
+ 
++	prefix = "@gas@/bin/"; /* `libexec` is found relative to the assembler driver’s path. */
++
+ 	/*
+ 	 * If this assembler exist try to run it else print an error message.
+ 	 */
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/0005-Find-ld64-in-the-store.patch b/pkgs/by-name/cc/cctools/0005-Find-ld64-in-the-store.patch
new file mode 100644
index 000000000000..8f51b38a9ca6
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0005-Find-ld64-in-the-store.patch
@@ -0,0 +1,28 @@
+From e62f7d75380540937f24f896c82736a1e653cc75 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Mon, 22 Apr 2024 18:15:53 -0400
+Subject: [PATCH 5/6] Find ld64 in the store
+
+---
+ libstuff/execute.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/libstuff/execute.c b/libstuff/execute.c
+index 8526ab7..abbbf1b 100644
+--- a/libstuff/execute.c
++++ b/libstuff/execute.c
+@@ -149,6 +149,11 @@ char *
+ cmd_with_prefix(
+ char *str)
+ {
++	// Return the path to ld64 in the store.
++	if (strcmp(str, "ld") == 0) {
++	    return "@ld64_path@";
++	}
++
+ 	int i;
+ 	char *p;
+ 	char *prefix, buf[MAXPATHLEN], resolved_name[PATH_MAX];
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/0006-Support-target-prefixes-in-ranlib-detection.patch b/pkgs/by-name/cc/cctools/0006-Support-target-prefixes-in-ranlib-detection.patch
new file mode 100644
index 000000000000..1189d2074984
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/0006-Support-target-prefixes-in-ranlib-detection.patch
@@ -0,0 +1,30 @@
+From e25de788260051892b9e34177ea957cbafe6c415 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Thu, 2 May 2024 07:55:05 -0400
+Subject: [PATCH 6/6] Support target prefixes in ranlib detection
+
+---
+ misc/libtool.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/misc/libtool.c b/misc/libtool.c
+index 289ec4d..8265d53 100644
+--- a/misc/libtool.c
++++ b/misc/libtool.c
+@@ -426,11 +426,11 @@ char **envp)
+ 	    p++;
+ 	else
+ 	    p = argv[0];
+-	if(strncmp(p, "ranlib", sizeof("ranlib") - 1) == 0) {
++	if(strncmp(p, "@targetPrefix@ranlib", sizeof("@targetPrefix@ranlib") - 1) == 0) {
+ 	    cmd_flags.ranlib = TRUE;
+ 	}
+ 	else if (getenv("LIBTOOL_FORCE_RANLIB")) {
+-	    progname = "ranlib";
++	    progname = "@targetPrefix@ranlib";
+ 	    cmd_flags.ranlib = TRUE;
+ 	}
+ 
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cc/cctools/meson.build b/pkgs/by-name/cc/cctools/meson.build
new file mode 100644
index 000000000000..c2261d98c958
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/meson.build
@@ -0,0 +1,657 @@
+# Build settings based on the upstream Xcode project.
+# See: https://github.com/apple-oss-distributions/cctools/blob/main/cctools.xcodeproj/project.pbxproj
+
+# Project settings
+project(
+    'cctools',
+    'c',
+    version : '@version@',
+    default_options : {
+        'c_args': [
+            '-DCCTB_MACOS=YES',
+            '-DCCTB_PROJECT=cctools',
+            '-DCCTB_PROJVERS=cctools-@version@',
+            '-DCCTB_VERSION=@version@',
+            '-DCURRENT_PROJECT_VERSION="@version@"',
+            '-DCODEDIRECTORY_SUPPORT',
+            '-DLTO_SUPPORT',
+        ],
+    },
+)
+
+fs = import('fs')
+
+# Options
+target_prefix = get_option('target_prefix')
+
+
+# Dependencies
+cc = meson.get_compiler('c')
+
+libcodedirectory = cc.find_library('codedirectory')
+libprunetrie = cc.find_library('prunetrie')
+
+
+# Feature tests
+# Add compatibility header for Darwin SDKs that don’t define `utimensat`.
+utimensat_test = '''
+#include <fcntl.h>
+#include <sys/stat.h>
+int main(int argc, char* argv[]) {
+    utimensat(AT_FDCWD, NULL, NULL, 0);
+    return 0;
+}
+'''
+if host_machine.system() == 'darwin' and not cc.compiles(utimensat_test, name : 'supports utimensat')
+    add_project_arguments('-include', 'compat.h', language : 'c')
+    add_project_link_arguments('-undefined', 'dynamic_lookup', language : 'c')
+endif
+
+
+incdirs = include_directories('include')
+
+# Static libraries
+libstuff = static_library(
+    'stuff',
+    c_args : [
+        '-DCPU_TYPE_RISCV32=24', # Per src/abstraction/MachOFileAbstraction.hpp from ld64
+    ],
+    include_directories : [incdirs, 'include/stuff'],
+    sources : [
+        'libstuff/SymLoc.c',
+        'libstuff/align.c',
+        'libstuff/allocate.c',
+        'libstuff/apple_version.c',
+        'libstuff/arch.c',
+        'libstuff/arch_usage.c',
+        'libstuff/args.c',
+        'libstuff/best_arch.c',
+        'libstuff/breakout.c',
+        'libstuff/bytesex.c',
+        'libstuff/checkout.c',
+        'libstuff/code_directory.c',
+        'libstuff/coff_bytesex.c',
+        'libstuff/crc32.c',
+        'libstuff/depinfo.c',
+        'libstuff/diagnostics.c',
+        'libstuff/dylib_roots.c',
+        'libstuff/dylib_table.c',
+        'libstuff/errors.c',
+        'libstuff/execute.c',
+        'libstuff/fatal_arch.c',
+        'libstuff/fatals.c',
+        'libstuff/get_arch_from_host.c',
+        'libstuff/get_toc_byte_sex.c',
+        'libstuff/guess_short_name.c',
+        'libstuff/hash_string.c',
+        'libstuff/hppa.c',
+        'libstuff/llvm.c',
+        'libstuff/lto.c',
+        'libstuff/macosx_deployment_target.c',
+        'libstuff/ofile.c',
+        'libstuff/ofile_error.c',
+        'libstuff/ofile_get_word.c',
+        'libstuff/print.c',
+        'libstuff/reloc.c',
+        'libstuff/rnd.c',
+        'libstuff/seg_addr_table.c',
+        'libstuff/set_arch_flag_name.c',
+        'libstuff/swap_headers.c',
+        'libstuff/symbol_list.c',
+        'libstuff/unix_standard_mode.c',
+        'libstuff/version_number.c',
+        'libstuff/vm_flush_cache.c',
+        'libstuff/write64.c',
+        'libstuff/writeout.c',
+        'libstuff/xcode.c',
+    ],
+)
+
+libstuff_otool = static_library(
+    'stuff_otool',
+    c_args : [
+        '-DCPU_TYPE_RISCV32=24', # Per src/abstraction/MachOFileAbstraction.hpp from ld64
+    ],
+    include_directories : [incdirs, 'include/stuff', 'otool'],
+    sources : [
+        'libstuff/SymLoc.c',
+        'libstuff/align.c',
+        'libstuff/allocate.c',
+        'libstuff/apple_version.c',
+        'libstuff/arch.c',
+        'libstuff/arch_usage.c',
+        'libstuff/args.c',
+        'libstuff/best_arch.c',
+        'libstuff/breakout.c',
+        'libstuff/bytesex.c',
+        'libstuff/checkout.c',
+        'libstuff/code_directory.c',
+        'libstuff/coff_bytesex.c',
+        'libstuff/crc32.c',
+        'libstuff/depinfo.c',
+        'libstuff/diagnostics.c',
+        'libstuff/dylib_roots.c',
+        'libstuff/dylib_table.c',
+        'libstuff/errors.c',
+        'libstuff/execute.c',
+        'libstuff/fatal_arch.c',
+        'libstuff/fatals.c',
+        'libstuff/get_arch_from_host.c',
+        'libstuff/get_toc_byte_sex.c',
+        'libstuff/guess_short_name.c',
+        'libstuff/hash_string.c',
+        'libstuff/hppa.c',
+        'libstuff/llvm.c',
+        'libstuff/lto.c',
+        'libstuff/macosx_deployment_target.c',
+        'libstuff/ofile.c',
+        'libstuff/ofile_error.c',
+        'libstuff/ofile_get_word.c',
+        'libstuff/print.c',
+        'libstuff/reloc.c',
+        'libstuff/rnd.c',
+        'libstuff/seg_addr_table.c',
+        'libstuff/set_arch_flag_name.c',
+        'libstuff/swap_headers.c',
+        'libstuff/symbol_list.c',
+        'libstuff/unix_standard_mode.c',
+        'libstuff/version_number.c',
+        'libstuff/vm_flush_cache.c',
+        'libstuff/write64.c',
+        'libstuff/writeout.c',
+        'libstuff/xcode.c',
+    ],
+)
+
+
+# Binaries
+ar = executable(
+    f'@target_prefix@ar',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : [
+        'ar/append.c',
+        'ar/ar.c',
+        'ar/archive.c',
+        'ar/contents.c',
+        'ar/delete.c',
+        'ar/extract.c',
+        'ar/misc.c',
+        'ar/move.c',
+        'ar/print.c',
+        'ar/replace.c',
+    ],
+)
+install_man(
+    'ar/ar.1',
+    'ar/ar.5',
+)
+
+as = executable(
+    f'@target_prefix@gas',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['as/driver.c'],
+)
+
+as_common = files(
+    'as/app.c',
+    'as/as.c',
+    'as/atof-generic.c',
+    'as/atof-ieee.c',
+    'as/dwarf2dbg.c',
+    'as/expr.c',
+    'as/fixes.c',
+    'as/flonum-const.c',
+    'as/flonum-copy.c',
+    'as/flonum-mult.c',
+    'as/frags.c',
+    'as/hash.c',
+    'as/hex-value.c',
+    'as/input-file.c',
+    'as/input-scrub.c',
+    'as/layout.c',
+    'as/messages.c',
+    'as/obstack.c',
+    'as/read.c',
+    'as/sections.c',
+    'as/symbols.c',
+    'as/write_object.c',
+    'as/xmalloc.c',
+)
+
+as_arm = executable(
+    'as-arm',
+    c_args : [
+        '-DARM',
+        '-DNeXT_MOD',
+    ],
+    include_directories : [
+        incdirs,
+        'as',
+        'include/gnu',
+    ],
+    install : true,
+    install_dir : 'libexec/as/arm',
+    link_with : [libstuff],
+    sources : [as_common, 'as/arm.c'],
+)
+
+as_i386 = executable(
+    'as-i386',
+    c_args : [
+        '-DI386',
+        '-Di486',
+        '-Di586',
+        '-Di686',
+        '-DNeXT_MOD',
+    ],
+    include_directories : [
+        incdirs,
+        'as',
+        'include/gnu',
+    ],
+    install : true,
+    install_dir : 'libexec/as/i386',
+    link_with : [libstuff],
+    sources : [as_common, 'as/i386.c'],
+)
+
+as_x86_64 = executable(
+    'as-x86_64',
+    c_args : [
+        '-DI386',
+        '-Di486',
+        '-Di586',
+        '-Di686',
+        '-DARCH64',
+        '-DNeXT_MOD',
+    ],
+    include_directories : [
+        incdirs,
+        'as',
+        'include/gnu'
+    ],
+    install : true,
+    install_dir : 'libexec/as/x86_64',
+    link_with : [libstuff],
+    sources : [as_common, 'as/i386.c'],
+)
+
+# # ld # excluded because ld64 is built separately
+
+bitcode_strip = executable(
+    f'@target_prefix@bitcode_strip',
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/bitcode_strip.c'],
+)
+install_man('man/bitcode_strip.1')
+
+check_dylib = executable(
+    f'@target_prefix@check_dylib',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/check_dylib.c'],
+)
+install_man('man/check_dylib.1')
+
+checksyms = executable(
+    f'@target_prefix@checksyms',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/checksyms.c'],
+)
+install_man('man/checksyms.1')
+
+cmpdylib = executable(
+    f'@target_prefix@cmpdylib',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/cmpdylib.c'],
+)
+install_man('man/cmpdylib.1')
+
+codesign_allocate = executable(
+    f'@target_prefix@codesign_allocate',
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/codesign_allocate.c'],
+)
+install_man('man/codesign_allocate.1')
+
+ctf_insert = executable(
+    f'@target_prefix@ctf_insert',
+    dependencies : [libcodedirectory],
+    include_directories : [incdirs, 'include/stuff'],
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/ctf_insert.c'],
+)
+install_man('man/ctf_insert.1')
+
+depinfo = executable(
+    f'@target_prefix@depinfo',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/depinfo.c'],
+)
+install_man('man/depinfo.1')
+
+diagtest = executable(
+    f'@target_prefix@diagtest',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/diagtest.c'],
+)
+install_man('man/diagtest.1')
+
+gprof = executable(
+    f'@target_prefix@gprof',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : [
+        'gprof/arcs.c',
+        'gprof/calls.c',
+        'gprof/dfn.c',
+        'gprof/getnfile.c',
+        'gprof/gprof.c',
+        'gprof/hertz.c',
+        'gprof/lookup.c',
+        'gprof/printgprof.c',
+        'gprof/printlist.c',
+        'gprof/scatter.c',
+    ],
+)
+install_man('man/gprof.1')
+
+# Not supported on 64-bit architectures
+# indr = executable(
+#     f'@target_prefix@indr',
+#     include_directories : incdirs,
+#     sources : ['misc/indr.c'],
+# )
+# install_man('man/indr.1')
+
+install_name_tool = executable(
+    f'@target_prefix@install_name_tool',
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/install_name_tool.c'],
+)
+install_man('man/install_name_tool.1')
+
+libtool = executable(
+    f'@target_prefix@libtool',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/libtool.c'],
+)
+install_man('man/libtool.1')
+
+lipo = executable(
+    f'@target_prefix@lipo',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/lipo.c'],
+)
+install_man('man/lipo.1')
+
+mtoc = executable(
+    f'@target_prefix@mtoc',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['efitools/mtoc.c'],
+)
+install_man('man/mtoc.1')
+
+mtor = executable(
+    f'@target_prefix@mtor',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['efitools/mtor.c'],
+)
+install_man('man/mtor.1')
+
+nm = executable(
+    f'@target_prefix@nm',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/nm.c'],
+)
+install_man('man/nm-classic.1')
+
+nmedit = executable(
+    f'@target_prefix@nmedit',
+    c_args : ['-DNMEDIT'],
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/strip.c'],
+)
+install_man('man/nmedit.1')
+
+otool = executable(
+    f'@target_prefix@otool',
+    c_args : ['-DEFI_SUPPORT'],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : [
+        'otool/arm64_disasm.c',
+        'otool/arm_disasm.c',
+        'otool/coff_print.c',
+        'otool/dyld_bind_info.c',
+        'otool/hppa_disasm.c',
+        'otool/i386_disasm.c',
+        'otool/i860_disasm.c',
+        'otool/m68k_disasm.c',
+        'otool/m88k_disasm.c',
+        'otool/main.c',
+        'otool/ofile_print.c',
+        'otool/ppc_disasm.c',
+        'otool/print_bitcode.c',
+        'otool/print_objc.c',
+        'otool/print_objc2_32bit.c',
+        'otool/print_objc2_64bit.c',
+        'otool/print_objc2_util.c',
+        'otool/sparc_disasm.c',
+    ],
+)
+install_man('man/otool-classic.1')
+
+pagestuff = executable(
+    f'@target_prefix@pagestuff',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/pagestuff.c'],
+)
+install_man('man/pagestuff.1')
+
+# ranlib is a symlink to libtool
+install_man(
+    'man/ranlib.1',
+    'man/ranlib.5',
+)
+
+redo_prebinding = executable(
+    f'@target_prefix@redo_prebinding',
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/redo_prebinding.c'],
+)
+install_man('man/redo_prebinding.1')
+
+seg_addr_table = executable(
+    f'@target_prefix@seg_addr_table',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/seg_addr_table.c'],
+)
+install_man('man/seg_addr_table.1')
+
+seg_hack = executable(
+    f'@target_prefix@seg_hack',
+    dependencies : [libcodedirectory],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/seg_hack.c'],
+)
+
+segedit = executable(
+    f'@target_prefix@segedit',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/segedit.c'],
+)
+install_man('man/segedit.1',)
+
+size = executable(
+    f'@target_prefix@size',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/size.c'],
+)
+install_man('man/size-classic.1')
+
+strings = executable(
+    f'@target_prefix@strings',
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/strings.c'],
+)
+install_man('man/strings.1')
+
+strip = executable(
+    f'@target_prefix@strip',
+    c_args : ['-DTRIE_SUPPORT'],
+    dependencies : [libcodedirectory, libprunetrie],
+    include_directories : incdirs,
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/strip.c'],
+)
+install_man('man/strip.1')
+
+vtool = executable(
+    f'@target_prefix@vtool',
+    dependencies : [libcodedirectory],
+    include_directories : [incdirs, 'include/stuff'],
+    install : true,
+    link_with : [libstuff],
+    sources : ['misc/vtool.c'],
+)
+install_man('man/vtool.1')
+
+
+# Development files
+# Static libraries
+libmacho = static_library(
+    'macho',
+    include_directories : incdirs,
+    sources : [
+        'libmacho/arch.c',
+        'libmacho/get_end.c',
+        'libmacho/getsecbyname.c',
+        'libmacho/getsegbyname.c',
+        'libmacho/hppa_swap.c',
+        'libmacho/i386_swap.c',
+        'libmacho/i860_swap.c',
+        'libmacho/m68k_swap.c',
+        'libmacho/m88k_swap.c',
+        'libmacho/ppc_swap.c',
+        'libmacho/slot_name.c',
+        'libmacho/sparc_swap.c',
+        'libmacho/swap.c',
+    ],
+)
+
+libredo_prebinding = static_library(
+    'redo_prebinding',
+    c_args : ['-DLIBRARY_API'],
+    include_directories : incdirs,
+    sources : ['misc/redo_prebinding.c'],
+)
+install_man('man/redo_prebinding.3')
+
+
+# Development files
+# Based on the contents of the upstream SDK.
+install_headers(
+    'include/mach-o/arch.h',
+    'include/mach-o/fat.h',
+    'include/mach-o/getsect.h',
+    'include/mach-o/ldsyms.h',
+    'include/mach-o/loader.h',
+    'include/mach-o/nlist.h',
+    'include/mach-o/ranlib.h',
+    'include/mach-o/reloc.h',
+    'include/mach-o/stab.h',
+    'include/mach-o/swap.h',
+    subdir : 'mach-o',
+)
+
+# Some of these architectures are irrelevant, but the Libsystem derivation expects their headers to be present.
+# Not every arch has both headers, so tailor the lists for each that does.
+foreach arch : ['arm', 'arm64', 'hppa', 'i860', 'm88k', 'ppc', 'sparc', 'x86_64']
+    install_headers(
+        f'include/mach-o/@arch@/reloc.h',
+        subdir : f'mach-o/@arch@',
+    )
+endforeach
+foreach arch : ['hppa', 'i386', 'i860', 'm68k', 'm88k', 'ppc', 'sparc']
+    install_headers(
+        f'include/mach-o/@arch@/swap.h',
+        subdir : f'mach-o/@arch@',
+    )
+endforeach
+
+install_data(
+    'include/modules/mach-o.modulemap',
+    install_dir : get_option('includedir'),
+    rename : 'mach-o/module.map',
+)
+install_man(
+    'man/Mach-O.5',
+    'man/NSModule.3',
+    'man/NSObjectFileImage.3',
+    'man/NSObjectFileImage_priv.3',
+    'man/arch.3',
+    'man/dyld.3',
+    'man/end.3',
+    'man/get_end.3',
+    'man/getsectbyname.3',
+    'man/getsectbynamefromheader.3',
+    'man/getsectdata.3',
+    'man/getsectdatafromheader.3',
+    'man/getsegbyname.3',
+    'man/stab.5',
+)
diff --git a/pkgs/by-name/cc/cctools/meson.options b/pkgs/by-name/cc/cctools/meson.options
new file mode 100644
index 000000000000..2417b81f0401
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/meson.options
@@ -0,0 +1,6 @@
+option(
+    'target_prefix',
+    type : 'string',
+    value : '',
+    description: 'Specifies the prefix to use when building for cross-compilation (e.g., `aarch64-apple-darwin`)'
+)
diff --git a/pkgs/by-name/cc/cctools/package.nix b/pkgs/by-name/cc/cctools/package.nix
new file mode 100644
index 000000000000..2ab074def674
--- /dev/null
+++ b/pkgs/by-name/cc/cctools/package.nix
@@ -0,0 +1,175 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  buildPackages,
+  darwin,
+  ld64,
+  llvm,
+  memstreamHook,
+  meson,
+  ninja,
+  openssl,
+  xar,
+  gitUpdater,
+}:
+
+let
+  # The targetPrefix is prepended to binary names to allow multiple binuntils on the PATH to both be usable.
+  targetPrefix = lib.optionalString (
+    stdenv.targetPlatform != stdenv.hostPlatform
+  ) "${stdenv.targetPlatform.config}-";
+
+  # First version with all the required files
+  xnu = fetchFromGitHub {
+    name = "xnu-src";
+    owner = "apple-oss-distributions";
+    repo = "xnu";
+    rev = "xnu-7195.50.7.100.1";
+    hash = "sha256-uHmAOm6k9ZXWfyqHiDSpm+tZqUbERlr6rXSJ4xNACkM=";
+  };
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "${targetPrefix}cctools";
+  version = "1010.6";
+
+  outputs = [
+    "out"
+    "dev"
+    "man"
+    "gas"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "apple-oss-distributions";
+    repo = "cctools";
+    rev = "cctools-${finalAttrs.version}";
+    hash = "sha256-JiKCP6U+xxR4mk4TXWv/mEo9Idg+QQqUYmB/EeRksCE=";
+  };
+
+  xcodeHash = "sha256-5RBbGrz1UKV0wt2Uk7RIHdfgWH8sgw/jy7hfTVrtVuM=";
+
+  postUnpack = ''
+    unpackFile '${xnu}'
+
+    # Verify that the Xcode project has not changed unexpectedly.
+    hashType=$(echo $xcodeHash | cut -d- -f1)
+    expectedHash=$(echo $xcodeHash | cut -d- -f2)
+    hash=$(openssl "$hashType" -binary "$sourceRoot/cctools.xcodeproj/project.pbxproj" | base64)
+
+    if [ "$hash" != "$expectedHash" ]; then
+      echo 'error: hash mismatch in cctools.xcodeproj/project.pbxproj'
+      echo "        specified: $xcodeHash"
+      echo "           got:    $hashType-$hash"
+      echo
+      echo 'Upstream Xcode project has changed. Update `meson.build` with any changes, then update `xcodeHash`.'
+      echo 'Use `nix-hash --flat --sri --type sha256 cctools.xcodeproj/project.pbxproj` to regenerate it.'
+      exit 1
+    fi
+  '';
+
+  patches = [
+    # Fix compile errors in redo_prebinding.c
+    ./0001-Fix-build-issues-with-misc-redo_prebinding.c.patch
+    # Use libcd_is_blob_a_linker_signature as defined in the libcodedirectory.h header
+    ./0002-Rely-on-libcd_is_blob_a_linker_signature.patch
+    # cctools uses availability checks for `utimensat`, but it checks the wrong version.
+    # Also, provide a definition to avoid implicit function definition errors.
+    ./0003-Fix-utimensat-compatability-with-the-10.12-SDK.patch
+    # Use the nixpkgs clang’s path as the prefix.
+    ./0004-Use-nixpkgs-clang-with-the-assembler-driver.patch
+    # Make sure cctools can find ld64 in the store
+    ./0005-Find-ld64-in-the-store.patch
+    # `ranlib` is a symlink to `libtool`. Make sure its detection works when it is used in cross-compilation.
+    ./0006-Support-target-prefixes-in-ranlib-detection.patch
+  ];
+
+  postPatch = ''
+    substitute ${./meson.build} meson.build \
+      --subst-var version
+    cp ${./meson.options} meson.options
+
+    # Make sure as’s clang driver uses clang from nixpkgs and finds the drivers in the store.
+    substituteInPlace as/driver.c \
+      --subst-var-by clang-unwrapped '${lib.getBin buildPackages.clang.cc}' \
+      --subst-var-by gas '${placeholder "gas"}'
+
+    # Need to set the path to make sure cctools can find ld64 in the store.
+    substituteInPlace libstuff/execute.c \
+      --subst-var-by ld64_path '${lib.getBin ld64}/bin/ld'
+
+    # Set the target prefix for `ranlib`
+    substituteInPlace misc/libtool.c \
+      --subst-var-by targetPrefix '${targetPrefix}'
+
+    # The version of this file distributed with cctools defines several CPU types missing from the 10.12 SDK.
+    ln -s machine-cctools.h include/mach/machine.h
+
+    # Use libxar from nixpkgs
+    for cctool_src in misc/nm.c otool/print_bitcode.c; do
+      substituteInPlace $cctool_src \
+        --replace-fail 'makestr(prefix, "../lib/libxar.dylib", NULL)' '"${lib.getLib xar}/lib/libxar.dylib"' \
+        --replace-fail '/usr/lib/libxar.dylib' '${lib.getLib xar}/lib/libxar.dylib'
+    done
+
+    # Use libLTO.dylib from nixpkgs LLVM
+    substituteInPlace libstuff/llvm.c \
+      --replace-fail 'getenv("LIBLTO_PATH")' '"${lib.getLib llvm}/lib/libLTO.dylib"'
+
+    cp ../xnu-src/EXTERNAL_HEADERS/mach-o/fixup-chains.h include/mach-o/fixup-chains.h
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    openssl
+  ];
+
+  buildInputs =
+    [
+      ld64
+      llvm
+    ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.objc4 ]
+    ++ lib.optionals (stdenv.isDarwin && stdenv.isx86_64) [ memstreamHook ];
+
+  mesonBuildType = "release";
+
+  mesonFlags = [
+    (lib.mesonOption "b_ndebug" "if-release")
+  ] ++ lib.optionals (targetPrefix != "") [ (lib.mesonOption "target_prefix" targetPrefix) ];
+
+  postInstall = ''
+    ln -s ${targetPrefix}libtool "$out/bin/${targetPrefix}ranlib"
+    ln -s nm-classic.1 "''${!outputMan}/share/man/man1/nm.1"
+    ln -s otool-classic.1 "''${!outputMan}/share/man/man1/otool.1"
+    ln -s size-classic.1 "''${!outputMan}/share/man/man1/size.1"
+
+    # Move GNU as to its own output to prevent it from being used accidentally.
+    moveToOutput bin/gas "$gas"
+    moveToOutput libexec "$gas"
+    for arch in arm i386 x86_64; do
+      mv "$gas/libexec/as/$arch/as-$arch" "$gas/libexec/as/$arch/as"
+    done
+  '';
+
+  __structuredAttrs = true;
+
+  passthru = {
+    inherit targetPrefix;
+    updateScript = gitUpdater { rev-prefix = "cctools-"; };
+  };
+
+  meta = {
+    description = "The classic linker for Darwin";
+    homepage = "https://opensource.apple.com/releases/";
+    license = with lib.licenses; [
+      apple-psl20
+      gpl2 # GNU as
+    ];
+    maintainers = with lib.maintainers; [ reckenrode ];
+    platforms = lib.platforms.darwin;
+  };
+})
diff --git a/pkgs/by-name/ce/celeste64/package.nix b/pkgs/by-name/ce/celeste64/package.nix
index bcd6356015fe..7d497ec35166 100644
--- a/pkgs/by-name/ce/celeste64/package.nix
+++ b/pkgs/by-name/ce/celeste64/package.nix
@@ -7,7 +7,6 @@
   copyDesktopItems,
   SDL2,
   libGL,
-  mesa,
   systemd,
   libpulseaudio,
   libselinux,
diff --git a/pkgs/by-name/ce/cemu/package.nix b/pkgs/by-name/ce/cemu/package.nix
index 259e2fe18967..5a533547e846 100644
--- a/pkgs/by-name/ce/cemu/package.nix
+++ b/pkgs/by-name/ce/cemu/package.nix
@@ -1,7 +1,7 @@
 {
   lib,
   SDL2,
-  addOpenGLRunpath,
+  addDriverRunpath,
   boost,
   cmake,
   cubeb,
@@ -66,13 +66,14 @@ in stdenv.mkDerivation (finalAttrs: {
 
   nativeBuildInputs = [
     SDL2
-    addOpenGLRunpath
+    addDriverRunpath
     wrapGAppsHook3
     cmake
     glslang
     nasm
     ninja
     pkg-config
+    wxGTK32
   ];
 
   buildInputs = [
diff --git a/pkgs/by-name/ch/charmcraft/package.nix b/pkgs/by-name/ch/charmcraft/package.nix
index a2ea187240c8..fc5ef145d1bc 100644
--- a/pkgs/by-name/ch/charmcraft/package.nix
+++ b/pkgs/by-name/ch/charmcraft/package.nix
@@ -1,14 +1,36 @@
 {
   lib,
   git,
-  python3Packages,
+  python3,
   fetchFromGitHub,
   nix-update-script,
 }:
 
-python3Packages.buildPythonApplication rec {
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      pydantic-yaml = super.pydantic-yaml.overridePythonAttrs (old: rec {
+        version = "0.11.2";
+        src = fetchFromGitHub {
+          owner = "NowanIlfideme";
+          repo = "pydantic-yaml";
+          rev = "refs/tags/v${version}";
+          hash = "sha256-AeUyVav0/k4Fz69Qizn4hcJKoi/CDR9eUan/nJhWsDY=";
+        };
+        dependencies = with self; [
+          deprecated
+          importlib-metadata
+          pydantic_1
+          ruamel-yaml
+          types-deprecated
+        ];
+      });
+    };
+  };
+in
+python.pkgs.buildPythonApplication rec {
   pname = "charmcraft";
-  version = "2.7.0";
+  version = "3.1.1";
 
   pyproject = true;
 
@@ -16,23 +38,22 @@ python3Packages.buildPythonApplication rec {
     owner = "canonical";
     repo = "charmcraft";
     rev = "refs/tags/${version}";
-    hash = "sha256-yMcGXi7OxEtfOv3zLEUlnZrR90TkFc0y9RB9jS34ZWs=";
+    hash = "sha256-oxNbAIf7ltdDYkGJj29zvNDNXT6vt1jWaIqHJoMr7gU=";
   };
 
   postPatch = ''
-    substituteInPlace setup.py \
-      --replace-fail 'version=determine_version()' 'version="${version}"'
-
-    substituteInPlace charmcraft/env.py \
-      --replace-fail "distutils.util" "setuptools.dist"
+    substituteInPlace charmcraft/__init__.py --replace-fail "dev" "${version}"
   '';
 
-  propagatedBuildInputs = with python3Packages; [
+  dependencies = with python.pkgs; [
+    craft-application
     craft-cli
     craft-parts
+    craft-platforms
     craft-providers
     craft-store
     distro
+    docker
     humanize
     jinja2
     jsonschema
@@ -47,13 +68,17 @@ python3Packages.buildPythonApplication rec {
     urllib3
   ];
 
-  nativeBuildInputs = with python3Packages; [ setuptools ];
+  build-system = with python.pkgs; [
+    setuptools
+    setuptools-scm
+  ];
 
   pythonRelaxDeps = [ "urllib3" ];
 
   nativeCheckInputs =
-    with python3Packages;
+    with python.pkgs;
     [
+      hypothesis
       pyfakefs
       pytest-check
       pytest-mock
diff --git a/pkgs/by-name/ci/cinnamon-common/libdir.patch b/pkgs/by-name/ci/cinnamon-common/libdir.patch
new file mode 100644
index 000000000000..7783d0b3ad12
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-common/libdir.patch
@@ -0,0 +1,25 @@
+From 1c99ff9b042d77d97a0841c78fceb7cfbf41aa8b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Sun, 28 Feb 2021 05:58:09 +0100
+Subject: [PATCH] libdir patch
+
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 3c1e9a4f..a77d9b3c 100644
+--- a/meson.build
++++ b/meson.build
+@@ -14,7 +14,7 @@ includedir = get_option('includedir')
+ libexecdir = get_option('libexecdir')
+ desktopdir = join_paths(datadir, 'applications')
+ schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
+-pkglibdir = join_paths(libdir, meson.project_name().to_lower())
++pkglibdir = libdir
+ servicedir = join_paths(datadir, 'dbus-1', 'services')
+ pkgdatadir = join_paths(datadir, meson.project_name().to_lower())
+ po_dir = join_paths(meson.source_root(), 'po')
+-- 
+2.30.0
+
diff --git a/pkgs/by-name/ci/cinnamon-common/package.nix b/pkgs/by-name/ci/cinnamon-common/package.nix
new file mode 100644
index 000000000000..ffca0b823085
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-common/package.nix
@@ -0,0 +1,205 @@
+{ atk
+, cacert
+, dbus
+, cinnamon-control-center
+, cinnamon-desktop
+, cinnamon-menus
+, cinnamon-session
+, cinnamon-translations
+, cjs
+, evolution-data-server
+, fetchFromGitHub
+, gdk-pixbuf
+, gettext
+, libgnomekbd
+, glib
+, gobject-introspection
+, gsound
+, gtk3
+, intltool
+, json-glib
+, callPackage
+, libstartup_notification
+, libXtst
+, libXdamage
+, mesa
+, muffin
+, networkmanager
+, pkg-config
+, polkit
+, lib
+, stdenv
+, wrapGAppsHook3
+, libxml2
+, gtk-doc
+, gnome
+, python3
+, keybinder3
+, cairo
+, xapp
+, upower
+, nemo
+, libnotify
+, accountsservice
+, gnome-online-accounts
+, glib-networking
+, pciutils
+, timezonemap
+, libnma
+, meson
+, ninja
+, gst_all_1
+, perl
+}:
+
+let
+  pythonEnv = python3.withPackages (pp: with pp; [
+    dbus-python
+    setproctitle
+    pygobject3
+    pycairo
+    python-xapp
+    pillow
+    pyinotify # for looking-glass
+    pytz
+    tinycss2
+    python-pam
+    pexpect
+    distro
+    requests
+  ]);
+in
+stdenv.mkDerivation rec {
+  pname = "cinnamon-common";
+  version = "6.2.7";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "cinnamon";
+    rev = version;
+    hash = "sha256-j9Jk/mG/EYQUyVCBMJ7B4ZFiSSb3fl+TgQ+wvSSpcwo=";
+  };
+
+  patches = [
+    ./use-sane-install-dir.patch
+    ./libdir.patch
+  ];
+
+  buildInputs = [
+    atk
+    cacert
+    cinnamon-control-center
+    cinnamon-desktop
+    cinnamon-menus
+    cjs
+    dbus
+    evolution-data-server # for calendar-server
+    gdk-pixbuf
+    glib
+    gsound
+    gtk3
+    json-glib
+    libstartup_notification
+    libXtst
+    libXdamage
+    mesa
+    muffin
+    networkmanager
+    polkit
+    pythonEnv
+    libxml2
+    libgnomekbd
+    gst_all_1.gstreamer
+
+    # bindings
+    cairo
+    gnome.caribou
+    keybinder3
+    upower
+    xapp
+    timezonemap
+    nemo
+    libnotify
+    accountsservice
+    libnma
+
+    # gsi bindings
+    gnome-online-accounts
+    glib-networking # for goa
+  ];
+
+  nativeBuildInputs = [
+    gobject-introspection
+    meson
+    ninja
+    wrapGAppsHook3
+    intltool
+    gtk-doc
+    perl
+    python3.pkgs.wrapPython
+    pkg-config
+  ];
+
+  postPatch = ''
+    find . -type f -exec sed -i \
+      -e s,/usr/share/cinnamon,$out/share/cinnamon,g \
+      -e s,/usr/share/locale,/run/current-system/sw/share/locale,g \
+      {} +
+
+    # All optional and may introduce circular dependency.
+    find ./files/usr/share/cinnamon/applets -type f -exec sed -i \
+      -e '/^#/!s,/usr/bin,/run/current-system/sw/bin,g' \
+      {} +
+
+    pushd ./files/usr/share/cinnamon/cinnamon-settings
+      substituteInPlace ./bin/capi.py                     --replace-fail '"/usr/lib"' '"${cinnamon-control-center}/lib"'
+      substituteInPlace ./bin/SettingsWidgets.py          --replace-fail "/usr/share/sounds" "/run/current-system/sw/share/sounds"
+      substituteInPlace ./bin/Spices.py                   --replace-fail "subprocess.run(['/usr/bin/" "subprocess.run(['" \
+                                                          --replace-fail 'subprocess.run(["/usr/bin/' 'subprocess.run(["' \
+                                                          --replace-fail "msgfmt" "${gettext}/bin/msgfmt"
+      substituteInPlace ./modules/cs_info.py              --replace-fail "lspci" "${pciutils}/bin/lspci"
+      substituteInPlace ./modules/cs_keyboard.py          --replace-fail "/usr/bin/cinnamon-dbus-command" "$out/bin/cinnamon-dbus-command"
+      substituteInPlace ./modules/cs_themes.py            --replace-fail "$out/share/cinnamon/styles.d" "/run/current-system/sw/share/cinnamon/styles.d"
+    popd
+
+    substituteInPlace ./files/usr/bin/cinnamon-session-{cinnamon,cinnamon2d} \
+      --replace-fail "exec cinnamon-session" "exec ${cinnamon-session}/bin/cinnamon-session"
+
+    patchShebangs src/data-to-c.pl
+  '';
+
+  postInstall = ''
+    # Use locales from cinnamon-translations.
+    ln -s ${cinnamon-translations}/share/locale $out/share/locale
+  '';
+
+  preFixup = ''
+    # https://github.com/NixOS/nixpkgs/issues/101881
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${gnome.caribou}/share"
+    )
+
+    buildPythonPath "$out ${python3.pkgs.python-xapp}"
+
+    # https://github.com/NixOS/nixpkgs/issues/200397
+    patchPythonScript $out/bin/cinnamon-spice-updater
+
+    # https://github.com/NixOS/nixpkgs/issues/129946
+    patchPythonScript $out/share/cinnamon/cinnamon-desktop-editor/cinnamon-desktop-editor.py
+
+    # Called as `pkexec cinnamon-settings-users.py`.
+    wrapGApp $out/share/cinnamon/cinnamon-settings-users/cinnamon-settings-users.py
+  '';
+
+  passthru = {
+    providedSessions = [ "cinnamon" "cinnamon2d" "cinnamon-wayland" ];
+  };
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon";
+    description = "Cinnamon desktop environment";
+    license = [ licenses.gpl2 ];
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-common/use-sane-install-dir.patch b/pkgs/by-name/ci/cinnamon-common/use-sane-install-dir.patch
new file mode 100644
index 000000000000..8cb6949cb2d3
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-common/use-sane-install-dir.patch
@@ -0,0 +1,33 @@
+From f7e802959d7a5c217ed574cab30404fc769f174d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Sat, 6 Feb 2021 14:26:26 +0100
+Subject: [PATCH] use sane install dir
+
+---
+ meson.build | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index bd803f20..3c1e9a4f 100644
+--- a/meson.build
++++ b/meson.build
+@@ -127,8 +127,14 @@ configure_file(
+ )
+ 
+ install_subdir(
+-    'files',
+-    install_dir: '/',
++    'files/usr',
++    install_dir: get_option('prefix'),
++    strip_directory: true,
++)
++
++install_subdir(
++    'files/etc',
++    install_dir: join_paths(get_option('prefix'), 'etc'),
+     strip_directory: true,
+ )
+ 
+-- 
+2.30.0
+
diff --git a/pkgs/by-name/ci/cinnamon-control-center/package.nix b/pkgs/by-name/ci/cinnamon-control-center/package.nix
new file mode 100644
index 000000000000..b5a98a9090b9
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-control-center/package.nix
@@ -0,0 +1,105 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, glib
+, glib-networking
+, gettext
+, cinnamon-desktop
+, gtk3
+, libnotify
+, libxml2
+, colord
+, polkit
+, libxkbfile
+, cinnamon-menus
+, libgnomekbd
+, libxklavier
+, networkmanager
+, libgudev
+, libwacom
+, gnome
+, wrapGAppsHook3
+, tzdata
+, glibc
+, libnma
+, modemmanager
+, xorg
+, gdk-pixbuf
+, meson
+, ninja
+, cinnamon-translations
+, python3
+, upower
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-control-center";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-Blod69RzPTE3DztRo0PK0MKCE+vq0HWrcJcC/1e8eRI=";
+  };
+
+  buildInputs = [
+    gtk3
+    glib
+    glib-networking
+    cinnamon-desktop
+    libnotify
+    cinnamon-menus
+    libxml2
+    polkit
+    libgnomekbd
+    libxklavier
+    colord
+    libgudev
+    libwacom
+    tzdata
+    networkmanager
+    libnma
+    modemmanager
+    xorg.libXxf86misc
+    xorg.libxkbfile
+    gdk-pixbuf
+    upower
+  ];
+
+  /* ./panels/datetime/test-timezone.c:4:#define TZ_DIR "/usr/share/zoneinfo/"
+    ./panels/datetime/tz.h:32:#  define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
+    ./panels/datetime/tz.h:34:#  define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" */
+
+  postPatch = ''
+    sed 's|TZ_DIR "/usr/share/zoneinfo/"|TZ_DIR "${tzdata}/share/zoneinfo/"|g' -i ./panels/datetime/test-timezone.c
+    sed 's|TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"|TZ_DATA_FILE "${tzdata}/share/zoneinfo/zone.tab"|g' -i ./panels/datetime/tz.h
+    sed 's|"/usr/share/i18n/locales/"|"${glibc}/share/i18n/locales/"|g' -i panels/datetime/test-endianess.c
+
+    patchShebangs meson_install_schemas.py
+  '';
+
+  mesonFlags = [
+    # use locales from cinnamon-translations
+    "--localedir=${cinnamon-translations}/share/locale"
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+    wrapGAppsHook3
+    gettext
+    python3
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-control-center";
+    description = "Collection of configuration plugins used in cinnamon-settings";
+    mainProgram = "cinnamon-control-center";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-desktop/package.nix b/pkgs/by-name/ci/cinnamon-desktop/package.nix
new file mode 100644
index 000000000000..9bb7b706f02d
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-desktop/package.nix
@@ -0,0 +1,80 @@
+{ fetchFromGitHub
+, gdk-pixbuf
+, gobject-introspection
+, gtk3
+, intltool
+, meson
+, ninja
+, pkg-config
+, pulseaudio
+, python3
+, lib
+, stdenv
+, systemd
+, xkeyboard_config
+, xorg
+, wrapGAppsHook3
+, glib
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-desktop";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-9uewZh0GHQAenTcZpLchgFXSt3vOhxLbaepsJIkjTdI=";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  propagatedBuildInputs = [
+    glib
+    gtk3
+    pulseaudio
+  ];
+
+  buildInputs = [
+    gdk-pixbuf
+    systemd
+    xkeyboard_config
+    xorg.libxkbfile
+    xorg.libXext
+    xorg.libXrandr
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    python3
+    wrapGAppsHook3
+    intltool
+    pkg-config
+    gobject-introspection
+  ];
+
+  postPatch = ''
+    chmod +x install-scripts/meson_install_schemas.py # patchShebangs requires executable file
+    patchShebangs install-scripts/meson_install_schemas.py
+    sed "s|/usr/share|/run/current-system/sw/share|g" -i ./schemas/* # NOTE: unless this causes a circular dependency, we could link it to cinnamon-common/share/cinnamon
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-desktop";
+    description = "Library and data for various Cinnamon modules";
+
+    longDescription = ''
+      The libcinnamon-desktop library provides API shared by several applications
+      on the desktop, but that cannot live in the platform for various
+      reasons. There is no API or ABI guarantee, although we are doing our
+      best to provide stability. Documentation for the API is available with
+      gtk-doc.
+    '';
+
+    license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-gsettings-overrides/package.nix b/pkgs/by-name/ci/cinnamon-gsettings-overrides/package.nix
new file mode 100644
index 000000000000..7234d00d9c06
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-gsettings-overrides/package.nix
@@ -0,0 +1,73 @@
+{ lib
+, runCommand
+, nixos-artwork
+, glib
+, gnome-terminal
+, gtk3
+, gsettings-desktop-schemas
+, extraGSettingsOverrides ? ""
+, extraGSettingsOverridePackages ? [ ]
+, mint-artwork
+
+, muffin
+, nemo
+, xapp
+, cinnamon-desktop
+, cinnamon-session
+, cinnamon-settings-daemon
+, cinnamon-common
+, bulky
+}:
+
+let
+
+  inherit (lib) concatMapStringsSep;
+
+  gsettingsOverridePackages = [
+    # from
+    mint-artwork
+
+    # on
+    bulky
+    muffin
+    nemo
+    xapp
+    cinnamon-desktop
+    cinnamon-session
+    cinnamon-settings-daemon
+    cinnamon-common
+    gnome-terminal
+    gsettings-desktop-schemas
+    gtk3
+  ] ++ extraGSettingsOverridePackages;
+
+  gsettingsOverrides = ''
+    # Use Fedora's default to make text readable and
+    # restore ununified menu.
+    # https://github.com/NixOS/nixpkgs/issues/200017
+    [org.gnome.Terminal.Legacy.Settings]
+    theme-variant='dark'
+    unified-menu=false
+
+    ${extraGSettingsOverrides}
+  '';
+in
+
+# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
+runCommand "cinnamon-gsettings-overrides" { preferLocalBuild = true; }
+  ''
+    data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
+    schema_dir="$data_dir/glib-2.0/schemas"
+
+    mkdir -p "$schema_dir"
+
+    ${concatMapStringsSep "\n" (pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schema_dir\"") gsettingsOverridePackages}
+
+    chmod -R a+w "$data_dir"
+
+    cat - > "$schema_dir/nixos-defaults.gschema.override" <<- EOF
+    ${gsettingsOverrides}
+    EOF
+
+    ${glib.dev}/bin/glib-compile-schemas --strict "$schema_dir"
+  ''
diff --git a/pkgs/by-name/ci/cinnamon-menus/package.nix b/pkgs/by-name/ci/cinnamon-menus/package.nix
new file mode 100644
index 000000000000..62066ff8dade
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-menus/package.nix
@@ -0,0 +1,42 @@
+{ fetchFromGitHub
+, glib
+, gobject-introspection
+, meson
+, ninja
+, pkg-config
+, lib
+, stdenv
+, wrapGAppsHook3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-menus";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-HOipeUV9daPSsJ+SHPlsyEAg2SwKQkZBm1JUoNtDZAY=";
+  };
+
+  buildInputs = [
+    glib
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    wrapGAppsHook3
+    pkg-config
+    gobject-introspection
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-menus";
+    description = "Menu system for the Cinnamon project";
+    license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-screensaver/package.nix b/pkgs/by-name/ci/cinnamon-screensaver/package.nix
new file mode 100644
index 000000000000..f4ba7a16413d
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-screensaver/package.nix
@@ -0,0 +1,103 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, meson
+, ninja
+, glib
+, dbus
+, gettext
+, cinnamon-desktop
+, cinnamon-common
+, intltool
+, libxslt
+, gtk3
+, libgnomekbd
+, gnome
+, libtool
+, wrapGAppsHook3
+, gobject-introspection
+, python3
+, pam
+, cairo
+, xapp
+, xdotool
+, xorg
+, iso-flags-png-320x240
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-screensaver";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-hXgDTQnOlskzyOogvk7BQ9iJ3oXRtgUUX5bXtgD+gFo=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    wrapGAppsHook3
+    gettext
+    intltool
+    dbus # for meson.build
+    libxslt
+    libtool
+    meson
+    ninja
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    # from meson.build
+    gtk3
+    glib
+
+    xorg.libXext
+    xorg.libXinerama
+    xorg.libX11
+    xorg.libXrandr
+
+    (python3.withPackages (pp: with pp; [
+      pygobject3
+      setproctitle
+      python-xapp
+      pycairo
+    ]))
+    xapp
+    xdotool
+    pam
+    cairo
+    cinnamon-desktop
+    cinnamon-common
+    libgnomekbd
+    gnome.caribou
+  ];
+
+  postPatch = ''
+    # cscreensaver hardcodes absolute paths everywhere. Nuke from orbit.
+    find . -type f -exec sed -i \
+      -e s,/usr/share/locale,/run/current-system/sw/share/locale,g \
+      -e s,/usr/lib/cinnamon-screensaver,$out/lib,g \
+      -e s,/usr/share/cinnamon-screensaver,$out/share,g \
+      -e s,/usr/share/iso-flag-png,${iso-flags-png-320x240}/share/iso-flags-png,g \
+      {} +
+  '';
+
+  preFixup = ''
+    # https://github.com/NixOS/nixpkgs/issues/101881
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${gnome.caribou}/share"
+    )
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-screensaver";
+    description = "Cinnamon screen locker and screensaver program";
+    license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-session/0001-Use-dbus_glib-instead-of-elogind.patch b/pkgs/by-name/ci/cinnamon-session/0001-Use-dbus_glib-instead-of-elogind.patch
new file mode 100644
index 000000000000..368e49bb84aa
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-session/0001-Use-dbus_glib-instead-of-elogind.patch
@@ -0,0 +1,38 @@
+From eb4a1eae754f222b1be902c2f050704fb0511cf7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Sat, 5 Sep 2020 23:19:23 +0200
+Subject: [PATCH] Use dbus_glib instead of elogind
+
+---
+ cinnamon-session/meson.build | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/cinnamon-session/meson.build b/cinnamon-session/meson.build
+index d8428dc..1f15115 100644
+--- a/cinnamon-session/meson.build
++++ b/cinnamon-session/meson.build
+@@ -56,6 +56,7 @@ cinnamon_session_sources = [
+   gdbus_sources,
+ ]
+ 
++dbus_glib = dependency('dbus-glib-1')
+ executable('cinnamon-session-binary',
+   cinnamon_session_sources,
+   dependencies: [
+@@ -74,7 +75,7 @@ executable('cinnamon-session-binary',
+     xext,
+     xrender,
+     xtest,
+-    elogind,
++    dbus_glib,
+   ],
+   link_with: [
+     libegg,
+@@ -98,4 +99,3 @@ foreach unit: units
+     dependencies: unit[2]
+   )
+ endforeach
+-
+-- 
+2.28.0
+
diff --git a/pkgs/by-name/ci/cinnamon-session/package.nix b/pkgs/by-name/ci/cinnamon-session/package.nix
new file mode 100644
index 000000000000..79dd3e555d83
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-session/package.nix
@@ -0,0 +1,111 @@
+{ fetchFromGitHub
+, cinnamon-desktop
+, cinnamon-settings-daemon
+, cinnamon-translations
+, dbus-glib
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, libcanberra
+, libxslt
+, makeWrapper
+, meson
+, ninja
+, pkg-config
+, python3
+, lib
+, stdenv
+, systemd
+, wrapGAppsHook3
+, xapp
+, xorg
+, libexecinfo
+, pango
+}:
+
+let
+  pythonEnv = python3.withPackages (pp: with pp; [
+    python-xapp
+    pygobject3
+    setproctitle
+  ]);
+in
+stdenv.mkDerivation rec {
+  pname = "cinnamon-session";
+  version = "6.2.1";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-mr+QOFogzoloasGt1uK6zH/KHuH+uWYzXAZxPYkW57A=";
+  };
+
+  patches = [
+    ./0001-Use-dbus_glib-instead-of-elogind.patch
+  ];
+
+  buildInputs = [
+    # meson.build
+    cinnamon-desktop
+    gtk3
+    glib
+    libcanberra
+    pango
+    xorg.libX11
+    xorg.libXext
+    xapp
+    xorg.libXau
+    xorg.libXcomposite
+
+    systemd
+
+    xorg.libXtst
+    xorg.libXrender
+    xorg.xtrans
+
+    # other (not meson.build)
+    cinnamon-settings-daemon
+    dbus-glib
+    glib
+    gsettings-desktop-schemas
+    pythonEnv # for cinnamon-session-quit
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    wrapGAppsHook3
+    libexecinfo
+    python3
+    pkg-config
+    libxslt
+  ];
+
+  mesonFlags = [
+    # use locales from cinnamon-translations
+    "--localedir=${cinnamon-translations}/share/locale"
+  ];
+
+  postPatch = ''
+    # patchShebangs requires executable file
+    chmod +x data/meson_install_schemas.py cinnamon-session-quit/cinnamon-session-quit.py
+    patchShebangs --build data/meson_install_schemas.py
+    patchShebangs --host cinnamon-session-quit/cinnamon-session-quit.py
+  '';
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${cinnamon-desktop}/share"
+      --prefix XDG_CONFIG_DIRS : "${cinnamon-settings-daemon}/etc/xdg"
+    )
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-session";
+    description = "Cinnamon session manager";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-settings-daemon/csd-backlight-helper-fix.patch b/pkgs/by-name/ci/cinnamon-settings-daemon/csd-backlight-helper-fix.patch
new file mode 100644
index 000000000000..a11660bdb115
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-settings-daemon/csd-backlight-helper-fix.patch
@@ -0,0 +1,49 @@
+From 7fa408ebd72c9f1ff7ff4e9d7f4a811465a8a41b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= <mkg20001@gmail.com>
+Date: Tue, 21 Jan 2020 03:19:28 +0100
+Subject: [PATCH] fix: use an impure path to csd-backlight-helper to fix
+ policy-reload bug
+
+---
+ plugins/power/csd-power-manager.c                             | 4 ++--
+ .../org.cinnamon.settings-daemon.plugins.power.policy.in      | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/power/csd-power-manager.c b/plugins/power/csd-power-manager.c
+index 33f4489..84dd98b 100644
+--- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -2529,7 +2529,7 @@ backlight_helper_get_value (const gchar *argument, CsdPowerManager* manager,
+ #endif
+ 
+         /* get the data */
+-        command = g_strdup_printf (LIBEXECDIR "/csd-backlight-helper --%s %s",
++        command = g_strdup_printf ("/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %s",
+                                    argument,
+                                    manager->priv->backlight_helper_preference_args);
+         ret = g_spawn_command_line_sync (command,
+@@ -2619,7 +2619,7 @@ backlight_helper_set_value (const gchar *argument,
+ #endif
+ 
+         /* get the data */
+-        command = g_strdup_printf ("pkexec " LIBEXECDIR "/csd-backlight-helper --%s %i %s",
++        command = g_strdup_printf ("pkexec " "/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper --%s %i %s",
+                                    argument, value,
+                                    manager->priv->backlight_helper_preference_args);
+         ret = g_spawn_command_line_sync (command,
+diff --git a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in
+index 504f017..3569e8c 100644
+--- a/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in
++++ b/plugins/power/org.cinnamon.settings-daemon.plugins.power.policy.in
+@@ -25,7 +25,7 @@
+       <allow_inactive>no</allow_inactive>
+       <allow_active>yes</allow_active>
+     </defaults>
+-    <annotate key="org.freedesktop.policykit.exec.path">@libexecdir@/csd-backlight-helper</annotate>
++    <annotate key="org.freedesktop.policykit.exec.path">/run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper</annotate>
+   </action>
+ 
+ </policyconfig>
+-- 
+2.30.0
+
diff --git a/pkgs/by-name/ci/cinnamon-settings-daemon/package.nix b/pkgs/by-name/ci/cinnamon-settings-daemon/package.nix
new file mode 100644
index 000000000000..b704f21e294b
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-settings-daemon/package.nix
@@ -0,0 +1,106 @@
+{ fetchFromGitHub
+, cinnamon-desktop
+, cinnamon-translations
+, colord
+, glib
+, gsettings-desktop-schemas
+, gtk3
+, lcms2
+, libcanberra-gtk3
+, libgnomekbd
+, libnotify
+, libxklavier
+, wrapGAppsHook3
+, pkg-config
+, lib
+, stdenv
+, systemd
+, upower
+, dconf
+, cups
+, polkit
+, librsvg
+, libwacom
+, xorg
+, fontconfig
+, tzdata
+, nss
+, libgudev
+, meson
+, ninja
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-settings-daemon";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-OAG5Tes+0bi+vKqm77Y7OykTpUkMdRaXIJYLuomIDMo=";
+  };
+
+  patches = [
+    ./csd-backlight-helper-fix.patch
+  ];
+
+  buildInputs = [
+    cinnamon-desktop
+    colord
+    gtk3
+    glib
+    gsettings-desktop-schemas
+    lcms2
+    libcanberra-gtk3
+    libgnomekbd
+    libnotify
+    libxklavier
+    systemd
+    upower
+    dconf
+    cups
+    polkit
+    librsvg
+    libwacom
+    xorg.libXext
+    xorg.libX11
+    xorg.libXi
+    xorg.libXfixes
+    fontconfig
+    nss
+    libgudev
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    wrapGAppsHook3
+    pkg-config
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  postPatch = ''
+    sed "s|/usr/share/zoneinfo|${tzdata}/share/zoneinfo|g" -i plugins/datetime/system-timezone.h
+  '';
+
+  # use locales from cinnamon-translations (not using --localedir because datadir is used)
+  postInstall = ''
+    ln -s ${cinnamon-translations}/share/locale $out/share/locale
+  '';
+
+  # So the polkit policy can reference /run/current-system/sw/bin/cinnamon-settings-daemon/csd-backlight-helper
+  postFixup = ''
+    mkdir -p $out/bin/cinnamon-settings-daemon
+    ln -s $out/libexec/csd-backlight-helper $out/bin/cinnamon-settings-daemon/csd-backlight-helper
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-settings-daemon";
+    description = "Settings daemon for the Cinnamon desktop";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ci/cinnamon-translations/package.nix b/pkgs/by-name/ci/cinnamon-translations/package.nix
new file mode 100644
index 000000000000..503db8783de4
--- /dev/null
+++ b/pkgs/by-name/ci/cinnamon-translations/package.nix
@@ -0,0 +1,33 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, gettext
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cinnamon-translations";
+  version = "6.2.2";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-uZVF2CsKTQOvMJsyXBW405W3vdIGxYlW8+xPiwSgUSg=";
+  };
+
+  nativeBuildInputs = [
+    gettext
+  ];
+
+  installPhase = ''
+    mv usr $out # files get installed like so: msgfmt -o usr/share/locale/$lang/LC_MESSAGES/$dir.mo $file
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cinnamon-translations";
+    description = "Translations files for the Cinnamon desktop";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/cj/cjs/package.nix b/pkgs/by-name/cj/cjs/package.nix
new file mode 100644
index 000000000000..867b6941d5ae
--- /dev/null
+++ b/pkgs/by-name/cj/cjs/package.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, gobject-introspection
+, pkg-config
+, cairo
+, glib
+, readline
+, libsysprof-capture
+, spidermonkey_115
+, meson
+, mesonEmulatorHook
+, dbus
+, ninja
+, which
+, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "cjs";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "cjs";
+    rev = version;
+    hash = "sha256-/74E10txRjwN9RkjVB8M0MPYakJ659yJWanc4DC09wg=";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    which # for locale detection
+    libxml2 # for xml-stripblanks
+    dbus # for dbus-run-session
+    gobject-introspection
+  ] ++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
+    mesonEmulatorHook
+  ];
+
+  buildInputs = [
+    cairo
+    readline
+    libsysprof-capture
+    spidermonkey_115
+  ];
+
+  propagatedBuildInputs = [
+    glib
+  ];
+
+  mesonFlags = lib.optionals stdenv.hostPlatform.isMusl [
+    "-Dprofiler=disabled"
+  ];
+
+  postPatch = ''
+    patchShebangs --build build/choose-tests-locale.sh
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/cjs";
+    description = "JavaScript bindings for Cinnamon";
+
+    longDescription = ''
+      This module contains JavaScript bindings based on gobject-introspection.
+    '';
+
+    license = with licenses; [
+      gpl2Plus
+      lgpl2Plus
+      mit
+      mpl11
+    ];
+
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/cl/clang-tidy-sarif/package.nix b/pkgs/by-name/cl/clang-tidy-sarif/package.nix
index 64b8da01af3f..9073d5c89417 100644
--- a/pkgs/by-name/cl/clang-tidy-sarif/package.nix
+++ b/pkgs/by-name/cl/clang-tidy-sarif/package.nix
@@ -1,37 +1,33 @@
 {
   lib,
-  fetchFromGitHub,
+  fetchCrate,
   rustPlatform,
-  clang-tidy-sarif,
-  testers,
+  nix-update-script,
+  versionCheckHook,
 }:
 rustPlatform.buildRustPackage rec {
   pname = "clang-tidy-sarif";
-  version = "0.4.2";
+  version = "0.5.0";
 
-  src = fetchFromGitHub {
-    owner = "psastras";
-    repo = "sarif-rs";
-    rev = "clang-tidy-sarif-v${version}";
-    hash = "sha256-EzWzDeIeSJ11CVcVyAhMjYQJcKHnieRrFkULc5eXAno=";
+  src = fetchCrate {
+    inherit pname version;
+    hash = "sha256-lxZtuE6hvmeX2CCO8UeGDORnCV5N7ZNiVZR+9LOCrdk=";
   };
 
-  cargoHash = "sha256-NzdgfHRDgLB6sMhBflk9rACEocLP23KlZL22iAfBfh8=";
-  cargoBuildFlags = [
-    "--package"
-    "clang-tidy-sarif"
-  ];
-  cargoTestFlags = cargoBuildFlags;
+  cargoHash = "sha256-R0IyXinUhIVqGal2Vt0EdU0EFyzs3KIbp/UIseWlj1Y=";
+
+  nativeInstallCheckInputs = [ versionCheckHook ];
+  doInstallCheck = true;
 
   passthru = {
-    tests.version = testers.testVersion { package = clang-tidy-sarif; };
+    updateScript = nix-update-script { };
   };
 
   meta = {
     description = "A CLI tool to convert clang-tidy diagnostics into SARIF";
-    mainProgram = "clang-tidy-sarif";
     homepage = "https://psastras.github.io/sarif-rs";
     maintainers = with lib.maintainers; [ getchoo ];
+    mainProgram = "clang-tidy-sarif";
     license = lib.licenses.mit;
   };
 }
diff --git a/pkgs/by-name/cl/clevis/0000-tang-timeout.patch b/pkgs/by-name/cl/clevis/0000-tang-timeout.patch
new file mode 100644
index 000000000000..454541d5e77c
--- /dev/null
+++ b/pkgs/by-name/cl/clevis/0000-tang-timeout.patch
@@ -0,0 +1,13 @@
+diff --git a/src/pins/tang/clevis-decrypt-tang b/src/pins/tang/clevis-decrypt-tang
+index 72393b4..40b660f 100755
+--- a/src/pins/tang/clevis-decrypt-tang
++++ b/src/pins/tang/clevis-decrypt-tang
+@@ -101,7 +101,7 @@ xfr="$(jose jwk exc -i '{"alg":"ECMR"}' -l- -r- <<< "$clt$eph")"
+ 
+ rec_url="$url/rec/$kid"
+ ct="Content-Type: application/jwk+json"
+-if ! rep="$(curl -sfg -X POST -H "$ct" --data-binary @- "$rec_url" <<< "$xfr")"; then
++if ! rep="$(curl --connect-timeout 10 -sfg -X POST -H "$ct" --data-binary @- "$rec_url" <<< "$xfr")"; then
+     echo "Error communicating with server $url" >&2
+     exit 1
+ fi
diff --git a/pkgs/by-name/cl/clevis/package.nix b/pkgs/by-name/cl/clevis/package.nix
new file mode 100644
index 000000000000..ac1a1b1be918
--- /dev/null
+++ b/pkgs/by-name/cl/clevis/package.nix
@@ -0,0 +1,130 @@
+{
+  lib,
+  asciidoc-full,
+  coreutils,
+  cryptsetup,
+  curl,
+  fetchFromGitHub,
+  gnugrep,
+  gnused,
+  jansson,
+  jose,
+  libpwquality,
+  luksmeta,
+  makeWrapper,
+  meson,
+  ninja,
+  nixosTests,
+  pkg-config,
+  stdenv,
+  tpm2-tools,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "clevis";
+  version = "20";
+
+  src = fetchFromGitHub {
+    owner = "latchset";
+    repo = "clevis";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-rBdZrnHPzRd9vbyl1h/Nb0cFAtIPUHSmxVoKrKuCrQ8=";
+  };
+
+  patches = [
+    # Replaces the clevis-decrypt 300s timeout to a 10s timeout
+    # https://github.com/latchset/clevis/issues/289
+    ./0000-tang-timeout.patch
+  ];
+
+  nativeBuildInputs = [
+    asciidoc-full
+    makeWrapper
+    meson
+    ninja
+    pkg-config
+  ];
+
+  buildInputs = [
+    cryptsetup
+    curl
+    jansson
+    jose
+    libpwquality
+    luksmeta
+    tpm2-tools
+  ];
+
+  outputs = [
+    "out"
+    "man"
+  ];
+
+  # TODO: investigate how to prepare the dependencies so that they can be found
+  # while setting strictDeps as true. This will require studying the dark
+  # corners of cross-compilation in Nixpkgs...
+  strictDeps = false;
+
+  # Since 2018-07-11, upstream relies on a hardcoded /bin/cat. See:
+  # https://github.com/latchset/clevis/issues/61
+  # https://github.com/latchset/clevis/pull/64
+  #
+  # So, we filter all src files that have the string "/bin/cat" and patch that
+  # string to an absolute path for our coreutils location.
+  # The xargs command is a little bit convoluted because a simpler version would
+  # be vulnerable to code injection. This hint is a courtesy of Stack Exchange:
+  # https://unix.stackexchange.com/a/267438
+  postPatch = ''
+    for f in $(find src/ -type f -print0 |\
+                 xargs -0 -I@ sh -c 'grep -q "/bin/cat" "$1" && echo "$1"' sh @); do
+      substituteInPlace "$f" --replace-fail '/bin/cat' '${lib.getExe' coreutils "cat"}'
+    done
+  '';
+
+  # We wrap the main clevis binary entrypoint but not the sub-binaries.
+  postInstall =
+    let
+      includeIntoPath = [
+        coreutils
+        cryptsetup
+        gnugrep
+        gnused
+        jose
+        libpwquality
+        luksmeta
+        tpm2-tools
+      ];
+    in
+    ''
+      wrapProgram $out/bin/clevis \
+        --prefix PATH ':' "${lib.makeBinPath includeIntoPath}:${placeholder "out"}/bin"
+    '';
+
+  passthru.tests = {
+    inherit (nixosTests.installer)
+      clevisBcachefs
+      clevisBcachefsFallback
+      clevisLuks
+      clevisLuksFallback
+      clevisZfs
+      clevisZfsFallback
+      ;
+    clevisLuksSystemdStage1 = nixosTests.installer-systemd-stage-1.clevisLuks;
+    clevisLuksFallbackSystemdStage1 = nixosTests.installer-systemd-stage-1.clevisLuksFallback;
+    clevisZfsSystemdStage1 = nixosTests.installer-systemd-stage-1.clevisZfs;
+    clevisZfsFallbackSystemdStage1 = nixosTests.installer-systemd-stage-1.clevisZfsFallback;
+  };
+
+  meta = {
+    homepage = "https://github.com/latchset/clevis";
+    description = "Automated Encryption Framework";
+    longDescription = ''
+      Clevis is a pluggable framework for automated decryption. It can be used
+      to provide automated decryption of data or even automated unlocking of
+      LUKS volumes.
+    '';
+    changelog = "https://github.com/latchset/clevis/releases/tag/v${finalAttrs.version}";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+})
diff --git a/pkgs/by-name/cl/clojure-lsp/package.nix b/pkgs/by-name/cl/clojure-lsp/package.nix
index fc5ca91fb740..bc482b5dac7d 100644
--- a/pkgs/by-name/cl/clojure-lsp/package.nix
+++ b/pkgs/by-name/cl/clojure-lsp/package.nix
@@ -1,10 +1,8 @@
 {
   lib,
   buildGraalvmNativeImage,
-  babashka,
   fetchurl,
   fetchFromGitHub,
-  clojure,
   writeScript,
   testers,
   clojure-lsp,
diff --git a/pkgs/by-name/cm/cmake-lint/package.nix b/pkgs/by-name/cm/cmake-lint/package.nix
index b683a0aaa8c5..fd1c95165c35 100644
--- a/pkgs/by-name/cm/cmake-lint/package.nix
+++ b/pkgs/by-name/cm/cmake-lint/package.nix
@@ -18,19 +18,20 @@ python3Packages.buildPythonApplication rec {
     hash = "sha256-/OuWwerBlJynEibaYo+jkLpHt4x9GZrqMRJNxgrDBlM=";
   };
 
-  nativeBuildInputs = [ python3Packages.setuptools ];
+  postPatch = ''
+    # We don't need to test coverage, so remove these checks
+    substituteInPlace setup.cfg \
+      --replace-fail "addopts = --cov-fail-under=84 --cov=./cmakelint" ""
+  '';
+
+  build-system = [ python3Packages.setuptools ];
 
   pythonImportsCheck = [ "cmakelint" ];
 
-  nativeCheckInputs = with python3Packages; [
-    pytestCheckHook
-    nose
+  nativeCheckInputs = [
+    python3Packages.pytestCheckHook
   ];
 
-  checkPhase = ''
-    nosetests
-  '';
-
   passthru.tests = {
     version = testers.testVersion { package = cmake-lint; };
   };
diff --git a/pkgs/by-name/cm/cmake/setup-hook.sh b/pkgs/by-name/cm/cmake/setup-hook.sh
index b28ed42b6896..29b72ddda435 100755
--- a/pkgs/by-name/cm/cmake/setup-hook.sh
+++ b/pkgs/by-name/cm/cmake/setup-hook.sh
@@ -5,7 +5,7 @@ addCMakeParams() {
 fixCmakeFiles() {
     # Replace occurences of /usr and /opt by /var/empty.
     echo "fixing cmake files..."
-    find "$1" \( -type f -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
+    find "$1" -type f \( -name "*.cmake" -o -name "*.cmake.in" -o -name CMakeLists.txt \) -print |
         while read fn; do
             sed -e 's^/usr\([ /]\|$\)^/var/empty\1^g' -e 's^/opt\([ /]\|$\)^/var/empty\1^g' < "$fn" > "$fn.tmp"
             mv "$fn.tmp" "$fn"
diff --git a/pkgs/by-name/co/codeium/package.nix b/pkgs/by-name/co/codeium/package.nix
index 80cbee9e371b..16d0f7b06209 100644
--- a/pkgs/by-name/co/codeium/package.nix
+++ b/pkgs/by-name/co/codeium/package.nix
@@ -13,10 +13,10 @@ let
   }.${system} or throwSystem;
 
   hash = {
-    x86_64-linux = "sha256-ULHO7NrbW0DDlOYiSHGXwJ+NOa68Ma+HMHgq2WyAKBA=";
-    aarch64-linux = "sha256-WVqPV/D9jPADkxt5XmydqXjSG8461URPsk1+W/kyZV0=";
-    x86_64-darwin = "sha256-0P/eYZp0Wieza0btOA+yxqKtoIYlUN6MhN0dI6R8GEg=";
-    aarch64-darwin = "sha256-2Cv22+Ii+otKLDQ404l9R/x42PkKTEzPB72/gc9wfig=";
+    x86_64-linux = "sha256-EpmbqXLu+yShS86mXCTYpLuPVPIzvQIKVMcnVEN61OU=";
+    aarch64-linux = "sha256-rCglTEpIxGR0RjOSJgEgJGWhhJ/ZgI361AMkgBbnflU=";
+    x86_64-darwin = "sha256-C9xOdgNmapOgLVyrZGP03hcVwIpmHqFwpxQalZtbJSo=";
+    aarch64-darwin = "sha256-Gm5ZITOpsKNeWkqDPrn9BbPDH4AM3NkFG+nhc6hbZ+4=";
   }.${system} or throwSystem;
 
   bin = "$out/bin/codeium_language_server";
@@ -24,7 +24,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "codeium";
-  version = "1.8.80";
+  version = "1.10.0";
   src = fetchurl {
     name = "${finalAttrs.pname}-${finalAttrs.version}.gz";
     url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";
diff --git a/pkgs/by-name/co/commitmsgfmt/package.nix b/pkgs/by-name/co/commitmsgfmt/package.nix
index 508ce1f98312..e653fce2671a 100644
--- a/pkgs/by-name/co/commitmsgfmt/package.nix
+++ b/pkgs/by-name/co/commitmsgfmt/package.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
     rev = "v${version}";
     hash = "sha256-HEkPnTO1HeJg8gpHFSUTkEVBPWJ0OdfUhNn9iGfaDD4=";
   };
-  cargoSha256 = "sha256-jTRB9ogFQGVC4C9xpGxsJYV3cnWydAJLMcjhzUPULTE=";
+  cargoHash = "sha256-jTRB9ogFQGVC4C9xpGxsJYV3cnWydAJLMcjhzUPULTE=";
 
   passthru.tests.version = testers.testVersion {
     package = commitmsgfmt;
diff --git a/pkgs/by-name/co/connectome-workbench/package.nix b/pkgs/by-name/co/connectome-workbench/package.nix
new file mode 100644
index 000000000000..bb1cd5c880a1
--- /dev/null
+++ b/pkgs/by-name/co/connectome-workbench/package.nix
@@ -0,0 +1,65 @@
+{ lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchpatch,
+  cmake,
+  libGL,
+  libGLU,
+  libsForQt5,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "connectome-workbench";
+  version = "2.0.0";
+
+  src = fetchFromGitHub {
+    owner = "Washington-University";
+    repo = "workbench";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-d0J5bXp6mJlUQBmInxPXPkd5P5H+3F6fE9fc8pD1fUc=";
+  };
+
+  sourceRoot = "${finalAttrs.src.name}/src";
+
+  patches = [
+    # remove after next release:
+    (fetchpatch {
+      name = "fix-missing-includes-in-CZIlib";
+      url = "https://github.com/Washington-University/workbench/commit/7ba3345d161d567a4b628ceb02ab4471fc96cb20.diff";
+      hash = "sha256-DMrJOr/2Wr4o4Z3AuhWfMZTX8f/kOYWwZQzBUwIrTd8=";
+      relative = "src";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt  \
+      --replace-fail "ADD_SUBDIRECTORY ( Tests )" ""  \
+      --replace-fail "ENABLE_TESTING()" ""
+  '';
+  # tests are minimal and test_driver fails to link (also -DBUILD_TESTING=... is ignored):
+  # ld: ../Brain/libBrain.a(BrainOpenGLVolumeObliqueSliceDrawing.cxx.o): undefined reference to symbol 'glGetFloatv'
+  # ld: /nix/store/a5vcvrkh1c2ng5kr584g3zw3991vnhks-libGL-1.7.0/lib/libGL.so.1: error adding symbols: DSO missing from command line
+
+  nativeBuildInputs = [
+    cmake
+    libsForQt5.wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    libGL
+    libGLU
+  ] ++ (with libsForQt5; [
+    qtbase
+  ]);
+  # note: we should be able to unvendor a few libs (ftgl, quazip, qwt) but they aren't detected properly
+
+  meta = {
+    description = "Visualization and discovery tool used to map neuroimaging data";
+    homepage = "https://www.humanconnectome.org/software/connectome-workbench";
+    license = with lib.licenses; [ gpl2Plus gpl3Plus mit ];
+    changelog = "https://github.com/Washington-University/workbench/releases/tag/v${finalAttrs.version}";
+    maintainers = with lib.maintainers; [ bcdarwin ];
+    mainProgram = "wb_command";
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/co/convco/package.nix b/pkgs/by-name/co/convco/package.nix
index 59dc53509902..2564f3b06c1b 100644
--- a/pkgs/by-name/co/convco/package.nix
+++ b/pkgs/by-name/co/convco/package.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "convco";
-  version = "0.5.1";
+  version = "0.5.2";
 
   src = fetchFromGitHub {
     owner = "convco";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-b05RO6x5hnxG6gepRTK4CDlnLqMdp8hl4KL+InzBH70=";
+    hash = "sha256-S5k0d29tuR0VkJrqCiWg1v+W2n9TrQCfMOInII4jxg0=";
   };
 
-  cargoHash = "sha256-pdnH/9Tda6PXf70W76mg5vVE2rzOI+M61UR+HMtgXC0=";
+  cargoHash = "sha256-cYb3syf+k4V0pCpekQ2tY73Gl6rDc9YMCXs3TKRtgpo=";
 
   nativeBuildInputs = [ cmake pkg-config ];
 
diff --git a/pkgs/by-name/co/cosmic-edit/package.nix b/pkgs/by-name/co/cosmic-edit/package.nix
index 2fc1f95082d9..9ff8810dc517 100644
--- a/pkgs/by-name/co/cosmic-edit/package.nix
+++ b/pkgs/by-name/co/cosmic-edit/package.nix
@@ -3,7 +3,6 @@
   stdenv,
   fetchFromGitHub,
   rustPlatform,
-  cmake,
   makeBinaryWrapper,
   cosmic-icons,
   just,
diff --git a/pkgs/by-name/co/cosmic-store/package.nix b/pkgs/by-name/co/cosmic-store/package.nix
index fb4eb787cb70..61aa2aa4d9e7 100644
--- a/pkgs/by-name/co/cosmic-store/package.nix
+++ b/pkgs/by-name/co/cosmic-store/package.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub, rustPlatform, appstream, makeBinaryWrapper
 , cosmic-icons, glib, just, pkg-config, libglvnd, libxkbcommon, libinput
-, fontconfig, flatpak, freetype, openssl, mesa, wayland, xorg, vulkan-loader
+, fontconfig, flatpak, freetype, openssl, wayland, xorg, vulkan-loader
 , vulkan-validation-layers, }:
 
 rustPlatform.buildRustPackage rec {
diff --git a/pkgs/by-name/co/cosmic-term/package.nix b/pkgs/by-name/co/cosmic-term/package.nix
index b2bcf3ebccbc..4d210eb6c232 100644
--- a/pkgs/by-name/co/cosmic-term/package.nix
+++ b/pkgs/by-name/co/cosmic-term/package.nix
@@ -8,7 +8,6 @@
 , libinput
 , libxkbcommon
 , makeBinaryWrapper
-, mesa
 , pkg-config
 , rustPlatform
 , stdenv
diff --git a/pkgs/by-name/co/coulr/package.nix b/pkgs/by-name/co/coulr/package.nix
new file mode 100644
index 000000000000..c7db6a671b15
--- /dev/null
+++ b/pkgs/by-name/co/coulr/package.nix
@@ -0,0 +1,71 @@
+{
+  lib,
+  fetchFromGitHub,
+  python3,
+  wrapGAppsHook4,
+  pkg-config,
+  meson,
+  ninja,
+  appstream-glib,
+  desktop-file-utils,
+  gobject-introspection,
+  libadwaita,
+  libportal-gtk4,
+  libnotify,
+  nix-update-script,
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "coulr";
+  version = "2.1.0";
+
+  pyproject = false;
+  dontWrapGApps = true;
+
+  src = fetchFromGitHub {
+    owner = "Huluti";
+    repo = "Coulr";
+    rev = version;
+    hash = "sha256-1xnL5AWl/rLQu3i9m6uxbS4QT+690hmEW8kYTwkg7Gw=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    meson
+    ninja
+    appstream-glib
+    desktop-file-utils
+    gobject-introspection
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    libadwaita
+    libportal-gtk4
+    libnotify
+  ];
+
+  dependencies = [ python3.pkgs.pygobject3 ];
+
+  postPatch = ''
+    patchShebangs build-aux/meson/postinstall.py
+    substituteInPlace build-aux/meson/postinstall.py \
+      --replace-fail gtk-update-icon-cache gtk4-update-icon-cache
+  '';
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Color box to help developers and designers";
+    homepage = "https://github.com/Huluti/Coulr";
+    changelog = "https://github.com/Huluti/Coulr/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ jaredmontoya ];
+    mainProgram = "coulr";
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/cr/cryptpad/0001-env.js-fix-httpSafePort-handling.patch b/pkgs/by-name/cr/cryptpad/0001-env.js-fix-httpSafePort-handling.patch
new file mode 100644
index 000000000000..838ee033871f
--- /dev/null
+++ b/pkgs/by-name/cr/cryptpad/0001-env.js-fix-httpSafePort-handling.patch
@@ -0,0 +1,56 @@
+From 4bf0be64fe51a9c9fd9e410ada15251378b743bf Mon Sep 17 00:00:00 2001
+From: Dominique Martinet <asmadeus@codewreck.org>
+Date: Sat, 26 Aug 2023 09:28:59 +0900
+Subject: [PATCH] env.js: fix httpSafePort handling
+
+It has been clarified that this is only a dev option that should not be
+used in production, but setting the value in config was still ignored,
+so fix the init code to consider the config value and make it clear that
+this port is not bound if safeOrigin is set.
+---
+ config/config.example.js | 3 ++-
+ lib/env.js               | 5 +++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/config/config.example.js b/config/config.example.js
+index 7c8184c6c2f6..77263643c354 100644
+--- a/config/config.example.js
++++ b/config/config.example.js
+@@ -89,8 +89,9 @@ module.exports = {
+ 
+ /*  httpSafePort purpose is to emulate another origin for the sandbox when
+  *  you don't have two domains at hand (i.e. when httpSafeOrigin not defined).
+- *  It is meant to be used only in case where you are working on a local 
++ *  It is meant to be used only in case where you are working on a local
+  *  development instance. The default value is your httpPort + 1.
++ *  Setting this to 0 or setting httpSafeOrigin disables this listener.
+  *
+  */
+     //httpSafePort: 3001,
+diff --git a/lib/env.js b/lib/env.js
+index d3748750f21e..f0660cba3e11 100644
+--- a/lib/env.js
++++ b/lib/env.js
+@@ -74,8 +74,9 @@ module.exports.create = function (config) {
+ 
+     if (typeof(config.httpSafeOrigin) !== 'string') {
+         NO_SANDBOX = true;
+-        if (typeof(config.httpSafePort) !== 'number') { httpSafePort = httpPort + 1; }
+         httpSafeOrigin = deriveSandboxOrigin(httpUnsafeOrigin, httpSafePort);
++        // only set if httpSafeOrigin isn't set.
++        httpSafePort = isValidPort(config.httpSafePort) ? config.httpSafePort : (httpPort + 1);
+     } else {
+         httpSafeOrigin = canonicalizeOrigin(config.httpSafeOrigin);
+     }
+@@ -115,7 +116,7 @@ module.exports.create = function (config) {
+         permittedEmbedders: typeof(permittedEmbedders) === 'string' && permittedEmbedders? permittedEmbedders: httpSafeOrigin,
+ 
+         removeDonateButton: config.removeDonateButton,
+-        httpPort: isValidPort(config.httpPort)? config.httpPort: 3000,
++        httpPort: httpPort,
+         httpAddress: typeof(config.httpAddress) === 'string'? config.httpAddress: 'localhost',
+         websocketPath: config.externalWebsocketURL,
+         logIP: config.logIP,
+-- 
+2.45.2
+
diff --git a/pkgs/by-name/cr/cryptpad/package.nix b/pkgs/by-name/cr/cryptpad/package.nix
new file mode 100644
index 000000000000..5362a96cda03
--- /dev/null
+++ b/pkgs/by-name/cr/cryptpad/package.nix
@@ -0,0 +1,135 @@
+{
+  buildNpmPackage,
+  fetchFromGitHub,
+  lib,
+  makeBinaryWrapper,
+  nixosTests,
+  nodejs,
+  rdfind,
+}:
+
+let
+  version = "2024.6.1";
+  # nix version of install-onlyoffice.sh
+  # a later version could rebuild from sdkjs/web-apps as per
+  # https://github.com/cryptpad/onlyoffice-builds/blob/main/build.sh
+  onlyoffice_build =
+    rev: hash:
+    fetchFromGitHub {
+      inherit rev hash;
+      owner = "cryptpad";
+      repo = "onlyoffice-builds";
+    };
+  onlyoffice_install = oo: ''
+    oo_dir="$out_cryptpad/www/common/onlyoffice/dist/${oo.subdir}"
+    cp -a "${onlyoffice_build oo.rev oo.hash}/." "$oo_dir"
+    chmod -R +w "$oo_dir"
+    echo "${oo.rev}" > "$oo_dir/.commit"
+  '';
+  onlyoffice_versions = [
+    {
+      subdir = "v1";
+      rev = "4f370beb";
+      hash = "sha256-TE/99qOx4wT2s0op9wi+SHwqTPYq/H+a9Uus9Zj4iSY=";
+    }
+    {
+      subdir = "v2b";
+      rev = "d9da72fd";
+      hash = "sha256-SiRDRc2vnLwCVnvtk+C8PKw7IeuSzHBaJmZHogRe3hQ=";
+    }
+    {
+      subdir = "v4";
+      rev = "6ebc6938";
+      hash = "sha256-eto1+8Tk/s3kbUCpbUh8qCS8EOq700FYG1/KiHyynaA=";
+    }
+    {
+      subdir = "v5";
+      rev = "88a356f0";
+      hash = "sha256-8j1rlAyHlKx6oAs2pIhjPKcGhJFj6ZzahOcgenyeOCc=";
+    }
+    {
+      subdir = "v6";
+      rev = "abd8a309";
+      hash = "sha256-BZdExj2q/bqUD3k9uluOot2dlrWKA+vpad49EdgXKww=";
+    }
+    {
+      subdir = "v7";
+      rev = "9d8b914a";
+      hash = "sha256-M+rPJ/Xo2olhqB5ViynGRaesMLLfG/1ltUoLnepMPnM=";
+    }
+  ];
+
+in
+buildNpmPackage {
+  inherit version;
+  pname = "cryptpad";
+
+  src = fetchFromGitHub {
+    owner = "cryptpad";
+    repo = "cryptpad";
+    rev = version;
+    hash = "sha256-qwyXpTY8Ds7R5687PVGZa/rlEyrAZjNzJ4+VQZpF8v0=";
+  };
+
+  npmDepsHash = "sha256-GSTPsXqe/rxiDh5OW2t+ZY1YRNgRSDxkJ0pvcLIFtFw=";
+
+  nativeBuildInputs = [
+    makeBinaryWrapper
+    rdfind
+  ];
+
+  patches = [
+    # fix httpSafePort setting
+    # https://github.com/cryptpad/cryptpad/pull/1571
+    ./0001-env.js-fix-httpSafePort-handling.patch
+  ];
+
+  # cryptpad build tries to write in cache dir
+  makeCacheWritable = true;
+
+  # 'npm build run' (scripts/build.js) generates a customize directory, but:
+  # - that is not installed by npm install
+  # - it embeds values from config into the directory, so needs to be
+  # run before starting the server (it's just a few quick replaces)
+  # Skip it here.
+  dontNpmBuild = true;
+
+  postInstall = ''
+    out_cryptpad="$out/lib/node_modules/cryptpad"
+
+    # 'npm run install:components' (scripts/copy-component.js) copies
+    # required node modules to www/component in the build tree...
+    # Move to install directory manually.
+    npm run install:components
+    mv www/components "$out_cryptpad/www/"
+
+    # install OnlyOffice (install-onlyoffice.sh without network)
+    mkdir -p "$out_cryptpad/www/common/onlyoffice/dist"
+    ${lib.concatMapStringsSep "\n" onlyoffice_install onlyoffice_versions}
+    rdfind -makehardlinks true -makeresultsfile false "$out_cryptpad/www/common/onlyoffice/dist"
+
+    # cryptpad assumes it runs in the source directory and also outputs
+    # its state files there, which is not exactly great for us.
+    # There are relative paths everywhere so just substituing source paths
+    # is difficult and will likely break on a future update, instead we
+    # make links to the required source directories before running.
+    # The build.js step populates 'customize' from customize.dist and config;
+    # one would normally want to re-run it after modifying config but since it
+    # would overwrite user modifications only run it if there is no customize
+    # directory.
+    makeWrapper "${lib.getExe nodejs}" "$out/bin/cryptpad" \
+      --add-flags "$out_cryptpad/server.js" \
+      --run "for d in customize.dist lib www; do ln -sf \"$out_cryptpad/\$d\" .; done" \
+      --run "if ! [ -d customize ]; then \"${lib.getExe nodejs}\" \"$out_cryptpad/scripts/build.js\"; fi"
+  '';
+
+  passthru.tests.cryptpad = nixosTests.cryptpad;
+
+  meta = {
+    description = "Collaborative office suite, end-to-end encrypted and open-source.";
+    homepage = "https://cryptpad.org/";
+    license = lib.licenses.agpl3Plus;
+    mainProgram = "cryptpad";
+    maintainers = with lib.maintainers; [ martinetd ];
+  };
+}
diff --git a/pkgs/by-name/cu/cue/tests/001-all-good.nix b/pkgs/by-name/cu/cue/tests/001-all-good.nix
index d9919cd7fee4..f7fc46eebea6 100644
--- a/pkgs/by-name/cu/cue/tests/001-all-good.nix
+++ b/pkgs/by-name/cu/cue/tests/001-all-good.nix
@@ -1,5 +1,4 @@
-{ lib
-, cue
+{ cue
 , runCommand
 }:
 
diff --git a/pkgs/by-name/cu/cups-printers/package.nix b/pkgs/by-name/cu/cups-printers/package.nix
index b6e124fef07d..7b0cf99298a8 100644
--- a/pkgs/by-name/cu/cups-printers/package.nix
+++ b/pkgs/by-name/cu/cups-printers/package.nix
@@ -30,8 +30,7 @@ python3.pkgs.buildPythonApplication rec {
       pycups
       typer
       validators
-    ]
-    ++ typer.optional-dependencies.all;
+    ];
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/by-name/cy/cyme/package.nix b/pkgs/by-name/cy/cyme/package.nix
index 5bdeaf1c9c18..33c3471719af 100644
--- a/pkgs/by-name/cy/cyme/package.nix
+++ b/pkgs/by-name/cy/cyme/package.nix
@@ -13,16 +13,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cyme";
-  version = "1.7.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "tuna-f1sh";
     repo = "cyme";
     rev = "v${version}";
-    hash = "sha256-iDwH4gSpt1XkwMBj0Ut26c9PpsHcxFrRE6VuBNhpIHk=";
+    hash = "sha256-Rq7ykD6L+DrDNz+d++ztv+fmoSSNCoeC1YfXiIJiXzM=";
   };
 
-  cargoHash = "sha256-bzOqk0nXhqq4WX9razPo1q6BkEl4VZ5QMPiNEwHO/eM=";
+  cargoHash = "sha256-XvU8r4bmI18qp+1O3nsJG3RTiiNxfKksRgkSBMsja5s=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/by-name/de/deltachat-repl/package.nix b/pkgs/by-name/de/deltachat-repl/package.nix
index 3de470c08524..fe97f891caa7 100644
--- a/pkgs/by-name/de/deltachat-repl/package.nix
+++ b/pkgs/by-name/de/deltachat-repl/package.nix
@@ -1,5 +1,4 @@
-{ lib
-, rustPlatform
+{ rustPlatform
 , libdeltachat
 , perl
 , pkg-config
diff --git a/pkgs/by-name/de/deltachat-rpc-server/package.nix b/pkgs/by-name/de/deltachat-rpc-server/package.nix
index 6c57548cf9e8..b7d0dbef2374 100644
--- a/pkgs/by-name/de/deltachat-rpc-server/package.nix
+++ b/pkgs/by-name/de/deltachat-rpc-server/package.nix
@@ -1,5 +1,4 @@
-{ lib
-, rustPlatform
+{ rustPlatform
 , libdeltachat
 , perl
 , pkg-config
diff --git a/pkgs/by-name/de/devenv/package.nix b/pkgs/by-name/de/devenv/package.nix
index 8a39f5715ae1..60e16f3c4c2a 100644
--- a/pkgs/by-name/de/devenv/package.nix
+++ b/pkgs/by-name/de/devenv/package.nix
@@ -29,7 +29,7 @@ let
     doInstallCheck = false;
   });
 
-  version = "1.0.7";
+  version = "1.0.8";
 in rustPlatform.buildRustPackage {
   pname = "devenv";
   inherit version;
@@ -38,10 +38,10 @@ in rustPlatform.buildRustPackage {
     owner = "cachix";
     repo = "devenv";
     rev = "v${version}";
-    hash = "sha256-eTbBvYwGlKExMSTyHQya6+6kdx1rtva/aVfyAZu2NUU=";
+    hash = "sha256-q/ERT4Ui315opFz4h4+BsJ/zrTYdXkwq13vvrpL+KzM=";
   };
 
-  cargoHash = "sha256-fmxXCOrWRM4ZKwQS9vCIh7LonpifyeNGsj/td1CjedA=";
+  cargoHash = "sha256-fCXAFVmKns8uglbzyCznoVFGCU+Veq0t1h8T7i1P5XQ=";
 
   nativeBuildInputs = [ makeWrapper pkg-config ];
 
diff --git a/pkgs/by-name/di/digikam/disable-tests-download.patch b/pkgs/by-name/di/digikam/disable-tests-download.patch
new file mode 100644
index 000000000000..7ec21b52eb4e
--- /dev/null
+++ b/pkgs/by-name/di/digikam/disable-tests-download.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 43636fa9b9...e8da76c480 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -208,10 +208,6 @@
+     # For CI runners to run tests, the following custom target serves to perform the download automatically.
+     # If the directory "test-data" has already been created, the target becomes a "no-op".
+     #
+-    add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/test-data 
+-                       COMMENT "Checkout unit-test data repository. Please wait..."
+-                       COMMAND git
+-                       ARGS clone https://invent.kde.org/graphics/digikam-test-data.git ${CMAKE_SOURCE_DIR}/test-data)
+     add_custom_target(test-data ALL DEPENDS ${CMAKE_SOURCE_DIR}/test-data)
+ 
+ endif()
diff --git a/pkgs/by-name/di/digikam/package.nix b/pkgs/by-name/di/digikam/package.nix
index 8a83cf6583cc..1454eae6717a 100644
--- a/pkgs/by-name/di/digikam/package.nix
+++ b/pkgs/by-name/di/digikam/package.nix
@@ -1,149 +1,202 @@
-{ stdenv, config, lib, fetchurl, cmake, doxygen, extra-cmake-modules, wrapGAppsHook3
-
-# For `digitaglinktree`
-, perl, sqlite
-
-, libsForQt5
-
-, bison
-, boost
-, eigen
-, exiv2
-, ffmpeg_4
-, flex
-, graphviz
-, imagemagick
-, lcms2
-, lensfun
-, libgphoto2
-, liblqr1
-, libusb1
-, libheif
-, libGL
-, libGLU
-, opencv
-, pcre
-, x265
-, jasper
-
-, bash
-# For panorama and focus stacking
-, enblend-enfuse
-, hugin
-, gnumake
-
-, cudaSupport ? config.cudaSupport
-, cudaPackages ? {}
+{
+  stdenv,
+  config,
+  lib,
+  fetchFromGitLab,
+  fetchgit,
+
+  cmake,
+  ninja,
+  extra-cmake-modules,
+  flex,
+  bison,
+  wrapGAppsHook3,
+
+  opencv,
+  libtiff,
+  libpng,
+  libjpeg,
+  libheif,
+  libjxl,
+  boost,
+  lcms2,
+  expat,
+  exiv2,
+  libxml2,
+  libxslt,
+  ffmpeg,
+  jasper,
+  eigen,
+  lensfun,
+  liblqr1,
+  libgphoto2,
+  libusb1,
+  imagemagick,
+  x265,
+  libGLX,
+  libGLU,
+
+  kdePackages,
+
+  # For `digitaglinktree`
+  perl,
+  sqlite,
+
+  runtimeShell,
+  # For panorama and focus stacking
+  enblend-enfuse,
+  hugin,
+  gnumake,
 }:
 
-stdenv.mkDerivation rec {
-  pname   = "digikam";
-  version = "8.3.0";
-
-  src = fetchurl {
-    url = "mirror://kde/stable/${pname}/${version}/digiKam-${version}-1.tar.xz";
-    hash = "sha256-BbFF/38vIAX6IbxXnBUqsjyBkbZ4/ylEyPBAbWud5tg=";
+let
+  testData = fetchgit {
+    url = "https://invent.kde.org/graphics/digikam-test-data.git";
+    rev = "d02dd20b23cc279792325a0f03d21688547a7a59";
+    fetchLFS = true;
+    hash = "sha256-SvsmcniDRorwu9x9OLtHD9ftgquyoE5Kl8qDgqi1XdQ=";
+  };
+in
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "digikam";
+  version = "8.4.0";
+
+  src = fetchFromGitLab {
+    domain = "invent.kde.org";
+    owner = "graphics";
+    repo = "digikam";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-GJYlxJkvFEXppVk0yC9ojszylfAGt3eBMAjNUu60XDY=";
   };
 
-  strictDeps = true;
+  patches = [ ./disable-tests-download.patch ];
 
-  depsBuildBuild = [ cmake ];
+  strictDeps = true;
 
   nativeBuildInputs = [
     cmake
-    doxygen
+    ninja
     extra-cmake-modules
-    libsForQt5.kdoctools
-    libsForQt5.wrapQtAppsHook
+    flex
+    bison
+    kdePackages.wrapQtAppsHook
     wrapGAppsHook3
-  ] ++ lib.optionals cudaSupport (with cudaPackages; [
-    cuda_nvcc
-  ]);
+  ];
+
+  # Based on <https://www.digikam.org/api/index.html#externaldeps>,
+  # but it doesn’t have everything, so you also have to check the
+  # CMake files…
+  #
+  # We list non‐Qt dependencies first to override Qt’s propagated
+  # build inputs.
 
   buildInputs = [
-    bison
+    opencv
+    libtiff
+    libpng
+    # TODO: Figure out how on earth to get it to pick up libjpeg8 for
+    # lossy DNG support.
+    libjpeg
+    libheif
+    libjxl
     boost
-    eigen
-    exiv2
-    ffmpeg_4
-    flex
-    graphviz
-    imagemagick
     lcms2
+    expat
+    exiv2
+    libxml2
+    libxslt
+    # Qt WebEngine uses and propagates FFmpeg, and if it’s a
+    # different version it causes linker warnings.
+    #ffmpeg
+    jasper
+    eigen
     lensfun
-    libgphoto2
-    libheif
     liblqr1
+    libgphoto2
     libusb1
-    libGL
-    libGLU
-    opencv
-    pcre
+    imagemagick
     x265
-    jasper
-  ] ++ (with libsForQt5; [
-    libkipi
-    libksane
-    libqtav
-
-    qtbase
-    qtxmlpatterns
-    qtsvg
-    qtwebengine
-    qtnetworkauth
-
-    akonadi-contacts
-    kcalendarcore
-    kconfigwidgets
-    kcoreaddons
-    kfilemetadata
-    knotifications
-    knotifyconfig
-    ktextwidgets
-    kwidgetsaddons
-    kxmlgui
-
-    breeze-icons
-    marble
-    oxygen
-    threadweaver
-  ]) ++ lib.optionals cudaSupport (with cudaPackages; [
-    cuda_cudart
-  ]);
+    libGLX
+    libGLU
+
+    kdePackages.qtbase
+    kdePackages.qtnetworkauth
+    kdePackages.qtscxml
+    kdePackages.qtsvg
+    kdePackages.qtwebengine
+    kdePackages.qt5compat
+    kdePackages.qtmultimedia
+
+    kdePackages.kconfig
+    kdePackages.kxmlgui
+    kdePackages.ki18n
+    kdePackages.kwindowsystem
+    kdePackages.kservice
+    kdePackages.solid
+    kdePackages.kcoreaddons
+    kdePackages.knotifyconfig
+    kdePackages.knotifications
+    kdePackages.threadweaver
+    kdePackages.kiconthemes
+    kdePackages.kfilemetadata
+    kdePackages.kcalendarcore
+    kdePackages.kio
+    kdePackages.sonnet
+    # libksane and akonadi-contacts do not yet work when building for
+    # Qt 6.
+  ];
+
+  checkInputs = [ kdePackages.qtdeclarative ];
+
+  postConfigure = lib.optionalString finalAttrs.doCheck ''
+    ln -s ${testData} $cmakeDir/test-data
+  '';
 
   postPatch = ''
     substituteInPlace \
       core/dplugins/bqm/custom/userscript/userscript.cpp \
       core/utilities/import/backend/cameracontroller.cpp \
-      --replace-fail \"/bin/bash\" \"${lib.getExe bash}\"
+      --replace-fail '"/bin/bash"' ${lib.escapeShellArg "\"${runtimeShell}\""}
   '';
 
   cmakeFlags = [
-    "-DENABLE_MYSQLSUPPORT=1"
-    "-DENABLE_INTERNALMYSQL=1"
-    "-DENABLE_MEDIAPLAYER=1"
-    "-DENABLE_QWEBENGINE=on"
-    "-DENABLE_APPSTYLES=on"
-    "-DCMAKE_CXX_FLAGS=-I${libsForQt5.libksane}/include/KF5" # fix `#include <ksane_version.h>`
+    (lib.cmakeBool "BUILD_WITH_QT6" true)
+    (lib.cmakeBool "ENABLE_KFILEMETADATASUPPORT" true)
+    #(lib.cmakeBool "ENABLE_AKONADICONTACTSUPPORT" true)
+    (lib.cmakeBool "ENABLE_MEDIAPLAYER" true)
+    (lib.cmakeBool "ENABLE_APPSTYLES" true)
   ];
 
+  # Tests segfault for some reason…
+  # TODO: Get them working.
+  doCheck = false;
+
   dontWrapGApps = true;
 
   preFixup = ''
     qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
-    qtWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ gnumake hugin enblend-enfuse ]})
-    qtWrapperArgs+=(--suffix DK_PLUGIN_PATH : ${placeholder "out"}/${libsForQt5.qtbase.qtPluginPrefix}/${pname})
+    qtWrapperArgs+=(--prefix PATH : ${
+      lib.makeBinPath [
+        gnumake
+        hugin
+        enblend-enfuse
+      ]
+    })
+    qtWrapperArgs+=(--suffix DK_PLUGIN_PATH : ${placeholder "out"}/${kdePackages.qtbase.qtPluginPrefix}/digikam)
     substituteInPlace $out/bin/digitaglinktree \
       --replace "/usr/bin/perl" "${perl}/bin/perl" \
       --replace "/usr/bin/sqlite3" "${sqlite}/bin/sqlite3"
   '';
 
-  meta = with lib; {
-    description = "Photo Management Program";
-    license = licenses.gpl2;
-    homepage = "https://www.digikam.org";
-    maintainers = with maintainers; [ ];
-    platforms = platforms.linux;
+  meta = {
+    description = "Photo management application";
+    homepage = "https://www.digikam.org/";
+    changelog = "${finalAttrs.src.meta.homepage}-/blob/master/project/NEWS.${finalAttrs.version}";
+    sourceProvenance = [ lib.sourceTypes.fromSource ];
+    license = lib.licenses.gpl2Plus;
+    maintainers = [ ];
+    platforms = lib.platforms.linux;
     mainProgram = "digikam";
   };
-}
+})
diff --git a/pkgs/by-name/di/dim/Cargo.lock b/pkgs/by-name/di/dim/Cargo.lock
index adb78aa7a929..d0d35c8ac7cc 100644
--- a/pkgs/by-name/di/dim/Cargo.lock
+++ b/pkgs/by-name/di/dim/Cargo.lock
@@ -979,7 +979,7 @@ dependencies = [
  "tracing-appender",
  "tracing-subscriber",
  "url",
- "uuid 1.5.0",
+ "uuid 1.10.0",
  "xmlwriter",
  "xtra",
  "zip",
@@ -1079,7 +1079,7 @@ dependencies = [
  "tracing",
  "tracing-appender",
  "tracing-subscriber",
- "uuid 1.5.0",
+ "uuid 1.10.0",
 ]
 
 [[package]]
@@ -2049,14 +2049,14 @@ dependencies = [
 [[package]]
 name = "nightfall"
 version = "0.3.12-rc4"
-source = "git+https://github.com/Dusk-Labs/nightfall?tag=0.3.12-rc4#147ea96146b4cae6f666741020cef0622a90d46c"
+source = "git+https://github.com/Dusk-Labs/nightfall?rev=878f07edd5d2c71261c5ae02fe3a6db7cda18be7#878f07edd5d2c71261c5ae02fe3a6db7cda18be7"
 dependencies = [
  "async-trait",
  "cfg-if",
  "err-derive",
  "lazy_static",
  "mp4",
- "nix 0.20.0",
+ "nix 0.27.1",
  "ntapi",
  "once_cell",
  "psutil",
@@ -2067,7 +2067,7 @@ dependencies = [
  "tokio",
  "tokio-stream",
  "tracing",
- "uuid 0.8.2",
+ "uuid 1.10.0",
  "winapi",
  "xtra",
  "xtra_proc",
@@ -2075,27 +2075,26 @@ dependencies = [
 
 [[package]]
 name = "nix"
-version = "0.20.0"
+version = "0.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa9b4819da1bc61c0ea48b63b7bc8604064dd43013e7cc325df098d49cd7c18a"
+checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
 dependencies = [
  "bitflags 1.3.2",
  "cc",
  "cfg-if",
  "libc",
+ "memoffset 0.6.5",
 ]
 
 [[package]]
 name = "nix"
-version = "0.23.2"
+version = "0.27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
 dependencies = [
- "bitflags 1.3.2",
- "cc",
+ "bitflags 2.4.1",
  "cfg-if",
  "libc",
- "memoffset 0.6.5",
 ]
 
 [[package]]
@@ -2140,9 +2139,9 @@ dependencies = [
 
 [[package]]
 name = "ntapi"
-version = "0.3.7"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f"
+checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4"
 dependencies = [
  "winapi",
 ]
@@ -3505,7 +3504,7 @@ dependencies = [
  "tower-layer",
  "tower-service",
  "tracing",
- "uuid 1.5.0",
+ "uuid 1.10.0",
 ]
 
 [[package]]
@@ -3747,9 +3746,9 @@ dependencies = [
 
 [[package]]
 name = "uuid"
-version = "1.5.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
+checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314"
 dependencies = [
  "getrandom",
 ]
diff --git a/pkgs/by-name/di/dim/bump-nightfall.patch b/pkgs/by-name/di/dim/bump-nightfall.patch
new file mode 100644
index 000000000000..37979efd5f78
--- /dev/null
+++ b/pkgs/by-name/di/dim/bump-nightfall.patch
@@ -0,0 +1,48 @@
+diff --git a/dim/Cargo.toml b/dim/Cargo.toml
+index b7c8106493...38518ba29d 100644
+--- a/dim/Cargo.toml
++++ b/dim/Cargo.toml
+@@ -15,7 +15,7 @@
+ fdlimit = "0.2.1"
+ 
+ # git dependencies
+-nightfall = { git = "https://github.com/Dusk-Labs/nightfall", tag = "0.3.12-rc4", default-features = false, features = [
++nightfall = { git = "https://github.com/Dusk-Labs/nightfall", rev = "878f07edd5d2c71261c5ae02fe3a6db7cda18be7", default-features = false, features = [
+     "cuda",
+     "ssa_transmux",
+ ] }
+diff --git a/dim-core/Cargo.toml b/dim-core/Cargo.toml
+index b311b7c7af...ffc5d85dbb 100644
+--- a/dim-core/Cargo.toml
++++ b/dim-core/Cargo.toml
+@@ -11,7 +11,7 @@
+ 
+ [dependencies]
+ # git dependencies
+-nightfall = { git = "https://github.com/Dusk-Labs/nightfall", tag = "0.3.12-rc4", default-features = false, features = [
++nightfall = { git = "https://github.com/Dusk-Labs/nightfall", rev = "878f07edd5d2c71261c5ae02fe3a6db7cda18be7", default-features = false, features = [
+     "cuda",
+     "ssa_transmux",
+ ] }
+@@ -72,7 +72,7 @@
+     "json",
+ ] }
+ url = "2.2.2"
+-uuid = { version = "1.2.2", features = ["v4"] }
++uuid = { version = "1.6.1", features = ["v4"] }
+ xmlwriter = "0.1.0"
+ xtra = { version = "0.5.1", features = ["tokio", "with-tokio-1"] }
+ 
+diff --git a/dim-web/Cargo.toml b/dim-web/Cargo.toml
+index 2da5764d50...4c7574c0b4 100644
+--- a/dim-web/Cargo.toml
++++ b/dim-web/Cargo.toml
+@@ -14,7 +14,7 @@
+ dim-events = { path = "../dim-events" }
+ dim-core = { path = "../dim-core" }
+ 
+-nightfall = { git = "https://github.com/Dusk-Labs/nightfall", tag = "0.3.12-rc4", default-features = false, features = [
++nightfall = { git = "https://github.com/Dusk-Labs/nightfall", rev = "878f07edd5d2c71261c5ae02fe3a6db7cda18be7", default-features = false, features = [
+     "cuda",
+     "ssa_transmux",
+ ] }
diff --git a/pkgs/by-name/di/dim/package.nix b/pkgs/by-name/di/dim/package.nix
index fba2c5e11f0c..f7fe86ab9a98 100644
--- a/pkgs/by-name/di/dim/package.nix
+++ b/pkgs/by-name/di/dim/package.nix
@@ -6,7 +6,7 @@
   buildNpmPackage,
   darwin,
   makeWrapper,
-  ffmpeg_5,
+  ffmpeg,
   git,
   pkg-config,
   sqlite,
@@ -48,6 +48,10 @@ rustPlatform.buildRustPackage rec {
     # the working dir and PATH instead.
     ./relative-paths.diff
 
+    # Bump the first‐party nightfall dependency to the latest Git
+    # revision for FFmpeg >= 6 support.
+    ./bump-nightfall.patch
+
     # Upstream has some unused imports that prevent things from compiling...
     # Remove for next release.
     (fetchpatch {
@@ -57,6 +61,10 @@ rustPlatform.buildRustPackage rec {
     })
   ];
 
+  postPatch = ''
+    ln -sf ${./Cargo.lock} Cargo.lock
+  '';
+
   postConfigure = ''
     ln -ns $frontend ui/build
   '';
@@ -82,7 +90,7 @@ rustPlatform.buildRustPackage rec {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "mp4-0.8.2" = "sha256-OtVRtOTU/yoxxoRukpUghpfiEgkKoJZNflMQ3L26Cno=";
-      "nightfall-0.3.12-rc4" = "sha256-DtSXdIDg7XBgzEYzHdzjrHdM1ESKTQdgByeerH5TWwU=";
+      "nightfall-0.3.12-rc4" = "sha256-AbSuLe3ySOla3NB+mlfHRHqHuMqQbrThAaUZ747GErE=";
     };
   };
 
@@ -101,7 +109,7 @@ rustPlatform.buildRustPackage rec {
 
   postInstall = ''
     wrapProgram $out/bin/dim \
-      --prefix PATH : ${lib.makeBinPath [ ffmpeg_5 ]}
+      --prefix PATH : ${lib.makeBinPath [ ffmpeg ]}
   '';
 
   meta = {
diff --git a/pkgs/by-name/di/dita-ot/package.nix b/pkgs/by-name/di/dita-ot/package.nix
new file mode 100644
index 000000000000..a1e8931eacf3
--- /dev/null
+++ b/pkgs/by-name/di/dita-ot/package.nix
@@ -0,0 +1,48 @@
+{
+  stdenv,
+  fetchzip,
+  openjdk17,
+  lib,
+  makeWrapper,
+  testers,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "dita-ot";
+  version = "4.2.3";
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ openjdk17 ];
+
+  src = fetchzip {
+    url = "https://github.com/dita-ot/dita-ot/releases/download/${finalAttrs.version}/dita-ot-${finalAttrs.version}.zip";
+    hash = "sha256-siHz81OuKVF77NsDpldAhq7YxzBFvo9RwGPe/mqkquQ=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/dita-ot/
+    cp -r $src/* $out/share/dita-ot/
+
+    makeWrapper "$out/share/dita-ot/bin/dita" "$out/bin/dita" \
+      --prefix PATH : "${lib.makeBinPath [ openjdk17 ]}" \
+      --set-default JDK_HOME "${openjdk17.home}" \
+      --set-default JAVA_HOME "${openjdk17.home}"
+
+    runHook postInstall
+  '';
+
+  passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
+
+  meta = {
+    homepage = "https://dita-ot.org";
+    changelog = "https://www.dita-ot.org/dev/release-notes/#v${finalAttrs.version}";
+    description = "The open-source publishing engine for content authored in the Darwin Information Typing Architecture";
+    license = lib.licenses.asl20;
+    mainProgram = "dita";
+    platforms = openjdk17.meta.platforms;
+    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
+    maintainers = with lib.maintainers; [ robertrichter ];
+  };
+})
diff --git a/pkgs/by-name/do/docker-credential-gcr/package.nix b/pkgs/by-name/do/docker-credential-gcr/package.nix
index 620cce774374..5f656f14eaad 100644
--- a/pkgs/by-name/do/docker-credential-gcr/package.nix
+++ b/pkgs/by-name/do/docker-credential-gcr/package.nix
@@ -9,13 +9,13 @@
 
 buildGoModule rec {
   pname = "docker-credential-gcr";
-  version = "2.1.22";
+  version = "2.1.23";
 
   src = fetchFromGitHub {
     owner = "GoogleCloudPlatform";
     repo = "docker-credential-gcr";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-vGX6Jhh91dUqZ+y+h1SlPiFE3dL0UO3iJyyzvQVoUsQ=";
+    sha256 = "sha256-ViZxxqRZQPevuK/yueHKmg4CwnNpgfyXszGalzWucko=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/do/downonspot/package.nix b/pkgs/by-name/do/downonspot/package.nix
index 587201dd7923..5d115404c240 100644
--- a/pkgs/by-name/do/downonspot/package.nix
+++ b/pkgs/by-name/do/downonspot/package.nix
@@ -10,19 +10,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "downonspot";
-  version = "0.5.0";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "oSumAtrIX";
     repo = "DownOnSpot";
     rev = "refs/tags/v${version}";
-    hash = "sha256-PA11R/hVAmismayE8uU03P0eeNnrgpD2HxbMW0vlk3k=";
+    hash = "sha256-F0SW/qce7eEEDC4FQvO6eW9V4POkRK/WP8bMUBtzGIw=";
   };
 
   # Use official public librespot version
   cargoPatches = [ ./Cargo.lock.patch ];
 
-  cargoHash = "sha256-jdscYr4Emm2+mWXbxfhU1rp855tsGY5hrdJsDEfXeUo=";
+  cargoHash = "sha256-kLMV8jDadb2BryOqXGkiunQvZRjzjbVTh9Z+jHSSHbU=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/pkgs/by-name/dp/dpp/package.nix b/pkgs/by-name/dp/dpp/package.nix
index 6079585e5d29..7e639cc021d0 100644
--- a/pkgs/by-name/dp/dpp/package.nix
+++ b/pkgs/by-name/dp/dpp/package.nix
@@ -6,7 +6,6 @@
 , zlib
 , libsodium
 , pkg-config
-, autoPatchelfHook
 , lib
 }:
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/dr/druid/package.nix b/pkgs/by-name/dr/druid/package.nix
new file mode 100644
index 000000000000..3d8c59b3f02a
--- /dev/null
+++ b/pkgs/by-name/dr/druid/package.nix
@@ -0,0 +1,82 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  extensions ? { },
+  libJars ? [ ],
+  nixosTests,
+  mysqlSupport ? true,
+}:
+let
+  inherit (lib)
+    concatStringsSep
+    licenses
+    maintainers
+    mapAttrsToList
+    optionalString
+    forEach
+    ;
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "apache-druid";
+  version = "30.0.0";
+
+  src = fetchurl {
+    url = "mirror://apache/druid/${finalAttrs.version}/apache-druid-${finalAttrs.version}-bin.tar.gz";
+    hash = "sha256-mRYorVkNzM94LP53G78eW20N5UsvMP7Lv4rAysmPwXw=";
+  };
+
+  mysqlConnector = fetchurl {
+    url = "https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.48/mysql-connector-java-5.1.48.jar";
+    hash = "sha256-VuJsqqOCH1rkr0T5x09mz4uE6gFRatOAPLsOkEm27Kg=";
+  };
+
+  dontBuild = true;
+
+  loadExtensions = (
+    concatStringsSep "\n" (
+      mapAttrsToList (
+        dir: files:
+        ''
+          if ! test -d $out/extensions/${dir}; then
+               mkdir $out/extensions/${dir};
+           fi
+        ''
+        + concatStringsSep "\n" (
+          forEach files (file: ''
+            if test -d ${file} ; then
+              cp  ${file}/* $out/extensions/${dir}/
+            else
+              cp ${file} $out/extensions/${dir}/
+            fi
+          '')
+        )
+      ) extensions
+    )
+  );
+
+  loadJars = concatStringsSep "\n" (forEach libJars (jar: "cp ${jar} $out/lib/"));
+
+  installPhase = ''
+    runHook preInstall
+    mkdir $out
+    mv * $out
+    ${optionalString mysqlSupport "cp ${finalAttrs.mysqlConnector} $out/extensions/mysql-metadata-storage"}
+    ${finalAttrs.loadExtensions}
+    ${finalAttrs.loadJars}
+    runHook postInstall
+  '';
+
+  passthru = {
+    tests = nixosTests.druid.default.passthru.override { druidPackage = finalAttrs.finalPackage; };
+  };
+
+  meta = {
+    description = "Apache Druid: a high performance real-time analytics database";
+    homepage = "https://github.com/apache/druid";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ vsharathchandra ];
+    mainProgram = "druid";
+  };
+
+})
diff --git a/pkgs/by-name/du/duckstation/shaderc-patched.nix b/pkgs/by-name/du/duckstation/shaderc-patched.nix
new file mode 100644
index 000000000000..3211925699e1
--- /dev/null
+++ b/pkgs/by-name/du/duckstation/shaderc-patched.nix
@@ -0,0 +1,20 @@
+{
+  fetchpatch,
+  duckstation,
+  shaderc,
+}:
+
+shaderc.overrideAttrs (old: {
+  pname = "shaderc-patched-for-duckstation";
+  patches = (old.patches or [ ]) ++ [
+    (fetchpatch {
+      url = "file://${duckstation.src}/scripts/shaderc-changes.patch";
+      hash = "sha256-Ps/D+CdSbjVWg3ZGOEcgbpQbCNkI5Nuizm4E5qiM9Wo=";
+      excludes = [
+        "CHANGES"
+        "CMakeLists.txt"
+        "libshaderc/CMakeLists.txt"
+      ];
+    })
+  ];
+})
diff --git a/pkgs/by-name/du/dumbpipe/package.nix b/pkgs/by-name/du/dumbpipe/package.nix
index af033939728d..dd1c3fcf76f4 100644
--- a/pkgs/by-name/du/dumbpipe/package.nix
+++ b/pkgs/by-name/du/dumbpipe/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dumbpipe";
-  version = "0.12.0";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "n0-computer";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-UCPg917stw8zE6B0hdHyzq98icHpr+Z3b5RL4sZim1w=";
+    hash = "sha256-n/gmkOtCO07paWLKHSNtoTRCgdynMi5cG6johjsuDbU=";
   };
 
-  cargoHash = "sha256-qHdU7t73rBXwU8E2HdErFFlnG8r9H3zcXQSA37h0LFA=";
+  cargoHash = "sha256-YfieNhhqvW8nU6GZFgWa0oBuCfUSr2AhxpFOFusIYCY=";
 
   buildInputs = lib.optionals stdenv.isDarwin (
     with darwin.apple_sdk.frameworks; [
diff --git a/pkgs/by-name/du/dust/package.nix b/pkgs/by-name/du/dust/package.nix
index c8414276f3f8..cf13173519ac 100644
--- a/pkgs/by-name/du/dust/package.nix
+++ b/pkgs/by-name/du/dust/package.nix
@@ -5,13 +5,13 @@ rustPlatform.buildRustPackage rec {
   # Since then, `dust` has been freed up, allowing this package to take that attribute.
   # However in order for tools like `nix-env` to detect package updates, keep `du-dust` for pname.
   pname = "du-dust";
-  version = "1.1.0";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "bootandy";
     repo = "dust";
     rev = "v${version}";
-    hash = "sha256-ERcXVLzgurY6vU+exZ5IcM0rPbWrpghDO1m2XwE5i38=";
+    hash = "sha256-oaDJLDFI193tSzUDqQI/Lvrks0FLYTMLrrwigXwJ+rY=";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     postFetch = ''
@@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec {
     '';
   };
 
-  cargoHash = "sha256-ubcfLNiLQ71QcD5YneMD5N1ipsR1GK5GJQ0PrJyv6qI=";
+  cargoHash = "sha256-o9ynFkdx6a8kHS06NQN7BzWrOIxvdVwnUHmxt4cnmQU=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/ed/ed/package.nix b/pkgs/by-name/ed/ed/package.nix
new file mode 100644
index 000000000000..a4fe441ae083
--- /dev/null
+++ b/pkgs/by-name/ed/ed/package.nix
@@ -0,0 +1,60 @@
+{
+  lib,
+  fetchurl,
+  lzip,
+  runtimeShellPackage,
+  stdenv,
+  testers,
+}:
+
+# Note: this package is used for bootstrapping fetchurl, and thus cannot use
+# fetchpatch! Any mutable patches (retrieved from GitHub, cgit or any other
+# place) that are needed here should be directly included together as regular
+# files.
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "ed";
+  version = "1.20.2";
+
+  src = fetchurl {
+    url = "mirror://gnu/ed/ed-${finalAttrs.version}.tar.lz";
+    hash = "sha256-Zf7HMY9IwsoX8zSsD0cD3v5iA3uxPMI5IN4He1+iRSM=";
+  };
+
+  nativeBuildInputs = [ lzip ];
+
+  buildInputs = [ runtimeShellPackage ];
+
+  configureFlags = [
+    "CC=${stdenv.cc.targetPrefix}cc"
+  ];
+
+  strictDeps = true;
+
+  doCheck = true;
+
+  passthru = {
+    tests.version = testers.testVersion {
+      package = finalAttrs.finalPackage;
+      command = "ed --version";
+    };
+  };
+
+  meta = {
+    homepage = "https://www.gnu.org/software/ed/";
+    description = "GNU implementation of the standard Unix editor";
+    longDescription = ''
+      GNU ed is a line-oriented text editor. It is used to create, display,
+      modify and otherwise manipulate text files, both interactively and via
+      shell scripts. A restricted version of ed, red, can only edit files in the
+      current directory and cannot execute shell commands. Ed is the 'standard'
+      text editor in the sense that it is the original editor for Unix, and thus
+      widely available. For most purposes, however, it is superseded by
+      full-screen editors such as GNU Emacs or GNU Moe.
+    '';
+    license = lib.licenses.gpl3Plus;
+    mainProgram = "ed";
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.unix;
+  };
+})
diff --git a/pkgs/by-name/ed/edido/package.nix b/pkgs/by-name/ed/edido/package.nix
index 2d1f69e6a740..2572a0dc2af8 100644
--- a/pkgs/by-name/ed/edido/package.nix
+++ b/pkgs/by-name/ed/edido/package.nix
@@ -1,5 +1,4 @@
-{ lib
-, writeShellApplication
+{ writeShellApplication
 , bc
 , diffutils
 , findutils
diff --git a/pkgs/by-name/ei/eintopf/frontend.nix b/pkgs/by-name/ei/eintopf/frontend.nix
index 0a7bdd15dee9..f16198b30484 100644
--- a/pkgs/by-name/ei/eintopf/frontend.nix
+++ b/pkgs/by-name/ei/eintopf/frontend.nix
@@ -1,9 +1,7 @@
-{ lib
-, stdenv
+{ stdenv
 , fetchYarnDeps
 , fixup-yarn-lock
 , yarn
-, fetchFromGitea
 , src
 , version
 , nodejs
diff --git a/pkgs/by-name/ek/eksctl/package.nix b/pkgs/by-name/ek/eksctl/package.nix
index 08b77a72d9af..1a5b96a7d488 100644
--- a/pkgs/by-name/ek/eksctl/package.nix
+++ b/pkgs/by-name/ek/eksctl/package.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "eksctl";
-  version = "0.186.0";
+  version = "0.187.0";
 
   src = fetchFromGitHub {
     owner = "weaveworks";
     repo = pname;
     rev = version;
-    hash = "sha256-awXoD3Yy2nwOF4uhBlgCjLjmPmzU4uRPlWpsTDFu65I=";
+    hash = "sha256-EZYKRkxU2KcjiANUA2tXOk7Kp60O0iOGXRIjmSa61SY=";
   };
 
   vendorHash = "sha256-aOLZQKhBy5uBmOhJPfk3ZDHp/YbZw9oN4DaAu1NFcvA=";
diff --git a/pkgs/by-name/el/elf2nucleus/package.nix b/pkgs/by-name/el/elf2nucleus/package.nix
index 08ec2e8f0a23..fad1d8719971 100644
--- a/pkgs/by-name/el/elf2nucleus/package.nix
+++ b/pkgs/by-name/el/elf2nucleus/package.nix
@@ -17,7 +17,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-FAIOtGfGow+0DrPPEBEfvaiinNZLQlGWKJ4DkMj63OA=";
   };
 
-  cargoSha256 = "sha256-IeQnI6WTzxSI/VzoHtVukZtB1jX98wzLOT01NMLD5wQ=";
+  cargoHash = "sha256-IeQnI6WTzxSI/VzoHtVukZtB1jX98wzLOT01NMLD5wQ=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/el/elvish/tests/expect-version.nix b/pkgs/by-name/el/elvish/tests/expect-version.nix
index 406f2131199d..b7935ceea671 100644
--- a/pkgs/by-name/el/elvish/tests/expect-version.nix
+++ b/pkgs/by-name/el/elvish/tests/expect-version.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , elvish
 , substituteAll
 }:
diff --git a/pkgs/by-name/em/emulationstation/package.nix b/pkgs/by-name/em/emulationstation/package.nix
index 62a3537cc5cd..8be475d885fc 100644
--- a/pkgs/by-name/em/emulationstation/package.nix
+++ b/pkgs/by-name/em/emulationstation/package.nix
@@ -1,31 +1,33 @@
-{ lib
-, SDL2
-, alsa-lib
-, boost
-, cmake
-, curl
-, fetchFromGitHub
-, freeimage
-, freetype
-, libGL
-, libGLU
-, libvlc
-, pkg-config
-, rapidjson
-, stdenv
+{
+  lib,
+  SDL2,
+  alsa-lib,
+  boost,
+  callPackage,
+  cmake,
+  curl,
+  freeimage,
+  freetype,
+  libGL,
+  libGLU,
+  libvlc,
+  pkg-config,
+  rapidjson,
+  stdenv,
 }:
 
-stdenv.mkDerivation (finalAttrs: {
-  pname = "emulationstation";
-  version = "2.11.2";
+let
+  sources = callPackage ./sources.nix { };
+in
+stdenv.mkDerivation {
+  inherit (sources.emulationstation) pname version src;
 
-  src = fetchFromGitHub {
-    owner = "RetroPie";
-    repo = "EmulationStation";
-    rev = "v${finalAttrs.version}";
-    fetchSubmodules = true;
-    hash = "sha256-J5h/578FVe4DXJx/AvpRnCIUpqBeFtmvFhUDYH5SErQ=";
-  };
+  postUnpack = ''
+    pushd $sourceRoot/external/pugixml
+    cp --verbose --archive ${sources.pugixml.src}/* .
+    chmod --recursive 744 .
+    popd
+  '';
 
   nativeBuildInputs = [
     SDL2
@@ -46,11 +48,9 @@ stdenv.mkDerivation (finalAttrs: {
     rapidjson
   ];
 
-  strictDeps = true;
+  cmakeFlags = [ (lib.cmakeBool "GL" true) ];
 
-  cmakeFlags = [
-    (lib.cmakeBool "GL" true)
-  ];
+  strictDeps = true;
 
   installPhase = ''
     runHook preInstall
@@ -59,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: {
     mkdir -p $out/share/emulationstation/
     cp -r ../resources $out/share/emulationstation/
 
-    runHook preInstall
+    runHook postInstall
   '';
 
   # es-core/src/resources/ResourceManager.cpp: resources are searched at the
@@ -70,12 +70,19 @@ stdenv.mkDerivation (finalAttrs: {
     popd
   '';
 
+  passthru = {
+    inherit sources;
+  };
+
   meta = {
     homepage = "https://github.com/RetroPie/EmulationStation";
     description = "Flexible emulator front-end supporting keyboardless navigation and custom system themes (forked by RetroPie)";
     license = with lib.licenses; [ mit ];
     mainProgram = "emulationstation";
-    maintainers = with lib.maintainers; [ AndersonTorres edwtjo ];
+    maintainers = with lib.maintainers; [
+      AndersonTorres
+      edwtjo
+    ];
     platforms = lib.platforms.linux;
   };
-})
+}
diff --git a/pkgs/by-name/em/emulationstation/sources.nix b/pkgs/by-name/em/emulationstation/sources.nix
new file mode 100644
index 000000000000..88273e845fee
--- /dev/null
+++ b/pkgs/by-name/em/emulationstation/sources.nix
@@ -0,0 +1,35 @@
+{ fetchFromGitHub }:
+
+{
+  emulationstation =
+    let
+      self = {
+        pname = "emulationstation";
+        version = "2.11.2";
+
+        src = fetchFromGitHub {
+          owner = "RetroPie";
+          repo = "EmulationStation";
+          rev = "v${self.version}";
+          hash = "sha256-f2gRkp+3Pp2qnvg2RBzaHPpzhAnwx0+5x1Pe3kD90xE=";
+        };
+      };
+    in
+    self;
+
+  pugixml =
+    let
+      self = {
+        pname = "pugixml";
+        version = "1.8.1";
+
+        src = fetchFromGitHub {
+          owner = "zeux";
+          repo = "pugixml";
+          rev = "v${self.version}";
+          hash = "sha256-LbjTN1hnIbqI79C+gCdwuDG0+B/5yXf7hg0Q+cDFIf4=";
+        };
+      };
+    in
+    self;
+}
diff --git a/pkgs/by-name/et/ethercat/package.nix b/pkgs/by-name/et/ethercat/package.nix
index 3d7ae6d0854d..f8e128bf436a 100644
--- a/pkgs/by-name/et/ethercat/package.nix
+++ b/pkgs/by-name/et/ethercat/package.nix
@@ -1,5 +1,4 @@
 { autoreconfHook
-, cmake
 , lib
 , pkg-config
 , stdenv
diff --git a/pkgs/by-name/ex/exe2hex/package.nix b/pkgs/by-name/ex/exe2hex/package.nix
index 4213a6905d8f..485e0104cba2 100644
--- a/pkgs/by-name/ex/exe2hex/package.nix
+++ b/pkgs/by-name/ex/exe2hex/package.nix
@@ -1,5 +1,4 @@
 { lib
-, stdenv
 , fetchFromGitHub
 , python3Packages
 , expect
diff --git a/pkgs/by-name/ey/eyewitness/package.nix b/pkgs/by-name/ey/eyewitness/package.nix
index 7cda284f6be8..cc13cb0e13a9 100644
--- a/pkgs/by-name/ey/eyewitness/package.nix
+++ b/pkgs/by-name/ey/eyewitness/package.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchFromGitHub
 , python3Packages
-, cmake
 , xvfb-run
 , firefox-esr
 , geckodriver
diff --git a/pkgs/by-name/ez/eza/package.nix b/pkgs/by-name/ez/eza/package.nix
index 6f6886fd3847..2e04cd6625a1 100644
--- a/pkgs/by-name/ez/eza/package.nix
+++ b/pkgs/by-name/ez/eza/package.nix
@@ -17,16 +17,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "eza";
-  version = "0.18.22";
+  version = "0.18.23";
 
   src = fetchFromGitHub {
     owner = "eza-community";
     repo = "eza";
     rev = "v${version}";
-    hash = "sha256-AZTfFMovNZao/zYzXkVZFGuxUnWz41PmJhuzcIPmwZc=";
+    hash = "sha256-Zwi6YfYhOLZ+RcIH/u1IeUn4Ty9jOvv9R0RTLO8Yi8Q=";
   };
 
-  cargoHash = "sha256-c35CscrsKrzOpzP00K63VUtNcQOzEvS2412s16O4wHw=";
+  cargoHash = "sha256-6g9EtHJaUAoIyjiklX/FxlGNZMzh6/mN9Yug35svfrE=";
 
   nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
   buildInputs = [ zlib ]
diff --git a/pkgs/by-name/fa/fanbox-dl/package.nix b/pkgs/by-name/fa/fanbox-dl/package.nix
index 9de1203a4897..102a9120b9da 100644
--- a/pkgs/by-name/fa/fanbox-dl/package.nix
+++ b/pkgs/by-name/fa/fanbox-dl/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "fanbox-dl";
-  version = "0.21.1";
+  version = "0.22.1";
 
   src = fetchFromGitHub {
     owner = "hareku";
     repo = "fanbox-dl";
     rev = "v${version}";
-    hash = "sha256-ncxL0qTEsAgfA6jJoat1WnOylg91PaG/fhcy3NrFxhA=";
+    hash = "sha256-wMFxAi4ENFFdMwHpgfOp/FRF6h2p91NS94FAjH/C2ww=";
   };
 
   vendorHash = "sha256-GD5uxa5XWhlHHBztTpDKCTSym2pdkr/or6aGl9qF29U=";
diff --git a/pkgs/by-name/fa/fast-float/package.nix b/pkgs/by-name/fa/fast-float/package.nix
index 3ed19d0a5e67..b757ab28df06 100644
--- a/pkgs/by-name/fa/fast-float/package.nix
+++ b/pkgs/by-name/fa/fast-float/package.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "fast-float";
-  version = "6.1.1";
+  version = "6.1.2";
 
   src = fetchFromGitHub {
     owner = "fastfloat";
     repo = "fast_float";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-acaTUI+SWKSgmyJ+J4PzR5U7UtunbRiVuf5OsTf1Hko=";
+    hash = "sha256-1QH9XvY981nSKCjb2nK3tDFHkJy9N1zGNX0dACRjTxE=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/fa/fastfetch/package.nix b/pkgs/by-name/fa/fastfetch/package.nix
index 5de04db0ffe7..d11bc1cc21eb 100644
--- a/pkgs/by-name/fa/fastfetch/package.nix
+++ b/pkgs/by-name/fa/fastfetch/package.nix
@@ -47,13 +47,13 @@ let
 in
 stdenv'.mkDerivation (finalAttrs: {
   pname = "fastfetch";
-  version = "2.18.1";
+  version = "2.20.0";
 
   src = fetchFromGitHub {
     owner = "fastfetch-cli";
     repo = "fastfetch";
     rev = finalAttrs.version;
-    hash = "sha256-vm0KlJ3w71b6OzvbvJBu2hM71FqyjGpP222KguPgHEc=";
+    hash = "sha256-8N2BG9eTZpAvnc1wiG6p7GJSCPfZ+NTbz8kLGPRg5HU=";
   };
 
   outputs = [ "out" "man" ];
diff --git a/pkgs/by-name/fe/fedimint/package.nix b/pkgs/by-name/fe/fedimint/package.nix
index 7fa50da3620b..0872a4b9a90e 100644
--- a/pkgs/by-name/fe/fedimint/package.nix
+++ b/pkgs/by-name/fe/fedimint/package.nix
@@ -24,16 +24,16 @@ let
 in
 buildRustPackage rec {
   pname = "fedimint";
-  version = "0.3.2";
+  version = "0.3.3";
 
   src = fetchFromGitHub {
     owner = "fedimint";
     repo = "fedimint";
     rev = "v${version}";
-    hash = "sha256-FEzlNLo6X4zZQM3KEsf6wwJm4Uw6/8HJNZiM4jK2x2k=";
+    hash = "sha256-0SsIuMCdsZdYSRA1yT1axMe6+p+tIpXyN71V+1B7jYc=";
   };
 
-  cargoHash = "sha256-lILETtCaPDAWgObNwHIfO/w6pqs0PkbqpDbjODRDOzw=";
+  cargoHash = "sha256-nQvEcgNOT04H5OgMHfN1713A4nbEaKK2KDx9E3qxcbM=";
 
   nativeBuildInputs = [
     protobuf
diff --git a/pkgs/by-name/fi/fichub-cli/package.nix b/pkgs/by-name/fi/fichub-cli/package.nix
new file mode 100644
index 000000000000..3d62d7b2a304
--- /dev/null
+++ b/pkgs/by-name/fi/fichub-cli/package.nix
@@ -0,0 +1,62 @@
+{ lib, python3Packages, fetchPypi }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "fichub-cli";
+  version = "0.10.3";
+  pyproject = true;
+
+  src = fetchPypi {
+    pname = "fichub_cli";
+    inherit version;
+    hash = "sha256-MTExXpuCwi/IfNDUVLMcxfFRwHHNfGJerHkHnh6/hls=";
+  };
+
+  build-system = with python3Packages; [
+    setuptools
+  ];
+
+  dependencies = with python3Packages; [
+    platformdirs
+    beautifulsoup4
+    click
+    click-plugins
+    colorama
+    loguru
+    requests
+    tqdm
+    typer
+  ];
+
+  pythonImportsCheck = [
+    "fichub_cli"
+  ];
+
+  nativeCheckInputs = with python3Packages; [
+    pytestCheckHook
+  ];
+
+  # The package tries to create a file under the home directory on import
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  pytestFlagsArray = [
+    # pytest exits with a code of 5 if no tests are selected.
+    # handle this specific case as not an error
+    "|| ([ $? = 5 ] || exit $?)"
+  ];
+
+  disabledTestPaths = [
+    # Loading tests tries to download something from pypi.org
+    "tests/test_cli.py"
+  ];
+
+  meta = {
+    description = "CLI for the fichub.net API";
+    changelog = "https://github.com/FicHub/fichub-cli/releases/tag/v${version}";
+    mainProgram = "fichub_cli";
+    homepage = "https://github.com/FicHub/fichub-cli";
+    license = lib.licenses.asl20;
+    maintainers = [ lib.maintainers.samasaur ];
+  };
+}
diff --git a/pkgs/by-name/fi/fira-math/package.nix b/pkgs/by-name/fi/fira-math/package.nix
index 56bcb916d2d4..58b72f6b740e 100644
--- a/pkgs/by-name/fi/fira-math/package.nix
+++ b/pkgs/by-name/fi/fira-math/package.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, fira-math, python3, stdenvNoCC }:
+{ lib, fetchFromGitHub, python3, stdenvNoCC }:
 
 let
   pname = "fira-math";
diff --git a/pkgs/by-name/fi/firefly-iii/package.nix b/pkgs/by-name/fi/firefly-iii/package.nix
index d8495f64e299..5425fd2da084 100644
--- a/pkgs/by-name/fi/firefly-iii/package.nix
+++ b/pkgs/by-name/fi/firefly-iii/package.nix
@@ -12,15 +12,15 @@
 
 let
   pname = "firefly-iii";
-  version = "6.1.18";
+  version = "6.1.19";
   phpPackage = php83;
-  npmDepsHash = "sha256-MoxkNxfVeIFkiNVzfehQ9FpC65kBj8ZmvwaRf4MVRIg=";
+  npmDepsHash = "sha256-/oz0raI0/AV5NamvMWxlUdiQbVsSKHRplsw2/KrMOwg=";
 
   src = fetchFromGitHub {
     owner = "firefly-iii";
     repo = "firefly-iii";
     rev = "v${version}";
-    hash = "sha256-mA7gvKhHouUUz1Aix7253O/+VcufoEFwdcJeZxnazEo=";
+    hash = "sha256-SIvYRmCCzQI+qUr5aA78NQLLmO+EPO1ZEL7vcqJ5puw=";
   };
 in
 
@@ -43,7 +43,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
   composerStrictValidation = true;
   strictDeps = true;
 
-  vendorHash = "sha256-EpMypgj6lZDz6T94bGoCUH9IVwh7VB4Ds08AcCsreRw=";
+  vendorHash = "sha256-qps/dWubCVqqvzgSizJJvx2MUzRZKiMeQCnWz08Ft+E=";
 
   npmDeps = fetchNpmDeps {
     inherit src;
diff --git a/pkgs/by-name/fn/fnott/package.nix b/pkgs/by-name/fn/fnott/package.nix
index 605d79cf5ac7..008abcc7e997 100644
--- a/pkgs/by-name/fn/fnott/package.nix
+++ b/pkgs/by-name/fn/fnott/package.nix
@@ -62,7 +62,10 @@ stdenv.mkDerivation rec {
     changelog = "https://codeberg.org/dnkl/fnott/src/tag/${src.rev}/CHANGELOG.md";
     description = "Keyboard driven and lightweight Wayland notification daemon for wlroots-based compositors";
     license = with lib.licenses; [ mit zlib ];
-    maintainers = with lib.maintainers; [ ];
+    maintainers = with lib.maintainers; [
+      jmbaur
+      eclairevoyant
+    ];
     mainProgram = "fnott";
     platforms = lib.platforms.linux;
   };
diff --git a/pkgs/by-name/fo/folder-color-switcher/package.nix b/pkgs/by-name/fo/folder-color-switcher/package.nix
index 9870ed046d34..b338b84d0771 100644
--- a/pkgs/by-name/fo/folder-color-switcher/package.nix
+++ b/pkgs/by-name/fo/folder-color-switcher/package.nix
@@ -7,14 +7,14 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "folder-color-switcher";
-  version = "1.6.3";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     # They don't really do tags, this is just a named commit.
-    rev = "35aa5b9839935fc3415ba6b7c77171459e7325fa";
-    sha256 = "sha256-2ItjQ3CO1kG2QdAEqNxlrZ1AOfHmUBCE99kLalU7AUc=";
+    rev = "c9d1a2b9c7f40ff7bb77ee74a277988bb8a4adf2";
+    sha256 = "sha256-5k0YybA40MefqQixNFyQFMuy7t4aSGsI3BK0RbZDu28=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/fo/fooyin/package.nix b/pkgs/by-name/fo/fooyin/package.nix
index 8c03c4f5fe7c..f61506f28d6a 100644
--- a/pkgs/by-name/fo/fooyin/package.nix
+++ b/pkgs/by-name/fo/fooyin/package.nix
@@ -7,10 +7,8 @@
 , ffmpeg
 , kdePackages
 , kdsingleapplication
-, openssl
 , pipewire
 , taglib
-, zlib
 }:
 
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/fo/forgejo/package.nix b/pkgs/by-name/fo/forgejo/package.nix
index c98957268aa0..03a7b974d4ce 100644
--- a/pkgs/by-name/fo/forgejo/package.nix
+++ b/pkgs/by-name/fo/forgejo/package.nix
@@ -2,7 +2,6 @@
 , brotli
 , buildGoModule
 , forgejo
-, fetchpatch
 , git
 , gzip
 , lib
diff --git a/pkgs/by-name/fr/frankenphp/package.nix b/pkgs/by-name/fr/frankenphp/package.nix
index da611ee21917..e96cbeb8aca3 100644
--- a/pkgs/by-name/fr/frankenphp/package.nix
+++ b/pkgs/by-name/fr/frankenphp/package.nix
@@ -6,6 +6,7 @@
 , brotli
 , testers
 , frankenphp
+, cctools
 , darwin
 , libiconv
 , pkg-config
@@ -44,7 +45,7 @@ in buildGoModule rec {
   vendorHash = "sha256-Ir1lwTu3JqIFp9jhJyhTAFm/+XlStkPuCoNAZneeKGc=";
 
   buildInputs = [ phpUnwrapped brotli ] ++ phpUnwrapped.buildInputs;
-  nativeBuildInputs = [ makeBinaryWrapper ] ++ lib.optionals stdenv.isDarwin [ pkg-config darwin.cctools darwin.autoSignDarwinBinariesHook ];
+  nativeBuildInputs = [ makeBinaryWrapper ] ++ lib.optionals stdenv.isDarwin [ pkg-config cctools darwin.autoSignDarwinBinariesHook ];
 
   subPackages = [ "frankenphp" ];
 
diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix
index b0146582b1a3..04c40ee03c67 100644
--- a/pkgs/by-name/fr/freecad/package.nix
+++ b/pkgs/by-name/fr/freecad/package.nix
@@ -191,7 +191,7 @@ stdenv.mkDerivation (finalAttrs: {
       right at home with FreeCAD.
     '';
     license = lib.licenses.lgpl2Plus;
-    maintainers = with lib.maintainers; [ viric gebner AndersonTorres ];
+    maintainers = with lib.maintainers; [ gebner AndersonTorres ];
     platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/by-name/fw/fwupd/package.nix b/pkgs/by-name/fw/fwupd/package.nix
index b5e985b3d45b..0552d7fa16d4 100644
--- a/pkgs/by-name/fw/fwupd/package.nix
+++ b/pkgs/by-name/fw/fwupd/package.nix
@@ -120,7 +120,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "fwupd";
-  version = "1.9.21";
+  version = "1.9.22";
 
   # libfwupd goes to lib
   # daemon, plug-ins and libfwupdplugin go to out
@@ -131,7 +131,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "fwupd";
     repo = "fwupd";
     rev = finalAttrs.version;
-    hash = "sha256-V3v3lTz3KUt/zEv5BuUcN7S2ZXHPbhYN5vsFPNuxbFY=";
+    hash = "sha256-skmfTejj9cPdihwPIbsyoSI8ekVNcUXUNMcpPs9uSNo=";
   };
 
   patches = [
diff --git a/pkgs/by-name/fz/fzf-make/package.nix b/pkgs/by-name/fz/fzf-make/package.nix
index ae8681bf1c05..0061ad81bbcd 100644
--- a/pkgs/by-name/fz/fzf-make/package.nix
+++ b/pkgs/by-name/fz/fzf-make/package.nix
@@ -29,12 +29,12 @@ rustPlatform.buildRustPackage rec {
       --suffix PATH : ${lib.makeBinPath [ bat gnugrep gnumake ]}
   '';
 
-  meta = with lib; {
+  meta = {
     description = "Fuzzy finder for Makefile";
     homepage = "https://github.com/kyu08/fzf-make";
     changelog = "https://github.com/kyu08/fzf-make/releases/tag/${src.rev}";
-    license = licenses.mit;
-    maintainers = with maintainers; [ figsoda sigmanificient ];
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ figsoda sigmanificient ];
     mainProgram = "fzf-make";
   };
 }
diff --git a/pkgs/by-name/fz/fzf/package.nix b/pkgs/by-name/fz/fzf/package.nix
index 4508d30e0407..2733b9231f11 100644
--- a/pkgs/by-name/fz/fzf/package.nix
+++ b/pkgs/by-name/fz/fzf/package.nix
@@ -11,13 +11,13 @@
 
 buildGoModule rec {
   pname = "fzf";
-  version = "0.54.1";
+  version = "0.54.2";
 
   src = fetchFromGitHub {
     owner = "junegunn";
     repo = "fzf";
     rev = "v${version}";
-    hash = "sha256-nE4ibYAOH3fgZbpf/tPocXFH6GfialYk/gvLltO8x/w=";
+    hash = "sha256-9vuz18rosYpkBmJc37CNXEry4OWMSQ03atdCiwY+KYY=";
   };
 
   vendorHash = "sha256-uhjJPB/jfRPAu9g41vWFnSBIN9TIZW3s6BGz0fA2ygE=";
diff --git a/pkgs/by-name/ga/gapless/package.nix b/pkgs/by-name/ga/gapless/package.nix
new file mode 100644
index 000000000000..9852ab96a125
--- /dev/null
+++ b/pkgs/by-name/ga/gapless/package.nix
@@ -0,0 +1,60 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, desktop-file-utils
+, gitUpdater
+, gobject-introspection
+, gst_all_1
+, gtk4
+, libadwaita
+, meson
+, ninja
+, pkg-config
+, vala
+, wrapGAppsHook4
+}:
+stdenv.mkDerivation (finalAttrs: {
+  pname = "gapless";
+  version = "3.8";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "neithern";
+    repo = "g4music";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-AZoMAbQ3foW2jx+mBam925a8ykMtGvaiVg9N8/Ggny0=";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkg-config
+    vala
+    wrapGAppsHook4
+  ];
+
+  buildInputs = [
+    gtk4
+    libadwaita
+  ] ++ (with gst_all_1; [
+    gst-plugins-bad
+    gst-plugins-base
+    gst-plugins-good
+    gstreamer
+  ]);
+
+  passthru.updateScript = gitUpdater {
+    rev-prefix = "v";
+  };
+
+  meta = with lib; {
+    description = "Beautiful, fast, fluent, light weight music player written in GTK4";
+    mainProgram = "g4music";
+    homepage = "https://gitlab.gnome.org/neithern/g4music";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ aleksana ];
+    platforms = platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/ge/gearlever/package.nix b/pkgs/by-name/ge/gearlever/package.nix
new file mode 100644
index 000000000000..ff238a7b6a7f
--- /dev/null
+++ b/pkgs/by-name/ge/gearlever/package.nix
@@ -0,0 +1,117 @@
+{
+  lib,
+  python3Packages,
+  fetchFromGitHub,
+  stdenv,
+  meson,
+  ninja,
+  pkg-config,
+  gobject-introspection,
+  wrapGAppsHook4,
+  desktop-file-utils,
+  libadwaita,
+  file,
+  p7zip,
+  which,
+  appimage-run,
+  gtk4,
+  bintools,
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "gearlever";
+  version = "2.0.1";
+  pyproject = false; # Built with meson
+
+  src = fetchFromGitHub {
+    owner = "mijorus";
+    repo = "gearlever";
+    rev = version;
+    hash = "sha256-f4rQXenJCZiDC9MRQkjy0mOiNkWzOPSS05GXHXlhUao=";
+  };
+
+  postPatch =
+    # https://github.com/NixOS/nixpkgs/issues/302605
+    # But since the author only builds on flatpak, we don't expect much on it...
+    ''
+      substituteInPlace build-aux/meson/postinstall.py \
+        --replace-fail 'gtk-update-icon-cache' 'gtk4-update-icon-cache'
+    ''
+    # Some attempts to overcome flatpak assumptions
+    + ''
+      substituteInPlace src/lib/utils.py \
+        --replace-fail '/run/host/os-release' '/etc/os-release'
+
+      substituteInPlace src/lib/terminal.py \
+        --replace-fail "cmd = ['flatpak-spawn', '--host', *command]" "cmd = [*command]"
+    ''
+    # Use gtk4 instead of gtk3 to get smaller closure size
+    + ''
+      substituteInPlace src/providers/AppImageProvider.py \
+        --replace-fail "gtk-launch" "gtk4-launch"
+    ''
+    # We don't have `arch` in coreutils, so just return a string in advance
+    + ''
+      substituteInPlace src/AppDetails.py \
+        --replace-fail "sandbox_sh(['arch'])" '"${stdenv.hostPlatform.uname.processor}"'
+    '';
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    gobject-introspection
+    wrapGAppsHook4
+    desktop-file-utils
+  ];
+
+  buildInputs = [ libadwaita ];
+
+  dependencies = with python3Packages; [
+    pygobject3
+    dbus-python
+    pyxdg
+    requests
+  ];
+
+  dontWrapGApps = true;
+
+  makeWrapperArgs = [
+    "\${gappsWrapperArgs[@]}"
+    "--prefix PATH : ${
+      lib.makeBinPath [
+        file
+        p7zip
+        which
+        appimage-run
+        desktop-file-utils # update-desktop-database
+        gtk4.dev # gtk4-launch
+        bintools # readelf
+      ]
+    }"
+  ];
+
+  meta = {
+    description = "Manage AppImages with ease";
+    longDescription = ''
+      Features:
+
+      - Integrate AppImages into your app menu with just one click
+      - Drag and drop files directly from your file manager
+      - Keep all the AppImages organized in a custom folder
+      - Open new AppImages directly with Gear lever
+      - Manage updates: keep older versions installed or replace
+        them with the latest release
+      - Save CLI apps with their executable name automatically
+      - Modern and Fresh UI
+    '';
+    homepage = "https://mijorus.it/projects/gearlever";
+    license = with lib.licenses; [
+      gpl3Plus
+      cc0
+    ];
+    mainProgram = "gearlever";
+    maintainers = with lib.maintainers; [ aleksana ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/gf/gfal2/package.nix b/pkgs/by-name/gf/gfal2/package.nix
index bde7e06b30c2..e46b8807473f 100644
--- a/pkgs/by-name/gf/gfal2/package.nix
+++ b/pkgs/by-name/gf/gfal2/package.nix
@@ -1,6 +1,5 @@
 { lib
 , stdenv
-, callPackage
 , fetchFromGitHub
   # Native build inputs
 , cmake
diff --git a/pkgs/by-name/gh/ghdl/test-simple.nix b/pkgs/by-name/gh/ghdl/test-simple.nix
index ae265cfba82c..bf034441be25 100644
--- a/pkgs/by-name/gh/ghdl/test-simple.nix
+++ b/pkgs/by-name/gh/ghdl/test-simple.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, ghdl-llvm, ghdl-mcode, ghdl-gcc, backend }:
+{ stdenv, ghdl-llvm, ghdl-mcode, ghdl-gcc, backend }:
 
 let
   ghdl = if backend == "llvm" then ghdl-llvm else if backend == "gcc" then ghdl-gcc else ghdl-mcode;
diff --git a/pkgs/by-name/gh/ghex/package.nix b/pkgs/by-name/gh/ghex/package.nix
index 0f3aefaa56be..95c4448025ef 100644
--- a/pkgs/by-name/gh/ghex/package.nix
+++ b/pkgs/by-name/gh/ghex/package.nix
@@ -10,7 +10,6 @@
 , appstream-glib
 , gettext
 , itstool
-, libxml2
 , gtk4
 , libadwaita
 , glib
diff --git a/pkgs/by-name/gh/ghi/gemset.nix b/pkgs/by-name/gh/ghi/gemset.nix
new file mode 100644
index 000000000000..7f03d5a41e4b
--- /dev/null
+++ b/pkgs/by-name/gh/ghi/gemset.nix
@@ -0,0 +1,199 @@
+{
+  diff-lcs = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0rwvjahnp7cpmracd8x732rjgnilqv2sx7d1gfrysslc3h039fa9";
+      type = "gem";
+    };
+    version = "1.5.0";
+  };
+  docile = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lxqxgq71rqwj1lpl9q1mbhhhhhhdkkj7my341f2889pwayk85sz";
+      type = "gem";
+    };
+    version = "1.4.0";
+  };
+  ghi = {
+    dependencies = ["pygments.rb"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      path = ./.;
+      type = "path";
+    };
+    version = "1.2.0";
+  };
+  hpricot = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jn8x9ch79gqmnzgyz78kppavjh5lqx0y0r6frykga2b86rz9s6z";
+      type = "gem";
+    };
+    version = "0.8.6";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0nrmw2r4nfxlfgprfgki3hjifgrcrs3l5zvm3ca3gb4743yr25mn";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  mustache = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1l0p4wx15mi3wnamfv92ipkia4nsx8qi132c6g51jfdma3fiz2ch";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  "pygments.rb" = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "047mjyzz8v4kkgi1ap6fsjf7kcp6dwirpnigif00ss0hxsxchhac";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  rake = {
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "15whn7p9nrkxangbs9hh75q585yfn66lv0v2mhj6q6dl6x8bzr2w";
+      type = "gem";
+    };
+    version = "13.0.6";
+  };
+  rdiscount = {
+    groups = ["default" "development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "16srf8cr8ynlafyh6ls654b9a3bqgai8n3y86zzv9mcpvlk6k27g";
+      type = "gem";
+    };
+    version = "2.2.0.2";
+  };
+  ronn = {
+    dependencies = ["hpricot" "mustache" "rdiscount"];
+    groups = ["development"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07plsxxfx5bxdk72ii9za6km0ziqlq8jh3bicr4774dalga6zpw2";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  rspec = {
+    dependencies = ["rspec-core" "rspec-expectations" "rspec-mocks"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19dyb6rcvgi9j2mksd29wfdhfdyzqk7yjhy1ai77559hbhpg61w9";
+      type = "gem";
+    };
+    version = "3.11.0";
+  };
+  rspec-core = {
+    dependencies = ["rspec-support"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "118hkfw9b11hvvalr7qlylwal5h8dihagm9xg7k4gskg7587hca6";
+      type = "gem";
+    };
+    version = "3.11.0";
+  };
+  rspec-expectations = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "001ihayil7jpfxdlxlhakvz02kx0nk5m1w0bz6z8izdx0nc8bh53";
+      type = "gem";
+    };
+    version = "3.11.0";
+  };
+  rspec-mocks = {
+    dependencies = ["diff-lcs" "rspec-support"];
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y38dc66yhnfcf4ky3k47c20xak1rax940s4a96qkjxqrniy5ys3";
+      type = "gem";
+    };
+    version = "3.11.0";
+  };
+  rspec-support = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0xfk4pla77251n39zf4n792m1rhg5sn1kp63yvpvvysany34la03";
+      type = "gem";
+    };
+    version = "3.11.0";
+  };
+  rspec_junit_formatter = {
+    dependencies = ["rspec-core"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sm4yj6149v4pisnizplh58ahaqri2v6p7gyzybqy1ql0zwignxy";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  simplecov = {
+    dependencies = ["docile" "simplecov-html" "simplecov_json_formatter"];
+    groups = ["test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hrv046jll6ad1s964gsmcq4hvkr3zzr6jc7z1mns22mvfpbc3cr";
+      type = "gem";
+    };
+    version = "0.21.2";
+  };
+  simplecov-html = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yx01bxa8pbf9ip4hagqkp5m0mqfnwnw2xk8kjraiywz4lrss6jb";
+      type = "gem";
+    };
+    version = "0.12.3";
+  };
+  simplecov_json_formatter = {
+    groups = ["default" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a5l0733hj7sk51j81ykfmlk2vd5vaijlq9d5fn165yyx3xii52j";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+}
diff --git a/pkgs/by-name/gh/ghi/package.nix b/pkgs/by-name/gh/ghi/package.nix
new file mode 100644
index 000000000000..5c17846aab75
--- /dev/null
+++ b/pkgs/by-name/gh/ghi/package.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, bundlerEnv
+, tree
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "ghi";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "drazisil";
+    repo = "ghi";
+    rev = "refs/tags/${finalAttrs.version}";
+    hash = "sha256-3V1lxI4VhP0jC3VSWyNS327gOCKowbbLB6ae1idpFFI=";
+  };
+
+  env = bundlerEnv {
+    name = "ghi";
+
+    gemfile = "${finalAttrs.src}/Gemfile";
+    lockfile = "${finalAttrs.src}/Gemfile.lock";
+    gemset = ./gemset.nix;
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ finalAttrs.env.wrappedRuby ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+
+    cp ghi $out/bin
+  '';
+
+  meta = {
+    description = "GitHub Issues on the command line";
+    mainProgram = "ghi";
+    homepage = "https://github.com/drazisil/ghi";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ sigmanificient];
+  };
+})
diff --git a/pkgs/by-name/gi/git-get/package.nix b/pkgs/by-name/gi/git-get/package.nix
index 01d3a183cf40..8e6bea06ab7f 100644
--- a/pkgs/by-name/gi/git-get/package.nix
+++ b/pkgs/by-name/gi/git-get/package.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, git, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 let config-module = "git-get/pkg/cfg";
 in
diff --git a/pkgs/by-name/gi/git-igitt/package.nix b/pkgs/by-name/gi/git-igitt/package.nix
new file mode 100644
index 000000000000..19183790b8ea
--- /dev/null
+++ b/pkgs/by-name/gi/git-igitt/package.nix
@@ -0,0 +1,46 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  libgit2,
+  oniguruma,
+  zlib,
+}:
+
+let
+  pname = "git-igitt";
+  version = "0.1.18";
+in
+rustPlatform.buildRustPackage {
+  inherit pname version;
+
+  src = fetchFromGitHub {
+    owner = "mlange-42";
+    repo = pname;
+    rev = version;
+    hash = "sha256-JXEWnekL9Mtw0S3rI5aeO1HB9kJ7bRJDJ6EJ4ATlFeQ=";
+  };
+
+  cargoHash = "sha256-5UgcgM/WuyApNFCd8YBodx9crJP3+Bygu9nSBJqPCaQ=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs = [
+    libgit2
+    oniguruma
+    zlib
+  ];
+
+  env = {
+    RUSTONIG_SYSTEM_LIBONIG = true;
+  };
+
+  meta = {
+    description = "Interactive, cross-platform Git terminal application with clear git graphs arranged for your branching model";
+    homepage = "https://github.com/mlange-42/git-igitt";
+    license = lib.licenses.mit;
+    maintainers = [ lib.maintainers.pinage404 ];
+    mainProgram = "git-igitt";
+  };
+}
diff --git a/pkgs/by-name/gi/git-instafix/package.nix b/pkgs/by-name/gi/git-instafix/package.nix
index 02bdb77977ee..d05e9fab8726 100644
--- a/pkgs/by-name/gi/git-instafix/package.nix
+++ b/pkgs/by-name/gi/git-instafix/package.nix
@@ -1,7 +1,6 @@
 { git
 , lib
 , libgit2
-, makeWrapper
 , rustPlatform
 , stdenv
 , fetchFromGitHub
diff --git a/pkgs/by-name/gi/git-spice/package.nix b/pkgs/by-name/gi/git-spice/package.nix
new file mode 100644
index 000000000000..ca58ac578aed
--- /dev/null
+++ b/pkgs/by-name/gi/git-spice/package.nix
@@ -0,0 +1,44 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  git,
+  nix-update-script,
+}:
+
+buildGoModule rec {
+  pname = "git-spice";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "abhinav";
+    repo = "git-spice";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-BYIq+12piA0WgfwVSB6P6CKC81icAY/P4/pv2ZMj5N8=";
+  };
+
+  vendorHash = "sha256-AIqy0OQsYRStbFLv2L8m4R0k1tr5fVM1FeMFn90yFoY=";
+
+  subPackages = [ "." ];
+
+  nativeCheckInputs = [ git ];
+
+  buildInputs = [ git ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X=main._version=${version}"
+  ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Manage stacked Git branches";
+    homepage = "https://abhinav.github.io/git-spice/";
+    changelog = "https://github.com/abhinav/git-spice/blob/${src.rev}/CHANGELOG.md";
+    license = lib.licenses.gpl3Only;
+    maintainers = [ lib.maintainers.vinnymeller ];
+    mainProgram = "gs";
+  };
+}
diff --git a/pkgs/by-name/go/goatcounter/package.nix b/pkgs/by-name/go/goatcounter/package.nix
index 208581708837..83e05473ae60 100644
--- a/pkgs/by-name/go/goatcounter/package.nix
+++ b/pkgs/by-name/go/goatcounter/package.nix
@@ -1,8 +1,10 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
-, testers
-, goatcounter
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  testers,
+  goatcounter,
+  nixosTests,
 }:
 
 buildGoModule rec {
@@ -31,10 +33,13 @@ buildGoModule rec {
     "-X zgo.at/goatcounter/v2.Version=${src.rev}"
   ];
 
-  passthru.tests.version = testers.testVersion {
-    package = goatcounter;
-    command = "goatcounter version";
-    version = "v${version}";
+  passthru.tests = {
+    moduleTest = nixosTests.goatcounter;
+    version = testers.testVersion {
+      package = goatcounter;
+      command = "goatcounter version";
+      version = "v${version}";
+    };
   };
 
   meta = {
diff --git a/pkgs/by-name/go/goldwarden/package.nix b/pkgs/by-name/go/goldwarden/package.nix
index 264ea5268542..e6938d3be694 100644
--- a/pkgs/by-name/go/goldwarden/package.nix
+++ b/pkgs/by-name/go/goldwarden/package.nix
@@ -2,7 +2,6 @@
 , blueprint-compiler
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
 , gobject-introspection
 , gtk4
 , libadwaita
diff --git a/pkgs/by-name/go/google-chrome/package.nix b/pkgs/by-name/go/google-chrome/package.nix
index 806b6cf5617a..87ff8448d626 100644
--- a/pkgs/by-name/go/google-chrome/package.nix
+++ b/pkgs/by-name/go/google-chrome/package.nix
@@ -24,7 +24,7 @@
 ## Ubuntu
 , liberation_ttf, curl, util-linux, xdg-utils, wget
 ## Arch Linux.
-, flac, harfbuzz, icu, libpng, libopus, snappy, speechd
+, flac, harfbuzz, icu, libpng, libopus, snappy, speechd-minimal
 ## Gentoo
 , bzip2, libcap
 
@@ -38,7 +38,7 @@
 , libvaSupport ? true, libva
 
 # For Vulkan support (--enable-features=Vulkan)
-, addOpenGLRunpath
+, addDriverRunpath
 }:
 
 let
@@ -54,7 +54,7 @@ let
     systemd
     libexif pciutils
     liberation_ttf curl util-linux wget
-    flac harfbuzz icu libpng opusWithCustomModes snappy speechd
+    flac harfbuzz icu libpng opusWithCustomModes snappy speechd-minimal
     bzip2 libcap at-spi2-atk at-spi2-core
     libkrb5 libdrm libglvnd mesa coreutils
     libxkbcommon pipewire wayland
@@ -129,7 +129,7 @@ in stdenv.mkDerivation (finalAttrs: {
       --prefix LD_LIBRARY_PATH : "$rpath" \
       --prefix PATH            : "$binpath" \
       --suffix PATH            : "${lib.makeBinPath [ xdg-utils ]}" \
-      --prefix XDG_DATA_DIRS   : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:${addOpenGLRunpath.driverLink}/share" \
+      --prefix XDG_DATA_DIRS   : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:${addDriverRunpath.driverLink}/share" \
       --set CHROME_WRAPPER  "google-chrome-$dist" \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
       --add-flags ${lib.escapeShellArg commandLineArgs}
diff --git a/pkgs/by-name/go/goss/package.nix b/pkgs/by-name/go/goss/package.nix
index 672800e410d4..3f3a7fcebc02 100644
--- a/pkgs/by-name/go/goss/package.nix
+++ b/pkgs/by-name/go/goss/package.nix
@@ -14,16 +14,16 @@
 
 buildGoModule rec {
   pname = "goss";
-  version = "0.4.7";
+  version = "0.4.8";
 
   src = fetchFromGitHub {
     owner = "goss-org";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-KP0i+ePmkx43MdokVQO3CvTsdIFO7rCWLd8vJVC9Qf0=";
+    hash = "sha256-xabGzCTzWwT8568xg6sdlE32OYPXlG9Fei0DoyAoXgo=";
   };
 
-  vendorHash = "sha256-VLIDAlLO6COGDKDN12bYIBluFVgqPEmm8QRfSNPfLJY=";
+  vendorHash = "sha256-BPW4nC9gxDbyhA5UOfFAtOIusNvwJ7pQiprZsqTiak0=";
 
   CGO_ENABLED = 0;
 
diff --git a/pkgs/by-name/go/gotenberg/package.nix b/pkgs/by-name/go/gotenberg/package.nix
index 889d2109d4e7..40cb1e185bbd 100644
--- a/pkgs/by-name/go/gotenberg/package.nix
+++ b/pkgs/by-name/go/gotenberg/package.nix
@@ -22,16 +22,16 @@ let
 in
 buildGoModule rec {
   pname = "gotenberg";
-  version = "8.8.0";
+  version = "8.8.1";
 
   src = fetchFromGitHub {
     owner = "gotenberg";
     repo = "gotenberg";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OHvtdUFZYm+I8DN8lAdlNAIRLWNRC/GbVEueRfyrwDA=";
+    hash = "sha256-vXrSPu/iY6JsOvPKDRdg6TnUjNV7X5GEb5l9bk4lSpY=";
   };
 
-  vendorHash = "sha256-w9Q3hK8d5NwDYp8kydrWrlBlOmMyDqDixdv3z79yhK8=";
+  vendorHash = "sha256-Hxava/dRQ2TFWrg7fIvRkp3NW61QWmWNEQiBP71wlR8=";
 
   postPatch = ''
     find ./pkg -name '*_test.go' -exec sed -i -e 's#/tests#${src}#g' {} \;
diff --git a/pkgs/by-name/go/gotree/package.nix b/pkgs/by-name/go/gotree/package.nix
new file mode 100644
index 000000000000..483cc6f1eb4e
--- /dev/null
+++ b/pkgs/by-name/go/gotree/package.nix
@@ -0,0 +1,28 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+}:
+
+buildGoModule rec {
+  pname = "gotree";
+  version = "0.3.1";
+
+  src = fetchFromGitHub {
+    owner = "elbachir-one";
+    repo = "gt";
+    rev = "v${version}";
+    hash = "sha256-0CI9dQXMlED3VoZwB+QI8kUVrUIx9vGIgNZ7mNsZGgs=";
+  };
+
+  vendorHash = null;
+
+  meta = {
+    description = "Display a tree of files and directories";
+    homepage = "https://github.com/elbachir-one/gt";
+    changelog = "https://github.com/elbachir-one/gt/releases/tag/v${version}";
+    license = lib.licenses.bsd3;
+    mainProgram = "gt";
+    maintainers = with lib.maintainers; [ schnow265 ];
+  };
+}
diff --git a/pkgs/by-name/gp/gprename/package.nix b/pkgs/by-name/gp/gprename/package.nix
index 18591b735385..6ae3b792ccfd 100644
--- a/pkgs/by-name/gp/gprename/package.nix
+++ b/pkgs/by-name/gp/gprename/package.nix
@@ -5,10 +5,7 @@
   makeWrapper,
   moreutils,
   perlPackages,
-  gettext,
-  glib,
   gtk3,
-  gobject-introspection,
   pango,
   harfbuzz,
   gdk-pixbuf,
diff --git a/pkgs/by-name/gp/gpustat/package.nix b/pkgs/by-name/gp/gpustat/package.nix
index d98ff336ed39..428c2c583a0c 100644
--- a/pkgs/by-name/gp/gpustat/package.nix
+++ b/pkgs/by-name/gp/gpustat/package.nix
@@ -25,7 +25,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-M9P/qfw/tp9ogkNOE3b2fD2rGFnii1/VwmqJHqXb7Mg=";
   };
 
-  cargoSha256 = "sha256-po/pEMZEtySZnz7l2FI7Wqbmp2CiWBijchKGkqlIMPU=";
+  cargoHash = "sha256-po/pEMZEtySZnz7l2FI7Wqbmp2CiWBijchKGkqlIMPU=";
 
   nativeBuildInputs = [
     cmake
diff --git a/pkgs/by-name/gr/grafterm/package.nix b/pkgs/by-name/gr/grafterm/package.nix
new file mode 100644
index 000000000000..a15ab6e5ed0f
--- /dev/null
+++ b/pkgs/by-name/gr/grafterm/package.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "grafterm";
+  version = "0.2.0";
+
+  src = fetchFromGitHub {
+    owner = "slok";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-0pM36rAmwx/P1KAlmVaGoSj8eb9JucYycNC2R867dVo=";
+  };
+
+  vendorHash = "sha256-veg5B68AQhkSZg8YA/e4FbqJNG0YGwnUQFsAdscz0QI=";
+
+  ldflags = [ "-s" "-w" "-X main.Version=${version}" ];
+
+  meta = with lib; {
+    description = "Command-line tool for rendering metrics dashboards inspired by Grafana";
+    homepage = "https://github.com/slok/grafterm";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "grafterm";
+  };
+}
diff --git a/pkgs/by-name/gr/grpc-health-check/package.nix b/pkgs/by-name/gr/grpc-health-check/package.nix
new file mode 100644
index 000000000000..5ef0efc6301a
--- /dev/null
+++ b/pkgs/by-name/gr/grpc-health-check/package.nix
@@ -0,0 +1,32 @@
+{ stdenv
+, fetchFromGitHub
+, rustPlatform
+, protobuf
+, lib
+}:
+
+rustPlatform.buildRustPackage {
+  pname = "grpc-health-check";
+  version = "unstable-2022-08-19";
+
+  src = fetchFromGitHub {
+    owner = "paypizza";
+    repo = "grpc-health-check";
+    rev = "f61bb5e10beadc5ed53144cc540d66e19fc510bd";
+    hash = "sha256-nKut9c1HHIacdRcmvlXe0GrtkgCWN6sxJ4ImO0CIDdo=";
+  };
+
+  cargoHash = "sha256-lz+815iE+oXBQ3PfqBO0QBpZY6x1SNR7OU7BjkRszzI=";
+
+  nativeBuildInputs = [ protobuf ];
+  # tests fail
+  doCheck = false;
+
+  meta = {
+    description = "Minimal, high performance, memory-friendly, safe implementation of the gRPC health checking protocol";
+    homepage = "https://github.com/paypizza/grpc-health-check";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ flokli ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/ha/halo/package.nix b/pkgs/by-name/ha/halo/package.nix
index b250752edae9..c5a3ada6d0a3 100644
--- a/pkgs/by-name/ha/halo/package.nix
+++ b/pkgs/by-name/ha/halo/package.nix
@@ -7,10 +7,10 @@
 }:
 stdenv.mkDerivation rec {
   pname = "halo";
-  version = "2.17.1";
+  version = "2.17.2";
   src = fetchurl {
     url = "https://github.com/halo-dev/halo/releases/download/v${version}/${pname}-${version}.jar";
-    hash = "sha256-bleY8e7JYwOenSif+3GB5wNmTy3lSt2CAmyX50toeKc=";
+    hash = "sha256-8adbW13DsNCWzME7hRA5AUr/bOZVXl4LlVuIFZwpmXM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ha/handheld-daemon/package.nix b/pkgs/by-name/ha/handheld-daemon/package.nix
index a872057ff53d..a25f42e5ade6 100644
--- a/pkgs/by-name/ha/handheld-daemon/package.nix
+++ b/pkgs/by-name/ha/handheld-daemon/package.nix
@@ -1,5 +1,4 @@
 {
-  config,
   fetchFromGitHub,
   hidapi,
   kmod,
diff --git a/pkgs/by-name/ha/haunt/tests/001-test-version.nix b/pkgs/by-name/ha/haunt/tests/001-test-version.nix
index 726a7ac95713..026d580c1965 100644
--- a/pkgs/by-name/ha/haunt/tests/001-test-version.nix
+++ b/pkgs/by-name/ha/haunt/tests/001-test-version.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , haunt
 }:
 
diff --git a/pkgs/by-name/ha/havn/package.nix b/pkgs/by-name/ha/havn/package.nix
index 81f0f37190fe..ed78d69b6b0d 100644
--- a/pkgs/by-name/ha/havn/package.nix
+++ b/pkgs/by-name/ha/havn/package.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "havn";
-  version = "0.1.12";
+  version = "0.1.13";
 
   src = fetchFromGitHub {
     owner = "mrjackwills";
     repo = "havn";
     rev = "refs/tags/v${version}";
-    hash = "sha256-BCg572435CdQMOldm3Ao4D+sDxbXUlDxMWmxa+aqTY0=";
+    hash = "sha256-z6505lMqNQ0FpMMRJwpOFodELfDeoIjrjG58mrfSvTY=";
   };
 
-  cargoHash = "sha256-JaAlWiaOUoXSV6O4wmU7zCR5h5olO2zkB5WEGk2/ZdE=";
+  cargoHash = "sha256-RzfIu2apaFacSJz29UTaCKcC7Y81uxj1EerVyxZB50E=";
 
   checkFlags = [
     # Skip tests that require network access
diff --git a/pkgs/by-name/he/hextazy/package.nix b/pkgs/by-name/he/hextazy/package.nix
index d67f5cf25e66..52440b774bf1 100644
--- a/pkgs/by-name/he/hextazy/package.nix
+++ b/pkgs/by-name/he/hextazy/package.nix
@@ -1,27 +1,26 @@
 {
   lib,
-  stdenv,
   fetchFromGitHub,
   rustPlatform,
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "hextazy";
-  version = "0.2";
+  version = "0.4";
 
   src = fetchFromGitHub {
-    owner = "faelian";
+    owner = "0xfalafel";
     repo = "hextazy";
     rev = "${version}";
-    hash = "sha256-e1uoKMejdTz8KH7uFkZ9YCE1WTwaxCZjcxh4g2ermNY=";
+    hash = "sha256-5ZT6oXG3dWJ8vPX0oieWQsYJQYCTwtlb1B8kmGlLv0k=";
   };
 
-  cargoHash = "sha256-5Z+ptr1JmeiP4hK8k+M1d189I0X53/jRUEFwgWGK3xQ=";
+  cargoHash = "sha256-n1HvkWNbHU8UUlqsCnuKESKQznk1WTe6eQiUJjVVXYE=";
 
   meta = {
     description = "TUI hexeditor in Rust with colored bytes";
-    homepage = "https://github.com/faelian/hextazy";
-    changelog = "https://github.com/faelian/hextazy/releases/tags/${src.rev}";
+    homepage = "https://github.com/0xfalafel/hextazy";
+    changelog = "https://github.com/0xfalafel/hextazy/releases/tags/${src.rev}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ akechishiro ];
     mainProgram = "hextazy";
diff --git a/pkgs/by-name/hi/himalaya/package.nix b/pkgs/by-name/hi/himalaya/package.nix
index 607bb775f8ff..590791630669 100644
--- a/pkgs/by-name/hi/himalaya/package.nix
+++ b/pkgs/by-name/hi/himalaya/package.nix
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-NrWBg0sjaz/uLsNs8/T4MkUgHOUvAWRix1O5usKsw6o=";
   };
 
-  cargoSha256 = "YS8IamapvmdrOPptQh2Ef9Yold0IK1XIeGs0kDIQ5b8=";
+  cargoHash = "sha256-YS8IamapvmdrOPptQh2Ef9Yold0IK1XIeGs0kDIQ5b8=";
 
   NIX_LDFLAGS = lib.optionals stdenv.isDarwin [
     "-F${darwin.apple_sdk.frameworks.AppKit}/Library/Frameworks"
diff --git a/pkgs/by-name/ho/home-manager/package.nix b/pkgs/by-name/ho/home-manager/package.nix
index 36bba8ad2c59..36bb2f444b6d 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 = "0-unstable-2024-07-11";
+  version = "0-unstable-2024-07-24";
 
   src = fetchFromGitHub {
     name = "home-manager-source";
     owner = "nix-community";
     repo = "home-manager";
-    rev = "90ae324e2c56af10f20549ab72014804a3064c7f";
-    hash = "sha256-neWQ8eNtLTd+YMesb7WjKl1SVCbDyCm46LUgP/g/hdo=";
+    rev = "304a011325b7ac7b8c9950333cd215a7aa146b0e";
+    hash = "sha256-JH8N5uoqoVA6erV4O40VtKKHsnfmhvMGbxMNDLtim5o=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ht/htb-toolkit/package.nix b/pkgs/by-name/ht/htb-toolkit/package.nix
index 9cffed873290..dbbe025bf661 100644
--- a/pkgs/by-name/ht/htb-toolkit/package.nix
+++ b/pkgs/by-name/ht/htb-toolkit/package.nix
@@ -8,9 +8,7 @@
 , coreutils
 , gnome-keyring
 , libsecret
-, bash
 , openvpn
-, nerdfonts
 , gzip
 , killall
 }:
diff --git a/pkgs/by-name/ht/httm/package.nix b/pkgs/by-name/ht/httm/package.nix
new file mode 100644
index 000000000000..d8c023c533cb
--- /dev/null
+++ b/pkgs/by-name/ht/httm/package.nix
@@ -0,0 +1,49 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  installShellFiles,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "httm";
+  version = "0.40.4";
+
+  src = fetchFromGitHub {
+    owner = "kimono-koans";
+    repo = pname;
+    rev = version;
+    hash = "sha256-dWL27Fe8bU8/ikNSh0T3/67XBvFkxd71uvArbJRbqKA=";
+  };
+
+  cargoHash = "sha256-BAOFPsHjd5EaWhtzzUxzKvsBtO/kOB5mUo3nUlf7mlY=";
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postPatch = ''
+    chmod +x scripts/*.bash
+    patchShebangs scripts/*.bash
+  '';
+
+  postInstall = ''
+    installManPage httm.1
+
+    installShellCompletion --cmd httm \
+      --zsh scripts/httm-key-bindings.zsh
+
+    for script in scripts/*.bash; do
+      install -Dm755 "$script" "$out/bin/$(basename "$script" .bash)"
+    done
+
+    install -Dm644 README.md $out/share/doc/README.md
+  '';
+
+  meta = with lib; {
+    description = "Interactive, file-level Time Machine-like tool for ZFS/btrfs";
+    homepage = "https://github.com/kimono-koans/httm";
+    changelog = "https://github.com/kimono-koans/httm/releases/tag/${version}";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ wyndon ];
+    mainProgram = "httm";
+  };
+}
diff --git a/pkgs/by-name/hy/hyprlock/package.nix b/pkgs/by-name/hy/hyprlock/package.nix
index 36df8a7ceac5..ac691786cd1f 100644
--- a/pkgs/by-name/hy/hyprlock/package.nix
+++ b/pkgs/by-name/hy/hyprlock/package.nix
@@ -11,6 +11,7 @@
   pam,
   wayland,
   wayland-protocols,
+  wayland-scanner,
   cairo,
   file,
   libjpeg,
@@ -37,6 +38,7 @@ stdenv.mkDerivation (finalAttrs: {
   nativeBuildInputs = [
     cmake
     pkg-config
+    wayland-scanner
   ];
 
   buildInputs = [
diff --git a/pkgs/by-name/im/immich-go/package.nix b/pkgs/by-name/im/immich-go/package.nix
index a133e498ca12..f275c700386a 100644
--- a/pkgs/by-name/im/immich-go/package.nix
+++ b/pkgs/by-name/im/immich-go/package.nix
@@ -1,13 +1,13 @@
 { lib, buildGoModule, fetchFromGitHub, nix-update-script, testers, immich-go }:
 buildGoModule rec {
   pname = "immich-go";
-  version = "0.20";
+  version = "0.20.1";
 
   src = fetchFromGitHub {
     owner = "simulot";
     repo = "immich-go";
     rev = "${version}";
-    hash = "sha256-zQ3uH9i6doF343UGRnbRWxdiHNvEMyVrKOLpBQQhT8E=";
+    hash = "sha256-9pIQ3xRskPZtwjCJ7MG8IaVsVkqM6s3Jxy4qG842/h8=";
 
     # Inspired by: https://github.com/NixOS/nixpkgs/blob/f2d7a289c5a5ece8521dd082b81ac7e4a57c2c5c/pkgs/applications/graphics/pdfcpu/default.nix#L20-L32
     # The intention here is to write the information into files in the `src`'s
diff --git a/pkgs/by-name/im/imsprog/package.nix b/pkgs/by-name/im/imsprog/package.nix
index b356e7bdd5df..a8042eaef1fa 100644
--- a/pkgs/by-name/im/imsprog/package.nix
+++ b/pkgs/by-name/im/imsprog/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "imsprog";
-  version = "1.4.2";
+  version = "1.4.3";
 
   src = fetchFromGitHub {
     owner = "bigbigmdm";
     repo = "IMSProg";
     rev = "refs/tags/v${finalAttrs.version}";
-    hash = "sha256-9ALiYTUnrdoRHfcyuz4nPzXFHL7pPkFUTBL2/v1atz0=";
+    hash = "sha256-FAvGGxw7qDuucAbyaq9gDhMvHL9mJCQApRzzQ7Kh0c8=";
   };
 
   strictDeps = true;
diff --git a/pkgs/by-name/in/ingress2gateway/package.nix b/pkgs/by-name/in/ingress2gateway/package.nix
index 90e5a465921c..da3550ac8df6 100644
--- a/pkgs/by-name/in/ingress2gateway/package.nix
+++ b/pkgs/by-name/in/ingress2gateway/package.nix
@@ -19,7 +19,7 @@ buildGoModule rec {
   ldflags = [ "-s" "-w" ];
 
   meta = with lib; {
-    description = "Convert Ingress resources to Gateway API resources ";
+    description = "Convert Ingress resources to Gateway API resources";
     homepage = "https://github.com/kubernetes-sigs/ingress2gateway";
     license = licenses.asl20;
     maintainers = with maintainers; [ arikgrahl ];
diff --git a/pkgs/by-name/io/ios-webkit-debug-proxy/package.nix b/pkgs/by-name/io/ios-webkit-debug-proxy/package.nix
index 13ecbb058c06..8ec3a3252907 100644
--- a/pkgs/by-name/io/ios-webkit-debug-proxy/package.nix
+++ b/pkgs/by-name/io/ios-webkit-debug-proxy/package.nix
@@ -2,7 +2,6 @@
   lib,
   stdenv,
   fetchFromGitHub,
-  fetchpatch,
 
   autoconf,
   automake,
diff --git a/pkgs/by-name/is/isisdl/package.nix b/pkgs/by-name/is/isisdl/package.nix
new file mode 100644
index 000000000000..fc5286e99cad
--- /dev/null
+++ b/pkgs/by-name/is/isisdl/package.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  fetchPypi,
+  python3Packages,
+  util-linux,
+}:
+python3Packages.buildPythonApplication rec {
+  pname = "isisdl";
+  version = "1.3.20";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-s0vGCJVSa6hf6/sIhzmaxpziP4izoRwcZfxvm//5inY=";
+  };
+
+  pyproject = true;
+
+  build-system = with python3Packages; [ setuptools ];
+
+  dependencies = with python3Packages; [
+    cryptography
+    requests
+    pyyaml
+    packaging
+    colorama
+    pyinotify
+    distro
+    psutil
+  ];
+
+  pythonRelaxDeps = [
+    "cryptography"
+    "requests"
+    "packaging"
+    "distro"
+    "psutil"
+  ];
+
+  buildInputs = [
+    util-linux # for runtime dependency `lsblk`
+  ];
+
+  # disable tests since they require valid login credentials
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/Emily3403/isisdl";
+    description = "Downloader for ISIS of TU-Berlin";
+    longDescription = ''
+      A downloading utility for ISIS of TU-Berlin.
+      Download all your files and videos from ISIS.
+    '';
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ bchmnn ];
+    mainProgram = "isisdl";
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/it/itools/package.nix b/pkgs/by-name/it/itools/package.nix
index 85cede0eb900..853efdaa6683 100644
--- a/pkgs/by-name/it/itools/package.nix
+++ b/pkgs/by-name/it/itools/package.nix
@@ -2,7 +2,6 @@
 , stdenv
 , fetchFromGitHub
 , autoreconfHook
-, pkgs
 , pkg-config
 , perl
 , libitl
diff --git a/pkgs/by-name/ja/jansson/package.nix b/pkgs/by-name/ja/jansson/package.nix
new file mode 100644
index 000000000000..bb0035b97669
--- /dev/null
+++ b/pkgs/by-name/ja/jansson/package.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  nix-update-script,
+  testers,
+  validatePkgConfig,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "jansson";
+  version = "2.14";
+
+  outputs = [
+    "dev"
+    "out"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "akheron";
+    repo = "jansson";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-FQgy2+g3AyRVJeniqPQj0KNeHgPdza2pmEIXqSyYry4=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    validatePkgConfig
+  ];
+
+  cmakeFlags = [
+    # networkmanager relies on libjansson.so:
+    #   https://github.com/NixOS/nixpkgs/pull/176302#issuecomment-1150239453
+    "-DJANSSON_BUILD_SHARED_LIBS=${if stdenv.hostPlatform.isStatic then "OFF" else "ON"}"
+  ];
+
+  passthru = {
+    tests.pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "C library for encoding, decoding and manipulating JSON data";
+    homepage = "https://github.com/akheron/jansson";
+    changelog = "https://github.com/akheron/jansson/raw/${finalAttrs.src.rev}/CHANGES";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ getchoo ];
+    platforms = lib.platforms.all;
+    pkgConfigModules = [ "jansson" ];
+  };
+})
diff --git a/pkgs/by-name/jn/jnr-posix/package.nix b/pkgs/by-name/jn/jnr-posix/package.nix
index 7cc3f67e083a..8ae46e7f5dc8 100644
--- a/pkgs/by-name/jn/jnr-posix/package.nix
+++ b/pkgs/by-name/jn/jnr-posix/package.nix
@@ -1,9 +1,7 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, dpkg
 , jdk
-, makeWrapper
 , maven
 , which
 }:
diff --git a/pkgs/by-name/ka/kanidm/package.nix b/pkgs/by-name/ka/kanidm/package.nix
index de9694227fcd..855bd8a12526 100644
--- a/pkgs/by-name/ka/kanidm/package.nix
+++ b/pkgs/by-name/ka/kanidm/package.nix
@@ -71,6 +71,9 @@ rustPlatform.buildRustPackage rec {
     cp -r server/web_ui/pkg $out/ui
   '';
 
+  # Otherwise build breaks on some unused code
+  env.RUSTFLAGS = "-A dead_code";
+
   # Not sure what pathological case it hits when compiling tests with LTO,
   # but disabling it takes the total `cargo check` time from 40 minutes to
   # around 5 on a 16-core machine.
diff --git a/pkgs/by-name/ka/karla/package.nix b/pkgs/by-name/ka/karla/package.nix
new file mode 100644
index 000000000000..f73b2060f543
--- /dev/null
+++ b/pkgs/by-name/ka/karla/package.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "karla";
+  version = "2.004";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "karla";
+    rev = "69b25f663101efb4113dd7ed416c120dd2dce56a";
+    hash = "sha256-9zf2gfhSn8Aly8a2CINsNXZPRfVcaxFE9In4Qqx3Fn4=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/truetype fonts/ttf/*.ttf
+    install -Dm444 -t $out/share/fonts/variable fonts/variable/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Outstanding grotesque sans serif typeface family";
+    longDescription = ''
+      Karla is an outstanding grotesque sans serif typeface
+      family created by Jonathan Pinhorn (a graduate of the
+      MA in Typeface Design at the University of Reading),
+      released through Google Webfonts in 2012.
+    '';
+    homepage = "https://github.com/googlefonts/karla";
+    license = lib.licenses.ofl;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ mimvoid ];
+  };
+}
diff --git a/pkgs/by-name/kc/kcl/package.nix b/pkgs/by-name/kc/kcl/package.nix
index 6c02da1f986f..af6933a9cd47 100644
--- a/pkgs/by-name/kc/kcl/package.nix
+++ b/pkgs/by-name/kc/kcl/package.nix
@@ -1,24 +1,29 @@
 { lib
+, stdenv
 , buildGoModule
 , fetchFromGitHub
 , kclvm_cli
 , kclvm
 , makeWrapper
 , installShellFiles
+, darwin
 ,
 }:
 buildGoModule rec {
   pname = "kcl";
-  version = "0.8.9";
+  version = "0.9.3";
 
   src = fetchFromGitHub {
     owner = "kcl-lang";
     repo = "cli";
     rev = "v${version}";
-    hash = "sha256-slU3n7YCV5VfvXArzlcITb9epdu/gyXlAWq9KLjGdJA=";
+    hash = "sha256-QUVTRlzG8hT+iQx5dSycbRDAyeknjwGOWynCRw3oxlo=";
   };
 
-  vendorHash = "sha256-Xv8Tfq9Kb1xGFCWZQwBFDX9xZW9j99td/DUb7jBtkpE=";
+  vendorHash = "sha256-AP1MOlnoTnD7luNR+1QtAdMiJL8tEEwJocT+9wBRgAo=";
+
+  # By default, libs and bins are stripped. KCL will crash on darwin if they are.
+  dontStrip = stdenv.isDarwin;
 
   ldflags = [
     "-w -s"
@@ -26,19 +31,27 @@ buildGoModule rec {
   ];
 
   nativeBuildInputs = [ makeWrapper installShellFiles ];
-  buildInputs = [ kclvm kclvm_cli ];
+
+  buildInputs = [ kclvm kclvm_cli ] ++ (
+    lib.optional stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.Security
+      darwin.apple_sdk.frameworks.CoreServices
+      darwin.apple_sdk.frameworks.SystemConfiguration
+    ]
+  );
 
   subPackages = [ "cmd/kcl" ];
 
   # env vars https://github.com/kcl-lang/kcl-go/blob/main/pkg/env/env.go#L29
   postFixup = ''
      wrapProgram $out/bin/kcl \
-    --set PATH ${lib.makeBinPath [kclvm_cli]} \
-    --set KCL_LIB_HOME ${lib.makeLibraryPath [kclvm]} \
-    --set KCL_GO_DISABLE_INSTALL_ARTIFACT false \
+    --prefix PATH : "${lib.makeBinPath [kclvm kclvm_cli]}" \
+    --prefix KCL_LIB_HOME : "${lib.makeLibraryPath [kclvm]}" \
+    --prefix KCL_GO_DISABLE_INSTALL_ARTIFACT : false
   '';
 
   postInstall = ''
+    export HOME=$(mktemp -d)
     installShellCompletion --cmd kcl \
       --bash <($out/bin/kcl completion bash) \
       --fish <($out/bin/kcl completion fish) \
@@ -49,7 +62,7 @@ buildGoModule rec {
     description = "A command line interface for KCL programming language";
     homepage = "https://github.com/kcl-lang/cli";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ selfuryon peefy ];
     mainProgram = "kcl";
   };
diff --git a/pkgs/by-name/kc/kclvm/Cargo.lock b/pkgs/by-name/kc/kclvm/Cargo.lock
index 083baa87aaaa..37ec7f1b8198 100644
--- a/pkgs/by-name/kc/kclvm/Cargo.lock
+++ b/pkgs/by-name/kc/kclvm/Cargo.lock
@@ -79,47 +79,48 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.6.13"
+version = "0.6.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb"
+checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b"
 dependencies = [
  "anstyle",
  "anstyle-parse",
  "anstyle-query",
  "anstyle-wincon",
  "colorchoice",
+ "is_terminal_polyfill",
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle"
-version = "1.0.6"
+version = "1.0.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
+checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.3"
+version = "0.2.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle-query"
-version = "1.0.2"
+version = "1.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5"
 dependencies = [
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.2"
+version = "3.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19"
 dependencies = [
  "anstyle",
  "windows-sys 0.52.0",
@@ -127,9 +128,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.81"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 dependencies = [
  "backtrace",
 ]
@@ -159,7 +160,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -175,9 +176,9 @@ dependencies = [
 
 [[package]]
 name = "autocfg"
-version = "1.2.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
 
 [[package]]
 name = "backtrace"
@@ -207,6 +208,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 
 [[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
 name = "bit-set"
 version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -324,9 +331,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
 
 [[package]]
 name = "cc"
-version = "1.0.92"
+version = "1.0.98"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41"
+checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f"
 
 [[package]]
 name = "cfg-if"
@@ -342,9 +349,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chrono"
-version = "0.4.37"
+version = "0.4.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
@@ -352,7 +359,7 @@ dependencies = [
  "num-traits",
  "serde",
  "wasm-bindgen",
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -443,9 +450,9 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
 
 [[package]]
 name = "colorchoice"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422"
 
 [[package]]
 name = "compiler_base_error"
@@ -505,9 +512,9 @@ dependencies = [
 
 [[package]]
 name = "const_fn"
-version = "0.4.9"
+version = "0.4.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935"
+checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d"
 
 [[package]]
 name = "core-foundation-sys"
@@ -525,6 +532,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if 1.0.0",
+]
+
+[[package]]
 name = "criterion"
 version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -598,9 +614,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.12"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -626,9 +642,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
 
 [[package]]
 name = "crunchy"
@@ -674,10 +690,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
 dependencies = [
  "cfg-if 1.0.0",
- "hashbrown 0.14.3",
+ "hashbrown 0.14.5",
  "lock_api",
  "once_cell",
- "parking_lot_core 0.9.9",
+ "parking_lot_core 0.9.10",
 ]
 
 [[package]]
@@ -721,6 +737,7 @@ checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
  "block-buffer 0.10.4",
  "crypto-common",
+ "subtle",
 ]
 
 [[package]]
@@ -758,26 +775,26 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "dissimilar"
-version = "1.0.7"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86e3bdc80eee6e16b2b6b0f87fbc98c04bee3455e35174c0de1a125d0688c632"
+checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d"
 
 [[package]]
 name = "either"
-version = "1.10.0"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b"
 
 [[package]]
 name = "ena"
-version = "0.14.2"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1"
+checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5"
 dependencies = [
  "log",
 ]
@@ -828,18 +845,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "erased-serde"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b73807008a3c7f171cc40312f37d95ef0396e048b5848d775f54b1a4dd4a0d3"
+checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d"
 dependencies = [
  "serde",
+ "typeid",
 ]
 
 [[package]]
 name = "errno"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -867,9 +885,9 @@ dependencies = [
 
 [[package]]
 name = "fastrand"
-version = "2.0.2"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
 
 [[package]]
 name = "filetime"
@@ -890,10 +908,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
+name = "flate2"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
 name = "fluent"
-version = "0.16.0"
+version = "0.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7"
+checksum = "bb74634707bebd0ce645a981148e8fb8c7bccd4c33c652aeffd28bf2f96d555a"
 dependencies = [
  "fluent-bundle",
  "unic-langid",
@@ -901,9 +929,9 @@ dependencies = [
 
 [[package]]
 name = "fluent-bundle"
-version = "0.15.2"
+version = "0.15.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd"
+checksum = "7fe0a21ee80050c678013f82edf4b705fe2f26f1f9877593d13198612503f493"
 dependencies = [
  "fluent-langneg",
  "fluent-syntax",
@@ -926,14 +954,20 @@ dependencies = [
 
 [[package]]
 name = "fluent-syntax"
-version = "0.11.0"
+version = "0.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78"
+checksum = "2a530c4694a6a8d528794ee9bbd8ba0122e779629ac908d15ad5a7ae7763a33d"
 dependencies = [
  "thiserror",
 ]
 
 [[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
 name = "form_urlencoded"
 version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1023,7 +1057,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -1086,9 +1120,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.14"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
@@ -1145,9 +1179,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
 
 [[package]]
 name = "hashbrown"
-version = "0.14.3"
+version = "0.14.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
 
 [[package]]
 name = "heck"
@@ -1180,6 +1214,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
+name = "hmac"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
+dependencies = [
+ "digest 0.10.7",
+]
+
+[[package]]
 name = "home"
 version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1189,12 +1232,117 @@ dependencies = [
 ]
 
 [[package]]
+name = "http"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-auth"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "643c9bbf6a4ea8a656d6b4cd53d34f79e3f841ad5203c1a55fb7d761923bc255"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
 name = "humantime"
 version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
 
 [[package]]
+name = "hyper"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c"
+dependencies = [
+ "futures-util",
+ "http",
+ "hyper",
+ "hyper-util",
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d8d52be92d09acc2e01dddb7fde3ad983fc6489c7db4837e605bc3fca4cb63e"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
 name = "iana-time-zone"
 version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1259,7 +1407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.3",
+ "hashbrown 0.14.5",
 ]
 
 [[package]]
@@ -1278,7 +1426,7 @@ dependencies = [
  "libc",
  "llvm-sys",
  "once_cell",
- "parking_lot 0.12.1",
+ "parking_lot 0.12.3",
 ]
 
 [[package]]
@@ -1288,7 +1436,7 @@ source = "git+https://github.com/TheDan64/inkwell?branch=master#4030f764f1c889f3
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -1313,9 +1461,9 @@ dependencies = [
 
 [[package]]
 name = "insta"
-version = "1.38.0"
+version = "1.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3eab73f58e59ca6526037208f0e98851159ec1633cf17b6cd2e1f2c3fd5d53cc"
+checksum = "810ae6042d48e2c9e9215043563a58a80b877bc863228a74cf10c49d4620a6f5"
 dependencies = [
  "console",
  "lazy_static",
@@ -1325,18 +1473,18 @@ dependencies = [
 
 [[package]]
 name = "instant"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
 dependencies = [
  "cfg-if 1.0.0",
 ]
 
 [[package]]
 name = "intl-memoizer"
-version = "0.5.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f"
+checksum = "fe22e020fce238ae18a6d5d8c502ee76a52a6e880d99477657e6acc30ec57bda"
 dependencies = [
  "type-map",
  "unic-langid",
@@ -1358,6 +1506,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767"
 
 [[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800"
+
+[[package]]
 name = "itertools"
 version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1374,9 +1534,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "jobserver"
-version = "0.1.28"
+version = "0.1.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
+checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e"
 dependencies = [
  "libc",
 ]
@@ -1431,12 +1591,27 @@ dependencies = [
  "jsonrpc-core",
  "log",
  "tokio",
- "tokio-util",
+ "tokio-util 0.6.10",
+]
+
+[[package]]
+name = "jwt"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6204285f77fe7d9784db3fdc449ecce1a0114927a51d5a41c4c7a292011c015f"
+dependencies = [
+ "base64 0.13.1",
+ "crypto-common",
+ "digest 0.10.7",
+ "hmac",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
 ]
 
 [[package]]
 name = "kcl-language-server"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "chrono",
@@ -1447,6 +1622,7 @@ dependencies = [
  "env_logger",
  "im-rc",
  "indexmap 1.9.3",
+ "insta",
  "kclvm-ast",
  "kclvm-config",
  "kclvm-driver",
@@ -1462,7 +1638,7 @@ dependencies = [
  "lsp-server",
  "lsp-types",
  "maplit",
- "parking_lot 0.12.1",
+ "parking_lot 0.12.3",
  "proc_macro_crate",
  "ra_ap_vfs",
  "ra_ap_vfs-notify",
@@ -1479,7 +1655,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "kclvm-api",
  "kclvm-ast",
@@ -1501,7 +1677,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-api"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "criterion 0.4.0",
@@ -1522,6 +1698,7 @@ dependencies = [
  "kclvm-sema",
  "kclvm-tools",
  "kclvm-utils",
+ "kclvm-version",
  "maplit",
  "once_cell",
  "prost",
@@ -1540,7 +1717,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-ast"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "compiler_base_span",
  "kclvm-error",
@@ -1555,7 +1732,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-ast-pretty"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "compiler_base_macros",
  "compiler_base_session",
@@ -1569,7 +1746,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-cmd"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "clap 4.5.4",
@@ -1587,7 +1764,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-compiler"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "ahash",
  "bit-set",
@@ -1607,7 +1784,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-config"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "ahash",
  "anyhow",
@@ -1630,24 +1807,31 @@ dependencies = [
 
 [[package]]
 name = "kclvm-driver"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
+ "flate2",
  "glob",
+ "indexmap 2.2.6",
  "kclvm-ast",
  "kclvm-config",
  "kclvm-parser",
  "kclvm-runtime",
  "kclvm-utils",
  "notify 6.1.1",
+ "oci-distribution",
+ "once_cell",
+ "parking_lot 0.12.3",
  "serde",
  "serde_json",
+ "tar",
+ "tokio",
  "walkdir",
 ]
 
 [[package]]
 name = "kclvm-error"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "annotate-snippets",
  "anyhow",
@@ -1659,14 +1843,17 @@ dependencies = [
  "indexmap 1.9.3",
  "kclvm-runtime",
  "kclvm-span",
+ "kclvm-utils",
+ "serde",
  "serde_json",
  "termize",
+ "thiserror",
  "tracing",
 ]
 
 [[package]]
 name = "kclvm-evaluator"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "generational-arena",
@@ -1678,11 +1865,12 @@ dependencies = [
  "kclvm-parser",
  "kclvm-runtime",
  "kclvm-sema",
+ "scopeguard",
 ]
 
 [[package]]
 name = "kclvm-lexer"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "expect-test",
  "kclvm-error",
@@ -1692,7 +1880,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-loader"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "indexmap 1.9.3",
@@ -1708,7 +1896,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-macros"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1718,7 +1906,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-parser"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "bstr",
@@ -1750,11 +1938,12 @@ dependencies = [
 
 [[package]]
 name = "kclvm-query"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "compiler_base_macros",
  "compiler_base_session",
+ "fancy-regex",
  "indexmap 1.9.3",
  "kclvm-ast",
  "kclvm-ast-pretty",
@@ -1763,11 +1952,13 @@ dependencies = [
  "kclvm-sema",
  "maplit",
  "pretty_assertions",
+ "serde",
+ "serde_json",
 ]
 
 [[package]]
 name = "kclvm-runner"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "cc",
@@ -1802,10 +1993,10 @@ dependencies = [
 
 [[package]]
 name = "kclvm-runtime"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "ahash",
- "base64",
+ "base64 0.13.1",
  "bstr",
  "chrono",
  "fancy-regex",
@@ -1830,11 +2021,12 @@ dependencies = [
  "unic-ucd-category",
  "unicode-casing",
  "uuid",
+ "walkdir",
 ]
 
 [[package]]
 name = "kclvm-sema"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "ahash",
  "anyhow",
@@ -1868,7 +2060,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-span"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "compiler_base_span",
  "kclvm-macros",
@@ -1878,7 +2070,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-tools"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "compiler_base_session",
@@ -1911,7 +2103,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-utils"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "anyhow",
  "fslock",
@@ -1920,7 +2112,7 @@ dependencies = [
 
 [[package]]
 name = "kclvm-version"
-version = "0.8.7"
+version = "0.9.3"
 dependencies = [
  "vergen",
 ]
@@ -1962,9 +2154,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.153"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "libloading"
@@ -1997,9 +2189,9 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
 
 [[package]]
 name = "llvm-sys"
@@ -2027,9 +2219,9 @@ dependencies = [
 
 [[package]]
 name = "lock_api"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -2037,15 +2229,15 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.21"
+version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
 [[package]]
 name = "lsp-server"
-version = "0.7.0"
+version = "0.7.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68a9b4c78d1c3f35c5864c90e9633377b5f374a4a4983ac64c30b8ae898f9305"
+checksum = "248f65b78f6db5d8e1b1604b4098a28b43d21a8eb1deeca22b1c421b276c7095"
 dependencies = [
  "crossbeam-channel",
  "log",
@@ -2121,10 +2313,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
 name = "miniz_oxide"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
+checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
 dependencies = [
  "adler",
 ]
@@ -2195,11 +2393,10 @@ dependencies = [
 
 [[package]]
 name = "num-bigint"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
+checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7"
 dependencies = [
- "autocfg",
  "num-integer",
  "num-traits",
 ]
@@ -2221,9 +2418,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
 dependencies = [
  "autocfg",
 ]
@@ -2257,6 +2454,42 @@ dependencies = [
 ]
 
 [[package]]
+name = "oci-distribution"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b95a2c51531af0cb93761f66094044ca6ea879320bccd35ab747ff3fcab3f422"
+dependencies = [
+ "bytes",
+ "chrono",
+ "futures-util",
+ "http",
+ "http-auth",
+ "jwt",
+ "lazy_static",
+ "olpc-cjson",
+ "regex",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "sha2 0.10.8",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "unicase",
+]
+
+[[package]]
+name = "olpc-cjson"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d637c9c15b639ccff597da8f4fa968300651ad2f1e968aefc3b4927a6fb2027a"
+dependencies = [
+ "serde",
+ "serde_json",
+ "unicode-normalization",
+]
+
+[[package]]
 name = "once_cell"
 version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2305,12 +2538,12 @@ dependencies = [
 
 [[package]]
 name = "parking_lot"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
 dependencies = [
  "lock_api",
- "parking_lot_core 0.9.9",
+ "parking_lot_core 0.9.10",
 ]
 
 [[package]]
@@ -2329,15 +2562,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.9"
+version = "0.9.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
 dependencies = [
  "cfg-if 1.0.0",
  "libc",
- "redox_syscall 0.4.1",
+ "redox_syscall 0.5.1",
  "smallvec",
- "windows-targets 0.48.5",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -2354,9 +2587,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pest"
-version = "2.7.9"
+version = "2.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "311fb059dee1a7b802f036316d790138c613a4e8b180c822e3925a662e9f0c95"
+checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8"
 dependencies = [
  "memchr",
  "thiserror",
@@ -2365,9 +2598,9 @@ dependencies = [
 
 [[package]]
 name = "pest_derive"
-version = "2.7.9"
+version = "2.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f73541b156d32197eecda1a4014d7f868fd2bcb3c550d5386087cfba442bf69c"
+checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459"
 dependencies = [
  "pest",
  "pest_generator",
@@ -2375,22 +2608,22 @@ dependencies = [
 
 [[package]]
 name = "pest_generator"
-version = "2.7.9"
+version = "2.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c35eeed0a3fab112f75165fdc026b3913f4183133f19b49be773ac9ea966e8bd"
+checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687"
 dependencies = [
  "pest",
  "pest_meta",
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
 name = "pest_meta"
-version = "2.7.9"
+version = "2.7.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2adbf29bb9776f28caece835398781ab24435585fe0d4dc1374a61db5accedca"
+checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd"
 dependencies = [
  "once_cell",
  "pest",
@@ -2399,9 +2632,9 @@ dependencies = [
 
 [[package]]
 name = "petgraph"
-version = "0.6.4"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db"
 dependencies = [
  "fixedbitset",
  "indexmap 2.2.6",
@@ -2452,6 +2685,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "pin-project"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.66",
+]
+
+[[package]]
 name = "pin-project-lite"
 version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2465,9 +2718,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
 [[package]]
 name = "plotters"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
+checksum = "a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3"
 dependencies = [
  "num-traits",
  "plotters-backend",
@@ -2478,15 +2731,15 @@ dependencies = [
 
 [[package]]
 name = "plotters-backend"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
+checksum = "414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7"
 
 [[package]]
 name = "plotters-svg"
-version = "0.3.5"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
+checksum = "81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705"
 dependencies = [
  "plotters-backend",
 ]
@@ -2531,9 +2784,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.79"
+version = "1.0.84"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e"
+checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6"
 dependencies = [
  "unicode-ident",
 ]
@@ -2544,7 +2797,7 @@ version = "0.1.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -2644,59 +2897,58 @@ dependencies = [
 
 [[package]]
 name = "protoc-bin-vendored"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "005ca8623e5633e298ad1f917d8be0a44bcf406bf3cde3b80e63003e49a3f27d"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 dependencies = [
  "protoc-bin-vendored-linux-aarch_64",
  "protoc-bin-vendored-linux-ppcle_64",
  "protoc-bin-vendored-linux-x86_32",
  "protoc-bin-vendored-linux-x86_64",
+ "protoc-bin-vendored-macos-aarch_64",
  "protoc-bin-vendored-macos-x86_64",
  "protoc-bin-vendored-win32",
 ]
 
 [[package]]
 name = "protoc-bin-vendored-linux-aarch_64"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fb9fc9cce84c8694b6ea01cc6296617b288b703719b725b8c9c65f7c5874435"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "protoc-bin-vendored-linux-ppcle_64"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d2a07dcf7173a04d49974930ccbfb7fd4d74df30ecfc8762cf2f895a094516"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "protoc-bin-vendored-linux-x86_32"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54fef0b04fcacba64d1d80eed74a20356d96847da8497a59b0a0a436c9165b0"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "protoc-bin-vendored-linux-x86_64"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8782f2ce7d43a9a5c74ea4936f001e9e8442205c244f7a3d4286bd4c37bc924"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
+
+[[package]]
+name = "protoc-bin-vendored-macos-aarch_64"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "protoc-bin-vendored-macos-x86_64"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5de656c7ee83f08e0ae5b81792ccfdc1d04e7876b1d9a38e6876a9e09e02537"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "protoc-bin-vendored-win32"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9653c3ed92974e34c5a6e0a510864dab979760481714c172e0a34e437cb98804"
+version = "3.1.0"
+source = "git+https://github.com/andermatt64/rust-protoc-bin-vendored#b6274dad0ed303b6dd27389722744947419649e5"
 
 [[package]]
 name = "quote"
-version = "1.0.35"
+version = "1.0.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
 dependencies = [
  "proc-macro2",
 ]
@@ -2825,6 +3077,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "redox_syscall"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e"
+dependencies = [
+ "bitflags 2.5.0",
+]
+
+[[package]]
 name = "redox_users"
 version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2871,12 +3132,70 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
 
 [[package]]
+name = "reqwest"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-rustls",
+ "hyper-util",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls",
+ "rustls-pemfile",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tokio-rustls",
+ "tokio-util 0.7.11",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+ "webpki-roots",
+ "winreg",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
+dependencies = [
+ "cc",
+ "cfg-if 1.0.0",
+ "getrandom",
+ "libc",
+ "spin",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
 name = "ron"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a"
 dependencies = [
- "base64",
+ "base64 0.13.1",
  "bitflags 1.3.2",
  "serde",
 ]
@@ -2893,9 +3212,9 @@ dependencies = [
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.23"
+version = "0.1.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
 
 [[package]]
 name = "rustc-hash"
@@ -2962,7 +3281,7 @@ dependencies = [
  "jobserver",
  "libc",
  "memmap2",
- "parking_lot 0.12.1",
+ "parking_lot 0.12.3",
  "rustc-hash",
  "rustc-rayon 0.3.2",
  "rustc-rayon-core 0.3.2",
@@ -3022,14 +3341,14 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
 dependencies = [
- "semver 1.0.22",
+ "semver 1.0.23",
 ]
 
 [[package]]
 name = "rustix"
-version = "0.38.32"
+version = "0.38.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
 dependencies = [
  "bitflags 2.5.0",
  "errno",
@@ -3039,16 +3358,57 @@ dependencies = [
 ]
 
 [[package]]
+name = "rustls"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432"
+dependencies = [
+ "log",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d"
+dependencies = [
+ "base64 0.22.1",
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d"
+
+[[package]]
+name = "rustls-webpki"
+version = "0.102.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
 name = "rustversion"
-version = "1.0.15"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47"
+checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
 
 [[package]]
 name = "ryu"
-version = "1.0.17"
+version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
 [[package]]
 name = "salsa"
@@ -3106,14 +3466,14 @@ version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e14e4d63b804dc0c7ec4a1e52bcb63f02c7ac94476755aa579edac21e01f915d"
 dependencies = [
- "self_cell 1.0.3",
+ "self_cell 1.0.4",
 ]
 
 [[package]]
 name = "self_cell"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58bf37232d3bb9a2c4e641ca2a11d83b5062066f88df7fed36c28772046d65ba"
+checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a"
 
 [[package]]
 name = "semver"
@@ -3135,9 +3495,9 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.22"
+version = "1.0.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
 
 [[package]]
 name = "semver-parser"
@@ -3156,9 +3516,9 @@ dependencies = [
 
 [[package]]
 name = "serde"
-version = "1.0.197"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
 dependencies = [
  "serde_derive",
 ]
@@ -3175,13 +3535,13 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.197"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3203,7 +3563,19 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
 ]
 
 [[package]]
@@ -3318,15 +3690,21 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
 
 [[package]]
 name = "socket2"
-version = "0.5.6"
+version = "0.5.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871"
+checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
 name = "stable_deref_trait"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3409,6 +3787,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
 name = "suggestions"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3430,9 +3814,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.58"
+version = "2.0.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687"
+checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3440,6 +3824,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
 name = "synstructure"
 version = "0.12.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3452,6 +3842,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "tar"
+version = "0.4.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
+[[package]]
 name = "tempfile"
 version = "3.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3499,22 +3900,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
 
 [[package]]
 name = "thiserror"
-version = "1.0.58"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.58"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3553,9 +3954,9 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.34"
+version = "0.3.36"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
+checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
 dependencies = [
  "deranged",
  "itoa",
@@ -3565,7 +3966,7 @@ dependencies = [
  "powerfmt",
  "serde",
  "time-core",
- "time-macros 0.2.17",
+ "time-macros 0.2.18",
 ]
 
 [[package]]
@@ -3586,9 +3987,9 @@ dependencies = [
 
 [[package]]
 name = "time-macros"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774"
+checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
 dependencies = [
  "num-conv",
  "time-core",
@@ -3652,7 +4053,7 @@ dependencies = [
  "libc",
  "mio",
  "num_cpus",
- "parking_lot 0.12.1",
+ "parking_lot 0.12.3",
  "pin-project-lite",
  "signal-hook-registry",
  "socket2",
@@ -3668,7 +4069,18 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f"
+dependencies = [
+ "rustls",
+ "rustls-pki-types",
+ "tokio",
 ]
 
 [[package]]
@@ -3710,6 +4122,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "tokio-util"
+version = "0.7.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
 name = "toml"
 version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3719,11 +4144,39 @@ dependencies = [
 ]
 
 [[package]]
+name = "tower"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project",
+ "pin-project-lite",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+
+[[package]]
+name = "tower-service"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+
+[[package]]
 name = "tracing"
 version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
+ "log",
  "pin-project-lite",
  "tracing-attributes",
  "tracing-core",
@@ -3737,7 +4190,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3750,15 +4203,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
 name = "type-map"
-version = "0.4.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46"
+checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f"
 dependencies = [
  "rustc-hash",
 ]
 
 [[package]]
+name = "typeid"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "059d83cc991e7a42fc37bd50941885db0888e34209f8cfd9aab07ddec03bc9cf"
+
+[[package]]
 name = "typenum"
 version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3785,7 +4250,7 @@ checksum = "ac73887f47b9312552aa90ef477927ff014d63d1920ca8037c6c1951eab64bb1"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
 ]
 
 [[package]]
@@ -3828,9 +4293,9 @@ dependencies = [
 
 [[package]]
 name = "unic-langid"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "238722e6d794ed130f91f4ea33e01fcff4f188d92337a21297892521c72df516"
+checksum = "23dd9d1e72a73b25e07123a80776aae3e7b0ec461ef94f9151eed6ec88005a44"
 dependencies = [
  "unic-langid-impl",
  "unic-langid-macros",
@@ -3838,18 +4303,18 @@ dependencies = [
 
 [[package]]
 name = "unic-langid-impl"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bd55a2063fdea4ef1f8633243a7b0524cbeef1905ae04c31a1c9b9775c55bc6"
+checksum = "0a5422c1f65949306c99240b81de9f3f15929f5a8bfe05bb44b034cc8bf593e5"
 dependencies = [
  "tinystr",
 ]
 
 [[package]]
 name = "unic-langid-macros"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c854cefb82ff2816410ce606acbad1b3af065140907b29be9229040752b83ec"
+checksum = "0da1cd2c042d3c7569a1008806b02039e7a4a2bdf8f8e96bd3c792434a0e275e"
 dependencies = [
  "proc-macro-hack",
  "tinystr",
@@ -3859,13 +4324,13 @@ dependencies = [
 
 [[package]]
 name = "unic-langid-macros-impl"
-version = "0.9.4"
+version = "0.9.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fea2a4c80deb4fb3ca51f66b5e2dd91e3642bbce52234bcf22e41668281208e4"
+checksum = "1ed7f4237ba393424195053097c1516bd4590dc82b84f2f97c5c69e12704555b"
 dependencies = [
  "proc-macro-hack",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
  "unic-langid-impl",
 ]
 
@@ -3902,6 +4367,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "unicase"
+version = "2.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89"
+dependencies = [
+ "version_check",
+]
+
+[[package]]
 name = "unicode-bidi"
 version = "0.3.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3936,9 +4410,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.11"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
+checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6"
 
 [[package]]
 name = "unicode-xid"
@@ -3959,6 +4433,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861"
 
 [[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
 name = "url"
 version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3996,7 +4476,7 @@ dependencies = [
  "cfg-if 1.0.0",
  "rustc_version 0.4.0",
  "rustversion",
- "time 0.3.34",
+ "time 0.3.36",
 ]
 
 [[package]]
@@ -4016,6 +4496,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
 name = "wasi"
 version = "0.11.0+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4042,11 +4531,23 @@ dependencies = [
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+dependencies = [
+ "cfg-if 1.0.0",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
 name = "wasm-bindgen-macro"
 version = "0.2.92"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4064,7 +4565,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.58",
+ "syn 2.0.66",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
@@ -4076,6 +4577,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
 
 [[package]]
+name = "wasm-streams"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
 name = "web-sys"
 version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4086,6 +4600,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "webpki-roots"
+version = "0.26.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
 name = "which"
 version = "4.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4115,11 +4638,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.6"
+version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
 dependencies = [
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -4134,7 +4657,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -4176,7 +4699,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets 0.52.4",
+ "windows-targets 0.52.5",
 ]
 
 [[package]]
@@ -4211,17 +4734,18 @@ dependencies = [
 
 [[package]]
 name = "windows-targets"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b"
+checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb"
 dependencies = [
- "windows_aarch64_gnullvm 0.52.4",
- "windows_aarch64_msvc 0.52.4",
- "windows_i686_gnu 0.52.4",
- "windows_i686_msvc 0.52.4",
- "windows_x86_64_gnu 0.52.4",
- "windows_x86_64_gnullvm 0.52.4",
- "windows_x86_64_msvc 0.52.4",
+ "windows_aarch64_gnullvm 0.52.5",
+ "windows_aarch64_msvc 0.52.5",
+ "windows_i686_gnu 0.52.5",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.5",
+ "windows_x86_64_gnu 0.52.5",
+ "windows_x86_64_gnullvm 0.52.5",
+ "windows_x86_64_msvc 0.52.5",
 ]
 
 [[package]]
@@ -4238,9 +4762,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
 name = "windows_aarch64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9"
+checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263"
 
 [[package]]
 name = "windows_aarch64_msvc"
@@ -4256,9 +4780,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
 name = "windows_aarch64_msvc"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675"
+checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6"
 
 [[package]]
 name = "windows_i686_gnu"
@@ -4274,9 +4798,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
 name = "windows_i686_gnu"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3"
+checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9"
 
 [[package]]
 name = "windows_i686_msvc"
@@ -4292,9 +4822,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
 name = "windows_i686_msvc"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02"
+checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf"
 
 [[package]]
 name = "windows_x86_64_gnu"
@@ -4310,9 +4840,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
 name = "windows_x86_64_gnu"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03"
+checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
@@ -4328,9 +4858,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
 name = "windows_x86_64_gnullvm"
-version = "0.52.4"
+version = "0.52.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177"
+checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596"
 
 [[package]]
 name = "windows_x86_64_msvc"
@@ -4346,9 +4876,30 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
 name = "windows_x86_64_msvc"
-version = "0.52.4"
+version = "0.52.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0"
+
+[[package]]
+name = "winreg"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5"
+dependencies = [
+ "cfg-if 1.0.0",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "xattr"
+version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8"
+checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f"
+dependencies = [
+ "libc",
+ "linux-raw-sys",
+ "rustix",
+]
 
 [[package]]
 name = "yaml-rust"
@@ -4373,3 +4924,9 @@ checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1"
 dependencies = [
  "winapi",
 ]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
diff --git a/pkgs/by-name/kc/kclvm/enable_protoc_env.patch b/pkgs/by-name/kc/kclvm/enable_protoc_env.patch
index 4d1f2c2cb9a8..3976f37bd155 100644
--- a/pkgs/by-name/kc/kclvm/enable_protoc_env.patch
+++ b/pkgs/by-name/kc/kclvm/enable_protoc_env.patch
@@ -1,37 +1,46 @@
-diff --git a/api/build.rs b/api/build.rs
-index 617c1b9a..20d728e3 100644
+diff --git a/kclvm/api/build.rs b/kclvm/api/build.rs
+index 7d1c39b7..0104bb6f 100644
 --- a/api/build.rs
 +++ b/api/build.rs
-@@ -5,10 +5,10 @@ use prost_wkt_build::{FileDescriptorSet, Message};
+@@ -5,12 +5,12 @@ use prost_wkt_build::{FileDescriptorSet, Message};
  /// According to the file kclvm/spec/gpyrpc/gpyrpc.proto, automatically generate
  /// the corresponding rust source file to the directory src/model
  fn main() {
--    std::env::set_var(
--        "PROTOC",
--        protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
--    );
-+    // std::env::set_var(
-+    //     "PROTOC",
-+    //     protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
-+    // );
-
+-    if env::var("PROTOC").is_err() {
+-        env::set_var(
+-            "PROTOC",
+-            protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
+-        );
+-    }
++    //if env::var("PROTOC").is_err() {
++    //    env::set_var(
++    //        "PROTOC",
++    //        protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
++    //    );
++    //}
+ 
      let out = PathBuf::from(env::var("OUT_DIR").unwrap());
      let descriptor_file = out.join("kclvm_service_descriptor.bin");
-diff --git b/third-party/prost-wkt/wkt-types/build.rs a/third-party/prost-wkt/wkt-types/build.rs
-index e49222d5..a933ddf4 100644
+diff --git a/kclvm/third-party/prost-wkt/wkt-types/build.rs b/kclvm/third-party/prost-wkt/wkt-types/build.rs
+index 620c759a..7f77e1b1 100644
 --- a/third-party/prost-wkt/wkt-types/build.rs
 +++ b/third-party/prost-wkt/wkt-types/build.rs
-@@ -13,10 +13,10 @@ use regex::Regex;
-
+@@ -13,12 +13,12 @@ use regex::Regex;
+ 
  fn main() {
      //hack: set protoc_bin_vendored::protoc_bin_path() to PROTOC
--    std::env::set_var(
--        "PROTOC",
--        protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
--    );
-+    // std::env::set_var(
-+    //     "PROTOC",
-+    //     protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
-+    // );
+-    if env::var("PROTOC").is_err() {
+-        env::set_var(
+-            "PROTOC",
+-            protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
+-        );
+-    }
++    //if env::var("PROTOC").is_err() {
++    //    env::set_var(
++    //         "PROTOC",
++    //        protoc_bin_vendored::protoc_bin_path().unwrap().as_os_str(),
++    //    );
++    //}
      let dir = PathBuf::from(env::var("OUT_DIR").unwrap());
      process_prost_pbtime(&dir);
+ 
diff --git a/pkgs/by-name/kc/kclvm/package.nix b/pkgs/by-name/kc/kclvm/package.nix
index 549de0066ce0..249c9bca9812 100644
--- a/pkgs/by-name/kc/kclvm/package.nix
+++ b/pkgs/by-name/kc/kclvm/package.nix
@@ -1,19 +1,22 @@
 { lib
+, stdenv
 , rustPlatform
 , fetchFromGitHub
 , protobuf
 , pkg-config
+, darwin
+, rustc
 ,
 }:
 rustPlatform.buildRustPackage rec {
   pname = "kclvm";
-  version = "0.8.7";
+  version = "0.9.3";
 
   src = fetchFromGitHub {
     owner = "kcl-lang";
     repo = "kcl";
     rev = "v${version}";
-    hash = "sha256-ieGpuNkzT6AODZYUcEanb7Jpb+PXclnQ9KkdmlehK0o=";
+    hash = "sha256-nk5oJRTBRj0LE2URJqno8AoZ+/342C2tEt8d6k2MAc8=";
   };
 
   sourceRoot = "source/kclvm";
@@ -21,9 +24,21 @@ rustPlatform.buildRustPackage rec {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "inkwell-0.2.0" = "sha256-JxSlhShb3JPhsXK8nGFi2uGPp8XqZUSiqniLBrhr+sM=";
+      "protoc-bin-vendored-3.1.0" = "sha256-RRqpPMJygpKGG5NYzD93iy4htpVqFhYMmfPgbRtpUqg=";
     };
   };
 
+  buildInputs = [ rustc ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.CoreServices
+    darwin.apple_sdk.frameworks.SystemConfiguration
+  ];
+
+
+  postInstall = lib.optionalString stdenv.isDarwin ''
+    install_name_tool -id $out/lib/libkclvm_cli_cdylib.dylib $out/lib/libkclvm_cli_cdylib.dylib
+  '';
+
   nativeBuildInputs = [ pkg-config protobuf ];
 
   patches = [ ./enable_protoc_env.patch ];
@@ -35,7 +50,7 @@ rustPlatform.buildRustPackage rec {
     description = "A high-performance implementation of KCL written in Rust that uses LLVM as the compiler backend";
     homepage = "https://github.com/kcl-lang/kcl";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ selfuryon peefy ];
   };
 }
diff --git a/pkgs/by-name/kc/kclvm_cli/Cargo.lock b/pkgs/by-name/kc/kclvm_cli/Cargo.lock
deleted file mode 100644
index 2cc4275a3b8a..000000000000
--- a/pkgs/by-name/kc/kclvm_cli/Cargo.lock
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "kclvm_cli"
-version = "0.8.7"
diff --git a/pkgs/by-name/kc/kclvm_cli/cargo_lock.patch b/pkgs/by-name/kc/kclvm_cli/cargo_lock.patch
index 7e8b91d02b3d..98d155e8c706 100644
--- a/pkgs/by-name/kc/kclvm_cli/cargo_lock.patch
+++ b/pkgs/by-name/kc/kclvm_cli/cargo_lock.patch
@@ -7,4 +7,4 @@
 +
 +[[package]]
 +name = "kclvm_cli"
-+version = "0.8.7"
++version = "0.9.3"
diff --git a/pkgs/by-name/kc/kclvm_cli/package.nix b/pkgs/by-name/kc/kclvm_cli/package.nix
index ad1aecafaffd..15e86da2f872 100644
--- a/pkgs/by-name/kc/kclvm_cli/package.nix
+++ b/pkgs/by-name/kc/kclvm_cli/package.nix
@@ -1,30 +1,40 @@
 { lib
+, stdenv
 , rustPlatform
 , fetchFromGitHub
 , kclvm
+, darwin
+, rustc
+,
 }:
 rustPlatform.buildRustPackage rec {
   pname = "kclvm_cli";
-  version = "0.8.7";
+  version = "0.9.3";
 
   src = fetchFromGitHub {
     owner = "kcl-lang";
     repo = "kcl";
     rev = "v${version}";
-    hash = "sha256-ieGpuNkzT6AODZYUcEanb7Jpb+PXclnQ9KkdmlehK0o=";
+    hash = "sha256-nk5oJRTBRj0LE2URJqno8AoZ+/342C2tEt8d6k2MAc8=";
   };
 
   sourceRoot = "source/cli";
-  cargoLock.lockFile = ./Cargo.lock;
+  cargoHash = "sha256-LZUE2J/UYepl5BGf4T4eWKIZfN3mVJtMDLtm0uUmvI8=";
   cargoPatches = [ ./cargo_lock.patch ];
 
-  buildInputs = [ kclvm ];
+  buildInputs = [ kclvm rustc ] ++ (
+    lib.optionals stdenv.isDarwin [
+      darwin.apple_sdk.frameworks.Security
+      darwin.apple_sdk.frameworks.CoreServices
+      darwin.apple_sdk.frameworks.SystemConfiguration
+    ]
+  );
 
   meta = with lib; {
     description = "A high-performance implementation of KCL written in Rust that uses LLVM as the compiler backend";
     homepage = "https://github.com/kcl-lang/kcl";
     license = licenses.asl20;
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ selfuryon peefy ];
     mainProgram = "kclvm_cli";
   };
diff --git a/pkgs/by-name/ko/konf/package.nix b/pkgs/by-name/ko/konf/package.nix
new file mode 100644
index 000000000000..dcba4474f0d3
--- /dev/null
+++ b/pkgs/by-name/ko/konf/package.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "konf";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "SimonTheLeg";
+    repo = "konf-go";
+    rev = "v${version}";
+    hash = "sha256-GSrR2uLeGodmE1egRtvTyWhJckYUnI97n7dnmjPvu3k=";
+  };
+
+  vendorHash = "sha256-sB3j19HrTtaRqNcooqNy8vBvuzxxyGDa7MOtiGoVgN8=";
+
+  ldflags = [ "-s" "-w" ];
+
+  meta = with lib; {
+    description = "Lightweight and blazing fast kubeconfig manager which allows to use different kubeconfigs at the same time";
+    mainProgram = "konf-go";
+    homepage = "https://github.com/SimonTheLeg/konf-go";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ arikgrahl ];
+  };
+}
diff --git a/pkgs/by-name/kr/krr/package.nix b/pkgs/by-name/kr/krr/package.nix
index f919f8c0d226..eb76c1fe4a6d 100644
--- a/pkgs/by-name/kr/krr/package.nix
+++ b/pkgs/by-name/kr/krr/package.nix
@@ -40,7 +40,7 @@ python3.pkgs.buildPythonPackage rec {
     pydantic_1
     slack-sdk
     typer
-  ] ++ typer.optional-dependencies.all;
+  ];
 
   nativeCheckInputs = with python3.pkgs; [
     pytestCheckHook
diff --git a/pkgs/by-name/kr/krun/package.nix b/pkgs/by-name/kr/krun/package.nix
new file mode 100644
index 000000000000..d851203a30fd
--- /dev/null
+++ b/pkgs/by-name/kr/krun/package.nix
@@ -0,0 +1,70 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, rustPlatform
+, libiconv
+, libkrun
+, makeWrapper
+, passt
+, sommelier
+, mesa
+, opengl-driver ? mesa.drivers
+, withSommelier ? false
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "krun";
+  version = "0-unstable-2024-06-18";
+
+  src = fetchFromGitHub {
+    owner = "slp";
+    repo = pname;
+    rev = "912afa5c6525b7c8f83dffd65ec4b1425b3f7521";
+    hash = "sha256-rDuxv3UakAemDnj4Nsbpqsykts2IcseuQmDwO24L+u8=";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/slp/krun/pull/39.diff";
+      hash = "sha256-CV69L+VDDLRcWgpgDCAYKLlTU9ytFcHhzNgOibWD8KY=";
+    })
+    (fetchpatch {
+      url = "https://github.com/slp/krun/pull/38.diff";
+      hash = "sha256-cK3iDhh+33H16V65lWUXahjmpSxI1HhiLUmkjfkRB7A=";
+    })
+  ];
+
+  cargoHash = "sha256-NahnigxJaY2QwWnySCRrnf3JyqZ+7jRA1CpE7ON0OOE=";
+
+  nativeBuildInputs = [
+    rustPlatform.bindgenHook
+    makeWrapper
+  ];
+
+  buildInputs = [
+    (libkrun.override {
+      withGpu = true;
+      withNet = true;
+    })
+  ];
+
+  # Allow for sommelier to be disabled as it can cause problems.
+  wrapArgs = [
+    "--prefix PATH : ${lib.makeBinPath (lib.optional withSommelier [ sommelier ] ++ [ passt ])}"
+  ];
+
+  postFixup = ''
+    wrapProgram $out/bin/krun $wrapArgs \
+      --set-default OPENGL_DRIVER ${opengl-driver}
+  '';
+
+  meta = {
+    description = "Run programs from your system in a microVM";
+    homepage = "https://github.com/slp/krun";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ RossComputerGuy ];
+    platforms = libkrun.meta.platforms;
+    mainProgram = "krun";
+  };
+}
diff --git a/pkgs/by-name/kt/ktfmt/package.nix b/pkgs/by-name/kt/ktfmt/package.nix
index 3e0063a9e37d..e5beaecde945 100644
--- a/pkgs/by-name/kt/ktfmt/package.nix
+++ b/pkgs/by-name/kt/ktfmt/package.nix
@@ -2,18 +2,18 @@
 
 maven.buildMavenPackage rec {
   pname = "ktfmt";
-  version = "0.47";
+  version = "0.51";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = "ktfmt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vdvKHTTD84OAQacv/VE/5BxYdW4n3bxPUHF2MdH+sQQ=";
+    hash = "sha256-TIYV/V6vtGTTSLFf9dcKo8Ezx61e7Vvz3vQvbh0Kj/Y=";
   };
 
   patches = [ ./pin-default-maven-plugin-versions.patch ];
 
-  mvnHash = "sha256-iw28HS0WMFC9BKQKr0v33D77rMQeIMKjXduqPcYU1XA=";
+  mvnHash = "sha256-f/Uwc0ynROEKl2+zsgqj5ctRu1QcNblF5suU/0+fvKw=";
 
   mvnParameters = "-Dproject.build.outputTimestamp=1980-01-01T00:00:02Z";
 
diff --git a/pkgs/by-name/la/lager/package.nix b/pkgs/by-name/la/lager/package.nix
index 1786e0cc503d..83144cca3bdf 100644
--- a/pkgs/by-name/la/lager/package.nix
+++ b/pkgs/by-name/la/lager/package.nix
@@ -2,7 +2,6 @@
 , stdenv
 , fetchFromGitHub
 , cmake
-, pkg-config
 , boost
 , immer
 , zug
diff --git a/pkgs/by-name/ld/ld64/0004-Use-std-atomics-and-std-mutex.patch b/pkgs/by-name/ld/ld64/0004-Use-std-atomics-and-std-mutex.patch
new file mode 100644
index 000000000000..8c414fcb51d8
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/0004-Use-std-atomics-and-std-mutex.patch
@@ -0,0 +1,181 @@
+From 5e92d65ef2b5cc07dc25b5b1bf645b314599f5d1 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Sat, 6 Apr 2024 20:29:25 -0400
+Subject: [PATCH 4/8] Use std::atomics and std::mutex
+
+---
+ src/ld/InputFiles.cpp | 13 ++++++-------
+ src/ld/InputFiles.h   |  9 +++++----
+ src/ld/OutputFile.cpp | 13 ++++++-------
+ src/ld/ld.cpp         | 11 +++++------
+ 4 files changed, 22 insertions(+), 24 deletions(-)
+
+diff --git a/src/ld/InputFiles.cpp b/src/ld/InputFiles.cpp
+index ec53a60..427ab09 100644
+--- a/src/ld/InputFiles.cpp
++++ b/src/ld/InputFiles.cpp
+@@ -42,7 +42,6 @@
+ #include <mach-o/dyld.h>
+ #include <mach-o/fat.h>
+ #include <sys/sysctl.h>
+-#include <libkern/OSAtomic.h>
+ #if HAVE_LIBDISPATCH
+ #include <dispatch/dispatch.h>
+ #endif
+@@ -387,16 +386,16 @@ ld::File* InputFiles::makeFile(const Options::FileInfo& info, bool indirectDylib
+ 
+ 	ld::relocatable::File* objResult = mach_o::relocatable::parse(p, len, info.path, info.modTime, info.ordinal, objOpts);
+ 	if ( objResult != NULL ) {
+-		OSAtomicAdd64(len, &_totalObjectSize);
+-		OSAtomicIncrement32(&_totalObjectLoaded);
++		_totalObjectSize += len;
++		++_totalObjectLoaded;
+ 		return objResult;
+ 	}
+ 
+ 	// see if it is an llvm object file
+ 	objResult = lto::parse(p, len, info.path, info.modTime, info.ordinal, _options.architecture(), _options.subArchitecture(), _options.logAllFiles(), _options.verboseOptimizationHints());
+ 	if ( objResult != NULL ) {
+-		OSAtomicAdd64(len, &_totalObjectSize);
+-		OSAtomicIncrement32(&_totalObjectLoaded);
++		_totalObjectSize += len;
++		++_totalObjectLoaded;
+ 		return objResult;
+ 	}
+ 
+@@ -444,8 +443,8 @@ ld::File* InputFiles::makeFile(const Options::FileInfo& info, bool indirectDylib
+ 	ld::archive::File* archiveResult = ::archive::parse(p, len, info.path, info.modTime, info.ordinal, archOpts);
+ 	if ( archiveResult != NULL ) {
+ 	
+-		OSAtomicAdd64(len, &_totalArchiveSize);
+-		OSAtomicIncrement32(&_totalArchivesLoaded);
++		_totalArchiveSize += len;
++		++_totalArchivesLoaded;
+ 		return archiveResult;
+ 	}
+ 	
+diff --git a/src/ld/InputFiles.h b/src/ld/InputFiles.h
+index c18ccf8..ffff26b 100644
+--- a/src/ld/InputFiles.h
++++ b/src/ld/InputFiles.h
+@@ -46,6 +46,7 @@
+ #include <pthread.h>
+ #endif
+ 
++#include <atomic>
+ #include <vector>
+ 
+ #include "Options.h"
+@@ -78,10 +79,10 @@ public:
+ 	size_t						count() const { return _inputFiles.size(); }
+ 
+ 	// for -print_statistics
+-	volatile int64_t			_totalObjectSize;
+-	volatile int64_t			_totalArchiveSize;
+-	volatile int32_t			_totalObjectLoaded;
+-	volatile int32_t			_totalArchivesLoaded;
++	std::atomic<int64_t>			_totalObjectSize;
++	std::atomic<int64_t>			_totalArchiveSize;
++	std::atomic<int32_t>			_totalObjectLoaded;
++	std::atomic<int32_t>			_totalArchivesLoaded;
+ 	         int32_t			_totalDylibsLoaded;
+ 	
+ 	
+diff --git a/src/ld/OutputFile.cpp b/src/ld/OutputFile.cpp
+index e2c0397..15912a2 100644
+--- a/src/ld/OutputFile.cpp
++++ b/src/ld/OutputFile.cpp
+@@ -43,11 +43,10 @@
+ #include <mach-o/dyld.h>
+ #include <mach-o/fat.h>
+ #include <dispatch/dispatch.h>
+-#include <os/lock_private.h>
+ extern "C" {
+     #include <corecrypto/ccsha2.h>
+ }
+-#include <string>
++#include <mutex>
+ #include <string>
+ #include <list>
+ #include <algorithm>
+@@ -1362,7 +1361,7 @@ void OutputFile::rangeCheckRISCVBranch20(int64_t displacement, ld::Internal& sta
+ 
+ 
+ #if SUPPORT_ARCH_arm64e
+-static os_lock_unfair_s  sAuthenticatedFixupDataLock = OS_LOCK_UNFAIR_INIT; // to serialize building of _authenticatedFixupData
++static std::mutex sAuthenticatedFixupDataLock; // to serialize building of _authenticatedFixupData
+ #endif
+ 
+ void OutputFile::applyFixUps(ld::Internal& state, uint64_t mhAddress, const ld::Atom* atom, uint8_t* buffer)
+@@ -1737,11 +1736,11 @@ void OutputFile::applyFixUps(ld::Internal& state, uint64_t mhAddress, const ld::
+ 					}
+ 					else {
+ 						auto fixupOffset = (uintptr_t)(fixUpLocation - mhAddress);
+-						os_lock_lock(&sAuthenticatedFixupDataLock);
++						sAuthenticatedFixupDataLock.lock();
+ 							assert(_authenticatedFixupData.find(fixupOffset) == _authenticatedFixupData.end());
+ 							auto authneticatedData = std::make_pair(authData, accumulator);
+ 							_authenticatedFixupData[fixupOffset] = authneticatedData;
+-						os_lock_unlock(&sAuthenticatedFixupDataLock);
++						sAuthenticatedFixupDataLock.unlock();
+ 						// Zero out this entry which we will expect later.
+ 						set64LE(fixUpLocation, 0);
+ 					}
+@@ -1768,11 +1767,11 @@ void OutputFile::applyFixUps(ld::Internal& state, uint64_t mhAddress, const ld::
+ 					}
+ 					else {
+ 						auto fixupOffset = (uintptr_t)(fixUpLocation - mhAddress);
+-						os_lock_lock(&sAuthenticatedFixupDataLock);
++						sAuthenticatedFixupDataLock.lock();
+ 							assert(_authenticatedFixupData.find(fixupOffset) == _authenticatedFixupData.end());
+ 							auto authneticatedData = std::make_pair(authData, accumulator);
+ 							_authenticatedFixupData[fixupOffset] = authneticatedData;
+-						os_lock_unlock(&sAuthenticatedFixupDataLock);
++						sAuthenticatedFixupDataLock.unlock();
+ 						// Zero out this entry which we will expect later.
+ 						set64LE(fixUpLocation, 0);
+ 					}
+diff --git a/src/ld/ld.cpp b/src/ld/ld.cpp
+index b7590a3..f1bf9df 100644
+--- a/src/ld/ld.cpp
++++ b/src/ld/ld.cpp
+@@ -47,9 +47,8 @@ extern "C" double log2 ( double );
+ #include <mach-o/dyld.h>
+ #include <dlfcn.h>
+ #include <AvailabilityMacros.h>
+-#include <os/lock_private.h>
+ 
+-#include <string>
++#include <mutex>
+ #include <map>
+ #include <set>
+ #include <string>
+@@ -1603,8 +1602,8 @@ int main(int argc, const char* argv[])
+ 								statistics.vmEnd.faults-statistics.vmStart.faults);
+ 			fprintf(stderr, "memory active: %lu, wired: %lu\n", statistics.vmEnd.active_count * vm_page_size, statistics.vmEnd.wire_count * vm_page_size);
+ 			char temp[40];
+-			fprintf(stderr, "processed %3u object files,  totaling %15s bytes\n", inputFiles._totalObjectLoaded, commatize(inputFiles._totalObjectSize, temp));
+-			fprintf(stderr, "processed %3u archive files, totaling %15s bytes\n", inputFiles._totalArchivesLoaded, commatize(inputFiles._totalArchiveSize, temp));
++			fprintf(stderr, "processed %3u object files,  totaling %15s bytes\n", inputFiles._totalObjectLoaded.load(), commatize(inputFiles._totalObjectSize.load(), temp));
++			fprintf(stderr, "processed %3u archive files, totaling %15s bytes\n", inputFiles._totalArchivesLoaded.load(), commatize(inputFiles._totalArchiveSize.load(), temp));
+ 			fprintf(stderr, "processed %3u dylib files\n", inputFiles._totalDylibsLoaded);
+ 			fprintf(stderr, "wrote output file            totaling %15s bytes\n", commatize(out.fileSize(), temp));
+ 		}
+@@ -1634,12 +1633,12 @@ int main(int argc, const char* argv[])
+ #ifndef NDEBUG
+ 
+ //  now that the linker is multi-threaded, only allow one assert() to be processed 
+-static os_lock_unfair_s  sAssertLock = OS_LOCK_UNFAIR_INIT;
++static std::mutex sAssertLock;
+ 
+ // implement assert() function to print out a backtrace before aborting
+ void __assert_rtn(const char* func, const char* file, int line, const char* failedexpr)
+ {
+-	os_lock_lock(&sAssertLock);
++    sAssertLock.lock();
+ 
+     Snapshot *snapshot = Snapshot::globalSnapshot;
+     
+-- 
+2.45.1
+
diff --git a/pkgs/by-name/ld/ld64/0005-Support-LTO-in-nixpkgs.patch b/pkgs/by-name/ld/ld64/0005-Support-LTO-in-nixpkgs.patch
new file mode 100644
index 000000000000..fec7e31b5cdf
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/0005-Support-LTO-in-nixpkgs.patch
@@ -0,0 +1,48 @@
+From faa5ab7c6e8d9a6c6157a2b681edad592ce78555 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Sun, 7 Apr 2024 15:33:36 -0400
+Subject: [PATCH 5/8] Support LTO in nixpkgs
+
+---
+ src/ld/InputFiles.cpp       | 11 ++---------
+ src/ld/parsers/lto_file.cpp |  2 +-
+ 2 files changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/src/ld/InputFiles.cpp b/src/ld/InputFiles.cpp
+index 427ab09..b8a9870 100644
+--- a/src/ld/InputFiles.cpp
++++ b/src/ld/InputFiles.cpp
+@@ -464,15 +464,8 @@ ld::File* InputFiles::makeFile(const Options::FileInfo& info, bool indirectDylib
+ 			if ( _options.overridePathlibLTO() != NULL ) {
+ 				libLTO = _options.overridePathlibLTO();
+ 			}
+-			else if ( _NSGetExecutablePath(ldPath, &bufSize) != -1 ) {
+-				if ( realpath(ldPath, tmpPath) != NULL ) {
+-					char* lastSlash = strrchr(tmpPath, '/');
+-					if ( lastSlash != NULL )
+-						strcpy(lastSlash, "/../lib/libLTO.dylib");
+-					libLTO = tmpPath;
+-					if ( realpath(tmpPath, libLTOPath) != NULL ) 
+-						libLTO = libLTOPath;
+-				}
++			else {
++				libLTO = "@libllvm@/lib/libLTO.dylib";
+ 			}
+ 			throwf("could not process llvm bitcode object file, because %s could not be loaded", libLTO);
+ 		}
+diff --git a/src/ld/parsers/lto_file.cpp b/src/ld/parsers/lto_file.cpp
+index 5318212..e18e974 100644
+--- a/src/ld/parsers/lto_file.cpp
++++ b/src/ld/parsers/lto_file.cpp
+@@ -1807,7 +1807,7 @@ bool optimize(  const std::vector<const ld::Atom*>&	allAtoms,
+ 
+ }; // namespace lto
+ 
+-static const char *sLTODylib = "@rpath/libLTO.dylib";
++static const char *sLTODylib = "@libllvm@/lib/libLTO.dylib";
+ static std::atomic<bool> sLTOIsLoaded(false);
+ 
+ static void *getHandle() {
+-- 
+2.45.1
+
diff --git a/pkgs/by-name/ld/ld64/0006-Add-libcd_is_blob_a_linker_signature-implementation.patch b/pkgs/by-name/ld/ld64/0006-Add-libcd_is_blob_a_linker_signature-implementation.patch
new file mode 100644
index 000000000000..e5485ab4cadc
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/0006-Add-libcd_is_blob_a_linker_signature-implementation.patch
@@ -0,0 +1,113 @@
+From add8bae5577ebe1c98cf7a711f87a3578a51d313 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Mon, 8 Apr 2024 22:42:40 -0400
+Subject: [PATCH 6/8] Add libcd_is_blob_a_linker_signature implementation
+
+---
+ compat/libcodedirectory.c | 74 +++++++++++++++++++++++++++++++++++++++
+ src/ld/libcodedirectory.h |  8 +++++
+ 2 files changed, 82 insertions(+)
+ create mode 100644 compat/libcodedirectory.c
+
+diff --git a/compat/libcodedirectory.c b/compat/libcodedirectory.c
+new file mode 100644
+index 0000000..e584dfc
+--- /dev/null
++++ b/compat/libcodedirectory.c
+@@ -0,0 +1,74 @@
++// SPDX-License-Identifier: APSL-2.0
++// libcd_is_blob_a_linker_signature implementation written by Randy Eckenrode © 2024
++
++#include <libcodedirectory.h>
++
++#include <stdbool.h>
++
++// References:
++// - https://forums.developer.apple.com/forums/thread/702351
++// - https://redmaple.tech/blogs/macho-files/#codedirectory-blob
++
++static inline uint32_t read32be(const uint8_t* data)
++{
++    return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3];
++}
++
++static inline bool is_embedded_signature(uint32_t magic) {
++    switch (magic) {
++    case CSMAGIC_EMBEDDED_SIGNATURE:
++    case CSMAGIC_EMBEDDED_SIGNATURE_OLD:
++        return true;
++    default:
++        return false;
++    }
++}
++
++static inline const uint8_t* find_code_directory(const uint8_t* data, size_t size) {
++    const uint8_t* index_ptr = data + offsetof(CS_SuperBlob, index);
++    
++    // There also needs to be space for the actual blobs, but there must be at least enough space
++    // for the blob indexes. If there’s not, then something’s wrong, and the blob is invalid.
++    uint32_t count = read32be(data + offsetof(CS_SuperBlob, count));
++    if (count > ((data + size) - index_ptr) / sizeof(CS_BlobIndex)) {
++        return NULL;
++    }
++
++    for (uint32_t n = 0; n < count; ++n) {
++        const uint8_t* current_index_ptr = index_ptr + n * sizeof(CS_BlobIndex);
++        uint32_t type = read32be(current_index_ptr + offsetof(CS_BlobIndex, type));
++        if (type == CSSLOT_CODEDIRECTORY) {
++            uint32_t offset = read32be(current_index_ptr + offsetof(CS_BlobIndex, offset));
++            if (offset > size - sizeof(CS_CodeDirectory)) {
++                return NULL;
++            } else {
++                return data + offset;
++            }
++        }
++    }
++    return NULL;
++}
++
++enum libcd_signature_query_ret
++libcd_is_blob_a_linker_signature(const uint8_t* data, size_t size, int* linker_signed)
++{
++    if (size < sizeof(CS_SuperBlob) + sizeof(CS_BlobIndex) + sizeof(CS_CodeDirectory)) {
++        return LIBCD_SIGNATURE_QUERY_INVALID_ARGUMENT;
++    }
++
++    if (!is_embedded_signature(read32be(data + offsetof(CS_SuperBlob, magic)))) {
++        return LIBCD_SIGNATURE_QUERY_NOT_A_SIGNATURE;
++    }
++
++    const uint8_t* cd = find_code_directory(data, size);
++    if (!cd) {
++        return LIBCD_SIGNATURE_QUERY_INVALID_ARGUMENT;
++    }
++
++    uint32_t flags = read32be(cd + offsetof(CS_CodeDirectory, flags));
++    if ((flags & CS_LINKER_SIGNED) == CS_LINKER_SIGNED) {
++        *linker_signed = 1;
++    }
++
++    return LIBCD_SIGNATURE_QUERY_SUCCESS;
++}
+diff --git a/src/ld/libcodedirectory.h b/src/ld/libcodedirectory.h
+index 0e989a9..7532648 100644
+--- a/src/ld/libcodedirectory.h
++++ b/src/ld/libcodedirectory.h
+@@ -116,6 +116,14 @@ enum libcd_set_linkage_ret {
+ 
+ enum libcd_set_linkage_ret libcd_set_linkage(libcd *s, int linkage_hash_type, uint8_t *linkage_hash);
+ 
++enum libcd_signature_query_ret {
++    LIBCD_SIGNATURE_QUERY_SUCCESS,
++    LIBCD_SIGNATURE_QUERY_INVALID_ARGUMENT,
++    LIBCD_SIGNATURE_QUERY_NOT_A_SIGNATURE,
++};
++
++enum libcd_signature_query_ret libcd_is_blob_a_linker_signature(const uint8_t* data, size_t size, int* linker_signed);
++
+ __END_DECLS
+ 
+ #endif // H_LIBCODEDIRECTORY
+-- 
+2.45.1
+
diff --git a/pkgs/by-name/ld/ld64/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch b/pkgs/by-name/ld/ld64/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch
new file mode 100644
index 000000000000..16879634338a
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch
@@ -0,0 +1,311 @@
+From 36767c7345161baf0ab125f95c8557f8e24f25db Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Tue, 9 Apr 2024 19:28:17 -0400
+Subject: [PATCH 7/8] Add OpenSSL-based CoreCrypto digest functions
+
+---
+ compat/CommonCrypto/CommonDigest.h    |  6 +++
+ compat/CommonCrypto/CommonDigestSPI.c | 21 +++++++++++
+ compat/CommonCrypto/CommonDigestSPI.h | 14 +++++++
+ compat/corecrypto/api_defines.h       | 10 +++++
+ compat/corecrypto/ccdigest.c          | 53 +++++++++++++++++++++++++++
+ compat/corecrypto/ccdigest.h          | 27 ++++++++++++++
+ compat/corecrypto/ccdigest_private.h  | 19 ++++++++++
+ compat/corecrypto/ccsha1.c            | 22 +++++++++++
+ compat/corecrypto/ccsha1.h            |  9 +++++
+ compat/corecrypto/ccsha2.c            | 22 +++++++++++
+ compat/corecrypto/ccsha2.h            |  9 +++++
+ 11 files changed, 212 insertions(+)
+ create mode 100644 compat/CommonCrypto/CommonDigest.h
+ create mode 100644 compat/CommonCrypto/CommonDigestSPI.c
+ create mode 100644 compat/CommonCrypto/CommonDigestSPI.h
+ create mode 100644 compat/corecrypto/api_defines.h
+ create mode 100644 compat/corecrypto/ccdigest.c
+ create mode 100644 compat/corecrypto/ccdigest.h
+ create mode 100644 compat/corecrypto/ccdigest_private.h
+ create mode 100644 compat/corecrypto/ccsha1.c
+ create mode 100644 compat/corecrypto/ccsha1.h
+ create mode 100644 compat/corecrypto/ccsha2.c
+ create mode 100644 compat/corecrypto/ccsha2.h
+
+diff --git a/compat/CommonCrypto/CommonDigest.h b/compat/CommonCrypto/CommonDigest.h
+new file mode 100644
+index 0000000..a60eba7
+--- /dev/null
++++ b/compat/CommonCrypto/CommonDigest.h
+@@ -0,0 +1,6 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#define CCSHA256_OUTPUT_SIZE 32
+diff --git a/compat/CommonCrypto/CommonDigestSPI.c b/compat/CommonCrypto/CommonDigestSPI.c
+new file mode 100644
+index 0000000..41269fc
+--- /dev/null
++++ b/compat/CommonCrypto/CommonDigestSPI.c
+@@ -0,0 +1,21 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#include "CommonDigestSPI.h"
++
++#include <stdlib.h>
++#include <string.h>
++
++#include <corecrypto/ccsha2.h>
++
++void CCDigest(int type, const uint8_t* bytes, size_t count, uint8_t* digest) {
++    if (type != kCCDigestSHA256) {
++        abort();
++    }
++    const struct ccdigest_info* di = ccsha256_di();
++
++    ccdigest_di_decl(_di, ctx);
++    ccdigest_init(di, ctx);
++    ccdigest_update(di, ctx, count, bytes);
++    ccdigest_final(di, ctx, digest);
++}
+diff --git a/compat/CommonCrypto/CommonDigestSPI.h b/compat/CommonCrypto/CommonDigestSPI.h
+new file mode 100644
+index 0000000..172742a
+--- /dev/null
++++ b/compat/CommonCrypto/CommonDigestSPI.h
+@@ -0,0 +1,14 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#include <stdint.h>
++
++#include <corecrypto/ccdigest.h>
++#include <cs_blobs.h>
++
++
++#define kCCDigestSHA256 10
++
++EXTERN_C void CCDigest(int type, const uint8_t* bytes, size_t count, uint8_t* digest);
+diff --git a/compat/corecrypto/api_defines.h b/compat/corecrypto/api_defines.h
+new file mode 100644
+index 0000000..13d1e7a
+--- /dev/null
++++ b/compat/corecrypto/api_defines.h
+@@ -0,0 +1,10 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#ifdef __cplusplus
++#define EXTERN_C extern "C"
++#else
++#define EXTERN_C
++#endif
+diff --git a/compat/corecrypto/ccdigest.c b/compat/corecrypto/ccdigest.c
+new file mode 100644
+index 0000000..e29dcb8
+--- /dev/null
++++ b/compat/corecrypto/ccdigest.c
+@@ -0,0 +1,53 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#include "ccdigest.h"
++#include "ccdigest_private.h"
++
++#include <stdlib.h>
++
++#include <openssl/err.h>
++
++
++struct ccdigest_context* _ccdigest_context_new(void)
++{
++    struct ccdigest_context* ctx = malloc(sizeof(struct ccdigest_context));
++    ctx->context = EVP_MD_CTX_new();
++    return ctx;
++}
++
++struct ccdigest_info* _ccdigest_newprovider(const char* name)
++{
++    struct ccdigest_info* di = malloc(sizeof(struct ccdigest_info));
++    di->provider = EVP_MD_fetch(NULL, name, NULL);
++    return di;
++}
++
++void ccdigest_init(const struct ccdigest_info* di, struct ccdigest_context* ctx)
++{
++    if (!EVP_DigestInit_ex2(ctx->context, di->provider, NULL)) {
++        ERR_print_errors_fp(stderr);
++        abort();
++    }
++}
++
++void ccdigest_update(
++    const struct ccdigest_info* _di,
++    struct ccdigest_context* ctx,
++    size_t count,
++    const void* bytes
++)
++{
++    if (!EVP_DigestUpdate(ctx->context, bytes, count)) {
++        ERR_print_errors_fp(stderr);
++        abort();
++    }
++}
++
++void ccdigest_final(const struct ccdigest_info* _di, struct ccdigest_context* ctx, uint8_t* digest)
++{
++    if (!EVP_DigestFinal_ex(ctx->context, digest, NULL)) {
++        ERR_print_errors_fp(stderr);
++        abort();
++    }
++}
+diff --git a/compat/corecrypto/ccdigest.h b/compat/corecrypto/ccdigest.h
+new file mode 100644
+index 0000000..9af2394
+--- /dev/null
++++ b/compat/corecrypto/ccdigest.h
+@@ -0,0 +1,27 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#include <stddef.h>
++#include <stdint.h>
++
++#include "api_defines.h"
++
++
++struct ccdigest_info;
++struct ccdigest_context;
++
++EXTERN_C struct ccdigest_context* _ccdigest_context_new(void);
++
++#define ccdigest_di_decl(_di, ctxvar) \
++    struct ccdigest_context* (ctxvar) = _ccdigest_context_new()
++
++EXTERN_C void ccdigest_init(const struct ccdigest_info* di, struct ccdigest_context* ctx);
++EXTERN_C void ccdigest_update(
++    const struct ccdigest_info* _di,
++    struct ccdigest_context* ctx,
++    size_t count,
++    const void* bytes
++);
++EXTERN_C void ccdigest_final(const struct ccdigest_info* _di, struct ccdigest_context* ctx, uint8_t* digest);
+diff --git a/compat/corecrypto/ccdigest_private.h b/compat/corecrypto/ccdigest_private.h
+new file mode 100644
+index 0000000..0ea9759
+--- /dev/null
++++ b/compat/corecrypto/ccdigest_private.h
+@@ -0,0 +1,19 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#include "api_defines.h"
++
++#include <openssl/evp.h>
++
++
++struct ccdigest_info {
++    EVP_MD* provider;
++};
++
++struct ccdigest_context {
++    EVP_MD_CTX* context;
++};
++
++EXTERN_C struct ccdigest_info* _ccdigest_newprovider(const char* name);
+diff --git a/compat/corecrypto/ccsha1.c b/compat/corecrypto/ccsha1.c
+new file mode 100644
+index 0000000..e02b2b6
+--- /dev/null
++++ b/compat/corecrypto/ccsha1.c
+@@ -0,0 +1,22 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#include "ccsha1.h"
++
++#include <assert.h>
++
++#include <cs_blobs.h>
++
++#include "ccdigest_private.h"
++
++
++static struct ccdigest_info* di = NULL;
++
++const struct ccdigest_info* ccsha1_di(void)
++{
++    if (!di) {
++        di = _ccdigest_newprovider("SHA-1");
++        assert(EVP_MD_get_size(di->provider) == CS_SHA1_LEN);
++    }
++    return di;
++}
+diff --git a/compat/corecrypto/ccsha1.h b/compat/corecrypto/ccsha1.h
+new file mode 100644
+index 0000000..8e3f85f
+--- /dev/null
++++ b/compat/corecrypto/ccsha1.h
+@@ -0,0 +1,9 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#include <corecrypto/ccdigest.h>
++
++
++EXTERN_C const struct ccdigest_info* ccsha1_di(void);
+diff --git a/compat/corecrypto/ccsha2.c b/compat/corecrypto/ccsha2.c
+new file mode 100644
+index 0000000..6504503
+--- /dev/null
++++ b/compat/corecrypto/ccsha2.c
+@@ -0,0 +1,22 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#include "ccsha2.h"
++
++#include <assert.h>
++
++#include <cs_blobs.h>
++
++#include "ccdigest_private.h"
++
++
++static struct ccdigest_info* di = NULL;
++
++const struct ccdigest_info* ccsha256_di(void)
++{
++    if (!di) {
++        di = _ccdigest_newprovider("SHA-256");
++        assert(EVP_MD_get_size(di->provider) == CS_SHA256_LEN);
++    }
++    return di;
++}
+diff --git a/compat/corecrypto/ccsha2.h b/compat/corecrypto/ccsha2.h
+new file mode 100644
+index 0000000..9f30e03
+--- /dev/null
++++ b/compat/corecrypto/ccsha2.h
+@@ -0,0 +1,9 @@
++// SPDX-License-Identifier: APSL-2.0
++// CoreCrypto compatibility shims written by Randy Eckenrode © 2024
++
++#pragma once
++
++#include <corecrypto/ccdigest.h>
++
++
++EXTERN_C const struct ccdigest_info* ccsha256_di(void);
+-- 
+2.45.1
+
diff --git a/pkgs/by-name/ld/ld64/0008-Disable-searching-in-standard-library-locations.patch b/pkgs/by-name/ld/ld64/0008-Disable-searching-in-standard-library-locations.patch
new file mode 100644
index 000000000000..ddda588c6aaf
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/0008-Disable-searching-in-standard-library-locations.patch
@@ -0,0 +1,25 @@
+From 3e80d438e2a3ec50d666f2b6e32007c275d4a08a Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Thu, 11 Apr 2024 23:13:29 -0400
+Subject: [PATCH 8/8] Disable searching in standard library locations
+
+---
+ src/ld/Options.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ld/Options.cpp b/src/ld/Options.cpp
+index 67a9f53..611b583 100644
+--- a/src/ld/Options.cpp
++++ b/src/ld/Options.cpp
+@@ -4320,7 +4320,7 @@ bool Options::shouldUseBuildVersion(ld::Platform plat, uint32_t minOSvers) const
+ 
+ void Options::buildSearchPaths(int argc, const char* argv[])
+ {
+-	bool addStandardLibraryDirectories = true;
++	bool addStandardLibraryDirectories = false;
+ 	ld::Platform platform = ld::Platform::unknown;
+ 	std::vector<const char*> libraryPaths;
+ 	std::vector<const char*> frameworkPaths;
+-- 
+2.45.1
+
diff --git a/pkgs/by-name/ld/ld64/gen_compile_stubs.py b/pkgs/by-name/ld/ld64/gen_compile_stubs.py
new file mode 100644
index 000000000000..30fe30789a10
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/gen_compile_stubs.py
@@ -0,0 +1,8 @@
+#!/usr/bin/env python
+import sys
+from pathlib import Path
+
+byteseq = (str(int(x)) for x in Path(sys.argv[1]).read_bytes())
+
+print("#pragma once")
+print(f"static const char compile_stubs[] = {{ {', '.join(byteseq)} }};")
diff --git a/pkgs/by-name/ld/ld64/meson.build b/pkgs/by-name/ld/ld64/meson.build
new file mode 100644
index 000000000000..0de64797c4aa
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/meson.build
@@ -0,0 +1,249 @@
+# Build settings based on the upstream Xcode project.
+# See: https://github.com/apple-oss-distributions/ld64/blob/main/ld64.xcodeproj/project.pbxproj
+
+# Project settings
+project(
+    'ld64',
+    'c', 'cpp',
+    version : '@version@',
+    default_options : {'cpp_std': 'c++20'},
+)
+
+fs = import('fs')
+
+# Options
+target_prefix = get_option('target_prefix')
+
+
+# Dependencies
+cc = meson.get_compiler('c')
+cxx = meson.get_compiler('cpp')
+python = find_program('python3')
+
+libtapi = cxx.find_library('tapi')
+openssl = dependency('openssl', version : '>=3.0')
+xar = cc.find_library('xar')
+
+
+# Feature tests
+
+# macOS 10.12 does not support `DISPATCH_APPLY_AUTO`. Fortunately, `DISPATCH_APPLY_CURRENT_ROOT_QUEUE` has the
+# same value and was repurposed in subsequent releases as `DISPATCH_APPLY_AUTO`.
+dispatch_apply_auto_test = '''
+#include <dispatch/dispatch.h>
+int main(int argc, char* argv[]) {
+    dispatch_queue_t queue = DISPATCH_APPLY_AUTO;
+    return 0;
+}
+'''
+if not cc.compiles(
+    dispatch_apply_auto_test,
+    args : '-Wno-unused-command-line-argument',
+    name : 'supports DISPATCH_APPLY_AUTO',
+)
+    add_project_arguments(
+        '-include', 'dispatch/private.h',
+        '-DDISPATCH_APPLY_AUTO=DISPATCH_APPLY_CURRENT_ROOT_QUEUE',
+        '-DPRIVATE', # The required API is private on the 10.12 SDK.
+        language: ['c', 'cpp'],
+    )
+endif
+
+# The return type of `dispatch_get_global_queue` was changed in 10.14.
+# Use the older type if the SDK does not support it.
+dispatch_queue_global_test = '''
+#include <dispatch/dispatch.h>
+int main(int argc, char* argv[]) {
+    dispatch_queue_global_t queue = dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0);
+    return 0;
+}
+'''
+if not cc.compiles(
+    dispatch_queue_global_test,
+    args : '-Wno-unused-command-line-argument',
+    name : 'supports dispatch_queue_global_t',
+)
+    add_project_arguments('-Ddispatch_queue_global_t=dispatch_queue_t', language : ['c', 'cpp'])
+endif
+
+
+# Generated files
+
+compile_stubs_h = custom_target(
+    'compile_stubs.h',
+    capture : true,
+    command : [python, '@INPUT0@', '@INPUT1@'],
+    input : ['gen_compile_stubs.py', 'compile_stubs'],
+    output : ['compile_stubs.h'],
+)
+
+configure_h = custom_target(
+    'configure_h',
+    command : ['bash', '@INPUT@'],
+    env : {
+        'DERIVED_FILE_DIR' : meson.current_build_dir(),
+        'RC_ProjectSourceVersion': '@version@'
+    },
+    input : ['src/create_configure'],
+    output : ['configure.h'],
+)
+
+incdirs = include_directories(
+    'compat',
+    'include',
+    'src/abstraction',
+    'src/ld',
+    'src/ld/code-sign-blobs',
+    'src/ld/parsers',
+    'src/ld/passes',
+    'src/mach_o',
+)
+
+# Dynamic libraries
+libcodedirectory = library(
+    'codedirectory',
+    dependencies : [openssl],
+    include_directories : incdirs,
+    install : true,
+    sources : [
+        'compat/corecrypto/ccdigest.c',
+        'compat/corecrypto/ccsha1.c',
+        'compat/corecrypto/ccsha2.c',
+        'compat/libcodedirectory.c',
+        'src/ld/libcodedirectory.c'
+    ],
+    soversion : 1,
+)
+install_headers(
+    'src/ld/cs_blobs.h',
+    'src/ld/libcodedirectory.h',
+)
+
+
+# Static libraries
+libprunetrie = static_library(
+    'prunetrie',
+    include_directories : incdirs,
+    install : true,
+    override_options : {'b_lto': false},
+    sources : [
+        'src/mach_o/Error.cpp',
+        'src/mach_o/ExportsTrie.cpp',
+        'src/other/PruneTrie.cpp',
+    ],
+)
+install_headers(
+    'src/other/prune_trie.h',
+    subdir : 'mach-o',
+)
+
+
+# Binaries
+ld64 = executable(
+    f'@target_prefix@ld',
+    dependencies : [libtapi, openssl, xar],
+    include_directories : incdirs,
+    install : true,
+    # These linker flags mirror those used in a release build of the Xcode project.
+    # See: https://github.com/apple-oss-distributions/ld64/blob/47f477cb721755419018f7530038b272e9d0cdea/ld64.xcodeproj/project.pbxproj#L1292-L1299.
+    link_args : [
+        '-Wl,-exported_symbol,__mh_execute_header',
+        '-Wl,-stack_size,0x02000000',
+        '-Wl,-client_name,ld',
+    ],
+    link_with : [libcodedirectory],
+    sources : [
+        compile_stubs_h,
+        configure_h,
+        'compat/CommonCrypto/CommonDigestSPI.c',
+        'compat/corecrypto/ccdigest.c',
+        'compat/corecrypto/ccsha1.c',
+        'compat/corecrypto/ccsha2.c',
+        'src/ld/FatFile.cpp',
+        'src/ld/InputFiles.cpp',
+        'src/ld/Mangling.cpp',
+        'src/ld/Options.cpp',
+        'src/ld/OutputFile.cpp',
+        'src/ld/PlatformSupport.cpp',
+        'src/ld/Resolver.cpp',
+        'src/ld/ResponseFiles.cpp',
+        'src/ld/Snapshot.cpp',
+        'src/ld/SymbolTable.cpp',
+        'src/ld/code-sign-blobs/blob.cpp',
+        'src/ld/code-sign-blobs/blob.h',
+        'src/ld/debugline.c',
+        'src/ld/ld.cpp',
+        'src/ld/parsers/archive_file.cpp',
+        'src/ld/parsers/generic_dylib_file.cpp',
+        'src/ld/parsers/lto_file.cpp',
+        'src/ld/parsers/macho_dylib_file.cpp',
+        'src/ld/parsers/macho_relocatable_file.cpp',
+        'src/ld/parsers/opaque_section_file.cpp',
+        'src/ld/parsers/textstub_dylib_file.cpp',
+        'src/ld/passes/bitcode_bundle.cpp',
+        'src/ld/passes/branch_island.cpp',
+        'src/ld/passes/branch_shim.cpp',
+        'src/ld/passes/code_dedup.cpp',
+        'src/ld/passes/compact_unwind.cpp',
+        'src/ld/passes/dtrace_dof.cpp',
+        'src/ld/passes/dylibs.cpp',
+        'src/ld/passes/got.cpp',
+        'src/ld/passes/huge.cpp',
+        'src/ld/passes/inits.cpp',
+        'src/ld/passes/objc.cpp',
+        'src/ld/passes/objc_constants.cpp',
+        'src/ld/passes/objc_stubs.cpp',
+        'src/ld/passes/order.cpp',
+        'src/ld/passes/stubs/stubs.cpp',
+        'src/ld/passes/thread_starts.cpp',
+        'src/ld/passes/tlvp.cpp',
+        'src/mach_o/Error.cpp',
+        'src/mach_o/ExportsTrie.cpp',
+    ],
+)
+install_man('doc/man/man1/ld-classic.1')
+
+# Extra tools
+unwinddump = executable(
+    f'@target_prefix@unwinddump',
+    include_directories : incdirs,
+    install : true,
+    sources : [
+        configure_h,
+        'src/other/UnwindDump.cpp',
+    ],
+)
+install_man('doc/man/man1/unwinddump.1')
+
+machocheck = executable(
+    f'@target_prefix@machocheck',
+    include_directories : incdirs,
+    install : true,
+    sources : [
+        configure_h,
+        'src/other/machochecker.cpp',
+    ],
+)
+
+objectdump = executable(
+    f'@target_prefix@ObjectDump',
+    include_directories : incdirs,
+    install : true,
+    sources : [
+        configure_h,
+        'src/ld/PlatformSupport.cpp',
+        'src/ld/debugline.c',
+        'src/ld/parsers/macho_relocatable_file.cpp',
+        'src/other/ObjectDump.cpp',
+    ],
+)
+
+objcimageinfo = executable(
+    f'@target_prefix@objcimageinfo',
+    include_directories : incdirs,
+    install : true,
+    sources : [
+        configure_h,
+        'src/other/objcimageinfo.cpp',
+    ],
+)
diff --git a/pkgs/by-name/ld/ld64/meson.options b/pkgs/by-name/ld/ld64/meson.options
new file mode 100644
index 000000000000..2417b81f0401
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/meson.options
@@ -0,0 +1,6 @@
+option(
+    'target_prefix',
+    type : 'string',
+    value : '',
+    description: 'Specifies the prefix to use when building for cross-compilation (e.g., `aarch64-apple-darwin`)'
+)
diff --git a/pkgs/by-name/ld/ld64/package.nix b/pkgs/by-name/ld/ld64/package.nix
new file mode 100644
index 000000000000..ee773bacf3a5
--- /dev/null
+++ b/pkgs/by-name/ld/ld64/package.nix
@@ -0,0 +1,202 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchurl,
+  darwin,
+  libtapi,
+  libunwind,
+  llvm,
+  meson,
+  ninja,
+  openssl,
+  pkg-config,
+  python3,
+  swiftPackages,
+  xar,
+  gitUpdater,
+}:
+
+let
+  # The targetPrefix is prepended to binary names to allow multiple binutils on the PATH to be usable.
+  targetPrefix = lib.optionalString (
+    stdenv.targetPlatform != stdenv.hostPlatform
+  ) "${stdenv.targetPlatform.config}-";
+
+  # ld64 needs CrashReporterClient.h, which is hard to find, but WebKit2 has it.
+  # Fetch it directly because the Darwin stdenv bootstrap can’t depend on fetchgit.
+  crashreporter_h = fetchurl {
+    url = "https://raw.githubusercontent.com/apple-oss-distributions/WebKit2/WebKit2-7605.1.33.0.2/Platform/spi/Cocoa/CrashReporterClientSPI.h";
+    hash = "sha256-0ybVcwHuGEdThv0PPjYQc3SW0YVOyrM3/L9zG/l1Vtk=";
+  };
+
+  # First version with all the required definitions. This is used in preference to darwin.xnu to make it easier
+  # to support Linux and because the version of darwin.xnu available on x86_64-darwin in the 10.12 SDK is too old.
+  xnu = fetchFromGitHub {
+    name = "xnu-src";
+    owner = "apple-oss-distributions";
+    repo = "xnu";
+    rev = "xnu-6153.11.26";
+    hash = "sha256-dcnGcp7bIjQxeAn5pXt+mHSYEXb2Ad9Smhd/WUG4kb4=";
+  };
+
+  # Avoid pulling in all of Swift just to build libdispatch
+  libdispatch = swiftPackages.Dispatch.override { useSwift = false; };
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "ld64";
+  version = "951.9";
+
+  outputs = [
+    "out"
+    "dev"
+    "lib"
+  ];
+
+  src = fetchFromGitHub {
+    owner = "apple-oss-distributions";
+    repo = "ld64";
+    rev = "ld64-${finalAttrs.version}";
+    hash = "sha256-hLkfqgBwVPlO4gfriYOawTO5E1zSD63ZcNetm1E5I70";
+  };
+
+  xcodeHash = "sha256-+j7Ed/6aD46SJnr3DWPfWuYWylb2FNJRPmWsUVxZJHM=";
+
+  postUnpack = ''
+    unpackFile '${xnu}'
+
+    # Verify that the Xcode project has not changed unexpectedly.
+    hashType=$(echo $xcodeHash | cut -d- -f1)
+    expectedHash=$(echo $xcodeHash | cut -d- -f2)
+    hash=$(openssl "$hashType" -binary "$sourceRoot/ld64.xcodeproj/project.pbxproj" | base64)
+
+    if [ "$hash" != "$expectedHash" ]; then
+      echo 'error: hash mismatch in ld64.xcodeproj/project.pbxproj'
+      echo "        specified: $xcodeHash"
+      echo "           got:    $hashType-$hash"
+      echo
+      echo 'Upstream Xcode project has changed. Update `meson.build` with any changes, then update `xcodeHash`.'
+      echo 'Use `nix-hash --flat --sri --type sha256 ld64.xcodeproj/project.pbxproj` to regenerate it.'
+      exit 1
+    fi
+  '';
+
+  patches = [
+    # Use std::atomic for atomics. Replaces private APIs (`os/lock_private.h`) with standard APIs.
+    ./0004-Use-std-atomics-and-std-mutex.patch
+    # ld64 assumes the default libLTO.dylib can be found relative to its bindir, which is
+    # not the case in nixpkgs. Override it to default to `stdenv.cc`’s libLTO.dylib.
+    ./0005-Support-LTO-in-nixpkgs.patch
+    # Add implementation of missing function required for code directory support.
+    ./0006-Add-libcd_is_blob_a_linker_signature-implementation.patch
+    # Add OpenSSL implementation of CoreCrypto digest functions. Avoids use of private and non-free APIs.
+    ./0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch
+    # ld64 will search `/usr/lib`, `/Library/Frameworks`, etc by default. Disable that.
+    ./0008-Disable-searching-in-standard-library-locations.patch
+  ];
+
+  postPatch = ''
+    substitute ${./meson.build} meson.build \
+      --subst-var version
+    cp ${./meson.options} meson.options
+
+    # Copy headers for certain private APIs
+    mkdir -p include
+    substitute ${crashreporter_h} include/CrashReporterClient.h \
+      --replace-fail 'USE(APPLE_INTERNAL_SDK)' '0'
+
+    # Copy from the source so the headers can be used on Linux and x86_64-darwin
+    mkdir -p include/System
+    for dir in arm i386 machine; do
+      cp -r ../xnu-src/osfmk/$dir include/System/$dir
+    done
+    mkdir -p include/sys
+    cp ../xnu-src/bsd/sys/commpage.h include/sys
+
+    # Match the version format used by upstream.
+    sed -i src/ld/Options.cpp \
+      -e '1iconst char ld_classicVersionString[] = "@(#)PROGRAM:ld PROJECT:ld64-${finalAttrs.version}\\n";'
+
+    # Instead of messing around with trying to extract and run the script from the Xcode project,
+    # just use our own Python script to generate `compile_stubs.h`
+    cp ${./gen_compile_stubs.py} gen_compile_stubs.py
+
+    # Enable LTO support using LLVM’s libLTO.dylib by default.
+    substituteInPlace src/ld/InputFiles.cpp \
+      --subst-var-by libllvm '${lib.getLib llvm}'
+    substituteInPlace src/ld/parsers/lto_file.cpp \
+      --subst-var-by libllvm '${lib.getLib llvm}'
+
+    # Use portable includes
+    substituteInPlace src/ld/code-sign-blobs/endian.h \
+      --replace-fail '#include <machine/endian.h>' '#include <sys/types.h>'
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    openssl
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    libtapi
+    llvm
+    libunwind
+    openssl
+    xar
+  ] ++ lib.optionals stdenv.isDarwin [ darwin.dyld ] ++ lib.optionals stdenv.isLinux [ libdispatch ];
+
+  # Note for overrides: ld64 cannot be built as a debug build because of UB in its iteration implementations,
+  # which trigger libc++ debug assertions due to trying to take the address of the first element of an emtpy vector.
+  mesonBuildType = "release";
+
+  mesonFlags = [
+    (lib.mesonOption "b_ndebug" "if-release")
+    (lib.mesonOption "default_library" (if stdenv.hostPlatform.isStatic then "static" else "shared"))
+  ] ++ lib.optionals (targetPrefix != "") [ (lib.mesonOption "target_prefix" targetPrefix) ];
+
+  doInstallCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+  # ld64 has a test suite, but many of the tests fail (even with ld from Xcode). Instead
+  # of running the test suite, rebuild ld64 using itself to link itself as a check.
+  # LTO is enabled only to confirm that it is set up and working properly in nixpkgs.
+  installCheckPhase = ''
+    runHook preInstallCheck
+
+    cd "$NIX_BUILD_TOP/$sourceRoot"
+
+    export NIX_CFLAGS_COMPILE+=" --ld-path=$out/bin/${targetPrefix}ld"
+    meson setup build-install-check -Db_lto=true --buildtype=$mesonBuildType
+
+    cd build-install-check
+    ninja ${targetPrefix}ld "-j$NIX_BUILD_CORES"
+
+    # Confirm that ld found the LTO library and reports it.
+    ./${targetPrefix}ld -v 2>&1 | grep -q 'LTO support'
+
+    runHook postInstallCheck
+  '';
+
+  postInstall = ''
+    ln -s ld-classic.1 "$out/share/man/man1/ld.1"
+    ln -s ld.1 "$out/share/man/man1/ld64.1"
+    moveToOutput lib/libprunetrie.a "$dev"
+  '';
+
+  __structuredAttrs = true;
+
+  passthru.updateScript = gitUpdater { rev-prefix = "ld64-"; };
+
+  meta = {
+    description = "The classic linker for Darwin";
+    homepage = "https://opensource.apple.com/releases/";
+    license = lib.licenses.apple-psl20;
+    mainProgram = "ld";
+    maintainers = with lib.maintainers; [ reckenrode ];
+    platforms = lib.platforms.darwin; # Porting to other platforms is incomplete. Support only Darwin for now.
+  };
+})
diff --git a/pkgs/by-name/ld/ldc/package.nix b/pkgs/by-name/ld/ldc/package.nix
index f92d62430911..112a9eeb1d8e 100644
--- a/pkgs/by-name/ld/ldc/package.nix
+++ b/pkgs/by-name/ld/ldc/package.nix
@@ -3,15 +3,13 @@
 , fetchFromGitHub
 , cmake
 , ninja
-, llvm_17
+, llvm_18
 , curl
 , tzdata
-, libconfig
 , lit
 , gdb
 , unzip
 , darwin
-, bash
 , callPackage
 , makeWrapper
 , runCommand
@@ -64,7 +62,7 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   nativeBuildInputs = [
-    cmake ldcBootstrap lit lit.python llvm_17.dev makeWrapper ninja unzip
+    cmake ldcBootstrap lit lit.python llvm_18.dev makeWrapper ninja unzip
   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     darwin.apple_sdk.frameworks.Foundation
   ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
@@ -148,6 +146,7 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
   };
 
+  passthru.ldcBootstrap = ldcBootstrap;
   passthru.tests = let
     ldc = finalAttrs.finalPackage;
     helloWorld = stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/le/lemminx/package.nix b/pkgs/by-name/le/lemminx/package.nix
index 609411993e81..32ecf1dc6cda 100644
--- a/pkgs/by-name/le/lemminx/package.nix
+++ b/pkgs/by-name/le/lemminx/package.nix
@@ -46,7 +46,8 @@ maven.buildMavenPackage rec {
     "org.junit.platform:junit-platform-launcher:1.10.0"
   ];
 
-  mvnHash = "sha256-LSnClLdAuqSyyT7O4f4aVaPBxdkkZQz60wTmqwQuzdU=";
+  mvnJdk = jdk_headless;
+  mvnHash = "sha256-jIvYUATcNUZZmZcXbUMqyHGX4CYiXqL0jkji+zrCYJY=";
 
   buildOffline = true;
 
diff --git a/pkgs/by-name/li/libcamera/package.nix b/pkgs/by-name/li/libcamera/package.nix
index c6f470c78953..32eb20ce169c 100644
--- a/pkgs/by-name/li/libcamera/package.nix
+++ b/pkgs/by-name/li/libcamera/package.nix
@@ -68,6 +68,9 @@ stdenv.mkDerivation rec {
     # hotplugging
     systemd
 
+    # pycamera
+    python3Packages.pybind11
+
     # yamlparser
     libyaml
 
@@ -81,7 +84,6 @@ stdenv.mkDerivation rec {
     pkg-config
     python3
     python3Packages.jinja2
-    python3Packages.pybind11
     python3Packages.pyyaml
     python3Packages.ply
     python3Packages.sphinx
diff --git a/pkgs/by-name/li/libcircle/package.nix b/pkgs/by-name/li/libcircle/package.nix
index d176bbacc89f..1ff33ac1ac21 100644
--- a/pkgs/by-name/li/libcircle/package.nix
+++ b/pkgs/by-name/li/libcircle/package.nix
@@ -4,7 +4,6 @@
 , autoreconfHook
 , pkg-config
 , mpi
-, lwgrp
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/by-name/li/libedit/package.nix b/pkgs/by-name/li/libedit/package.nix
index f723ac9656ce..0b4490a46654 100644
--- a/pkgs/by-name/li/libedit/package.nix
+++ b/pkgs/by-name/li/libedit/package.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "libedit";
-  version = "20230828-3.1";
+  version = "20240517-3.1";
 
   src = fetchurl {
     url = "https://thrysoee.dk/editline/libedit-${finalAttrs.version}.tar.gz";
-    hash = "sha256-TugYK25WkpDn0fRPD3jayHFrNfZWt2Uo9pnGnJiBTa0=";
+    hash = "sha256-OkiQl7tBFUlfO9ha54KFK3CXxVbZUACI10tvo429Ev8=";
   };
 
   outputs = [ "out" "dev" "man" ];
diff --git a/pkgs/by-name/li/libetonyek/package.nix b/pkgs/by-name/li/libetonyek/package.nix
index 8ff8349b9d40..393f542a9ea9 100644
--- a/pkgs/by-name/li/libetonyek/package.nix
+++ b/pkgs/by-name/li/libetonyek/package.nix
@@ -12,6 +12,7 @@
 , librevenge
 , libxml2
 , mdds
+, zlib
 }:
 
 stdenv.mkDerivation rec {
@@ -39,6 +40,7 @@ stdenv.mkDerivation rec {
     librevenge
     libxml2
     mdds
+    zlib
   ];
 
   configureFlags = ["--with-mdds=2.1"];
diff --git a/pkgs/by-name/li/libgnome-keyring/package.nix b/pkgs/by-name/li/libgnome-keyring/package.nix
index e845970a6ad7..bc4a26a0079b 100644
--- a/pkgs/by-name/li/libgnome-keyring/package.nix
+++ b/pkgs/by-name/li/libgnome-keyring/package.nix
@@ -1,5 +1,4 @@
-{ lib, stdenv, fetchurl, glib, dbus, libgcrypt, pkg-config, intltool, gobject-introspection, gnome
-, testers
+{ lib, stdenv, fetchurl, glib, dbus, libgcrypt, pkg-config, intltool, gobject-introspection, testers
 }:
 
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/li/libisoburn/package.nix b/pkgs/by-name/li/libisoburn/package.nix
index cc870b72a8a8..7fc8c6aff60f 100644
--- a/pkgs/by-name/li/libisoburn/package.nix
+++ b/pkgs/by-name/li/libisoburn/package.nix
@@ -54,7 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     homepage = "http://libburnia-project.org/";
-    description = "Enables creation and expansion of ISO-9660 filesystems on CD/DVD/BD ";
+    description = "Enables creation and expansion of ISO-9660 filesystems on CD/DVD/BD";
     changelog = "https://dev.lovelyhq.com/libburnia/libisoburn/src/tag/${finalAttrs.src.rev}/ChangeLog";
     license = lib.licenses.gpl2Plus;
     mainProgram = "osirrox";
diff --git a/pkgs/by-name/li/libitl/package.nix b/pkgs/by-name/li/libitl/package.nix
index e1d3a21e7291..8bec704064c5 100644
--- a/pkgs/by-name/li/libitl/package.nix
+++ b/pkgs/by-name/li/libitl/package.nix
@@ -2,7 +2,6 @@
 , stdenv
 , fetchFromGitHub
 , cmake
-, fetchpatch
 }:
 
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/li/librime-octagram/package.nix b/pkgs/by-name/li/librime-octagram/package.nix
new file mode 100644
index 000000000000..b1b96d5eea6c
--- /dev/null
+++ b/pkgs/by-name/li/librime-octagram/package.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  nix-update-script,
+}:
+
+stdenvNoCC.mkDerivation {
+  pname = "librime-octagram";
+  version = "0-unstable-2024-02-05";
+
+  src = fetchFromGitHub {
+    owner = "lotem";
+    repo = "librime-octagram";
+    rev = "bd12863f45fbbd5c7db06d5ec8be8987b10253bf";
+    hash = "sha256-77g72tee4ahNcu3hfW1Okqr9z8Y6WrPgUhw316O72Ng=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir $out
+    cp --archive --verbose * $out
+
+    runHook postInstall
+  '';
+
+  passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
+
+  meta = {
+    description = "RIME essay grammar plugin";
+    homepage = "https://github.com/lotem/librime-octagram";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ azuwis ];
+  };
+}
diff --git a/pkgs/by-name/li/libtapi/0001-Check-for-no_exported_symbols-linker-support.patch b/pkgs/by-name/li/libtapi/0001-Check-for-no_exported_symbols-linker-support.patch
new file mode 100644
index 000000000000..1a1c77e6ce9e
--- /dev/null
+++ b/pkgs/by-name/li/libtapi/0001-Check-for-no_exported_symbols-linker-support.patch
@@ -0,0 +1,37 @@
+From e954aacbc075355419f5fc99db61f68aca1fcfe4 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Fri, 5 Apr 2024 14:16:40 -0400
+Subject: [PATCH 1/3] Check for -no_exported_symbols linker support
+
+---
+ CMakeLists.txt | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/tapi/CMakeLists.txt b/tapi/CMakeLists.txt
+index 62affdf..82426de 100644
+--- a/tapi/CMakeLists.txt
++++ b/tapi/CMakeLists.txt
+@@ -73,6 +73,9 @@ llvm_check_linker_flag(CXX "-Wl,-no_inits" LINKER_SUPPORTS_NO_INITS)
+ llvm_check_linker_flag(CXX "-Wl,-iosmac_version_min,13.0" LINKER_SUPPORTS_IOSMAC)
+ # MARZIPAN RENAME
+ 
++# Older versions of ld64 (e.g., in the Darwin bootstrap) do not support this flag.
++llvm_check_linker_flag(CXX "-Wl,-no_exported_symbols" LINKER_SUPPORTS_NO_EXPORTED_SYMBOLS)
++
+ # Check if i386 is supported.
+ SET(CMAKE_OLD_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+ SET(CMAKE_OLD_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
+@@ -160,7 +163,9 @@ endmacro(add_tapi_library)
+ macro(add_tapi_executable name)
+   add_llvm_executable(${name} ${ARGN})
+   set_target_properties(${name} PROPERTIES FOLDER "Tapi executables")
+-  target_link_options(${name} PRIVATE "-Wl,-no_exported_symbols")
++  if(LINKER_SUPPORTS_NO_EXPORTED_SYMBOLS)
++    target_link_options(${name} PRIVATE "-Wl,-no_exported_symbols")
++  endif()
+ endmacro(add_tapi_executable)
+ 
+ function(tapi_clang_tablegen)
+-- 
+2.42.0
+
diff --git a/pkgs/by-name/li/libtapi/0002-Pass-fileType-to-writeToStream.patch b/pkgs/by-name/li/libtapi/0002-Pass-fileType-to-writeToStream.patch
new file mode 100644
index 000000000000..ffcedb0c6f6e
--- /dev/null
+++ b/pkgs/by-name/li/libtapi/0002-Pass-fileType-to-writeToStream.patch
@@ -0,0 +1,25 @@
+From 77ca537cfc61765f2109c626757f2da8de602ce0 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Fri, 5 Apr 2024 23:20:32 -0400
+Subject: [PATCH 2/3] Pass fileType to writeToStream
+
+---
+ lib/Core/JSONReaderWriter.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tapi/lib/Core/JSONReaderWriter.cpp b/tapi/lib/Core/JSONReaderWriter.cpp
+index c040670..c1be85f 100644
+--- a/tapi/lib/Core/JSONReaderWriter.cpp
++++ b/tapi/lib/Core/JSONReaderWriter.cpp
+@@ -57,7 +57,7 @@ Error JSONWriter::writeFile(raw_ostream &os, const InterfaceFile *file,
+   if (file == nullptr)
+     return errorCodeToError(std::make_error_code(std::errc::invalid_argument));
+ 
+-  return TextAPIWriter::writeToStream(os, *file, /*Compact=*/false);
++  return TextAPIWriter::writeToStream(os, *file, fileType, /*Compact=*/false);
+ }
+ 
+ TAPI_NAMESPACE_INTERNAL_END
+-- 
+2.42.0
+
diff --git a/pkgs/by-name/li/libtapi/0003-Match-designator-order-with-declaration-order.patch b/pkgs/by-name/li/libtapi/0003-Match-designator-order-with-declaration-order.patch
new file mode 100644
index 000000000000..2883af0a5228
--- /dev/null
+++ b/pkgs/by-name/li/libtapi/0003-Match-designator-order-with-declaration-order.patch
@@ -0,0 +1,28 @@
+From b69038edb2e0ace9128407ab3ee7bc1001ffd751 Mon Sep 17 00:00:00 2001
+From: Randy Eckenrode <randy@largeandhighquality.com>
+Date: Sun, 7 Apr 2024 19:23:24 -0400
+Subject: [PATCH 3/3] Match designator order with declaration order
+
+---
+ lib/Core/Demangler.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tapi/lib/Core/Demangler.cpp b/tapi/lib/Core/Demangler.cpp
+index d85899a..f5c485a 100644
+--- a/tapi/lib/Core/Demangler.cpp
++++ b/tapi/lib/Core/Demangler.cpp
+@@ -30,9 +30,10 @@ bool Demangler::isItaniumEncoding(StringRef mangledName) {
+   return mangledName.startswith("_Z") || mangledName.startswith("___Z");
+ }
+ 
++
+ DemangledName Demangler::demangle(StringRef mangledName) {
+   DemangledName result{
+-      .str = mangledName.str(), .isSwift = false, .isItanium = false};
++      .str = mangledName.str(), .isItanium = false, .isSwift = false};
+   char *demangled = nullptr;
+ 
+   if (isItaniumEncoding(mangledName)) {
+-- 
+2.42.0
+
diff --git a/pkgs/by-name/li/libtapi/package.nix b/pkgs/by-name/li/libtapi/package.nix
new file mode 100644
index 000000000000..b11de1756c90
--- /dev/null
+++ b/pkgs/by-name/li/libtapi/package.nix
@@ -0,0 +1,184 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchpatch,
+  cmake,
+  ninja,
+  python3,
+  zlib,
+}:
+
+let
+  # libtapi is only supported building against Apple’s LLVM fork pinned to a specific revision.
+  # It can’t be built against upstream LLVM because it uses APIs that are specific to Apple’s fork.
+  # See: https://github.com/apple-oss-distributions/tapi/blob/main/Readme.md
+
+  # Apple’s LLVM fork uses its own versioning scheme.
+  # See: https://en.wikipedia.org/wiki/Xcode#Toolchain_versions
+  # Note: Can’t use a sparse checkout because the Darwin stdenv bootstrap can’t depend on fetchgit.
+  appleLlvm = {
+    version = "15.0.0"; # As reported by upstream’s `tapi --version`.
+    rev = "2b5ff47e44b059c03de5779479d01a133ab4d581"; # Per the TAPI repo.
+    hash = "sha256-X37zBbpSEWmqtdTXsd1t++gp+0ggA8YtB73fGKNaiR0=";
+  };
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "libtapi";
+  version = "1500.0.12.3";
+
+  outputs = [
+    "out"
+    "bin"
+    "dev"
+  ];
+
+  srcs = [
+    (fetchFromGitHub {
+      name = "tapi-src";
+      owner = "apple-oss-distributions";
+      repo = "tapi";
+      rev = "tapi-${finalAttrs.version}";
+      hash = "sha256-YeaA2OeSY1fXYJHPJJ0TrVC1brspSvutBtPMPGX6Y1o=";
+    })
+    # libtapi can’t avoid pulling the whole repo even though it needs only a couple of folders because
+    # `fetchgit` can’t be used in the Darwin bootstrap.
+    (fetchFromGitHub {
+      name = "apple-llvm-src";
+      owner = "apple";
+      repo = "llvm-project";
+      inherit (appleLlvm) rev hash;
+    })
+  ];
+
+  patches = [
+    # Older versions of ld64 may not support `-no_exported_symbols`, so use it only
+    # when the linker supports it.
+    # Note: This can be dropped once the bootstrap tools are updated after the ld64 update.
+    ./0001-Check-for-no_exported_symbols-linker-support.patch
+    # The recommended upstream revision of Apple’s LLVM fork needs this patch, or
+    # `tapi stubify` will crash when generating stubs.
+    (fetchpatch {
+      url = "https://github.com/apple/llvm-project/commit/455bf3d1ccd6a52df5e38103532c1b8f49924edc.patch";
+      hash = "sha256-ujZcfdAls20JPIvjvO2Xv8st8cNTY/XTEQusICKBKSA";
+    })
+    # Updates `JSONReaderWriter` to work with the API change in the above patch.
+    ./0002-Pass-fileType-to-writeToStream.patch
+    # Fix build on Linux. GCC is more picky than clang about the field order.
+    ./0003-Match-designator-order-with-declaration-order.patch
+  ];
+
+  postPatch =
+    ''
+      # Enable building on non-Darwin platforms
+      substituteInPlace tapi/CMakeLists.txt \
+        --replace-fail 'message(FATAL_ERROR "Unsupported configuration.")' ""
+
+      # Remove the client limitation on linking to libtapi.dylib.
+      substituteInPlace tapi/tools/libtapi/CMakeLists.txt \
+        --replace-fail '-allowable_client ld' ""
+      # Replace hard-coded installation paths with standard ones.
+      declare -A installdirs=(
+        [bin]=BINDIR
+        [include]=INCLUDEDIR
+        [lib]=LIBDIR
+        [local/bin]=BINDIR
+        [local/share/man]=MANDIR
+        [share/man]=MANDIR
+      )
+      for dir in "''${!installdirs[@]}"; do
+        cmakevar=CMAKE_INSTALL_''${installdirs[$dir]}
+        for cmakelist in $(grep -rl "DESTINATION $dir" tapi); do
+          substituteInPlace "$cmakelist" \
+            --replace-fail "DESTINATION $dir" "DESTINATION \''${$cmakevar}"
+        done
+      done
+      # Doesn’t seem to exist publically.
+      substituteInPlace tapi/test/CMakeLists.txt \
+        --replace-fail tapi-configs ""
+    ''
+    + lib.optionalString stdenv.isLinux ''
+      # Remove Darwin-specific versioning flags.
+      substituteInPlace tapi/tools/libtapi/CMakeLists.txt \
+          --replace-fail '-current_version ''${DYLIB_VERSION} -compatibility_version 1' ""
+    '';
+
+  preUnpack = ''
+    mkdir source
+  '';
+
+  sourceRoot = "source";
+
+  postUnpack = ''
+    chmod -R u+w apple-llvm-src tapi-src
+    mv apple-llvm-src/{clang,cmake,llvm,utils} source
+    mv tapi-src source/tapi
+  '';
+
+  strictDeps = true;
+
+  buildInputs = [ zlib ]; # Upstream links against zlib in their distribution.
+
+  nativeBuildInputs = [
+    cmake
+    ninja
+    python3
+  ];
+
+  cmakeDir = "../llvm";
+
+  cmakeFlags = [
+    (lib.cmakeFeature "LLVM_ENABLE_PROJECTS" "clang;tapi")
+    (lib.cmakeFeature "LLVM_EXTERNAL_PROJECTS" "tapi")
+    (lib.cmakeBool "TAPI_INCLUDE_DOCS" true)
+    # Matches the version string format reported by upstream `tapi`.
+    (lib.cmakeFeature "TAPI_REPOSITORY_STRING" "tapi-${finalAttrs.version}")
+    (lib.cmakeFeature "TAPI_FULL_VERSION" appleLlvm.version)
+    # Match the versioning used by Apple’s LLVM fork (primarily used for .so versioning).
+    (lib.cmakeFeature "LLVM_VERSION_MAJOR" (lib.versions.major appleLlvm.version))
+    (lib.cmakeFeature "LLVM_VERSION_MINOR" (lib.versions.minor appleLlvm.version))
+    (lib.cmakeFeature "LLVM_VERSION_PATCH" (lib.versions.patch appleLlvm.version))
+    (lib.cmakeFeature "LLVM_VERSION_SUFFIX" "")
+    # Upstream `tapi` does not link against ncurses. Disable it explicitly to make sure
+    # it is not detected incorrectly from the bootstrap tools tarball.
+    (lib.cmakeBool "LLVM_ENABLE_TERMINFO" false)
+    # Disabling the benchmarks avoids a failure during the configure phase because
+    # the sparse checkout does not include the benchmarks.
+    (lib.cmakeBool "LLVM_INCLUDE_BENCHMARKS" false)
+    # tapi’s tests expect to target macOS 13.0 and build both x86_64 and universal
+    # binaries regardless of the host platform.
+    (lib.cmakeBool "LLVM_INCLUDE_TESTS" false)
+    (lib.cmakeBool "TAPI_INCLUDE_TESTS" false)
+  ];
+
+  ninjaFlags = [
+    "libtapi"
+    "tapi-sdkdb"
+    "tapi"
+  ];
+
+  installTargets = [
+    "install-libtapi"
+    "install-tapi-docs"
+    "install-tapi-headers"
+    "install-tapi-sdkdb"
+    "install-tapi"
+  ];
+
+  postInstall = ''
+    # The man page is installed for these, but they’re not included in the source release.
+    rm $bin/share/man/man1/tapi-analyze.1 $bin/share/man/man1/tapi-api-verify.1
+  '';
+
+  meta = {
+    description = "Replaces the Mach-O Dynamic Library Stub files in Apple's SDKs to reduce the size";
+    homepage = "https://github.com/apple-oss-distributions/tapi/";
+    license = lib.licenses.ncsa;
+    mainProgram = "tapi";
+    maintainers = with lib.maintainers; [
+      matthewbauer
+      reckenrode
+    ];
+    platforms = lib.platforms.unix;
+  };
+})
diff --git a/pkgs/by-name/li/libusbmuxd/package.nix b/pkgs/by-name/li/libusbmuxd/package.nix
new file mode 100644
index 000000000000..cb77300acec0
--- /dev/null
+++ b/pkgs/by-name/li/libusbmuxd/package.nix
@@ -0,0 +1,43 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  autoreconfHook,
+  pkg-config,
+  libplist,
+  libimobiledevice-glue,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libusbmuxd";
+  version = "2.1.0";
+
+  src = fetchFromGitHub {
+    owner = "libimobiledevice";
+    repo = pname;
+    rev = version;
+    hash = "sha256-coQqNGPsqrOYbBjO0eQZQNK8ZTB+ZzfMWvQ6Z1by9PY=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkg-config
+  ];
+
+  buildInputs = [
+    libplist
+    libimobiledevice-glue
+  ];
+
+  preAutoreconf = ''
+    export RELEASE_VERSION=${version}
+  '';
+
+  meta = {
+    description = "Client library to multiplex connections from and to iOS devices";
+    homepage = "https://github.com/libimobiledevice/libusbmuxd";
+    license = lib.licenses.lgpl21Plus;
+    platforms = lib.platforms.unix;
+    maintainers = [ ];
+  };
+}
diff --git a/pkgs/by-name/li/live-server/package.nix b/pkgs/by-name/li/live-server/package.nix
new file mode 100644
index 000000000000..b7c1152d6a56
--- /dev/null
+++ b/pkgs/by-name/li/live-server/package.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  stdenv,
+  rustPlatform,
+  fetchFromGitHub,
+  darwin,
+  openssl,
+  pkg-config,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "live-server";
+  version = "0.7.0";
+
+  src = fetchFromGitHub {
+    owner = "lomirus";
+    repo = "live-server";
+    rev = "v${version}";
+    hash = "sha256-BSAsD9nRlHaTDbBpLBxN9OOQ9SekRwQeYUWV1CZO4oY=";
+  };
+
+  cargoHash = "sha256-RwueYpa/CMriSOWwGZhkps6jHmqOdRuz+ECRq/ThPs0=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        CoreServices
+        SystemConfiguration
+      ]
+    );
+
+  meta = with lib; {
+    description = "Local network server with live reload feature for static pages";
+    downloadPage = "https://github.com/lomirus/live-server/releases";
+    homepage = "https://github.com/lomirus/live-server";
+    license = licenses.mit;
+    mainProgram = "live-server";
+    maintainers = [ maintainers.philiptaron ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/li/live555/package.nix b/pkgs/by-name/li/live555/package.nix
index 232780a52498..8e9574376b24 100644
--- a/pkgs/by-name/li/live555/package.nix
+++ b/pkgs/by-name/li/live555/package.nix
@@ -1,6 +1,6 @@
 {
   lib,
-  darwin,
+  cctools,
   fetchpatch,
   fetchurl,
   openssl,
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   nativeBuildInputs = lib.optionals stdenv.isDarwin [
-    darwin.cctools
+    cctools
   ];
 
   buildInputs = [
diff --git a/pkgs/by-name/ll/llama-cpp/package.nix b/pkgs/by-name/ll/llama-cpp/package.nix
index 210df98acce3..69ee327cae06 100644
--- a/pkgs/by-name/ll/llama-cpp/package.nix
+++ b/pkgs/by-name/ll/llama-cpp/package.nix
@@ -23,6 +23,7 @@
 , metalSupport ? stdenv.isDarwin && stdenv.isAarch64 && !openclSupport
 , vulkanSupport ? false
 , rpcSupport ? false
+, shaderc
 , vulkan-headers
 , vulkan-loader
 , ninja
@@ -61,6 +62,7 @@ let
   ];
 
   vulkanBuildInputs = [
+    shaderc
     vulkan-headers
     vulkan-loader
   ];
diff --git a/pkgs/by-name/lm/lmstudio/darwin.nix b/pkgs/by-name/lm/lmstudio/darwin.nix
index dae243747292..2a96f05bebe6 100644
--- a/pkgs/by-name/lm/lmstudio/darwin.nix
+++ b/pkgs/by-name/lm/lmstudio/darwin.nix
@@ -1,7 +1,6 @@
 { stdenv
 , fetchurl
 , undmg
-, lib
 , meta
 , pname
 , version
diff --git a/pkgs/by-name/lm/lmstudio/linux.nix b/pkgs/by-name/lm/lmstudio/linux.nix
index d5647e72caaa..f4ed1b048000 100644
--- a/pkgs/by-name/lm/lmstudio/linux.nix
+++ b/pkgs/by-name/lm/lmstudio/linux.nix
@@ -1,5 +1,4 @@
-{ lib
-, appimageTools
+{ appimageTools
 , fetchurl
 , version
 , pname
diff --git a/pkgs/by-name/lo/lollypop/package.nix b/pkgs/by-name/lo/lollypop/package.nix
new file mode 100644
index 000000000000..9a07d38e6bf2
--- /dev/null
+++ b/pkgs/by-name/lo/lollypop/package.nix
@@ -0,0 +1,120 @@
+{
+  lib,
+  fetchFromGitLab,
+  nix-update-script,
+  meson,
+  ninja,
+  pkg-config,
+  python3,
+  gtk3,
+  gst_all_1,
+  libhandy,
+  libsecret,
+  libsoup_3,
+  appstream-glib,
+  desktop-file-utils,
+  totem-pl-parser,
+  gobject-introspection,
+  glib-networking,
+  gdk-pixbuf,
+  glib,
+  pango,
+  kid3,
+  wrapGAppsHook3,
+  lastFMSupport ? true,
+  youtubeSupport ? true,
+  kid3Support ? true,
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "lollypop";
+  version = "1.4.40";
+
+  format = "other";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "World";
+    repo = pname;
+    rev = version;
+    fetchSubmodules = true;
+    hash = "sha256-hdReviNgcigXuNqJns6aPW+kixlpmRXtqrLlm/LGHBo=";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook3
+  ];
+
+  buildInputs =
+    (with gst_all_1; [
+      gst-libav
+      gst-plugins-bad
+      gst-plugins-base
+      gst-plugins-good
+      gst-plugins-ugly
+      gstreamer
+
+    ])
+    ++ [
+      gdk-pixbuf
+      glib
+      glib-networking
+      gtk3
+      libhandy
+      libsoup_3
+      pango
+      totem-pl-parser
+    ]
+    ++ lib.optional lastFMSupport libsecret;
+
+  propagatedBuildInputs =
+    (with python3.pkgs; [
+      beautifulsoup4
+      pillow
+      pycairo
+      pygobject3
+    ])
+    ++ lib.optional lastFMSupport python3.pkgs.pylast
+    ++ lib.optional youtubeSupport python3.pkgs.yt-dlp
+    ++ lib.optional kid3Support kid3;
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  postFixup = ''
+    wrapPythonProgramsIn $out/libexec "$out $propagatedBuildInputs"
+  '';
+
+  strictDeps = false;
+
+  # Produce only one wrapper using wrap-python passing
+  # gappsWrapperArgs to wrap-python additional wrapper
+  # argument
+  dontWrapGApps = true;
+
+  preFixup = ''
+    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    changelog = "https://gitlab.gnome.org/World/lollypop/tags/${version}";
+    description = "Modern music player for GNOME";
+    homepage = "https://gitlab.gnome.org/World/lollypop";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ lovesegfault ];
+    platforms = lib.platforms.linux;
+    mainProgram = "lollypop";
+  };
+}
diff --git a/pkgs/by-name/lx/lxd-ui/package.nix b/pkgs/by-name/lx/lxd-ui/package.nix
index e946fceaedde..70b85e236488 100644
--- a/pkgs/by-name/lx/lxd-ui/package.nix
+++ b/pkgs/by-name/lx/lxd-ui/package.nix
@@ -12,18 +12,18 @@
 
 stdenv.mkDerivation rec {
   pname = "lxd-ui";
-  version = "0.11";
+  version = "0.12";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "lxd-ui";
     rev = "refs/tags/${version}";
-    hash = "sha256-PBCWZG8Yxjiw3cGLEfMBJZnHsc4hMZHdq7OqaJ8HYJY=";
+    hash = "sha256-dVTUme+23HaONcvfcgen/y1S0D91oYmgGLGfRcAMJSw=";
   };
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    hash = "sha256-X0xBYhoUKZe8GBqbRAfSE9o63FoAXIYTjzzDHMAygBI=";
+    hash = "sha256-lPBkGKK6C6C217wqvOoC7on/Dzmk3NkdIkMDMF9CRNQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix b/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
index 77b7e00b0618..98ab599b9ddc 100644
--- a/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
+++ b/pkgs/by-name/ma/maa-assistant-arknights/fastdeploy-ppocr.nix
@@ -1,7 +1,6 @@
 {
   stdenv,
   config,
-  pkgs,
   lib,
   fetchFromGitHub,
   cmake,
diff --git a/pkgs/by-name/ma/major-mono-display/package.nix b/pkgs/by-name/ma/major-mono-display/package.nix
new file mode 100644
index 000000000000..1bfca85b1c54
--- /dev/null
+++ b/pkgs/by-name/ma/major-mono-display/package.nix
@@ -0,0 +1,39 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "major-mono-display";
+  version = "2.000";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "majormono";
+    rev = "fae0bb9c728fe082097baedaf23604e290ddac16";
+    hash = "sha256-ishGGr8bY6UjEG/Hn5We8hOO5mcDq/41+DMn+dQGGUA=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 -t $out/share/fonts/truetype fonts/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Monospaced geometric sans serif all-uppercase typeface";
+    longDescription = ''
+      Majör is a monospaced geometric sans serif all-uppercase typeface
+      which also has a complete set of constructivist display characters
+      with a playful attitude. It has many Opentype features but the basic
+      variation between serious/playful faces can be implemented on web use
+      where Opentype features can be hard to apply, thanks to the fact that
+      the sans serif and the display versions of the letterforms can be
+      reached via lowercase and uppercase options. This makes Majör a great
+      choice for web typography, especially at large point-sizes.
+    '';
+    homepage = "https://github.com/googlefonts/majormono";
+    license = lib.licenses.ofl;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ mimvoid ];
+  };
+}
diff --git a/pkgs/by-name/ma/mangal/package.nix b/pkgs/by-name/ma/mangal/package.nix
new file mode 100644
index 000000000000..c1d7c1540508
--- /dev/null
+++ b/pkgs/by-name/ma/mangal/package.nix
@@ -0,0 +1,47 @@
+{
+  lib,
+  stdenv,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+}:
+buildGoModule rec {
+  pname = "mangal";
+  version = "4.0.6";
+
+  src = fetchFromGitHub {
+    owner = "metafates";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-nbJdePlzZFM2ihbvFIMKyYZ9C0uKjU3TE5VLduLvtKE=";
+  };
+
+  proxyVendor = true;
+  vendorHash = null;
+
+  ldflags = [
+    "-s"
+    "-w"
+  ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
+    # Mangal creates a config file in the folder ~/.config/mangal and fails if not possible
+    export HOME=$(mktemp -d)
+    installShellCompletion --cmd mangal \
+      --bash <($out/bin/mangal completion bash) \
+      --zsh <($out/bin/mangal completion zsh) \
+      --fish <($out/bin/mangal completion fish)
+  '';
+
+  doCheck = false; # test fail because of sandbox
+
+  meta = with lib; {
+    description = "CLI app written in Go which scrapes, downloads and packs manga into different formats";
+    homepage = "https://github.com/metafates/mangal";
+    license = licenses.mit;
+    maintainers = [ maintainers.bertof ];
+    mainProgram = "mangal";
+  };
+}
diff --git a/pkgs/by-name/ma/mariadb-connector-java/package.nix b/pkgs/by-name/ma/mariadb-connector-java/package.nix
index 3fa6f7a5186c..6d39657ab826 100644
--- a/pkgs/by-name/ma/mariadb-connector-java/package.nix
+++ b/pkgs/by-name/ma/mariadb-connector-java/package.nix
@@ -6,16 +6,16 @@
 
 maven.buildMavenPackage rec {
   pname = "mariadb-connector-java";
-  version = "3.4.0";
+  version = "3.4.1";
 
   src = fetchFromGitHub {
     owner = "mariadb-corporation";
     repo = "mariadb-connector-j";
     rev = "refs/tags/${version}";
-    hash = "sha256-4DsRTXjSKgC/mz3divnqdioFQnqgQXwRKNv4xxvH0H8=";
+    hash = "sha256-MDC0flAD56cXLiLNytbjp0au1NACugFNEpHxbucZO4U=";
   };
 
-  mvnHash = "sha256-7O+G5HT6mtp12zWL3Gn12KPVUwp3GMaWGvXX6Sg1+6k=";
+  mvnHash = "sha256-kwKL37LCv4rQYc4bYdyP1tOaovJ8pSp7p52nuk10z/U=";
 
   doCheck = false; # Requires networking
 
diff --git a/pkgs/by-name/ma/markdown-oxide/Cargo.lock b/pkgs/by-name/ma/markdown-oxide/Cargo.lock
index 74fc34f93894..8ebe7f14ce2b 100644
--- a/pkgs/by-name/ma/markdown-oxide/Cargo.lock
+++ b/pkgs/by-name/ma/markdown-oxide/Cargo.lock
@@ -336,6 +336,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "do-notation"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e16a80c1dda2cf52fa07106427d3d798b6331dca8155fcb8c39f7fc78f6dd2"
+
+[[package]]
 name = "either"
 version = "1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -434,6 +440,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "fuzzydate"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7265f35cc1f40c655aad829323a1daef5f21fd38904f6ed9bd5ec3df3cbd851c"
+dependencies = [
+ "chrono",
+ "lazy_static",
+ "thiserror",
+]
+
+[[package]]
 name = "generic-array"
 version = "0.14.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -532,9 +549,9 @@ dependencies = [
 
 [[package]]
 name = "itertools"
-version = "0.10.5"
+version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
 dependencies = [
  "either",
 ]
@@ -625,11 +642,13 @@ dependencies = [
 
 [[package]]
 name = "markdown-oxide"
-version = "0.1.0"
+version = "0.23.1"
 dependencies = [
  "anyhow",
  "chrono",
  "config",
+ "do-notation",
+ "fuzzydate",
  "indexmap",
  "itertools",
  "nanoid",
diff --git a/pkgs/by-name/ma/markdown-oxide/package.nix b/pkgs/by-name/ma/markdown-oxide/package.nix
index 58a1453ef7fd..481dc7f402dc 100644
--- a/pkgs/by-name/ma/markdown-oxide/package.nix
+++ b/pkgs/by-name/ma/markdown-oxide/package.nix
@@ -1,17 +1,18 @@
-{ lib
-, rustPlatform
-, fetchFromGitHub
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
 }:
 
-rustPlatform.buildRustPackage rec {
+rustPlatform.buildRustPackage {
   pname = "markdown-oxide";
-  version = "0.0.21";
+  version = "0.23.1-unstable-2024-07-20";
 
   src = fetchFromGitHub {
     owner = "Feel-ix-343";
     repo = "markdown-oxide";
-    rev = "v${version}";
-    hash = "sha256-PrsTHAlFFeqyZTsoKvoe19P2ed7xDtOlBgoKftFytVw=";
+    rev = "0f1542a54a44de8313087f6c60e6ecd54f52ede5";
+    hash = "sha256-zxJZnhN2cN3sNd+PHi2jYuHDDA4ekEVIi3X52Z/8TGM=";
   };
 
   cargoLock = {
@@ -24,8 +25,11 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "Markdown LSP server inspired by Obsidian";
     homepage = "https://github.com/Feel-ix-343/markdown-oxide";
-    license = with licenses; [ cc0 ];
-    maintainers = with maintainers; [ linsui ];
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [
+      linsui
+      jukremer
+    ];
     mainProgram = "markdown-oxide";
   };
 }
diff --git a/pkgs/by-name/ma/markuplinkchecker/package.nix b/pkgs/by-name/ma/markuplinkchecker/package.nix
new file mode 100644
index 000000000000..f42ea53ff992
--- /dev/null
+++ b/pkgs/by-name/ma/markuplinkchecker/package.nix
@@ -0,0 +1,55 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  openssl,
+  stdenv,
+  darwin,
+}:
+let
+  version = "0.18.0";
+in
+rustPlatform.buildRustPackage {
+  pname = "markuplinkchecker";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "becheran";
+    repo = "mlc";
+    rev = "v${version}";
+    hash = "sha256-hMS0ZX4Ta1xq5e8R7mvmOQCEW3UCk1nd2TGzWOyOGY8=";
+  };
+
+  cargoHash = "sha256-adJZcuUynxYpj2h6YKozb6W/2WjNsWq9IwxJaIVl0YI=";
+
+  nativeBuildInputs = [ pkg-config ];
+
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.isDarwin (
+      with darwin.apple_sdk.frameworks;
+      [
+        Security
+        SystemConfiguration
+      ]
+    );
+
+  env = {
+    OPENSSL_NO_VENDOR = true;
+  };
+
+  doCheck = false; # tests require an internet connection
+
+  meta = {
+    description = "Check for broken links in markup files";
+    homepage = "https://github.com/becheran/mlc";
+    changelog = "https://github.com/becheran/mlc/blob/v${version}/CHANGELOG.md";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      uncenter
+      anas
+    ];
+    mainProgram = "mlc";
+  };
+}
diff --git a/pkgs/by-name/ma/marwaita-red/package.nix b/pkgs/by-name/ma/marwaita-red/package.nix
index 55d7cb136d24..bb647ae1977c 100644
--- a/pkgs/by-name/ma/marwaita-red/package.nix
+++ b/pkgs/by-name/ma/marwaita-red/package.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "marwaita-red";
-  version = "20.2-unstable-2024-07-01";
+  version = "20.3.1";
 
   src = fetchFromGitHub {
     owner = "darkomarko42";
     repo = pname;
-    rev = "79c65e37774395f7fa51ed1416874aa78f768d54";
-    hash = "sha256-GmVen97oJel4KVm+IwV8GTemIyHnQ4XjvGclUjdGDvw=";
+    rev = version;
+    hash = "sha256-cMZDd/WQFrfr6Zrq1/1It26OmML3cf7+ZU/I8IMjuX4=";
   };
 
   buildInputs = [
diff --git a/pkgs/by-name/ma/matrix-gtk-theme/package.nix b/pkgs/by-name/ma/matrix-gtk-theme/package.nix
new file mode 100644
index 000000000000..77283781bcaa
--- /dev/null
+++ b/pkgs/by-name/ma/matrix-gtk-theme/package.nix
@@ -0,0 +1,123 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  gnome,
+  sassc,
+  gnome-themes-extra,
+  gtk-engine-murrine,
+  unstableGitUpdater,
+  colorVariants ? [ ],
+  sizeVariants ? [ ],
+  themeVariants ? [ ],
+  tweakVariants ? [ ],
+  iconVariants ? [ ],
+}:
+
+let
+  pname = "matrix-gtk-theme";
+  colorVariantList = [
+    "dark"
+    "light"
+  ];
+  sizeVariantList = [
+    "compact"
+    "standard"
+  ];
+  themeVariantList = [
+    "default"
+    "green"
+    "grey"
+    "orange"
+    "pink"
+    "purple"
+    "red"
+    "teal"
+    "yellow"
+    "all"
+  ];
+  tweakVariantList = [
+    "neo"
+    "trinity"
+    "black"
+    "float"
+    "outline"
+    "macos"
+  ];
+  iconVariantList = [
+    "Dark"
+    "Light"
+    "Sweet"
+  ];
+in
+lib.checkListOfEnum "${pname}: colorVariants" colorVariantList colorVariants lib.checkListOfEnum
+  "${pname}: sizeVariants"
+  sizeVariantList
+  sizeVariants
+  lib.checkListOfEnum
+  "${pname}: themeVariants"
+  themeVariantList
+  themeVariants
+  lib.checkListOfEnum
+  "${pname}: tweakVariants"
+  tweakVariantList
+  tweakVariants
+  lib.checkListOfEnum
+  "${pname}: iconVariants"
+  iconVariantList
+  iconVariants
+
+  stdenvNoCC.mkDerivation
+  {
+    inherit pname;
+    version = "0-unstable-2024-07-22";
+
+    src = fetchFromGitHub {
+      owner = "D3vil0p3r";
+      repo = "Matrix-GTK-Theme";
+      rev = "f453093dffa0f46596b325c6a760afd6ea6cd810";
+      hash = "sha256-DfM4nsJZvcNyUUn0opu3OM46sxhsjeeyuUuliQPrU0I=";
+    };
+
+    propagatedUserEnvPkgs = [ gtk-engine-murrine ];
+
+    nativeBuildInputs = [
+      gnome.gnome-shell
+      sassc
+    ];
+    buildInputs = [ gnome-themes-extra ];
+
+    dontBuild = true;
+
+    passthru.updateScript = unstableGitUpdater { };
+
+    postPatch = ''
+      patchShebangs themes/install.sh
+    '';
+
+    installPhase = ''
+      runHook preInstall
+      mkdir -p $out/share/themes
+      cd themes
+      ./install.sh -n Matrix \
+      ${lib.optionalString (colorVariants != [ ]) "-c " + toString colorVariants} \
+      ${lib.optionalString (sizeVariants != [ ]) "-s " + toString sizeVariants} \
+      ${lib.optionalString (themeVariants != [ ]) "-t " + toString themeVariants} \
+      ${lib.optionalString (tweakVariants != [ ]) "--tweaks " + toString tweakVariants} \
+      -d "$out/share/themes"
+      cd ../icons
+      ${lib.optionalString (iconVariants != [ ]) ''
+        mkdir -p $out/share/icons
+        cp -a ${toString (map (v: "Matrix-${v}") iconVariants)} $out/share/icons/
+      ''}
+      runHook postInstall
+    '';
+
+    meta = {
+      description = "GTK theme based on the Matrix colour palette";
+      homepage = "https://github.com/D3vil0p3r/Matrix-GTK-Theme";
+      license = lib.licenses.gpl3Plus;
+      maintainers = with lib.maintainers; [ d3vil0p3r ];
+      platforms = lib.platforms.unix;
+    };
+  }
diff --git a/pkgs/by-name/ma/maturin/package.nix b/pkgs/by-name/ma/maturin/package.nix
index 64f5639dc851..0a1087421c41 100644
--- a/pkgs/by-name/ma/maturin/package.nix
+++ b/pkgs/by-name/ma/maturin/package.nix
@@ -13,16 +13,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "maturin";
-  version = "1.6.0";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "PyO3";
     repo = "maturin";
     rev = "v${version}";
-    hash = "sha256-cKX5fDPQElNLAur2PF6J5050QnMNrazMTCVtGmjwmxQ=";
+    hash = "sha256-SjINeNtCbyMp3U+Op7ey+8lV7FYxLVpmO5g1a01ouBs=";
   };
 
-  cargoHash = "sha256-EuMPcJAGz564cC9UWrlihBxRUJCtqw4jvP/SQgx2L/0=";
+  cargoHash = "sha256-xJafCgpCeihyORj3gIVUus74vu9h3N1xuyKvkxSqYK4=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
diff --git a/pkgs/by-name/ma/mautrix-meta/package.nix b/pkgs/by-name/ma/mautrix-meta/package.nix
index 8a82adf188fd..17639dc432e3 100644
--- a/pkgs/by-name/ma/mautrix-meta/package.nix
+++ b/pkgs/by-name/ma/mautrix-meta/package.nix
@@ -1,5 +1,4 @@
 { buildGoModule
-, config
 , fetchFromGitHub
 , lib
 , nixosTests
diff --git a/pkgs/by-name/md/md-tui/package.nix b/pkgs/by-name/md/md-tui/package.nix
index 6530ed3f4b7f..0149042406d5 100644
--- a/pkgs/by-name/md/md-tui/package.nix
+++ b/pkgs/by-name/md/md-tui/package.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "md-tui";
-  version = "0.8.1";
+  version = "0.8.3";
 
   src = fetchFromGitHub {
     owner = "henriklovhaug";
     repo = "md-tui";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AwJvB1xLsJCr+r0RJi8jH50QlPq7mbUibvmvYZJi9XE=";
+    hash = "sha256-21h1r6rhjFTOhebMS9PO3/OLKKEeFPVpWThFdgxKhh4=";
   };
 
-  cargoHash = "sha256-QapogSDuAiQWbCFFwPiaSpvLHn0oRLwBEBuB44MN/t0=";
+  cargoHash = "sha256-wONvublKzJnVVUjf1z9V4RwSkHg+HSoTGYvnMdslAYg=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/pkgs/by-name/md/mdbook-alerts/package.nix b/pkgs/by-name/md/mdbook-alerts/package.nix
new file mode 100644
index 000000000000..1dbca74813ec
--- /dev/null
+++ b/pkgs/by-name/md/mdbook-alerts/package.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  rustPlatform,
+  darwin,
+  CoreServices ? darwin.apple_sdk.frameworks.CoreServices,
+}:
+let
+  version = "0.6.0";
+in
+rustPlatform.buildRustPackage {
+  pname = "mdbook-alerts";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "lambdalisue";
+    repo = "rs-mdbook-alerts";
+    rev = "v${version}";
+    hash = "sha256-LKNEI4dPXQwa+7JqLXpFZeKaQSSS5DFdeGuxEGNgPCU=";
+  };
+
+  cargoHash = "sha256-oycBTCjC58cO9q+eeO1nFGZGKdp6Bilgs8aFHW/4gXs=";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
+
+  meta = {
+    description = "Preprocessor for mdbook to support the inclusion of Markdown alerts";
+    mainProgram = "mdbook-alerts";
+    homepage = "https://github.com/lambdalisue/rs-mdbook-alerts";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [
+      brianmcgillion
+      matthiasbeyer
+    ];
+  };
+}
diff --git a/pkgs/by-name/me/mealie/package.nix b/pkgs/by-name/me/mealie/package.nix
index f93d6de6fb76..b56c31b30477 100644
--- a/pkgs/by-name/me/mealie/package.nix
+++ b/pkgs/by-name/me/mealie/package.nix
@@ -1,10 +1,10 @@
 { lib
+, stdenv
 , callPackage
 , fetchFromGitHub
 , makeWrapper
 , nixosTests
 , python3Packages
-, stdenv
 , writeShellScript
 }:
 
@@ -31,8 +31,17 @@ let
       rev = "c56dd9f29469c8a9f34456b8c0d6ae0476110516";
       hash = "sha256-XNps3ZApU8m07bfPEnvip1w+3hLajdn9+L5+IpEaP0c=";
     };
+
+    # Can remove once the `register` keyword is removed from source files
+    # Configure overwrites CXXFLAGS so patch it in the Makefile
+    postConfigure = lib.optionalString stdenv.cc.isClang ''
+      substituteInPlace Makefile \
+        --replace-fail "CXXFLAGS = " "CXXFLAGS = -std=c++14 "
+    '';
   };
-in pythonpkgs.buildPythonPackage rec {
+in
+
+pythonpkgs.buildPythonPackage rec {
   pname = "mealie";
   inherit version src;
   pyproject = true;
diff --git a/pkgs/by-name/me/media-downloader/package.nix b/pkgs/by-name/me/media-downloader/package.nix
index 2db54695b3b8..5d77bbd63478 100644
--- a/pkgs/by-name/me/media-downloader/package.nix
+++ b/pkgs/by-name/me/media-downloader/package.nix
@@ -13,7 +13,6 @@
   libsForQt5,
   python3,
   stdenv,
-  yt-dlp,
 }:
 
 stdenv.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/me/melonDS/package.nix b/pkgs/by-name/me/melonDS/package.nix
index ff1b20f151d1..29ccfb28358c 100644
--- a/pkgs/by-name/me/melonDS/package.nix
+++ b/pkgs/by-name/me/melonDS/package.nix
@@ -21,17 +21,18 @@ let
     qtbase
     qtmultimedia
     qtwayland
-    wrapQtAppsHook;
+    wrapQtAppsHook
+    ;
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "melonDS";
-  version = "0.9.5-unstable-2024-07-14";
+  version = "0.9.5-unstable-2024-07-21";
 
   src = fetchFromGitHub {
     owner = "melonDS-emu";
     repo = "melonDS";
-    rev = "94ba7c159427c88b85806a4e099a44287681778c";
-    hash = "sha256-l38RgDWtDi8cVn0LL57F9pAT2bNmZIj6eo+1E+IJ7Lw=";
+    rev = "837a58208711722e1762098c2a0244c2d8409864";
+    hash = "sha256-SSW/+wLnZKlldVIBXMqDvXuwyK1LxcfON6ZTKLxY68U=";
   };
 
   nativeBuildInputs = [
@@ -40,38 +41,45 @@ stdenv.mkDerivation (finalAttrs: {
     wrapQtAppsHook
   ];
 
-  buildInputs = [
-    SDL2
-    extra-cmake-modules
-    libarchive
-    libslirp
-    libGL
-    qtbase
-    qtmultimedia
-    zstd
-  ] ++ lib.optionals stdenv.isLinux [
-    wayland
-    qtwayland
-  ];
+  buildInputs =
+    [
+      SDL2
+      extra-cmake-modules
+      libarchive
+      libslirp
+      libGL
+      qtbase
+      qtmultimedia
+      zstd
+    ]
+    ++ lib.optionals stdenv.isLinux [
+      wayland
+      qtwayland
+    ];
 
-  cmakeFlags = [
-    (lib.cmakeBool "USE_QT6" true)
-  ];
+  cmakeFlags = [ (lib.cmakeBool "USE_QT6" true) ];
 
   strictDeps = true;
 
-  qtWrapperArgs = lib.optionals stdenv.isLinux [
-    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpcap ]}"
-  ] ++ lib.optionals stdenv.isDarwin [
-    "--prefix DYLD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpcap ]}"
-  ];
+  qtWrapperArgs =
+    lib.optionals stdenv.isLinux [
+      "--prefix LD_LIBRARY_PATH : ${
+        lib.makeLibraryPath [
+          libpcap
+          wayland
+        ]
+      }"
+    ]
+    ++ lib.optionals stdenv.isDarwin [
+      "--prefix DYLD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpcap ]}"
+    ];
 
   installPhase = lib.optionalString stdenv.isDarwin ''
     runHook preInstall
     mkdir -p $out/Applications
     cp -r melonDS.app $out/Applications/
     runHook postInstall
- '';
+  '';
 
   passthru = {
     updateScript = unstableGitUpdater { };
diff --git a/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch b/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch
index 0a2eda9de9ac..bfc55b3c0ffb 100644
--- a/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch
+++ b/pkgs/by-name/me/meson/005-boost-Do-not-add-system-paths-on-nix.patch
@@ -1,13 +1,18 @@
-diff -Naur meson-0.60.2-old/mesonbuild/dependencies/boost.py meson-0.60.2-new/mesonbuild/dependencies/boost.py
---- meson-0.60.2-old/mesonbuild/dependencies/boost.py	2021-11-02 16:58:07.000000000 -0300
-+++ meson-0.60.2-new/mesonbuild/dependencies/boost.py	2021-12-12 19:21:27.895705897 -0300
-@@ -682,16 +682,7 @@
+diff --git a/mesonbuild/dependencies/boost.py b/mesonbuild/dependencies/boost.py
+index 11cf0beca..80f950866 100644
+--- a/mesonbuild/dependencies/boost.py
++++ b/mesonbuild/dependencies/boost.py
+@@ -687,20 +687,7 @@ class BoostDependency(SystemDependency):
          else:
-             tmp = []  # type: T.List[Path]
+             tmp: T.List[Path] = []
  
 -            # Add some default system paths
+-            if m.is_darwin():
+-                tmp.extend([
+-                    Path('/opt/homebrew/'),        # for Apple Silicon MacOS
+-                    Path('/usr/local/opt/boost'),  # for Intel Silicon MacOS
+-                ])
 -            tmp += [Path('/opt/local')]
--            tmp += [Path('/usr/local/opt/boost')]
 -            tmp += [Path('/usr/local')]
 -            tmp += [Path('/usr')]
 -
diff --git a/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch b/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch
deleted file mode 100644
index 009d826aab03..000000000000
--- a/pkgs/by-name/me/meson/007-Allow-building-via-ninja-12.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From 8e46d3e37f81bf13f3f62a14fb603feb2e37229d Mon Sep 17 00:00:00 2001
-From: John Titor <50095635+JohnRTitor@users.noreply.github.com>
-Date: Fri, 10 May 2024 23:25:58 +0530
-Subject: [PATCH] Fix builds with Ninja 12 and remove a 5 year old workaround.
-
-Co-authored-by: Jussi Pakkanen <jpakkane@gmail.com>
-Co-authored-by: Masum Reza <masumrezarock100@gmail.com>
----
- run_project_tests.py           |  3 +--
- run_tests.py                   | 35 ++++++++++------------------------
- unittests/baseplatformtests.py | 34 +++++++++++++++++++++++++++------
- 3 files changed, 39 insertions(+), 33 deletions(-)
-
-diff --git a/run_project_tests.py b/run_project_tests.py
-index a14741364..222e12f74 100755
---- a/run_project_tests.py
-+++ b/run_project_tests.py
-@@ -45,7 +45,7 @@ from mesonbuild.coredata import backendlist, version as meson_version
- from mesonbuild.modules.python import PythonExternalProgram
- from run_tests import (
-     get_fake_options, run_configure, get_meson_script, get_backend_commands,
--    get_backend_args_for_dir, Backend, ensure_backend_detects_changes,
-+    get_backend_args_for_dir, Backend,
-     guess_backend, handle_meson_skip_test,
- )
- 
-@@ -720,7 +720,6 @@ def _run_test(test: TestDef,
- 
-     # Touch the meson.build file to force a regenerate
-     def force_regenerate() -> None:
--        ensure_backend_detects_changes(backend)
-         os.utime(str(test.path / 'meson.build'))
- 
-     # just test building
-diff --git a/run_tests.py b/run_tests.py
-index 207653219..0c51f3d69 100755
---- a/run_tests.py
-+++ b/run_tests.py
-@@ -39,29 +39,27 @@ from mesonbuild.mesonlib import OptionKey, setup_vsenv
- if T.TYPE_CHECKING:
-     from mesonbuild.coredata import SharedCMDOptions
- 
--NINJA_1_9_OR_NEWER = False
-+NINJA_1_12_OR_NEWER = False
- NINJA_CMD = None
- # If we're on CI, detecting ninja for every subprocess unit test that we run is slow
- # Optimize this by respecting $NINJA and skipping detection, then exporting it on
- # first run.
- try:
--    NINJA_1_9_OR_NEWER = bool(int(os.environ['NINJA_1_9_OR_NEWER']))
-+    NINJA_1_12_OR_NEWER = bool(int(os.environ['NINJA_1_12_OR_NEWER']))
-     NINJA_CMD = [os.environ['NINJA']]
- except (KeyError, ValueError):
--    # Look for 1.9 to see if https://github.com/ninja-build/ninja/issues/1219
--    # is fixed
--    NINJA_CMD = detect_ninja('1.9')
-+    # Look for 1.12, which removes -w dupbuild=err
-+    NINJA_CMD = detect_ninja('1.12')
-     if NINJA_CMD is not None:
--        NINJA_1_9_OR_NEWER = True
-+        NINJA_1_12_OR_NEWER = True
-     else:
--        mlog.warning('Found ninja <1.9, tests will run slower', once=True)
-         NINJA_CMD = detect_ninja()
- 
- if NINJA_CMD is not None:
--    os.environ['NINJA_1_9_OR_NEWER'] = str(int(NINJA_1_9_OR_NEWER))
-+    os.environ['NINJA_1_12_OR_NEWER'] = str(int(NINJA_1_12_OR_NEWER))
-     os.environ['NINJA'] = NINJA_CMD[0]
- else:
--    raise RuntimeError('Could not find Ninja v1.7 or newer')
-+    raise RuntimeError('Could not find Ninja.')
- 
- # Emulate running meson with -X utf8 by making sure all open() calls have a
- # sane encoding. This should be a python default, but PEP 540 considered it not
-@@ -271,7 +269,9 @@ def get_backend_commands(backend: Backend, debug: bool = False) -> \
-         test_cmd = cmd + ['-target', 'RUN_TESTS']
-     elif backend is Backend.ninja:
-         global NINJA_CMD
--        cmd = NINJA_CMD + ['-w', 'dupbuild=err', '-d', 'explain']
-+        cmd = NINJA_CMD + ['-d', 'explain']
-+        if not NINJA_1_12_OR_NEWER:
-+            cmd += ['-w', 'dupbuild=err']
-         if debug:
-             cmd += ['-v']
-         clean_cmd = cmd + ['clean']
-@@ -282,21 +282,6 @@ def get_backend_commands(backend: Backend, debug: bool = False) -> \
-         raise AssertionError(f'Unknown backend: {backend!r}')
-     return cmd, clean_cmd, test_cmd, install_cmd, uninstall_cmd
- 
--def ensure_backend_detects_changes(backend: Backend) -> None:
--    global NINJA_1_9_OR_NEWER
--    if backend is not Backend.ninja:
--        return
--    need_workaround = False
--    # We're using ninja >= 1.9 which has QuLogic's patch for sub-1s resolution
--    # timestamps
--    if not NINJA_1_9_OR_NEWER:
--        mlog.warning('Don\'t have ninja >= 1.9, enabling timestamp resolution workaround', once=True)
--        need_workaround = True
--    # Increase the difference between build.ninja's timestamp and the timestamp
--    # of whatever you changed: https://github.com/ninja-build/ninja/issues/371
--    if need_workaround:
--        time.sleep(1)
--
- def run_mtest_inprocess(commandlist: T.List[str]) -> T.Tuple[int, str, str]:
-     out = StringIO()
-     with mock.patch.object(sys, 'stdout', out), mock.patch.object(sys, 'stderr', out):
-diff --git a/unittests/baseplatformtests.py b/unittests/baseplatformtests.py
-index 6125ed933..226b2e11e 100644
---- a/unittests/baseplatformtests.py
-+++ b/unittests/baseplatformtests.py
-@@ -1,6 +1,8 @@
- # SPDX-License-Identifier: Apache-2.0
- # Copyright 2016-2021 The Meson development team
-+# Copyright © 2024 Intel Corporation
- 
-+from __future__ import annotations
- from pathlib import PurePath
- from unittest import mock, TestCase, SkipTest
- import json
-@@ -9,6 +11,7 @@ import os
- import re
- import subprocess
- import sys
-+import shutil
- import tempfile
- import typing as T
- 
-@@ -28,7 +31,7 @@ import mesonbuild.modules.pkgconfig
- 
- 
- from run_tests import (
--    Backend, ensure_backend_detects_changes, get_backend_commands,
-+    Backend, get_backend_commands,
-     get_builddir_target_args, get_meson_script, run_configure_inprocess,
-     run_mtest_inprocess, handle_meson_skip_test,
- )
-@@ -286,11 +289,11 @@ class BasePlatformTests(TestCase):
-         '''
-         return self.build(target=target, override_envvars=override_envvars)
- 
--    def setconf(self, arg, will_build=True):
--        if not isinstance(arg, list):
-+    def setconf(self, arg: T.Sequence[str], will_build: bool = True) -> None:
-+        if isinstance(arg, str):
-             arg = [arg]
--        if will_build:
--            ensure_backend_detects_changes(self.backend)
-+        else:
-+            arg = list(arg)
-         self._run(self.mconf_command + arg + [self.builddir])
- 
-     def getconf(self, optname: str):
-@@ -304,7 +307,6 @@ class BasePlatformTests(TestCase):
-         windows_proof_rmtree(self.builddir)
- 
-     def utime(self, f):
--        ensure_backend_detects_changes(self.backend)
-         os.utime(f)
- 
-     def get_compdb(self):
-@@ -492,3 +494,23 @@ class BasePlatformTests(TestCase):
- 
-     def assertLength(self, val, length):
-         assert len(val) == length, f'{val} is not length {length}'
-+
-+    def copy_srcdir(self, srcdir: str) -> str:
-+        """Copies a source tree and returns that copy.
-+
-+        ensures that the copied tree is deleted after running.
-+
-+        :param srcdir: The locaiton of the source tree to copy
-+        :return: The location of the copy
-+        """
-+        dest = tempfile.mkdtemp()
-+        self.addCleanup(windows_proof_rmtree, dest)
-+
-+        # shutil.copytree expects the destinatin directory to not exist, Once
-+        # python 3.8 is required the `dirs_exist_ok` parameter negates the need
-+        # for this
-+        dest = os.path.join(dest, 'subdir')
-+
-+        shutil.copytree(srcdir, dest)
-+
-+        return dest
-\ No newline at end of file
--- 
-2.44.0
-
diff --git a/pkgs/by-name/me/meson/package.nix b/pkgs/by-name/me/meson/package.nix
index 22bbc1c2fbc3..cb5093c2caf4 100644
--- a/pkgs/by-name/me/meson/package.nix
+++ b/pkgs/by-name/me/meson/package.nix
@@ -13,6 +13,7 @@
 , python3
 , substituteAll
 , zlib
+, fetchpatch
 }:
 
 let
@@ -20,13 +21,13 @@ let
 in
 python3.pkgs.buildPythonApplication rec {
   pname = "meson";
-  version = "1.4.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "mesonbuild";
     repo = "meson";
     rev = "refs/tags/${version}";
-    hash = "sha256-hRTmKO2E6SIdvAhO7OJtV8dcsGm39c51H+2ZGEkdcFY=";
+    hash = "sha256-RBE4AUF5fymUA87JEDWtpUFXmVPFzdhZgDI7/kscTx4=";
   };
 
   patches = [
@@ -71,13 +72,15 @@ python3.pkgs.buildPythonApplication rec {
     # This edge case is explicitly part of meson but is wrong for nix
     ./007-freebsd-pkgconfig-path.patch
 
-    # Fix cross-compilation of proc-macro (and mesa)
-    # https://github.com/mesonbuild/meson/issues/12973
-    ./0001-Revert-rust-recursively-pull-proc-macro-dependencies.patch
-
-    # Fix compilation of Meson using Ninja 1.12
-    # FIXME: remove in the next point release
-    ./007-Allow-building-via-ninja-12.patch
+    # Find boost via pkg-config
+    # https://github.com/NixOS/nixpkgs/issues/86131
+    # Already merged upstream PR: https://github.com/mesonbuild/meson/pull/13272
+    # FIXME: Will be in meson 1.5.0
+    (fetchpatch {
+      name = "find-boost-pkg-config.patch";
+      url = "https://github.com/mesonbuild/meson/commit/c21b886ba8a60cce7fa56e4be40bd7547129fb00.patch";
+      hash = "sha256-uSilNuSx9yd1cxs0XVLcLw4MOXEd2uIe2g+wk+SBqeU=";
+    })
   ];
 
   buildInputs = lib.optionals (python3.pythonOlder "3.9") [
diff --git a/pkgs/by-name/me/meson/setup-hook.sh b/pkgs/by-name/me/meson/setup-hook.sh
index 3f3c7ac59fde..826664545227 100644
--- a/pkgs/by-name/me/meson/setup-hook.sh
+++ b/pkgs/by-name/me/meson/setup-hook.sh
@@ -25,10 +25,7 @@ mesonConfigurePhase() {
         "--buildtype=${mesonBuildType:-plain}"
     )
 
-    flagsArray+=(
-        $mesonFlags
-        "${mesonFlagsArray[@]}"
-    )
+    _accumFlagsArray mesonFlags mesonFlagsArray
 
     echoCmd 'mesonConfigurePhase flags' "${flagsArray[@]}"
 
diff --git a/pkgs/by-name/mf/mfcj880dwlpr/package.nix b/pkgs/by-name/mf/mfcj880dwlpr/package.nix
index 8b69c85c7240..cbfcd2b54b9c 100644
--- a/pkgs/by-name/mf/mfcj880dwlpr/package.nix
+++ b/pkgs/by-name/mf/mfcj880dwlpr/package.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, util-linux, xxd, runtimeShell
-, ghostscript, a2ps, bash }:
+, ghostscript, a2ps }:
 
 # Why:
 # The executable "brprintconf_mfcj880dw" binary is looking for "/opt/brother/Printers/%s/inf/br%sfunc" and "/opt/brother/Printers/%s/inf/br%src".
diff --git a/pkgs/by-name/mi/minijinja/package.nix b/pkgs/by-name/mi/minijinja/package.nix
index c5117f038e09..a8e12a81331a 100644
--- a/pkgs/by-name/mi/minijinja/package.nix
+++ b/pkgs/by-name/mi/minijinja/package.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "minijinja";
-  version = "2.0.3";
+  version = "2.1.0";
 
   src = fetchFromGitHub {
     owner = "mitsuhiko";
     repo = "minijinja";
     rev = version;
-    hash = "sha256-3Frgeudh1Z4gpQJqyLxBZKi7gr4GIGLv7gW4Qf3LdVs=";
+    hash = "sha256-R+OY5RIKX5AkP/sRkU1SoFAeFpFPjiMOuow9nEG30W0=";
   };
 
-  cargoHash = "sha256-7ohhnuy8baELLDvf0FfdJmSf62wtmnEfI2rl9yZp03w=";
+  cargoHash = "sha256-PiR7uq8VnD3vrYHeUh6QJ+yx4UxIq7pr17TNXpksfiA=";
 
   # The tests relies on the presence of network connection
   doCheck = false;
diff --git a/pkgs/by-name/mi/mint-l-icons/package.nix b/pkgs/by-name/mi/mint-l-icons/package.nix
index f1333ee44c18..8de1c8be2d22 100644
--- a/pkgs/by-name/mi/mint-l-icons/package.nix
+++ b/pkgs/by-name/mi/mint-l-icons/package.nix
@@ -9,14 +9,14 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "mint-l-icons";
-  version = "1.7.1";
+  version = "1.7.2";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     # https://github.com/linuxmint/mint-l-icons/issues/11
-    rev = "f5edf5683c7e7e51da2c0e66a9a288d5342edc63";
-    hash = "sha256-MKrynS9W5kHRwCKwkXMsUx43KIhtGMaYYWhb/j+vDpk=";
+    rev = "ee03e6dad0b1f9e25847977eae42766e2ddd4877";
+    hash = "sha256-OKlkqDp9mZOeM4M9QN9H0WH4k+5eMEUshvadaV6qhBA=";
   };
 
   propagatedBuildInputs = [
diff --git a/pkgs/by-name/mi/misconfig-mapper/package.nix b/pkgs/by-name/mi/misconfig-mapper/package.nix
index cc39fdf44641..6d5a487e7759 100644
--- a/pkgs/by-name/mi/misconfig-mapper/package.nix
+++ b/pkgs/by-name/mi/misconfig-mapper/package.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "misconfig-mapper";
-  version = "1.7.0";
+  version = "1.8.0";
 
   src = fetchFromGitHub {
     owner = "intigriti";
     repo = "misconfig-mapper";
     rev = "refs/tags/v${version}";
-    hash = "sha256-QxZDxEt0IHuJh0BBGHFRofXm1nY+Owkyc3GDhDpQSAU=";
+    hash = "sha256-rHEtjbvb907G8RJWLnvrw2xscdWPHQOYSBgYk4yk6ng=";
   };
 
   vendorHash = "sha256-rpDzsUGtYIIUKf8P8Qkd16fuMbwKhKQMATYPVeNhstk=";
diff --git a/pkgs/by-name/mo/mo/package.nix b/pkgs/by-name/mo/mo/package.nix
index 5de0716fde5d..4ce066920b99 100644
--- a/pkgs/by-name/mo/mo/package.nix
+++ b/pkgs/by-name/mo/mo/package.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, runtimeShell
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/by-name/mo/modrinth-app/package.nix b/pkgs/by-name/mo/modrinth-app/package.nix
index 23fd1adf1959..12e13017ad33 100644
--- a/pkgs/by-name/mo/modrinth-app/package.nix
+++ b/pkgs/by-name/mo/modrinth-app/package.nix
@@ -4,7 +4,7 @@
   symlinkJoin,
   modrinth-app-unwrapped,
   wrapGAppsHook3,
-  addOpenGLRunpath,
+  addDriverRunpath,
   flite,
   glib,
   glib-networking,
@@ -38,7 +38,7 @@ symlinkJoin rec {
   ];
 
   runtimeDependencies = lib.optionalString stdenv.isLinux (lib.makeLibraryPath [
-    addOpenGLRunpath.driverLink
+    addDriverRunpath.driverLink
     flite # narrator support
 
     udev # oshi
diff --git a/pkgs/by-name/mo/mousai/package.nix b/pkgs/by-name/mo/mousai/package.nix
index 48535143a509..b67ef0d86452 100644
--- a/pkgs/by-name/mo/mousai/package.nix
+++ b/pkgs/by-name/mo/mousai/package.nix
@@ -7,7 +7,6 @@
 , desktop-file-utils
 , glib
 , glib-networking
-, gobject-introspection
 , gst_all_1
 , gtk4
 , libadwaita
diff --git a/pkgs/by-name/mo/mouse_m908/package.nix b/pkgs/by-name/mo/mouse_m908/package.nix
index e41e9de62cbf..905b8fb1ef1e 100644
--- a/pkgs/by-name/mo/mouse_m908/package.nix
+++ b/pkgs/by-name/mo/mouse_m908/package.nix
@@ -4,13 +4,11 @@
 , installShellFiles
 , fetchFromGitHub
 , pkg-config
-}: stdenv.mkDerivation (finalAttrs: {
-  name = "mouse_m908";
-  version = "3.4";
-
-  nativeBuildInputs = [ pkg-config installShellFiles ];
+}:
 
-  buildInputs = [ libusb1.dev ];
+stdenv.mkDerivation (finalAttrs: {
+  pname = "mouse_m908";
+  version = "3.4";
 
   src = fetchFromGitHub {
     owner = "dokutan";
@@ -19,6 +17,10 @@
     sha256 = "sha256-sCAvjNpJYkp4G0KkDJtHOBR1vc80DZJtWR2W9gakkzQ=";
   };
 
+  nativeBuildInputs = [ pkg-config installShellFiles ];
+
+  buildInputs = [ libusb1 ];
+
   # Uses proper nix directories rather than the ones specified in the makefile
   installPhase = ''
     runHook preInstall
@@ -28,11 +30,11 @@
       $out/share/doc/mouse_m908 \
       $out/lib/udev/rules.d
 
-    cp mouse_m908 $out/bin/mouse_m908 && \
-    cp mouse_m908.rules $out/lib/udev/rules.d && \
-    cp examples/* $out/share/doc/mouse_m908 && \
-    cp README.md $out/share/doc/mouse_m908 && \
-    cp keymap.md $out/share/doc/mouse_m908 && \
+    cp mouse_m908 $out/bin/mouse_m908
+    cp mouse_m908.rules $out/lib/udev/rules.d
+    cp examples/* $out/share/doc/mouse_m908
+    cp README.md $out/share/doc/mouse_m908
+    cp keymap.md $out/share/doc/mouse_m908
     installManPage mouse_m908.1
 
     runHook postInstall
diff --git a/pkgs/by-name/mp/mpvc/package.nix b/pkgs/by-name/mp/mpvc/package.nix
new file mode 100644
index 000000000000..90b5c1d4b5eb
--- /dev/null
+++ b/pkgs/by-name/mp/mpvc/package.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  fetchFromGitHub,
+  makeWrapper,
+  socat,
+  stdenv,
+  testers,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "mpvc";
+  version = "1.4-unstable-2024-07-09";
+
+  src = fetchFromGitHub {
+    owner = "gmt4";
+    repo = "mpvc";
+    rev = "966156dacd026cde220951d41c4ac5915cd6ad64";
+    hash = "sha256-/M3xOb0trUaxJGXmV2+sOCbrHGyP4jpyo+S/oBoDkO0=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ socat ];
+
+  outputs = [ "out" "doc" ];
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  strictDeps = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/mpvc --prefix PATH : "${lib.getBin socat}/"
+  '';
+
+  # This is not Archlinux :)
+  postFixup = ''
+    rm -r $out/share/licenses
+    rmdir $out/share || true
+  '';
+
+  meta = {
+    homepage = "https://github.com/gmt4/mpvc";
+    description = "Mpc-like control interface for mpv";
+    license = lib.licenses.mit;
+    mainProgram = "mpvc";
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/mr/mricron/package.nix b/pkgs/by-name/mr/mricron/package.nix
new file mode 100644
index 000000000000..d79f59bced84
--- /dev/null
+++ b/pkgs/by-name/mr/mricron/package.nix
@@ -0,0 +1,89 @@
+{
+  atk,
+  autoPatchelfHook,
+  cairo,
+  copyDesktopItems,
+  freetype,
+  fontconfig,
+  lib,
+  stdenv,
+  fetchurl,
+  gtk2,
+  glib,
+  gdk-pixbuf,
+  makeWrapper,
+  makeDesktopItem,
+  pango,
+  unzip,
+  xorg,
+  zlib,
+}:
+stdenv.mkDerivation rec {
+
+  pname = "mricron";
+  version = "1.0.20190902";
+  src = fetchurl {
+    url = "https://github.com/neurolabusc/MRIcron/releases/download/v${version}/MRIcron_linux.zip";
+    hash = "sha256-C155u9dvYEyWRfTv3KNQFI6aMWIAjgvdSIqMuYVIOQA=";
+  };
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    copyDesktopItems
+    makeWrapper
+    unzip
+  ];
+
+  buildInputs = [
+    atk
+    cairo
+    freetype
+    fontconfig
+    gtk2
+    glib
+    gdk-pixbuf
+    pango
+    xorg.libX11
+    zlib
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mkdir -p $out/share/icons/hicolor/256x256/apps
+
+    install -Dm777 ./MRIcron $out/bin/mricron
+    install -Dm444 -t $out/share/icons/hicolor/scalable/apps/ ./Resources/mricron.svg
+  '';
+
+  desktopItems = [
+    (makeDesktopItem {
+      type = "Application";
+      name = "mricron";
+      desktopName = "MRIcron";
+      comment = "Application to display NIfTI medical imaging data";
+      exec = "mricron %U";
+      icon = "mricron";
+      categories = [
+        "Graphics"
+        "MedicalSoftware"
+        "Science"
+      ];
+      terminal = false;
+      keywords = [
+        "medical"
+        "imaging"
+        "nifti"
+      ];
+    })
+  ];
+
+  meta = {
+    description = "Application to display NIfTI medical imaging data";
+    homepage = "https://people.cas.sc.edu/rorden/mricron/index.HTML";
+    license = lib.licenses.bsd1;
+    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ adriangl ];
+    mainProgram = "mricron";
+  };
+}
diff --git a/pkgs/by-name/ms/msolve/package.nix b/pkgs/by-name/ms/msolve/package.nix
index bdaec94e66d9..53bcc9da2cbc 100644
--- a/pkgs/by-name/ms/msolve/package.nix
+++ b/pkgs/by-name/ms/msolve/package.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "msolve";
-  version = "0.6.6";
+  version = "0.6.7";
 
   src = fetchFromGitHub {
     owner = "algebraic-solving";
     repo = "msolve";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-Zr9mC/klhyef6xYV8EyoNfM1h4Z0WDtg+OdaarLDBAM=";
+    hash = "sha256-w7+7Ef5X+pRUW9+2akXv7By37ROB7nTij6J1Iy8P/eU=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/mu/muffin/fix-paths.patch b/pkgs/by-name/mu/muffin/fix-paths.patch
new file mode 100644
index 000000000000..6ac0a431f61f
--- /dev/null
+++ b/pkgs/by-name/mu/muffin/fix-paths.patch
@@ -0,0 +1,13 @@
+diff --git a/src/core/util.c b/src/core/util.c
+index 57b73747d..f424cc81c 100644
+--- a/src/core/util.c
++++ b/src/core/util.c
+@@ -636,7 +636,7 @@ meta_show_dialog (const char *type,
+ 
+   args = g_ptr_array_new ();
+ 
+-  append_argument (args, "zenity");
++  append_argument (args, "@zenity@/bin/zenity");
+   append_argument (args, type);
+ 
+   if (display)
diff --git a/pkgs/by-name/mu/muffin/package.nix b/pkgs/by-name/mu/muffin/package.nix
new file mode 100644
index 000000000000..328fe440cde1
--- /dev/null
+++ b/pkgs/by-name/mu/muffin/package.nix
@@ -0,0 +1,123 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, substituteAll
+, cairo
+, cinnamon-desktop
+, dbus
+, desktop-file-utils
+, egl-wayland
+, glib
+, gobject-introspection
+, graphene
+, gtk3
+, json-glib
+, libcanberra
+, libdrm
+, libgnomekbd
+, libgudev
+, libinput
+, libstartup_notification
+, libwacom
+, libxcvt
+, libXdamage
+, libxkbcommon
+, libXtst
+, mesa
+, meson
+, ninja
+, pipewire
+, pkg-config
+, python3
+, udev
+, wayland
+, wayland-protocols
+, wrapGAppsHook3
+, xorgserver
+, xwayland
+, zenity
+}:
+
+stdenv.mkDerivation rec {
+  pname = "muffin";
+  version = "6.2.0";
+
+  outputs = [ "out" "dev" "man" ];
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    hash = "sha256-k8hUYA4/OzL2TB8s5DJpa2nFXV2U9eY09TLkqBDq9WE=";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./fix-paths.patch;
+      inherit zenity;
+    })
+  ];
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    mesa # needed for gbm
+    meson
+    ninja
+    pkg-config
+    python3
+    wrapGAppsHook3
+    xorgserver # for cvt command
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    cairo
+    cinnamon-desktop
+    dbus
+    egl-wayland
+    glib
+    gtk3
+    libcanberra
+    libdrm
+    libgnomekbd
+    libgudev
+    libinput
+    libstartup_notification
+    libwacom
+    libxcvt
+    libXdamage
+    libxkbcommon
+    pipewire
+    udev
+    wayland
+    wayland-protocols
+    xwayland
+  ];
+
+  propagatedBuildInputs = [
+    # required for pkg-config to detect muffin-clutter
+    json-glib
+    libXtst
+    graphene
+  ];
+
+  mesonFlags = [
+    # Based on Mint's debian/rules.
+    "-Degl_device=true"
+    "-Dwayland_eglstream=true"
+    "-Dxwayland_path=${lib.getExe xwayland}"
+  ];
+
+  postPatch = ''
+    patchShebangs src/backends/native/gen-default-modes.py
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/muffin";
+    description = "Window management library for the Cinnamon desktop (libmuffin) and its sample WM binary (muffin)";
+    mainProgram = "muffin";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/my/mysql84/package.nix b/pkgs/by-name/my/mysql84/package.nix
index 3ad72c86d258..18dd8fcb0925 100644
--- a/pkgs/by-name/my/mysql84/package.nix
+++ b/pkgs/by-name/my/mysql84/package.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchurl, bison, cmake, pkg-config
 , icu, libedit, libevent, lz4, ncurses, openssl, protobuf_21, re2, readline, zlib, zstd, libfido2
-, darwin, numactl, libtirpc, rpcsvc-proto, curl
+, cctools, darwin, numactl, libtirpc, rpcsvc-proto, curl
 }:
 
 stdenv.mkDerivation (finalAttrs: {
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
   ] ++ lib.optionals stdenv.isLinux [
     numactl libtirpc
   ] ++ lib.optionals stdenv.isDarwin [
-    darwin.cctools darwin.apple_sdk.frameworks.CoreServices darwin.developer_cmds darwin.DarwinTools
+    cctools darwin.apple_sdk.frameworks.CoreServices darwin.developer_cmds darwin.DarwinTools
   ];
 
   outputs = [ "out" "static" ];
diff --git a/pkgs/by-name/na/namespace-cli/package.nix b/pkgs/by-name/na/namespace-cli/package.nix
index 2a8f3e72425d..4752eff2cb7a 100644
--- a/pkgs/by-name/na/namespace-cli/package.nix
+++ b/pkgs/by-name/na/namespace-cli/package.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "namespace-cli";
-  version = "0.0.386";
+  version = "0.0.388";
 
   src = fetchFromGitHub {
     owner = "namespacelabs";
     repo = "foundation";
     rev = "v${version}";
-    hash = "sha256-UT5gCwMxnd/saK3n3jLJeF/ri9pq1KBP++T3lvAM7ng=";
+    hash = "sha256-57T1pD5Whx3OcqUoAu27y/bsNIvfDkmiCsYxQoLD5lc=";
   };
 
-  vendorHash = "sha256-VG21dKoMsZefSXUP/itFbt0RGWjlVDwJbeJDmhJ47PA=";
+  vendorHash = "sha256-WUtN7yDXrMngn+LAa2FfF62kDlOSJiuNhDSiatlTu2s=";
 
   subPackages = ["cmd/nsc" "cmd/ns" "cmd/docker-credential-nsc"];
 
diff --git a/pkgs/by-name/na/narsil/package.nix b/pkgs/by-name/na/narsil/package.nix
index 9e6d3ba1dc02..d7cff844020e 100644
--- a/pkgs/by-name/na/narsil/package.nix
+++ b/pkgs/by-name/na/narsil/package.nix
@@ -1,36 +1,40 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, autoreconfHook
-, ncurses
-, enableSdl2 ? true
-, SDL2
-, SDL2_image
-, SDL2_sound
-, SDL2_mixer
-, SDL2_ttf
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  autoreconfHook,
+  nix-update-script,
+  ncurses,
+  enableSdl2 ? true,
+  SDL2,
+  SDL2_image,
+  SDL2_sound,
+  SDL2_mixer,
+  SDL2_ttf,
 }:
-
 stdenv.mkDerivation rec {
   pname = "narsil";
-  version = "1.3.0-49-gc042b573a";
+  version = "1.3.0-85-g68f1491ca";
 
   src = fetchFromGitHub {
     owner = "NickMcConnell";
     repo = "NarSil";
     rev = version;
-    hash = "sha256-lVGG4mppsnDmjMFO8YWsLEJEhI3T+QO3z/pCebe0Ai8=";
+    hash = "sha256-uiueTkfucYcK6BQ0WpXp8Sye7E0D1uxd/InowWznBjY=";
   };
 
+  passthru.updateScript = nix-update-script { };
+
   nativeBuildInputs = [ autoreconfHook ];
-  buildInputs = [ ncurses ]
+  buildInputs =
+    [ ncurses ]
     ++ lib.optionals enableSdl2 [
-    SDL2
-    SDL2_image
-    SDL2_sound
-    SDL2_mixer
-    SDL2_ttf
-  ];
+      SDL2
+      SDL2_image
+      SDL2_sound
+      SDL2_mixer
+      SDL2_ttf
+    ];
 
   enableParallelBuilding = true;
 
@@ -38,15 +42,16 @@ stdenv.mkDerivation rec {
 
   installFlags = [ "bindir=$(out)/bin" ];
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/NickMcConnell/NarSil/";
     description = "Unofficial rewrite of Sil, a roguelike influenced by Angband";
     mainProgram = "narsil";
+    changelog = "https://github.com/NickMcConnell/NarSil/releases/tag/${version}";
     longDescription = ''
       NarSil attempts to be an almost-faithful recreation of Sil 1.3.0,
       but based on the codebase of modern Angband.
     '';
-    maintainers = [ maintainers.nanotwerp ];
-    license = licenses.gpl2;
+    maintainers = with lib.maintainers; [ nanotwerp x123 ];
+    license = lib.licenses.gpl2;
   };
 }
diff --git a/pkgs/by-name/nc/ncdc/package.nix b/pkgs/by-name/nc/ncdc/package.nix
index 0a6be6f40a12..912bd60b3b65 100644
--- a/pkgs/by-name/nc/ncdc/package.nix
+++ b/pkgs/by-name/nc/ncdc/package.nix
@@ -14,11 +14,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ncdc";
-  version = "1.24";
+  version = "1.24.1";
 
   src = fetchurl {
     url = "https://dev.yorhel.nl/download/ncdc-${finalAttrs.version}.tar.gz";
-    hash = "sha256-IzUQ1TVfxy/a01eOvIqzXR2pWyHSd0mQ86E1a3ES2h4=";
+    hash = "sha256-Koq5rX1D8Bj8c7qLq9aJ36RKuozsU7iOR3AYXLl3ePc=";
   };
 
   nativeBuildInputs = [ perl pkg-config ];
diff --git a/pkgs/by-name/ne/nemo-emblems/package.nix b/pkgs/by-name/ne/nemo-emblems/package.nix
new file mode 100644
index 000000000000..a0bff1d11f66
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-emblems/package.nix
@@ -0,0 +1,41 @@
+{ python3
+, lib
+, fetchFromGitHub
+, cinnamon-translations
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "nemo-emblems";
+  version = "6.2.1";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "nemo-extensions";
+    rev = "nemo-emblems-${version}";
+    hash = "sha256-HfWZntG+SHrzkN4fa3qYj9+fM6zF32qFquL/InoUi/k=";
+  };
+
+  format = "setuptools";
+
+  sourceRoot = "${src.name}/nemo-emblems";
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace "/usr/share" "share"
+
+    substituteInPlace nemo-extension/nemo-emblems.py \
+      --replace "/usr/share/locale" "${cinnamon-translations}/share/locale"
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/nemo-extensions/tree/master/nemo-emblems";
+    description = "Change a folder or file emblem in Nemo";
+    longDescription = ''
+      Nemo extension that allows you to change folder or file emblems.
+      When adding this to nemo-with-extensions you also need to add nemo-python.
+    '';
+    license = licenses.gpl3Only;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ne/nemo-fileroller/package.nix b/pkgs/by-name/ne/nemo-fileroller/package.nix
new file mode 100644
index 000000000000..2a279c926fe2
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-fileroller/package.nix
@@ -0,0 +1,54 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, meson
+, pkg-config
+, ninja
+, glib
+, gtk3
+, nemo
+, file-roller
+, cinnamon-translations
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nemo-fileroller";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "nemo-extensions";
+    rev = version;
+    sha256 = "sha256-qghGgd+OWYiXvcGUfgiQT6rR4mJPAOfOtYB3lWLg4iA=";
+  };
+
+  sourceRoot = "${src.name}/nemo-fileroller";
+
+  nativeBuildInputs = [
+    meson
+    pkg-config
+    ninja
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    nemo
+  ];
+
+  postPatch = ''
+    substituteInPlace src/nemo-fileroller.c \
+      --replace "file-roller" "${lib.getExe file-roller}" \
+      --replace "GNOMELOCALEDIR" "${cinnamon-translations}/share/locale"
+  '';
+
+  PKG_CONFIG_LIBNEMO_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/${nemo.extensiondir}";
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/nemo-extensions/tree/master/nemo-fileroller";
+    description = "Nemo file roller extension";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ne/nemo-python/load-extensions-from-env.patch b/pkgs/by-name/ne/nemo-python/load-extensions-from-env.patch
new file mode 100644
index 000000000000..ad9a4abdc387
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-python/load-extensions-from-env.patch
@@ -0,0 +1,27 @@
+diff --git a/src/nemo-python.c b/src/nemo-python.c
+index 8d2acdb..900811b 100644
+--- a/src/nemo-python.c
++++ b/src/nemo-python.c
+@@ -255,6 +255,7 @@ nemo_module_initialize(GTypeModule *module)
+ {
+ 	gchar *user_extensions_dir;
+ 	const gchar *env_string;
++	const gchar *python_extensiondir;
+ 
+ 	env_string = g_getenv("NEMO_PYTHON_DEBUG");
+ 	if (env_string != NULL)
+@@ -269,8 +270,12 @@ nemo_module_initialize(GTypeModule *module)
+ 
+ 	all_types = g_array_new(FALSE, FALSE, sizeof(GType));
+ 
+-	// Look in the new global path, $DATADIR/nemo-python/extensions
+-	nemo_python_load_dir(module, PYTHON_EXTENSION_DIR);
++	// Look in NEMO_PYTHON_EXTENSION_DIR
++	python_extensiondir = g_getenv("NEMO_PYTHON_EXTENSION_DIR");
++	if (python_extensiondir == NULL) {
++		python_extensiondir = PYTHON_EXTENSION_DIR;
++	}
++	nemo_python_load_dir(module, python_extensiondir);
+ 
+ 	// Look in XDG_DATA_DIR, ~/.local/share/nemo-python/extensions
+ 	user_extensions_dir = g_build_filename(g_get_user_data_dir(), 
diff --git a/pkgs/by-name/ne/nemo-python/package.nix b/pkgs/by-name/ne/nemo-python/package.nix
new file mode 100644
index 000000000000..867000c8d71d
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-python/package.nix
@@ -0,0 +1,66 @@
+{ stdenv
+, lib
+, fetchFromGitHub
+, meson
+, pkg-config
+, ninja
+, glib
+, gtk3
+, nemo
+, python3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nemo-python";
+  version = "6.2.0";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = "nemo-extensions";
+    rev = version;
+    sha256 = "sha256-qghGgd+OWYiXvcGUfgiQT6rR4mJPAOfOtYB3lWLg4iA=";
+  };
+
+  sourceRoot = "${src.name}/nemo-python";
+
+  patches = [
+    # Load extensions from NEMO_PYTHON_EXTENSION_DIR environment variable
+    # https://github.com/NixOS/nixpkgs/issues/78327
+    ./load-extensions-from-env.patch
+
+    # Pick up all passthru.nemoPythonExtensionDeps via nemo-with-extensions wrapper
+    ./python-path.patch
+  ];
+
+  nativeBuildInputs = [
+    meson
+    pkg-config
+    ninja
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    nemo
+    python3
+    python3.pkgs.pygobject3
+  ];
+
+  postPatch = ''
+    # Tries to load libpython3.so via g_module_open ().
+    substituteInPlace meson.build \
+      --replace "get_option('prefix'), get_option('libdir')" "'${python3}/lib'"
+  '';
+
+  PKG_CONFIG_LIBNEMO_EXTENSION_EXTENSIONDIR = "${placeholder "out"}/${nemo.extensiondir}";
+
+  passthru.nemoPythonExtensionDeps = [ python3.pkgs.pygobject3 ];
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/nemo-extensions/tree/master/nemo-python";
+    description = "Python bindings for the Nemo extension library";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+  };
+}
diff --git a/pkgs/by-name/ne/nemo-python/python-path.patch b/pkgs/by-name/ne/nemo-python/python-path.patch
new file mode 100644
index 000000000000..62a6a7043076
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-python/python-path.patch
@@ -0,0 +1,13 @@
+diff --git a/src/nemo-python.c b/src/nemo-python.c
+index 8d2acdb..ee24143 100644
+--- a/src/nemo-python.c
++++ b/src/nemo-python.c
+@@ -197,7 +197,7 @@ nemo_python_init_python (void)
+ 	}
+ 	
+ 	debug("Sanitize the python search path");
+-	PyRun_SimpleString("import sys; sys.path = [path for path in sys.path if path]");
++	PyRun_SimpleString("import sys; import os; sys.path = [path for path in sys.path if path]; sys.path += os.getenv(\"NEMO_PYTHON_SEARCH_PATH\").split(os.pathsep)");
+ 	if (PyErr_Occurred())
+ 	{
+ 		PyErr_Print();
diff --git a/pkgs/by-name/ne/nemo-with-extensions/package.nix b/pkgs/by-name/ne/nemo-with-extensions/package.nix
new file mode 100644
index 000000000000..2c97367695ee
--- /dev/null
+++ b/pkgs/by-name/ne/nemo-with-extensions/package.nix
@@ -0,0 +1,55 @@
+{ symlinkJoin
+, lib
+, makeWrapper
+, folder-color-switcher
+, nemo
+, nemo-emblems
+, nemo-fileroller
+, nemo-python
+, python3
+, extensions ? [ ]
+, useDefaultExtensions ? true
+}:
+
+let
+  selectedExtensions = extensions ++ lib.optionals useDefaultExtensions [
+    # We keep this in sync with a default Mint installation
+    # Right now (only) nemo-share is missing
+    folder-color-switcher
+    nemo-emblems
+    nemo-fileroller
+    nemo-python
+  ];
+  nemoPythonExtensionsDeps = lib.concatMap (x: x.nemoPythonExtensionDeps or []) selectedExtensions;
+in
+symlinkJoin {
+  name = "nemo-with-extensions-${nemo.version}";
+
+  paths = [ nemo ] ++ selectedExtensions;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    for f in $(find $out/bin/ $out/libexec/ -type l -not -path "*/.*"); do
+      wrapProgram "$f" \
+        --set "NEMO_EXTENSION_DIR" "$out/${nemo.extensiondir}" \
+        --set "NEMO_PYTHON_EXTENSION_DIR" "$out/share/nemo-python/extensions" \
+        --set "NEMO_PYTHON_SEARCH_PATH" "${python3.pkgs.makePythonPath nemoPythonExtensionsDeps}"
+    done
+
+    # Don't populate the same nemo actions twice when having this globally installed
+    # https://github.com/NixOS/nixpkgs/issues/190781#issuecomment-1365601853
+    rm -r $out/share/nemo/actions
+
+    # Point to wrapped binary in all service files
+    for file in "share/dbus-1/services/nemo.FileManager1.service" \
+      "share/dbus-1/services/nemo.service"
+    do
+      rm "$out/$file"
+      substitute "${nemo}/$file" "$out/$file" \
+        --replace "${nemo}" "$out"
+    done
+  '';
+
+  meta = builtins.removeAttrs nemo.meta [ "name" "outputsToInstall" "position" ];
+}
diff --git a/pkgs/by-name/ne/nemo/load-extensions-from-env.patch b/pkgs/by-name/ne/nemo/load-extensions-from-env.patch
new file mode 100644
index 000000000000..610b3490cac3
--- /dev/null
+++ b/pkgs/by-name/ne/nemo/load-extensions-from-env.patch
@@ -0,0 +1,40 @@
+diff --git a/libnemo-private/nemo-module.c b/libnemo-private/nemo-module.c
+index 92bcff5..ecadcd8 100644
+--- a/libnemo-private/nemo-module.c
++++ b/libnemo-private/nemo-module.c
+@@ -209,11 +209,16 @@ void
+ nemo_module_setup (void)
+ {
+ 	static gboolean initialized = FALSE;
++	const gchar *extensiondir = NULL;
+ 
+ 	if (!initialized) {
+ 		initialized = TRUE;
+ 		
+-		load_module_dir (NEMO_EXTENSIONDIR);
++		extensiondir = g_getenv ("NEMO_EXTENSION_DIR");
++		if (extensiondir == NULL) {
++			extensiondir = NEMO_EXTENSIONDIR;
++		}
++		load_module_dir (extensiondir);
+ 
+ 		eel_debug_call_at_shutdown (free_module_objects);
+ 	}
+diff --git a/src/nemo-extensions-list.c b/src/nemo-extensions-list.c
+index 944fc5f..983c396 100644
+--- a/src/nemo-extensions-list.c
++++ b/src/nemo-extensions-list.c
+@@ -129,7 +129,12 @@ module_get_extensions_for_type (GType type)
+ int
+ main (int argc, char *argv[])
+ {
+-    populate_from_directory (NEMO_EXTENSIONDIR);
++    const gchar *extensiondir = NULL;
++    extensiondir = g_getenv ("NEMO_EXTENSION_DIR");
++    if (extensiondir == NULL) {
++        extensiondir = NEMO_EXTENSIONDIR;
++    }
++    populate_from_directory (extensiondir);
+ 
+     GList *nd_providers;
+     GList *l;
diff --git a/pkgs/by-name/ne/nemo/package.nix b/pkgs/by-name/ne/nemo/package.nix
new file mode 100644
index 000000000000..ba5c3fda7d58
--- /dev/null
+++ b/pkgs/by-name/ne/nemo/package.nix
@@ -0,0 +1,101 @@
+{ fetchFromGitHub
+, glib
+, gobject-introspection
+, meson
+, ninja
+, pkg-config
+, lib
+, stdenv
+, wrapGAppsHook3
+, libxml2
+, gtk3
+, gvfs
+, cinnamon-desktop
+, xapp
+, libexif
+, json-glib
+, gtk-layer-shell
+, exempi
+, intltool
+, shared-mime-info
+, cinnamon-translations
+, libgsf
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nemo";
+  version = "6.2.6";
+
+  src = fetchFromGitHub {
+    owner = "linuxmint";
+    repo = pname;
+    rev = version;
+    sha256 = "sha256-2gUIdAKpdL2obfK5lmlwRgyeeIkiFLO8LBdem1hBzkU=";
+  };
+
+  patches = [
+    # Load extensions from NEMO_EXTENSION_DIR environment variable
+    # https://github.com/NixOS/nixpkgs/issues/78327
+    ./load-extensions-from-env.patch
+  ];
+
+  outputs = [ "out" "dev" ];
+
+  buildInputs = [
+    glib
+    gtk3
+    cinnamon-desktop
+    libxml2
+    xapp
+    libexif
+    exempi
+    gvfs
+    libgsf
+    json-glib
+    gtk-layer-shell
+  ];
+
+  nativeBuildInputs = [
+    meson
+    pkg-config
+    ninja
+    wrapGAppsHook3
+    intltool
+    shared-mime-info
+    gobject-introspection
+  ];
+
+  mesonFlags = [
+    # use locales from cinnamon-translations
+    "--localedir=${cinnamon-translations}/share/locale"
+    # enabled by default in Mint packaging (see debian/rules)
+    "-Dgtk_layer_shell=true"
+  ];
+
+  postInstall = ''
+    # This fixes open as root and handles nemo-with-extensions well.
+    # https://github.com/NixOS/nixpkgs/issues/297570
+    substituteInPlace $out/share/polkit-1/actions/org.nemo.root.policy \
+      --replace-fail "$out/bin/nemo" "/run/current-system/sw/bin/nemo"
+  '';
+
+  preFixup = ''
+    # Used for some non-fd.o icons (e.g. xapp-text-case-symbolic)
+    gappsWrapperArgs+=(
+      --prefix XDG_DATA_DIRS : "${xapp}/share"
+    )
+  '';
+
+  # Taken from libnemo-extension.pc.
+  passthru.extensiondir = "lib/nemo/extensions-3.0";
+
+  meta = with lib; {
+    homepage = "https://github.com/linuxmint/nemo";
+    description = "File browser for Cinnamon";
+    license = [ licenses.gpl2 licenses.lgpl2 ];
+    platforms = platforms.linux;
+    maintainers = teams.cinnamon.members;
+    mainProgram = "nemo";
+  };
+}
+
diff --git a/pkgs/by-name/ne/neovide/package.nix b/pkgs/by-name/ne/neovide/package.nix
index 0d73f15d37dd..232bc4664eea 100644
--- a/pkgs/by-name/ne/neovide/package.nix
+++ b/pkgs/by-name/ne/neovide/package.nix
@@ -26,16 +26,16 @@
 
 rustPlatform.buildRustPackage.override { stdenv = clangStdenv; } rec {
   pname = "neovide";
-  version = "0.13.2";
+  version = "0.13.3";
 
   src = fetchFromGitHub {
     owner = "neovide";
     repo = "neovide";
     rev = version;
-    hash = "sha256-4pTMG/CUHFNMJxGGEm0Pz3gGhAzOpy69lAZyg2lwor8=";
+    hash = "sha256-u10JxMvXC/FIobeolWJElBZuCiJ3xIUg4F0vLom7/S0=";
   };
 
-  cargoHash = "sha256-gN7W/EO4D0NbjUVTnoYZr2334hWG5jn6SJFdDnHpImo=";
+  cargoHash = "sha256-j8++watC7RBc1zn8m7Jg0Zl/iKXSrld+q62GiaLxGCo=";
 
   SKIA_SOURCE_DIR =
     let
diff --git a/pkgs/by-name/ne/neovim-unwrapped/package.nix b/pkgs/by-name/ne/neovim-unwrapped/package.nix
index bd25ac1c36f8..82150b9ba161 100644
--- a/pkgs/by-name/ne/neovim-unwrapped/package.nix
+++ b/pkgs/by-name/ne/neovim-unwrapped/package.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation (finalAttrs:
 
 in {
     pname = "neovim-unwrapped";
-    version = "0.10.0";
+    version = "0.10.1";
 
     __structuredAttrs = true;
 
@@ -74,7 +74,7 @@ in {
       owner = "neovim";
       repo = "neovim";
       rev = "v${finalAttrs.version}";
-      hash = "sha256-FCOipXHkAbkuFw9JjEpOIJ8BkyMkjkI0Dp+SzZ4yZlw=";
+      hash = "sha256-OsHIacgorYnB/dPbzl1b6rYUzQdhTtsJYLsFLJxregk=";
     };
 
     patches = [
@@ -188,7 +188,7 @@ in {
 
     separateDebugInfo = true;
 
-    meta = with lib; {
+    meta = {
       description = "Vim text editor fork focused on extensibility and agility";
       longDescription = ''
         Neovim is a project that seeks to aggressively refactor Vim in order to:
@@ -205,8 +205,8 @@ in {
       # Contributions committed after b17d96 are licensed under Apache 2.0 unless
       # those contributions were copied from Vim (identified in the commit logs
       # by the vim-patch token). See LICENSE for details."
-      license = with licenses; [ asl20 vim ];
-      maintainers = with maintainers; [ manveru rvolosatovs ];
-      platforms   = platforms.unix;
+      license = with lib.licenses; [ asl20 vim ];
+      maintainers = with lib.maintainers; [ manveru rvolosatovs ];
+      platforms   = lib.platforms.unix;
     };
   })
diff --git a/pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix b/pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix
index e4d4dd60e2eb..ddc8b61d4b3e 100644
--- a/pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix
+++ b/pkgs/by-name/ne/neovim-unwrapped/treesitter-parsers.nix
@@ -2,8 +2,8 @@
 
 {
   c.src = fetchurl {
-    url = "https://github.com/tree-sitter/tree-sitter-c/archive/v0.21.0.tar.gz";
-    hash = "sha256:6f0f5d1b71cf8ffd8a37fb638c6022fa1245bd630150b538547d52128ce0ea7e";
+    url = "https://github.com/tree-sitter/tree-sitter-c/archive/v0.21.3.tar.gz";
+    hash = "sha256:75a3780df6114cd37496761c4a7c9fd900c78bee3a2707f590d78c0ca3a24368";
   };
   lua.src = fetchurl {
     url = "https://github.com/tree-sitter-grammars/tree-sitter-lua/archive/v0.1.0.tar.gz";
@@ -14,20 +14,12 @@
     hash = "sha256:9f856f8b4a10ab43348550fa2d3cb2846ae3d8e60f45887200549c051c66f9d5";
   };
   vimdoc.src = fetchurl {
-    url = "https://github.com/neovim/tree-sitter-vimdoc/archive/v2.5.1.tar.gz";
-    hash = "sha256:063645096504b21603585507c41c6d8718ff3c11b2150c5bfc31e8f3ee9afea3";
+    url = "https://github.com/neovim/tree-sitter-vimdoc/archive/v3.0.0.tar.gz";
+    hash = "sha256:a639bf92bf57bfa1cdc90ca16af27bfaf26a9779064776dd4be34c1ef1453f6c";
   };
   query.src = fetchurl {
-    url = "https://github.com/tree-sitter-grammars/tree-sitter-query/archive/v0.3.0.tar.gz";
-    hash = "sha256:f878ff37abcb83250e31a6569e997546f3dbab74dcb26683cb2d613f7568cfc0";
-  };
-  python.src = fetchurl {
-    url = "https://github.com/tree-sitter/tree-sitter-python/archive/v0.21.0.tar.gz";
-    hash = "sha256:720304a603271fa89e4430a14d6a81a023d6d7d1171b1533e49c0ab44f1e1c13";
-  };
-  bash.src = fetchurl {
-    url = "https://github.com/tree-sitter/tree-sitter-bash/archive/v0.21.0.tar.gz";
-    hash = "sha256:f0515efda839cfede851adb24ac154227fbc0dfb60c6c11595ecfa9087d43ceb";
+    url = "https://github.com/tree-sitter-grammars/tree-sitter-query/archive/v0.4.0.tar.gz";
+    hash = "sha256:d3a423ab66dc62b2969625e280116678a8a22582b5ff087795222108db2f6a6e";
   };
   markdown.src = fetchurl {
     url = "https://github.com/MDeiml/tree-sitter-markdown/archive/v0.2.3.tar.gz";
diff --git a/pkgs/by-name/ne/neverest/package.nix b/pkgs/by-name/ne/neverest/package.nix
index 04e68b52841f..ec095dab0286 100644
--- a/pkgs/by-name/ne/neverest/package.nix
+++ b/pkgs/by-name/ne/neverest/package.nix
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-3PSJyhxrOCiuHUeVHO77+NecnI5fN5EZfPhYizuYvtE=";
   };
 
-  cargoSha256 = "i5or8oBtjGqOfTfwB7dYXn/OPgr5WEWNEvC0WdCCG+c=";
+  cargoHash = "sha256-i5or8oBtjGqOfTfwB7dYXn/OPgr5WEWNEvC0WdCCG+c=";
 
   nativeBuildInputs = [ pkg-config ]
     ++ lib.optional (installManPages || installShellCompletions) installShellFiles;
diff --git a/pkgs/by-name/ne/nextpnr/package.nix b/pkgs/by-name/ne/nextpnr/package.nix
index 49c86cfc2ab3..9b00d388b578 100644
--- a/pkgs/by-name/ne/nextpnr/package.nix
+++ b/pkgs/by-name/ne/nextpnr/package.nix
@@ -40,10 +40,10 @@ stdenv.mkDerivation rec {
   sourceRoot = main_src.name;
 
   nativeBuildInputs
-     = [ cmake ]
+     = [ cmake python3 ]
     ++ (lib.optional enableGui wrapQtAppsHook);
   buildInputs
-     = [ boostPython python3 eigen python3Packages.apycula ]
+     = [ boostPython eigen python3Packages.apycula ]
     ++ (lib.optional enableGui qtbase)
     ++ (lib.optional stdenv.cc.isClang llvmPackages.openmp);
 
diff --git a/pkgs/by-name/ne/nezha-agent/package.nix b/pkgs/by-name/ne/nezha-agent/package.nix
index 090a5ee28d4f..629b906d822e 100644
--- a/pkgs/by-name/ne/nezha-agent/package.nix
+++ b/pkgs/by-name/ne/nezha-agent/package.nix
@@ -7,16 +7,16 @@
 }:
 buildGoModule rec {
   pname = "nezha-agent";
-  version = "0.18.0";
+  version = "0.18.5";
 
   src = fetchFromGitHub {
     owner = "nezhahq";
     repo = "agent";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Y7wuZmFc1ztofbfjmoAKZv9U05RbINYTyoNDHXKORYY=";
+    hash = "sha256-LmWfs3aL+1lsX4ix2FjDP5g+A0wgcfziXdw5SaKlAdk=";
   };
 
-  vendorHash = "sha256-M928t59dP5xqMZ+EzyFrzW0fYWuebk1V7UajI7g4VKg=";
+  vendorHash = "sha256-frPAhiexFSt+KobMbf32h8xv7HMcPl5koEgSs8Nz3cs=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/ni/nix-required-mounts/package.nix b/pkgs/by-name/ni/nix-required-mounts/package.nix
index 197e0812a8ec..2da30a868854 100644
--- a/pkgs/by-name/ni/nix-required-mounts/package.nix
+++ b/pkgs/by-name/ni/nix-required-mounts/package.nix
@@ -1,5 +1,5 @@
 {
-  addOpenGLRunpath,
+  addDriverRunpath,
   allowedPatternsPath ? callPackage ./closure.nix { inherit allowedPatterns; },
   allowedPatterns ? rec {
     # This config is just an example.
@@ -12,7 +12,7 @@
     ];
     # It exposes these paths in the sandbox:
     nvidia-gpu.paths = [
-      addOpenGLRunpath.driverLink
+      addDriverRunpath.driverLink
       "/dev/dri"
       "/dev/nvidia*"
     ];
diff --git a/pkgs/by-name/ni/nix-web/package.nix b/pkgs/by-name/ni/nix-web/package.nix
index 4f73413d2888..ad97b1356b3e 100644
--- a/pkgs/by-name/ni/nix-web/package.nix
+++ b/pkgs/by-name/ni/nix-web/package.nix
@@ -7,7 +7,6 @@
 , nixVersions
 , nixPackage ? nixVersions.nix_2_18
 , darwin
-, nukeReferences
 }:
 
 let
diff --git a/pkgs/by-name/ni/nixfmt-rfc-style/package.nix b/pkgs/by-name/ni/nixfmt-rfc-style/package.nix
index bf1c093051d5..a11e2d29ff69 100644
--- a/pkgs/by-name/ni/nixfmt-rfc-style/package.nix
+++ b/pkgs/by-name/ni/nixfmt-rfc-style/package.nix
@@ -4,7 +4,6 @@
   lib,
   runCommand,
   nixfmt-rfc-style,
-  fetchpatch,
 }:
 let
   inherit (haskell.lib.compose) overrideCabal justStaticExecutables;
diff --git a/pkgs/by-name/nm/nmap/package.nix b/pkgs/by-name/nm/nmap/package.nix
new file mode 100644
index 000000000000..6b6a83c7eae9
--- /dev/null
+++ b/pkgs/by-name/nm/nmap/package.nix
@@ -0,0 +1,72 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  libpcap,
+  pkg-config,
+  openssl,
+  lua5_4,
+  pcre2,
+  liblinear,
+  libssh2,
+  zlib,
+  withLua ? true,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nmap";
+  version = "7.95";
+
+  src = fetchurl {
+    url = "https://nmap.org/dist/nmap-${version}.tar.bz2";
+    sha256 = "sha256-4Uq1MOR7Wv2I8ciiusf4nNj+a0eOItJVxbm923ocV3g=";
+  };
+
+  prePatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace libz/configure \
+        --replace /usr/bin/libtool ar \
+        --replace 'AR="libtool"' 'AR="ar"' \
+        --replace 'ARFLAGS="-o"' 'ARFLAGS="-r"'
+  '';
+
+  configureFlags = [
+    (if withLua then "--with-liblua=${lua5_4}" else "--without-liblua")
+    "--without-ndiff"
+    "--without-zenmap"
+  ];
+
+  postInstall = ''
+    install -m 444 -D nselib/data/passwords.lst $out/share/wordlists/nmap.lst
+  '';
+
+  makeFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+    "AR=${stdenv.cc.bintools.targetPrefix}ar"
+    "RANLIB=${stdenv.cc.bintools.targetPrefix}ranlib"
+    "CC=${stdenv.cc.targetPrefix}gcc"
+  ];
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [
+    pcre2
+    liblinear
+    libssh2
+    libpcap
+    openssl
+    zlib
+  ];
+
+  enableParallelBuilding = true;
+
+  doCheck = false; # fails 3 tests, probably needs the net
+
+  meta = {
+    description = "Free and open source utility for network discovery and security auditing";
+    homepage = "http://www.nmap.org";
+    license = lib.licenses.gpl2Only;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [
+      thoughtpolice
+      fpletz
+    ];
+  };
+}
diff --git a/pkgs/by-name/nm/nmapsi4/package.nix b/pkgs/by-name/nm/nmapsi4/package.nix
new file mode 100644
index 000000000000..a9574b4baa01
--- /dev/null
+++ b/pkgs/by-name/nm/nmapsi4/package.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  pkg-config,
+  dnsutils,
+  nmap,
+  libsForQt5,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "nmapsi4";
+  version = "0.5-alpha2";
+
+  src = fetchFromGitHub {
+    owner = "nmapsi4";
+    repo = "nmapsi4";
+    rev = "v${version}";
+    sha256 = "sha256-q3XfwJ4TGK4E58haN0Q0xRH4GDpKD8VZzyxHe/VwBqY=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    libsForQt5.wrapQtAppsHook
+  ];
+
+  buildInputs = with libsForQt5; [
+    qtbase
+    qtscript
+    qtwebengine
+  ];
+
+  postPatch = ''
+    substituteInPlace src/platform/digmanager.cpp \
+      --replace '"dig"' '"${dnsutils}/bin/dig"'
+    substituteInPlace src/platform/discover.cpp \
+        --replace '"nping"' '"${nmap}/bin/nping"'
+    for f in \
+      src/platform/monitor/monitor.cpp \
+      src/platform/nsemanager.cpp ; do
+
+      substituteInPlace $f \
+        --replace '"nmap"'  '"${nmap}/bin/nmap"'
+    done
+  '';
+
+  postInstall = ''
+    mv $out/share/applications/kde4/*.desktop $out/share/applications
+    rmdir $out/share/applications/kde4
+
+    for f in $out/share/applications/* ; do
+      substituteInPlace $f \
+        --replace Qt4                   Qt5 \
+        --replace Exec=nmapsi4          Exec=$out/bin/nmapsi4 \
+        --replace "Exec=kdesu nmapsi4" "Exec=kdesu $out/bin/nmapsi4"
+    done
+  '';
+
+  meta = {
+    description = "Qt frontend for nmap";
+    mainProgram = "nmapsi4";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ peterhoeg ];
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/pkgs/by-name/no/nomnatong/package.nix b/pkgs/by-name/no/nomnatong/package.nix
index 5f2b3f69b719..f0107ff16bf8 100644
--- a/pkgs/by-name/no/nomnatong/package.nix
+++ b/pkgs/by-name/no/nomnatong/package.nix
@@ -7,13 +7,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "nomnatong";
-  version = "5.10";
+  version = "5.11";
 
   src = fetchFromGitHub {
     owner = "nomfoundation";
     repo = "font";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-e7LT6lwm4jbqL+mtvfZsCC7F6KOVYD/lAGRPAgyyMxc=";
+    hash = "sha256-LaMggMZIehQynA6tokOte28bbV3H0kagJRsbE8ZczsM=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/np/npkill/package.nix b/pkgs/by-name/np/npkill/package.nix
new file mode 100644
index 000000000000..e62657a8931a
--- /dev/null
+++ b/pkgs/by-name/np/npkill/package.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildNpmPackage
+, fetchFromGitHub
+, nix-update-script
+}:
+
+buildNpmPackage rec {
+  pname = "npkill";
+  version = "0.12.2";
+
+  src = fetchFromGitHub {
+    owner = "voidcosmos";
+    repo = "npkill";
+    rev = "v${version}";
+    hash = "sha256-0pouc+5kl5bjaNYz81OD5FZppYXKdyMBRvEq/DedEV4=";
+  };
+
+  npmDepsHash = "sha256-3ggcr0KxWbO5mHRgtB5rzGYQvpDoiy9EyRS0O+9MJEI=";
+
+  strictDeps = true;
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Easily find and remove old and heavy node_modules folders";
+    homepage = "https://npkill.js.org";
+    changelog = "https://github.com/voidcosmos/npkill/releases/tag/v${version}";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ averyanalex ];
+    mainProgram = "npkill";
+  };
+}
diff --git a/pkgs/by-name/nr/nrr/package.nix b/pkgs/by-name/nr/nrr/package.nix
index 5585d081322e..e92704479ac7 100644
--- a/pkgs/by-name/nr/nrr/package.nix
+++ b/pkgs/by-name/nr/nrr/package.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "nrr";
-  version = "0.9.3";
+  version = "0.9.4";
 
   src = fetchFromGitHub {
     owner = "ryanccn";
     repo = "nrr";
     rev = "v${version}";
-    hash = "sha256-P1LJFVe2MUkvKFP4XJvuFup9JKPv9Y2uWfoi8/N7JUo=";
+    hash = "sha256-X1zgQvgjWbTQAOHAZ+G2u0yO+qeiU0hamTLM39VOK20=";
   };
 
-  cargoHash = "sha256-owj5rzqtlbMMc84u5so0QbEzd2vnWk3KyM/A9ChxoVw=";
+  cargoHash = "sha256-NpvYN68l5wibrFxST35sWDBbUG1mauNszA8NYIWGGa0=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.CoreFoundation
diff --git a/pkgs/by-name/nu/nuclei-templates/package.nix b/pkgs/by-name/nu/nuclei-templates/package.nix
index 0e6fe513d544..6e895ee70b47 100644
--- a/pkgs/by-name/nu/nuclei-templates/package.nix
+++ b/pkgs/by-name/nu/nuclei-templates/package.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "nuclei-templates";
-  version = "9.9.1";
+  version = "9.9.2";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = "nuclei-templates";
     rev = "refs/tags/v${version}";
-    hash = "sha256-zD+mW7l7Wv6re8X6YztEnfwBYbMSLWZgbVpOpjZWNXM=";
+    hash = "sha256-PObtdRhj4KaQRHpSSGCZzhFXRYRAJ4mejkYi7SgOqyE=";
   };
 
   installPhase = ''
diff --git a/pkgs/by-name/nu/nuv/package.nix b/pkgs/by-name/nu/nuv/package.nix
index 7e434984786a..386828568104 100644
--- a/pkgs/by-name/nu/nuv/package.nix
+++ b/pkgs/by-name/nu/nuv/package.nix
@@ -2,7 +2,6 @@
 , symlinkJoin
 , callPackage
 , fetchFromGitHub
-, fetchurl
 , buildGoModule
 , makeWrapper
 , breakpointHook
diff --git a/pkgs/by-name/nv/nvidia-container-toolkit/nvidia-docker.nix b/pkgs/by-name/nv/nvidia-container-toolkit/nvidia-docker.nix
index 07dfc3fdb6dc..f2ff4bafaf77 100644
--- a/pkgs/by-name/nv/nvidia-container-toolkit/nvidia-docker.nix
+++ b/pkgs/by-name/nv/nvidia-container-toolkit/nvidia-docker.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, callPackage }:
+{ stdenv, lib, fetchFromGitHub }:
 stdenv.mkDerivation rec {
   pname = "nvidia-docker";
   version = "2.5.0";
diff --git a/pkgs/by-name/nw/nwg-panel/package.nix b/pkgs/by-name/nw/nwg-panel/package.nix
index 7e40dcd4581c..f3df17baeab4 100644
--- a/pkgs/by-name/nw/nwg-panel/package.nix
+++ b/pkgs/by-name/nw/nwg-panel/package.nix
@@ -16,13 +16,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "nwg-panel";
-  version = "0.9.34";
+  version = "0.9.36";
 
   src = fetchFromGitHub {
     owner = "nwg-piotr";
     repo = "nwg-panel";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Mn3HXm6hPKxvf98do177dCN+RJgRc02AQ1ILjkZwBVc=";
+    hash = "sha256-MDQht1qqz7dm3Q6INpJEDZqAwvAa7uUp7mCDW/to3+E=";
   };
 
   # No tests
diff --git a/pkgs/by-name/oc/ocis-bin/package.nix b/pkgs/by-name/oc/ocis-bin/package.nix
index 572c78ba10f1..a0b8a62ed462 100644
--- a/pkgs/by-name/oc/ocis-bin/package.nix
+++ b/pkgs/by-name/oc/ocis-bin/package.nix
@@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
   passthru.updateScript = ./update.py;
 
   meta = with lib; {
-    description = "ownCloud Infinite Scale Stack ";
+    description = "ownCloud Infinite Scale Stack";
     homepage = "https://owncloud.dev/ocis/";
     changelog = "https://github.com/owncloud/ocis/releases/tag/v${finalAttrs.version}";
     # oCIS is licensed under non-free EULA which can be found here :
diff --git a/pkgs/by-name/oc/octosql/package.nix b/pkgs/by-name/oc/octosql/package.nix
new file mode 100644
index 000000000000..675375cb0941
--- /dev/null
+++ b/pkgs/by-name/oc/octosql/package.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "octosql";
+  version = "0.13.0";
+
+  src = fetchFromGitHub {
+    owner  = "cube2222";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "sha256-kzbIts5d2KmFfaAnOdpIXI1fiqBYXe5t981g4Uyk/cc=";
+  };
+
+  vendorHash = "sha256-p/2UsvxxywQKtk/9wDa5fjS0z6xLLzDONuQ5AtnUonk=";
+
+  ldflags = [ "-s" "-w" "-X github.com/cube2222/octosql/cmd.VERSION=${version}" ];
+
+  postInstall = ''
+    rm -v $out/bin/tester
+  '';
+
+  meta = with lib; {
+    description = "Commandline tool for joining, analyzing and transforming data from multiple databases and file formats using SQL";
+    homepage = "https://github.com/cube2222/octosql";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "octosql";
+  };
+}
diff --git a/pkgs/by-name/of/offat/package.nix b/pkgs/by-name/of/offat/package.nix
index 80e092eab889..07bdc8589ac9 100644
--- a/pkgs/by-name/of/offat/package.nix
+++ b/pkgs/by-name/of/offat/package.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "offat";
-  version = "0.18.0";
+  version = "0.19.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "OWASP";
     repo = "OFFAT";
     rev = "refs/tags/v${version}";
-    hash = "sha256-AROfhVVV9MN+yRGWrzC2y9lfErT4C3Mg8qPz8lSODFM=";
+    hash = "sha256-USSvUtY5THzsWlJtVYxrCquRJWfAoD7b7NHP7pB27sg=";
   };
 
   sourceRoot = "${src.name}/src";
diff --git a/pkgs/by-name/ol/ollama/package.nix b/pkgs/by-name/ol/ollama/package.nix
index 6dd421ec6176..122d8fe23e15 100644
--- a/pkgs/by-name/ol/ollama/package.nix
+++ b/pkgs/by-name/ol/ollama/package.nix
@@ -1,44 +1,52 @@
-{ lib
-, buildGoModule
-, fetchFromGitHub
-, fetchpatch
-, buildEnv
-, linkFarm
-, overrideCC
-, makeWrapper
-, stdenv
-, addDriverRunpath
-
-, cmake
-, gcc12
-, clblast
-, libdrm
-, rocmPackages
-, cudaPackages
-, darwin
-, autoAddDriverRunpath
-
-, nixosTests
-, testers
-, ollama
-, ollama-rocm
-, ollama-cuda
-
-, config
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  fetchpatch,
+  buildEnv,
+  linkFarm,
+  overrideCC,
+  makeWrapper,
+  stdenv,
+  addDriverRunpath,
+
+  cmake,
+  gcc12,
+  clblast,
+  libdrm,
+  rocmPackages,
+  cudaPackages,
+  darwin,
+  autoAddDriverRunpath,
+
+  nixosTests,
+  testers,
+  ollama,
+  ollama-rocm,
+  ollama-cuda,
+
+  config,
   # one of `[ null false "rocm" "cuda" ]`
-, acceleration ? null
+  acceleration ? null,
 }:
 
+assert builtins.elem acceleration [
+  null
+  false
+  "rocm"
+  "cuda"
+];
+
 let
   pname = "ollama";
   # don't forget to invalidate all hashes each update
-  version = "0.2.7";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "ollama";
     repo = "ollama";
     rev = "v${version}";
-    hash = "sha256-YHBGS615dxz6pZR+8awMinp+ZRf3J8Re5BVeDEIyt2E=";
+    hash = "sha256-69CpRAggx6a1NJq+CA9QliXuUbDgC1ERRuA3y17KVAM=";
     fetchSubmodules = true;
   };
 
@@ -52,32 +60,28 @@ let
     (preparePatch "02-clip-log.diff" "sha256-rMWbl3QgrPlhisTeHwD7EnGRJyOhLB4UeS7rqa0tdXM=")
     (preparePatch "03-load_exception.diff" "sha256-NJkT/k8Mf8HcEMb0XkaLmyUNKV3T+384JRPnmwDI/sk=")
     (preparePatch "04-metal.diff" "sha256-bPBCfoT3EjZPjWKfCzh0pnCUbM/fGTj37yOaQr+QxQ4=")
-    (preparePatch "05-default-pretokenizer.diff" "sha256-50+mzQBQZmYEhYvARHw/dliH0M/gDOYm2uy/yJupDF4=")
-    (preparePatch "06-qwen2.diff" "sha256-FdDqEIblPy47z3yavKUnaV93Yk+3oboEzj4vHq+R66M=")
-    (preparePatch "07-embeddings.diff" "sha256-lqg2SI0OapD9LCoAG6MJW6HIHXEmCTv7P75rE9yq/Mo=")
-    (preparePatch "08-clip-unicode.diff" "sha256-1qMJoXhDewxsqPbmi+/7xILQfGaybZDyXc5eH0winL8=")
-    (preparePatch "09-pooling.diff" "sha256-7meKWbr06lbVrtxau0AU9BwJ88Z9svwtDXhmHI+hYBk=")
+    (preparePatch "05-default-pretokenizer.diff" "sha256-Mgx+xi59rz3d5yEXp90QPQMiUr9InlA0Wo1mOSuRcec=")
+    (preparePatch "06-embeddings.diff" "sha256-lqg2SI0OapD9LCoAG6MJW6HIHXEmCTv7P75rE9yq/Mo=")
+    (preparePatch "07-clip-unicode.diff" "sha256-1qMJoXhDewxsqPbmi+/7xILQfGaybZDyXc5eH0winL8=")
+    (preparePatch "08-pooling.diff" "sha256-7meKWbr06lbVrtxau0AU9BwJ88Z9svwtDXhmHI+hYBk=")
+    (preparePatch "09-lora.diff" "sha256-HVDYiqNkuWO9K7aIiT73iiMj5lxMsJC1oqIG4madAPk=")
   ];
 
-  preparePatch = patch: hash: fetchpatch {
-    url = "file://${src}/llm/patches/${patch}";
-    inherit hash;
-    stripLen = 1;
-    extraPrefix = "llm/llama.cpp/";
-  };
-
+  preparePatch =
+    patch: hash:
+    fetchpatch {
+      url = "file://${src}/llm/patches/${patch}";
+      inherit hash;
+      stripLen = 1;
+      extraPrefix = "llm/llama.cpp/";
+    };
 
-  accelIsValid = builtins.elem acceleration [ null false "rocm" "cuda" ];
-  validateFallback = lib.warnIf (config.rocmSupport && config.cudaSupport)
-    (lib.concatStrings [
-      "both `nixpkgs.config.rocmSupport` and `nixpkgs.config.cudaSupport` are enabled, "
-      "but they are mutually exclusive; falling back to cpu"
-    ])
-    (!(config.rocmSupport && config.cudaSupport));
-  shouldEnable = assert accelIsValid;
-    mode: fallback:
-      (acceleration == mode)
-      || (fallback && acceleration == null && validateFallback);
+  validateFallback = lib.warnIf (config.rocmSupport && config.cudaSupport) (lib.concatStrings [
+    "both `nixpkgs.config.rocmSupport` and `nixpkgs.config.cudaSupport` are enabled, "
+    "but they are mutually exclusive; falling back to cpu"
+  ]) (!(config.rocmSupport && config.cudaSupport));
+  shouldEnable =
+    mode: fallback: (acceleration == mode) || (fallback && acceleration == null && validateFallback);
 
   rocmRequested = shouldEnable "rocm" config.rocmSupport;
   cudaRequested = shouldEnable "cuda" config.cudaSupport;
@@ -85,7 +89,6 @@ let
   enableRocm = rocmRequested && stdenv.isLinux;
   enableCuda = cudaRequested && stdenv.isLinux;
 
-
   rocmLibs = [
     rocmPackages.clr
     rocmPackages.hipblas
@@ -95,9 +98,7 @@ let
     rocmPackages.rocm-device-libs
     rocmPackages.rocm-smi
   ];
-  rocmClang = linkFarm "rocm-clang" {
-    llvm = rocmPackages.llvm.clang;
-  };
+  rocmClang = linkFarm "rocm-clang" { llvm = rocmPackages.llvm.clang; };
   rocmPath = buildEnv {
     name = "rocm-path";
     paths = rocmLibs ++ [ rocmClang ];
@@ -113,122 +114,132 @@ let
     ];
   };
 
-  appleFrameworks = darwin.apple_sdk_11_0.frameworks;
-  metalFrameworks = [
-    appleFrameworks.Accelerate
-    appleFrameworks.Metal
-    appleFrameworks.MetalKit
-    appleFrameworks.MetalPerformanceShaders
+  metalFrameworks = with darwin.apple_sdk_11_0.frameworks; [
+    Accelerate
+    Metal
+    MetalKit
+    MetalPerformanceShaders
   ];
 
-  wrapperOptions = [
-    # ollama embeds llama-cpp binaries which actually run the ai models
-    # these llama-cpp binaries are unaffected by the ollama binary's DT_RUNPATH
-    # LD_LIBRARY_PATH is temporarily required to use the gpu
-    # until these llama-cpp binaries can have their runpath patched
-    "--suffix LD_LIBRARY_PATH : '${addDriverRunpath.driverLink}/lib'"
-  ] ++ lib.optionals enableRocm [
-    "--suffix LD_LIBRARY_PATH : '${rocmPath}/lib'"
-    "--set-default HIP_PATH '${rocmPath}'"
-  ];
+  wrapperOptions =
+    [
+      # ollama embeds llama-cpp binaries which actually run the ai models
+      # these llama-cpp binaries are unaffected by the ollama binary's DT_RUNPATH
+      # LD_LIBRARY_PATH is temporarily required to use the gpu
+      # until these llama-cpp binaries can have their runpath patched
+      "--suffix LD_LIBRARY_PATH : '${addDriverRunpath.driverLink}/lib'"
+    ]
+    ++ lib.optionals enableRocm [
+      "--suffix LD_LIBRARY_PATH : '${rocmPath}/lib'"
+      "--set-default HIP_PATH '${rocmPath}'"
+    ];
   wrapperArgs = builtins.concatStringsSep " " wrapperOptions;
 
-
   goBuild =
-    if enableCuda then
-      buildGoModule.override { stdenv = overrideCC stdenv gcc12; }
-    else
-      buildGoModule;
+    if enableCuda then buildGoModule.override { stdenv = overrideCC stdenv gcc12; } else buildGoModule;
   inherit (lib) licenses platforms maintainers;
 in
-goBuild ((lib.optionalAttrs enableRocm {
-  ROCM_PATH = rocmPath;
-  CLBlast_DIR = "${clblast}/lib/cmake/CLBlast";
-}) // (lib.optionalAttrs enableCuda {
-  CUDA_LIB_DIR = "${cudaToolkit}/lib";
-}) // {
-  inherit pname version src vendorHash;
-
-  nativeBuildInputs = [
-    cmake
-  ] ++ lib.optionals enableRocm [
-    rocmPackages.llvm.bintools
-  ] ++ lib.optionals enableCuda [
-    cudaPackages.cuda_nvcc
-  ] ++ lib.optionals (enableRocm || enableCuda) [
-    makeWrapper
-    autoAddDriverRunpath
-  ] ++ lib.optionals stdenv.isDarwin
-    metalFrameworks;
-
-  buildInputs = lib.optionals enableRocm
-    (rocmLibs ++ [ libdrm ])
-  ++ lib.optionals enableCuda [
-    cudaPackages.cuda_cudart
-    cudaPackages.cuda_cccl
-    cudaPackages.libcublas
-  ] ++ lib.optionals stdenv.isDarwin
-    metalFrameworks;
-
-  patches = [
-    # disable uses of `git` in the `go generate` script
-    # ollama's build script assumes the source is a git repo, but nix removes the git directory
-    # this also disables necessary patches contained in `ollama/llm/patches/`
-    # those patches are added to `llamacppPatches`, and reapplied here in the patch phase
-    ./disable-git.patch
-    # disable a check that unnecessarily exits compilation during rocm builds
-    # since `rocmPath` is in `LD_LIBRARY_PATH`, ollama uses rocm correctly
-    ./disable-lib-check.patch
-  ] ++ llamacppPatches;
-  postPatch = ''
-    # replace inaccurate version number with actual release version
-    substituteInPlace version/version.go --replace-fail 0.0.0 '${version}'
-  '';
-  preBuild = ''
-    # disable uses of `git`, since nix removes the git directory
-    export OLLAMA_SKIP_PATCHING=true
-    # build llama.cpp libraries for ollama
-    go generate ./...
-  '';
-  postFixup = ''
-    # the app doesn't appear functional at the moment, so hide it
-    mv "$out/bin/app" "$out/bin/.ollama-app"
-  '' + lib.optionalString (enableRocm || enableCuda) ''
-    # expose runtime libraries necessary to use the gpu
-    wrapProgram "$out/bin/ollama" ${wrapperArgs}
-  '';
-
-  ldflags = [
-    "-s"
-    "-w"
-    "-X=github.com/ollama/ollama/version.Version=${version}"
-    "-X=github.com/ollama/ollama/server.mode=release"
-  ];
+goBuild (
+  (lib.optionalAttrs enableRocm {
+    ROCM_PATH = rocmPath;
+    CLBlast_DIR = "${clblast}/lib/cmake/CLBlast";
+  })
+  // (lib.optionalAttrs enableCuda { CUDA_LIB_DIR = "${cudaToolkit}/lib"; })
+  // {
+    inherit
+      pname
+      version
+      src
+      vendorHash
+      ;
+
+    nativeBuildInputs =
+      [ cmake ]
+      ++ lib.optionals enableRocm [ rocmPackages.llvm.bintools ]
+      ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]
+      ++ lib.optionals (enableRocm || enableCuda) [
+        makeWrapper
+        autoAddDriverRunpath
+      ]
+      ++ lib.optionals stdenv.isDarwin metalFrameworks;
+
+    buildInputs =
+      lib.optionals enableRocm (rocmLibs ++ [ libdrm ])
+      ++ lib.optionals enableCuda [
+        cudaPackages.cuda_cudart
+        cudaPackages.cuda_cccl
+        cudaPackages.libcublas
+      ]
+      ++ lib.optionals stdenv.isDarwin metalFrameworks;
+
+    patches = [
+      # disable uses of `git` in the `go generate` script
+      # ollama's build script assumes the source is a git repo, but nix removes the git directory
+      # this also disables necessary patches contained in `ollama/llm/patches/`
+      # those patches are added to `llamacppPatches`, and reapplied here in the patch phase
+      ./disable-git.patch
+      # disable a check that unnecessarily exits compilation during rocm builds
+      # since `rocmPath` is in `LD_LIBRARY_PATH`, ollama uses rocm correctly
+      ./disable-lib-check.patch
+    ] ++ llamacppPatches;
+    postPatch = ''
+      # replace inaccurate version number with actual release version
+      substituteInPlace version/version.go --replace-fail 0.0.0 '${version}'
+    '';
+    preBuild = ''
+      # disable uses of `git`, since nix removes the git directory
+      export OLLAMA_SKIP_PATCHING=true
+      # build llama.cpp libraries for ollama
+      go generate ./...
+    '';
+    postFixup =
+      ''
+        # the app doesn't appear functional at the moment, so hide it
+        mv "$out/bin/app" "$out/bin/.ollama-app"
+      ''
+      + lib.optionalString (enableRocm || enableCuda) ''
+        # expose runtime libraries necessary to use the gpu
+        wrapProgram "$out/bin/ollama" ${wrapperArgs}
+      '';
+
+    ldflags = [
+      "-s"
+      "-w"
+      "-X=github.com/ollama/ollama/version.Version=${version}"
+      "-X=github.com/ollama/ollama/server.mode=release"
+    ];
 
-  passthru.tests = {
-    inherit ollama;
-    service = nixosTests.ollama;
-    version = testers.testVersion {
-      inherit version;
-      package = ollama;
+    passthru.tests =
+      {
+        inherit ollama;
+        service = nixosTests.ollama;
+        version = testers.testVersion {
+          inherit version;
+          package = ollama;
+        };
+      }
+      // lib.optionalAttrs stdenv.isLinux {
+        inherit ollama-rocm ollama-cuda;
+        service-cuda = nixosTests.ollama-cuda;
+        service-rocm = nixosTests.ollama-rocm;
+      };
+
+    meta = {
+      description =
+        "Get up and running with large language models locally"
+        + lib.optionalString rocmRequested ", using ROCm for AMD GPU acceleration"
+        + lib.optionalString cudaRequested ", using CUDA for NVIDIA GPU acceleration";
+      homepage = "https://github.com/ollama/ollama";
+      changelog = "https://github.com/ollama/ollama/releases/tag/v${version}";
+      license = licenses.mit;
+      platforms = if (rocmRequested || cudaRequested) then platforms.linux else platforms.unix;
+      mainProgram = "ollama";
+      maintainers = with maintainers; [
+        abysssol
+        dit7ya
+        elohmeier
+        roydubnium
+      ];
     };
-  } // lib.optionalAttrs stdenv.isLinux {
-    inherit ollama-rocm ollama-cuda;
-    service-cuda = nixosTests.ollama-cuda;
-    service-rocm = nixosTests.ollama-rocm;
-  };
-
-  meta = {
-    description = "Get up and running with large language models locally"
-      + lib.optionalString rocmRequested ", using ROCm for AMD GPU acceleration"
-      + lib.optionalString cudaRequested ", using CUDA for NVIDIA GPU acceleration";
-    homepage = "https://github.com/ollama/ollama";
-    changelog = "https://github.com/ollama/ollama/releases/tag/v${version}";
-    license = licenses.mit;
-    platforms =
-      if (rocmRequested || cudaRequested) then platforms.linux
-      else platforms.unix;
-    mainProgram = "ollama";
-    maintainers = with maintainers; [ abysssol dit7ya elohmeier roydubnium ];
-  };
-})
+  }
+)
diff --git a/pkgs/by-name/on/onlyoffice-bin/package.nix b/pkgs/by-name/on/onlyoffice-bin/package.nix
index 4c9c0cd1e326..5156778b7e25 100644
--- a/pkgs/by-name/on/onlyoffice-bin/package.nix
+++ b/pkgs/by-name/on/onlyoffice-bin/package.nix
@@ -1,6 +1,7 @@
 { stdenv
 , lib
 , fetchurl
+, buildFHSEnv
   # Alphabetic ordering below
 , alsa-lib
 , at-spi2-atk
@@ -24,6 +25,8 @@
 , libudev0-shim
 , libdrm
 , makeWrapper
+, mesa
+, noto-fonts-cjk-sans
 , nspr
 , nss
 , pulseaudio
@@ -52,18 +55,6 @@ let
   # TODO: Find out which of these fonts we'd be allowed to distribute along
   #       with this package, or how to make this easier for users otherwise.
 
-  # Not using the `noto-fonts-cjk` package from nixpkgs, because it was
-  # reported that its `.ttc` file is not picked up by OnlyOffice, see:
-  # https://github.com/NixOS/nixpkgs/pull/116343#discussion_r593979816
-  noto-fonts-cjk = fetchurl {
-    url =
-      let
-        version = "v20201206-cjk";
-      in
-      "https://github.com/googlefonts/noto-cjk/raw/${version}/NotoSansCJKsc-Regular.otf";
-    sha256 = "sha256-aJXSVNJ+p6wMAislXUn4JQilLhimNSedbc9nAuPVxo4=";
-  };
-
   runtimeLibs = lib.makeLibraryPath [
     curl
     glibc
@@ -72,115 +63,130 @@ let
     pulseaudio
   ];
 
-in
-stdenv.mkDerivation rec {
-  pname = "onlyoffice-desktopeditors";
-  version = "7.2.0";
-  minor = null;
-  src = fetchurl {
-    url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb";
-    sha256 = "sha256-O9gC/b5/eZ1YImuXpEZOJhI1rzCNuFrm5IqablnYo9Y=";
-  };
-
-  nativeBuildInputs = [
-    autoPatchelfHook
-    dpkg
-    makeWrapper
-    wrapGAppsHook3
-  ];
+  derivation = stdenv.mkDerivation rec {
+    pname = "onlyoffice-desktopeditors";
+    version = "8.1.0";
+    minor = null;
+    src = fetchurl {
+      url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb";
+      sha256 = "sha256-hS1+gLN17sP3EFud3fQXRWeFiQbrumBONLjqXEl89Js=";
+    };
+
+    nativeBuildInputs = [
+      autoPatchelfHook
+      dpkg
+      makeWrapper
+      wrapGAppsHook3
+    ];
+
+    buildInputs = [
+      alsa-lib
+      at-spi2-atk
+      atk
+      cairo
+      dbus
+      dconf
+      fontconfig
+      gdk-pixbuf
+      glib
+      gsettings-desktop-schemas
+      gst_all_1.gst-plugins-base
+      gst_all_1.gstreamer
+      gtk2
+      gtk3
+      libpulseaudio
+      libdrm
+      nspr
+      nss
+      mesa # libgbm
+      qt5.qtbase
+      qt5.qtdeclarative
+      qt5.qtsvg
+      qt5.qtwayland
+      xorg.libX11
+      xorg.libxcb
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXScrnSaver
+      xorg.libXtst
+    ];
+
+    dontWrapQtApps = true;
+
+    unpackPhase = ''
+      dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
+    '';
 
-  buildInputs = [
-    alsa-lib
-    at-spi2-atk
-    atk
-    cairo
-    dbus
-    dconf
-    fontconfig
-    gdk-pixbuf
-    glib
-    gsettings-desktop-schemas
-    gst_all_1.gst-plugins-base
-    gst_all_1.gstreamer
-    gtk2
-    gtk3
-    libpulseaudio
-    libdrm
-    nspr
-    nss
-    qt5.qtbase
-    qt5.qtdeclarative
-    qt5.qtsvg
-    qt5.qtwayland
-    xorg.libX11
-    xorg.libxcb
-    xorg.libXcomposite
-    xorg.libXcursor
-    xorg.libXdamage
-    xorg.libXext
-    xorg.libXfixes
-    xorg.libXi
-    xorg.libXrandr
-    xorg.libXrender
-    xorg.libXScrnSaver
-    xorg.libXtst
-  ];
+    installPhase = ''
+      runHook preInstall
 
-  dontWrapQtApps = true;
+      mkdir -p $out/{bin,lib,share}
 
-  unpackPhase = ''
-    dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
-  '';
+      mv usr/bin/* $out/bin
+      mv usr/share/* $out/share/
+      mv opt/onlyoffice/desktopeditors $out/share
 
-  preConfigure = ''
-    cp --no-preserve=mode,ownership ${noto-fonts-cjk} opt/onlyoffice/desktopeditors/fonts/
-  '';
+      for f in $out/share/desktopeditors/asc-de-*.png; do
+        size=$(basename "$f" ".png" | cut -d"-" -f3)
+        res="''${size}x''${size}"
+        mkdir -pv "$out/share/icons/hicolor/$res/apps"
+        ln -s "$f" "$out/share/icons/hicolor/$res/apps/onlyoffice-desktopeditors.png"
+      done;
 
-  installPhase = ''
-    runHook preInstall
+      substituteInPlace $out/bin/onlyoffice-desktopeditors \
+        --replace "/opt/onlyoffice/" "$out/share/"
 
-    mkdir -p $out/{bin,lib,share}
+      ln -s $out/share/desktopeditors/DesktopEditors $out/bin/DesktopEditors
 
-    mv usr/bin/* $out/bin
-    mv usr/share/* $out/share/
-    mv opt/onlyoffice/desktopeditors $out/share
+      runHook postInstall
+    '';
 
-    for f in $out/share/desktopeditors/asc-de-*.png; do
-      size=$(basename "$f" ".png" | cut -d"-" -f3)
-      res="''${size}x''${size}"
-      mkdir -pv "$out/share/icons/hicolor/$res/apps"
-      ln -s "$f" "$out/share/icons/hicolor/$res/apps/onlyoffice-desktopeditors.png"
-    done;
+    preFixup = ''
+      gappsWrapperArgs+=(
+        --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
+        --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
+        --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \
+        --set QT_QPA_PLATFORM "xcb"
+        # the bundled version of qt does not support wayland
+      )
+    '';
+  };
 
-    substituteInPlace $out/bin/onlyoffice-desktopeditors \
-      --replace "/opt/onlyoffice/" "$out/share/"
+in
 
-    ln -s $out/share/desktopeditors/DesktopEditors $out/bin/DesktopEditors
+# In order to download plugins, OnlyOffice uses /usr/bin/curl so we have to wrap it.
+# Curl still needs to be in runtimeLibs because the library is used directly in other parts of the code.
+# Fonts are also discovered by looking in /usr/share/fonts, so adding fonts to targetPkgs will include them
+buildFHSEnv {
+  inherit (derivation) pname version;
 
-    substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \
-      --replace "/usr/bin/onlyoffice-desktopeditor" "$out/bin/DesktopEditor"
+  targetPkgs = pkgs': [
+    curl
+    derivation
+    noto-fonts-cjk-sans
+  ];
 
-    runHook postInstall
-  '';
+  runScript = "/bin/onlyoffice-desktopeditors";
 
-  preFixup = ''
-    gappsWrapperArgs+=(
-      --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
-      --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
-      --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \
-      --set QT_QPA_PLATFORM "xcb"
-      # the bundled version of qt does not support wayland
-    )
+  extraInstallCommands = ''
+    mkdir -p $out/share
+    ln -s ${derivation}/share/icons $out/share
+    cp -r ${derivation}/share/applications $out/share
+    substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \
+        --replace "/usr/bin/onlyoffice-desktopeditors" "$out/bin/onlyoffice-desktopeditors"
   '';
 
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {
     description = "Office suite that combines text, spreadsheet and presentation editors allowing to create, view and edit local documents";
-    longDescription = ''
-      The latest versions of OnlyOffice are currently broken on wlroots environments (e.g. Hyprland, Sway).
-      If you are using a different environment, you can get the latest version using `onlyoffice-bin_latest`.
-    '';
+    mainProgram = "onlyoffice-desktopeditors";
     homepage = "https://www.onlyoffice.com/";
     downloadPage = "https://github.com/ONLYOFFICE/DesktopEditors/releases";
     changelog = "https://github.com/ONLYOFFICE/DesktopEditors/blob/master/CHANGELOG.md";
diff --git a/pkgs/by-name/on/onlyoffice-bin_latest/package.nix b/pkgs/by-name/on/onlyoffice-bin_latest/package.nix
deleted file mode 100644
index 726bda8df039..000000000000
--- a/pkgs/by-name/on/onlyoffice-bin_latest/package.nix
+++ /dev/null
@@ -1,202 +0,0 @@
-{ stdenv
-, lib
-, fetchurl
-, buildFHSEnv
-  # Alphabetic ordering below
-, alsa-lib
-, at-spi2-atk
-, atk
-, autoPatchelfHook
-, cairo
-, curl
-, dbus
-, dconf
-, dpkg
-, fontconfig
-, gcc-unwrapped
-, gdk-pixbuf
-, glib
-, glibc
-, gsettings-desktop-schemas
-, gst_all_1
-, gtk2
-, gtk3
-, libpulseaudio
-, libudev0-shim
-, libdrm
-, makeWrapper
-, mesa
-, noto-fonts-cjk-sans
-, nspr
-, nss
-, pulseaudio
-, qt5
-, wrapGAppsHook3
-, xkeyboard_config
-, xorg
-}:
-let
-
-  # Note on fonts:
-  #
-  # OnlyOffice does not distribute unfree fonts, but makes it easy to pick up
-  # any fonts you install. See:
-  #
-  # * https://helpcenter.onlyoffice.com/en/installation/docs-community-install-fonts-linux.aspx
-  # * https://www.onlyoffice.com/blog/2020/04/how-to-add-new-fonts-to-onlyoffice-desktop-editors/
-  #
-  # As recommended there, you should download
-  #
-  #     arial.ttf, calibri.ttf, cour.ttf, symbol.ttf, times.ttf, wingding.ttf
-  #
-  # into `~/.local/share/fonts/`, otherwise the default template fonts, and
-  # things like bullet points, will not look as expected.
-
-  # TODO: Find out which of these fonts we'd be allowed to distribute along
-  #       with this package, or how to make this easier for users otherwise.
-
-  runtimeLibs = lib.makeLibraryPath [
-    curl
-    glibc
-    gcc-unwrapped.lib
-    libudev0-shim
-    pulseaudio
-  ];
-
-  derivation = stdenv.mkDerivation rec {
-    pname = "onlyoffice-desktopeditors";
-    version = "8.1.0";
-    minor = null;
-    src = fetchurl {
-      url = "https://github.com/ONLYOFFICE/DesktopEditors/releases/download/v${version}/onlyoffice-desktopeditors_amd64.deb";
-      sha256 = "sha256-hS1+gLN17sP3EFud3fQXRWeFiQbrumBONLjqXEl89Js=";
-    };
-
-    nativeBuildInputs = [
-      autoPatchelfHook
-      dpkg
-      makeWrapper
-      wrapGAppsHook3
-    ];
-
-    buildInputs = [
-      alsa-lib
-      at-spi2-atk
-      atk
-      cairo
-      dbus
-      dconf
-      fontconfig
-      gdk-pixbuf
-      glib
-      gsettings-desktop-schemas
-      gst_all_1.gst-plugins-base
-      gst_all_1.gstreamer
-      gtk2
-      gtk3
-      libpulseaudio
-      libdrm
-      nspr
-      nss
-      mesa # libgbm
-      qt5.qtbase
-      qt5.qtdeclarative
-      qt5.qtsvg
-      qt5.qtwayland
-      xorg.libX11
-      xorg.libxcb
-      xorg.libXcomposite
-      xorg.libXcursor
-      xorg.libXdamage
-      xorg.libXext
-      xorg.libXfixes
-      xorg.libXi
-      xorg.libXrandr
-      xorg.libXrender
-      xorg.libXScrnSaver
-      xorg.libXtst
-    ];
-
-    dontWrapQtApps = true;
-
-    unpackPhase = ''
-      dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
-    '';
-
-    installPhase = ''
-      runHook preInstall
-
-      mkdir -p $out/{bin,lib,share}
-
-      mv usr/bin/* $out/bin
-      mv usr/share/* $out/share/
-      mv opt/onlyoffice/desktopeditors $out/share
-
-      for f in $out/share/desktopeditors/asc-de-*.png; do
-        size=$(basename "$f" ".png" | cut -d"-" -f3)
-        res="''${size}x''${size}"
-        mkdir -pv "$out/share/icons/hicolor/$res/apps"
-        ln -s "$f" "$out/share/icons/hicolor/$res/apps/onlyoffice-desktopeditors.png"
-      done;
-
-      substituteInPlace $out/bin/onlyoffice-desktopeditors \
-        --replace "/opt/onlyoffice/" "$out/share/"
-
-      ln -s $out/share/desktopeditors/DesktopEditors $out/bin/DesktopEditors
-
-      runHook postInstall
-    '';
-
-    preFixup = ''
-      gappsWrapperArgs+=(
-        --prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
-        --set QT_XKB_CONFIG_ROOT "${xkeyboard_config}/share/X11/xkb" \
-        --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale" \
-        --set QT_QPA_PLATFORM "xcb"
-        # the bundled version of qt does not support wayland
-      )
-    '';
-  };
-
-in
-
-# In order to download plugins, OnlyOffice uses /usr/bin/curl so we have to wrap it.
-# Curl still needs to be in runtimeLibs because the library is used directly in other parts of the code.
-# Fonts are also discovered by looking in /usr/share/fonts, so adding fonts to targetPkgs will include them
-buildFHSEnv {
-  inherit (derivation) pname version;
-
-  targetPkgs = pkgs': [
-    curl
-    derivation
-    noto-fonts-cjk-sans
-  ];
-
-  runScript = "/bin/onlyoffice-desktopeditors";
-
-  extraInstallCommands = ''
-    mkdir -p $out/share
-    ln -s ${derivation}/share/icons $out/share
-    cp -r ${derivation}/share/applications $out/share
-    substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \
-        --replace "/usr/bin/onlyoffice-desktopeditors" "$out/bin/onlyoffice-desktopeditors"
-  '';
-
-  passthru.updateScript = ./update.sh;
-
-  meta = with lib; {
-    description = "Office suite that combines text, spreadsheet and presentation editors allowing to create, view and edit local documents";
-    mainProgram = "onlyoffice-desktopeditors";
-    longDescription = ''
-      This version is broken on wlroots environments (e.g. Hyprland, Sway).
-      If you are using one of these environments, please use `onlyoffice-bin` instead.
-    '';
-    homepage = "https://www.onlyoffice.com/";
-    downloadPage = "https://github.com/ONLYOFFICE/DesktopEditors/releases";
-    changelog = "https://github.com/ONLYOFFICE/DesktopEditors/blob/master/CHANGELOG.md";
-    platforms = [ "x86_64-linux" ];
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ nh2 gtrunsec ];
-  };
-}
diff --git a/pkgs/by-name/on/onlyoffice-bin_latest/update.sh b/pkgs/by-name/on/onlyoffice-bin_latest/update.sh
deleted file mode 100644
index d7b0bc106fa2..000000000000
--- a/pkgs/by-name/on/onlyoffice-bin_latest/update.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl jq common-updater-scripts
-
-version="$(curl -sL "https://api.github.com/repos/ONLYOFFICE/DesktopEditors/releases?per_page=1" | jq -r ".[0].tag_name" | sed 's/^v//')"
-update-source-version onlyoffice-bin "$version"
diff --git a/pkgs/by-name/oo/oo7/package.nix b/pkgs/by-name/oo/oo7/package.nix
index a126a27fd107..4fcd76aedd5f 100644
--- a/pkgs/by-name/oo/oo7/package.nix
+++ b/pkgs/by-name/oo/oo7/package.nix
@@ -2,7 +2,6 @@
   lib,
   rustPlatform,
   fetchFromGitHub,
-  nix-update-script,
   oo7,
   openssl,
   pkg-config,
diff --git a/pkgs/by-name/op/openapi-tui/package.nix b/pkgs/by-name/op/openapi-tui/package.nix
index fdbc0b6cb1d3..09c7eae81bf4 100644
--- a/pkgs/by-name/op/openapi-tui/package.nix
+++ b/pkgs/by-name/op/openapi-tui/package.nix
@@ -1,7 +1,6 @@
 { lib
 , rustPlatform
 , fetchFromGitHub
-, pkg-config
 }:
 
 rustPlatform.buildRustPackage rec {
diff --git a/pkgs/by-name/op/openasar/package.nix b/pkgs/by-name/op/openasar/package.nix
index 5c1ddb9a9f76..0d034ea1b8d1 100644
--- a/pkgs/by-name/op/openasar/package.nix
+++ b/pkgs/by-name/op/openasar/package.nix
@@ -4,7 +4,6 @@
   fetchFromGitHub,
   unstableGitUpdater,
   nodejs,
-  bash,
   asar,
   unzip,
 }:
diff --git a/pkgs/by-name/op/opencomposite/package.nix b/pkgs/by-name/op/opencomposite/package.nix
index cc9929d392ba..db42ea0f9f78 100644
--- a/pkgs/by-name/op/opencomposite/package.nix
+++ b/pkgs/by-name/op/opencomposite/package.nix
@@ -1,37 +1,35 @@
-{ lib
-, stdenv
-, fetchFromGitLab
-
-, cmake
-
-, glm
-, libGL
-, openxr-loader
-, python3
-, vulkan-headers
-, vulkan-loader
-, xorg
-
-, unstableGitUpdater
+{
+  cmake,
+  fetchFromGitLab,
+  glm,
+  jsoncpp,
+  lib,
+  libGL,
+  openxr-loader,
+  python3,
+  stdenv,
+  unstableGitUpdater,
+  vulkan-headers,
+  vulkan-loader,
+  xorg,
 }:
 
 stdenv.mkDerivation {
   pname = "opencomposite";
-  version = "0-unstable-2024-06-12";
+  version = "0-unstable-2024-07-23";
 
   src = fetchFromGitLab {
     owner = "znixian";
     repo = "OpenOVR";
-    rev = "de1658db7e2535fd36c2e37fa8dd3d756280c86f";
-    hash = "sha256-xyEiuEy3nt2AbF149Pjz5wi/rkTup2SgByR4DrNOJX0=";
+    rev = "632e5cc50b913e93194ca2970e6f13021182579f";
+    hash = "sha256-KQmNyGRlbUrntTPNn5rzTyyR+Bvh3EfSqBgyNGGDo04=";
   };
 
-  nativeBuildInputs = [
-    cmake
-  ];
+  nativeBuildInputs = [ cmake ];
 
   buildInputs = [
     glm
+    jsoncpp
     libGL
     openxr-loader
     python3
@@ -41,19 +39,11 @@ stdenv.mkDerivation {
   ];
 
   cmakeFlags = [
+    (lib.cmakeFeature "CMAKE_CXX_FLAGS" "-Wno-error=format-security")
     (lib.cmakeBool "USE_SYSTEM_OPENXR" true)
     (lib.cmakeBool "USE_SYSTEM_GLM" true)
   ];
 
-  # NOTE: `cmakeFlags` will get later tokenized by bash and there is no way
-  # of inserting a flag value with a space in it (inserting `"` or `'` won't help).
-  # https://discourse.nixos.org/t/cmakeflags-and-spaces-in-option-values/20170/2
-  preConfigure = ''
-    cmakeFlagsArray+=(
-      "-DCMAKE_CXX_FLAGS=-DGLM_ENABLE_EXPERIMENTAL -Wno-error=format-security"
-    )
-  '';
-
   installPhase = ''
     runHook preInstall
     mkdir -p $out/lib/opencomposite
@@ -66,10 +56,10 @@ stdenv.mkDerivation {
     branch = "openxr";
   };
 
-  meta = with lib; {
+  meta = {
     description = "Reimplementation of OpenVR, translating calls to OpenXR";
     homepage = "https://gitlab.com/znixian/OpenOVR";
-    license = with licenses; [ gpl3Only ];
-    maintainers = with maintainers; [ Scrumplex ];
+    license = with lib.licenses; [ gpl3Only ];
+    maintainers = with lib.maintainers; [ Scrumplex ];
   };
 }
diff --git a/pkgs/by-name/op/opengfw/package.nix b/pkgs/by-name/op/opengfw/package.nix
new file mode 100644
index 000000000000..ad1b57dcad3a
--- /dev/null
+++ b/pkgs/by-name/op/opengfw/package.nix
@@ -0,0 +1,37 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+}:
+let
+  pname = "opengfw";
+  version = "0.4.0";
+in
+buildGoModule {
+  inherit pname version;
+  CGO_ENABLED = 0;
+  vendorHash = "sha256-F8jTvgxOhOGVtl6B8u0xAIvjNwVjBtvAhApzjIgykpY=";
+
+  src = fetchFromGitHub {
+    owner = "apernet";
+    repo = "opengfw";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-kmbG6l5CtZGM/zpvl2pukq5xsOIy28RDyb4sHBsoyOw=";
+  };
+
+  meta = {
+    mainProgram = "OpenGFW";
+    description = "Flexible, easy-to-use, open source implementation of GFW on Linux";
+    longDescription = ''
+      OpenGFW is your very own DIY Great Firewall of China, available as a flexible,
+      easy-to-use open source program on Linux. Why let the powers that be have all the fun?
+      It's time to give power to the people and democratize censorship.
+      Bring the thrill of cyber-sovereignty right into your home router
+      and start filtering like a pro - you too can play Big Brother.
+    '';
+    homepage = "https://gfw.dev/";
+    license = lib.licenses.mpl20;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ eum3l ];
+  };
+}
diff --git a/pkgs/by-name/op/openh264/package.nix b/pkgs/by-name/op/openh264/package.nix
index c8eed276e103..ebd93572e29e 100644
--- a/pkgs/by-name/op/openh264/package.nix
+++ b/pkgs/by-name/op/openh264/package.nix
@@ -43,6 +43,9 @@ stdenv.mkDerivation (finalAttrs: {
     changelog = "https://github.com/cisco/openh264/releases/tag/${finalAttrs.src.rev}";
     license = with lib.licenses; [ bsd2 ];
     maintainers = with lib.maintainers; [ AndersonTorres ];
-    platforms = lib.platforms.unix ++ lib.platforms.windows;
+    # See meson.build
+    platforms = lib.platforms.windows ++ lib.intersectLists
+      (lib.platforms.x86 ++ lib.platforms.arm ++ lib.platforms.aarch64 ++ lib.platforms.loongarch64)
+      (lib.platforms.linux ++ lib.platforms.darwin);
   };
 })
diff --git a/pkgs/by-name/op/openjph/package.nix b/pkgs/by-name/op/openjph/package.nix
index c19c18f17a45..5fcebb7af663 100644
--- a/pkgs/by-name/op/openjph/package.nix
+++ b/pkgs/by-name/op/openjph/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "openjph";
-  version = "0.14.2";
+  version = "0.15.0";
 
   src = fetchFromGitHub {
     owner = "aous72";
     repo = "openjph";
     rev = finalAttrs.version;
-    hash = "sha256-jksQfNcgw3LRzQlcsGpTAn6avmM3BsH6wGNTdX9khYY=";
+    hash = "sha256-v4rqBTS6rk5fgDQqvqPwFAYxLNxtsRhZuQsj+y3sE3o=";
   };
 
   nativeBuildInputs = [ cmake validatePkgConfig ];
diff --git a/pkgs/by-name/op/openpam/package.nix b/pkgs/by-name/op/openpam/package.nix
new file mode 100644
index 000000000000..f0e823780a4a
--- /dev/null
+++ b/pkgs/by-name/op/openpam/package.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  autoreconfHook,
+  pkg-config,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "openpam";
+  version = "20230627";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/openpam/openpam/Ximenia/openpam-${finalAttrs.version}.tar.gz";
+    hash = "sha256-DZrI9bVaYkH1Bz8T7/HpVGFCLEWsGjBEXX4QaOkdtP0=";
+  };
+
+  strictDeps = true;
+
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
+
+  __structuredAttrs = true;
+
+  meta = with lib; {
+    homepage = "https://www.openpam.org";
+    description = "Open source PAM library that focuses on simplicity, correctness, and cleanliness";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ matthewbauer ];
+    license = licenses.bsd3;
+  };
+})
diff --git a/pkgs/by-name/op/openscad-unstable/package.nix b/pkgs/by-name/op/openscad-unstable/package.nix
index 09514490ebf9..b0881fe10e05 100644
--- a/pkgs/by-name/op/openscad-unstable/package.nix
+++ b/pkgs/by-name/op/openscad-unstable/package.nix
@@ -41,15 +41,16 @@ let
   # get cccl from source to avoid license issues
   nvidia-cccl = clangStdenv.mkDerivation {
     pname = "nvidia-cccl";
-    # note that v2.2.0 has some cmake issues
-    version = "2.2.0-unstable-2024-01-26";
+    # note, after v2.2.0, manifold dependency fails with some swap() ambiguities
+    version = "2.2.0";
     src = fetchFromGitHub {
       owner = "NVIDIA";
       repo = "cccl";
       fetchSubmodules = true;
-      rev = "0c9d03276206a5f59368e908e3d643610f9fddcd";
-      hash = "sha256-f11CNfa8jF9VbzvOoX1vT8zGIJL9cZ/VBpiklUn0YdU=";
+      rev = "v2.2.0";
+      hash = "sha256-azHDAuK0rAHrH+XkN3gHDrbwZOclP3zbEMe8VRpMjDQ=";
     };
+    patches = [ ./thrust-cmake.patch ];
     nativeBuildInputs = [ cmake pkg-config ];
     buildInputs = [ tbb_2021_11 ];
     cmakeFlags = [
@@ -81,12 +82,12 @@ in
 # clang consume much less RAM than GCC
 clangStdenv.mkDerivation rec {
   pname = "openscad-unstable";
-  version = "2024-03-10";
+  version = "2024-07-24";
   src = fetchFromGitHub {
     owner = "openscad";
     repo = "openscad";
-    rev = "db167b1df31fbd8a2101cf3a13dac148b0c2165d";
-    hash = "sha256-i2ZGYsNfMLDi3wRd/lohs9BuO2KuQ/7kJIXGtV65OQU=";
+    rev = "48f4430b12c29a95ab89ffdd8307205d7189421c";
+    hash = "sha256-A75JHmWVNlgURb5one5JFkztCrVff2RbyaDaObUp4ZY=";
     fetchSubmodules = true;
   };
   patches = [ ./test.diff ];
diff --git a/pkgs/by-name/op/openscad-unstable/thrust-cmake.patch b/pkgs/by-name/op/openscad-unstable/thrust-cmake.patch
new file mode 100644
index 000000000000..56422f099218
--- /dev/null
+++ b/pkgs/by-name/op/openscad-unstable/thrust-cmake.patch
@@ -0,0 +1,13 @@
+diff --git a/thrust/thrust/cmake/thrust-header-search.cmake.in b/thrust/thrust/cmake/thrust-header-search.cmake.in
+index 8529d89fe..94879ee01 100644
+--- a/thrust/thrust/cmake/thrust-header-search.cmake.in
++++ b/thrust/thrust/cmake/thrust-header-search.cmake.in
+@@ -7,7 +7,6 @@ set(from_install_prefix "@from_install_prefix@")
+ find_path(_THRUST_VERSION_INCLUDE_DIR thrust/version.h
+   NO_CMAKE_FIND_ROOT_PATH # Don't allow CMake to re-root the search
+   NO_DEFAULT_PATH # Only search explicit paths below:
+-  PATHS
+-    "${CMAKE_CURRENT_LIST_DIR}/${from_install_prefix}/@CMAKE_INSTALL_INCLUDEDIR@"
++  PATHS "@CMAKE_INSTALL_INCLUDEDIR@"
+ )
+ set_property(CACHE _THRUST_VERSION_INCLUDE_DIR PROPERTY TYPE INTERNAL)
diff --git a/pkgs/by-name/op/opentelemetry-cpp/package.nix b/pkgs/by-name/op/opentelemetry-cpp/package.nix
index 5efc256b5467..97a7af508fb6 100644
--- a/pkgs/by-name/op/opentelemetry-cpp/package.nix
+++ b/pkgs/by-name/op/opentelemetry-cpp/package.nix
@@ -21,13 +21,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "opentelemetry-cpp";
-  version = "1.16.0";
+  version = "1.16.1";
 
   src = fetchFromGitHub {
     owner = "open-telemetry";
     repo = "opentelemetry-cpp";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-rMqNz8F/ahgDtQiLsswckd2jQPR9FTeSZKRFz2jWVoo=";
+    hash = "sha256-31zwIZ4oehhfn+oCyg8VQTurPOmdgp72plH1Pf/9UKQ=";
   };
 
   patches = [
diff --git a/pkgs/by-name/op/opshin/package.nix b/pkgs/by-name/op/opshin/package.nix
index d7fdf72a8163..7a1a9801eb1f 100644
--- a/pkgs/by-name/op/opshin/package.nix
+++ b/pkgs/by-name/op/opshin/package.nix
@@ -1,11 +1,12 @@
-{ lib
-, fetchFromGitHub
-, python3
+{
+  lib,
+  fetchFromGitHub,
+  python3,
 }:
 
 python3.pkgs.buildPythonApplication rec {
   pname = "opshin";
-  version = "0.20.0";
+  version = "0.21.2";
 
   format = "pyproject";
 
@@ -13,7 +14,7 @@ python3.pkgs.buildPythonApplication rec {
     owner = "OpShin";
     repo = "opshin";
     rev = version;
-    hash = "sha256-fJlPeVAuEf80FVxdXnaKASLmjMEgz6ysXenUY72+sos=";
+    hash = "sha256-YBdYF04iKUwIZncqyEDalU+YN6/qwlx/vQDzZ19GaPU=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
@@ -27,6 +28,11 @@ python3.pkgs.buildPythonApplication rec {
     ordered-set
   ];
 
+  pythonRelaxDeps = [
+    "pluthon"
+    "uplc"
+  ];
+
   meta = with lib; {
     description = "Simple pythonic programming language for Smart Contracts on Cardano";
     homepage = "https://opshin.dev";
diff --git a/pkgs/by-name/or/orca/package.nix b/pkgs/by-name/or/orca/package.nix
index 464e2c1ff778..3670d6b52077 100644
--- a/pkgs/by-name/or/orca/package.nix
+++ b/pkgs/by-name/or/orca/package.nix
@@ -20,7 +20,7 @@
 , lsof
 , coreutils
 , gsettings-desktop-schemas
-, speechd
+, speechd-minimal
 , brltty
 , liblouis
 , gst_all_1
@@ -65,7 +65,7 @@ python3.pkgs.buildPythonApplication rec {
     brltty
     liblouis
     psutil
-    speechd
+    speechd-minimal
     gst-python
     setproctitle
   ];
diff --git a/pkgs/by-name/os/oswald/package.nix b/pkgs/by-name/os/oswald/package.nix
new file mode 100644
index 000000000000..13008e7b337b
--- /dev/null
+++ b/pkgs/by-name/os/oswald/package.nix
@@ -0,0 +1,36 @@
+{ lib, stdenvNoCC, fetchFromGitHub }:
+
+stdenvNoCC.mkDerivation {
+  pname = "oswald";
+  version = "4.103";
+
+  src = fetchFromGitHub {
+    owner = "googlefonts";
+    repo = "OswaldFont";
+    rev = "89795261ac9eeb9aa8cd99f43982c4e4b0e53261";
+    hash = "sha256-yoUduWHuuKDQaJnQ+CgeMw1vp2lgn/OVPokSDzEU7yk=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm444 fonts/ttf/*.ttf -t $out/share/fonts/truetype
+    install -Dm444 fonts/variable/*.ttf -t $out/share/fonts/variable
+
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "Reworking of the classic gothic typeface style";
+    longDescription = ''
+      Oswald is a reworking of the classic gothic typeface style
+      historically represented by designs such as 'Alternate Gothic'.
+      The characters of Oswald have been re-drawn and reformed to
+      better fit the pixel grid of standard digital screens.
+    '';
+    homepage = "https://github.com/googlefonts/OswaldFont";
+    license = lib.licenses.ofl;
+    platforms = lib.platforms.all;
+    maintainers = with lib.maintainers; [ mimvoid ];
+  };
+}
diff --git a/pkgs/by-name/pa/pahole/package.nix b/pkgs/by-name/pa/pahole/package.nix
index 275044ee40c0..14a31958c0e2 100644
--- a/pkgs/by-name/pa/pahole/package.nix
+++ b/pkgs/by-name/pa/pahole/package.nix
@@ -9,14 +9,15 @@
 , argp-standalone
 , musl-obstack
 , nixosTests
+, fetchpatch
 }:
 
 stdenv.mkDerivation rec {
   pname = "pahole";
-  version = "1.26";
+  version = "1.27";
   src = fetchzip {
     url = "https://git.kernel.org/pub/scm/devel/pahole/pahole.git/snapshot/pahole-${version}.tar.gz";
-    hash = "sha256-Lf9Z4vHRFplMrUf4VhJ7EDPn+S4RaS1Emm0wyEcG2HU=";
+    hash = "sha256-BwA17lc2yegmOzLfoIu8OmG/PVdc+4sOGzB8Jc4ZjGM=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -26,7 +27,16 @@ stdenv.mkDerivation rec {
     musl-obstack
   ];
 
-  patches = [ ./threading-reproducibility.patch ];
+  patches = [
+    # https://github.com/acmel/dwarves/pull/51 / https://lkml.kernel.org/r/20240626032253.3406460-1-asmadeus@codewreck.org
+    ./threading-reproducibility.patch
+    # https://github.com/acmel/dwarves/issues/53
+    (fetchpatch {
+      name = "fix-clang-btf-generation-bug.patch";
+      url = "https://github.com/acmel/dwarves/commit/6a2b27c0f512619b0e7a769a18a0fb05bb3789a5.patch";
+      hash = "sha256-Le1BAew/a/QKkYNLgSQxEvZ9mEEglUw8URwz1kiheeE=";
+    })
+  ];
 
   # Put libraries in "lib" subdirectory, not top level of $out
   cmakeFlags = [ "-D__LIB=lib" "-DLIBBPF_EMBEDDED=OFF" ];
diff --git a/pkgs/by-name/pa/pahole/threading-reproducibility.patch b/pkgs/by-name/pa/pahole/threading-reproducibility.patch
index 15893ce2d035..3c76d9c8521e 100644
--- a/pkgs/by-name/pa/pahole/threading-reproducibility.patch
+++ b/pkgs/by-name/pa/pahole/threading-reproducibility.patch
@@ -1,18 +1,15 @@
 diff --git a/pahole.c b/pahole.c
-index 6fc4ed6..a4e306f 100644
+index 954498d2ad4f..2b010658330c 100644
 --- a/pahole.c
 +++ b/pahole.c
-@@ -1687,8 +1687,11 @@ static error_t pahole__options_parser(int key, char *arg,
- 		  class_name = arg;			break;
- 	case 'j':
- #if _ELFUTILS_PREREQ(0, 178)
--		  conf_load.nr_jobs = arg ? atoi(arg) :
--					    sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
-+		  // Force single thread if reproducibility is desirable.
-+		  if (!getenv("SOURCE_DATE_EPOCH")) {
-+			  conf_load.nr_jobs = arg ? atoi(arg) :
-+						    sysconf(_SC_NPROCESSORS_ONLN) * 1.1;
-+		  }
- #else
- 		  fputs("pahole: Multithreading requires elfutils >= 0.178. Continuing with a single thread...\n", stderr);
- #endif
+@@ -3705,6 +3705,10 @@ int main(int argc, char *argv[])
+ 		goto out;
+ 	}
+ 
++	/* This being set means whoever called us tries to do a reproducible build */
++	if (getenv("SOURCE_DATE_EPOCH"))
++		conf_load.reproducible_build = true;
++
+ 	if (languages.str && parse_languages())
+ 		return rc;
+ 
diff --git a/pkgs/by-name/pa/paralus-cli/package.nix b/pkgs/by-name/pa/paralus-cli/package.nix
index 81ef70de32f7..e838acf69cf0 100644
--- a/pkgs/by-name/pa/paralus-cli/package.nix
+++ b/pkgs/by-name/pa/paralus-cli/package.nix
@@ -1,8 +1,6 @@
 { lib
 , fetchFromGitHub
 , buildGoModule
-, paralus-cli
-, testers
 }:
 
 buildGoModule rec {
diff --git a/pkgs/by-name/pa/parinfer-rust-emacs/package.nix b/pkgs/by-name/pa/parinfer-rust-emacs/package.nix
index 8bed804d3d66..2c9d7a48f045 100644
--- a/pkgs/by-name/pa/parinfer-rust-emacs/package.nix
+++ b/pkgs/by-name/pa/parinfer-rust-emacs/package.nix
@@ -1,7 +1,6 @@
 {
   fetchFromGitHub,
   lib,
-  llvmPackages,
   rustPlatform,
 }:
 rustPlatform.buildRustPackage rec {
diff --git a/pkgs/by-name/pa/parsedmarc/package.nix b/pkgs/by-name/pa/parsedmarc/package.nix
index fab1e01e8ba4..6c08dced6326 100644
--- a/pkgs/by-name/pa/parsedmarc/package.nix
+++ b/pkgs/by-name/pa/parsedmarc/package.nix
@@ -1,5 +1,4 @@
-{ lib
-, python3
+{ python3
 , fetchFromGitHub
 }:
 
diff --git a/pkgs/by-name/pc/pcsx2-bin/package.nix b/pkgs/by-name/pc/pcsx2-bin/package.nix
index ec71fc9955ec..db8ddcb957db 100644
--- a/pkgs/by-name/pc/pcsx2-bin/package.nix
+++ b/pkgs/by-name/pc/pcsx2-bin/package.nix
@@ -3,17 +3,16 @@
   stdenvNoCC,
   fetchurl,
   makeWrapper,
-  # To grab metadata
-  pcsx2,
+  nix-update-script,
 }:
 
 stdenvNoCC.mkDerivation (finalAttrs: {
-  pname = "pcsx2";
-  version = "1.7.5919";
+  pname = "pcsx2-bin";
+  version = "2.1.17";
 
   src = fetchurl {
     url = "https://github.com/PCSX2/pcsx2/releases/download/v${finalAttrs.version}/pcsx2-v${finalAttrs.version}-macos-Qt.tar.xz";
-    hash = "sha256-NYgHsYXoIhI2pxqqiMgz5sKBAezEFf4AfEfu5S3diMg=";
+    hash = "sha256-WuxvMcGuCyTAc99JkUjG0qcV7SXWy9fmaZR0+8iGepQ=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -26,28 +25,33 @@ stdenvNoCC.mkDerivation (finalAttrs: {
 
   installPhase = ''
     runHook preInstall
-    mkdir -p $out/{bin,Applications}
+    mkdir -p $out/Applications
     cp -r "PCSX2-v${finalAttrs.version}.app" $out/Applications/PCSX2.app
-    makeWrapper $out/Applications/PCSX2.app/Contents/MacOS/PCSX2 $out/bin/pcsx2-qt
     runHook postInstall
   '';
 
   passthru = {
-    updateScript = ./update.sh;
+    updateScript = nix-update-script { };
   };
 
   meta = {
-    inherit (pcsx2.meta)
-      homepage
-      longDescription
-      license
-      changelog
-      downloadPage
-      ;
-    description = "Playstation 2 emulator; precompiled binary for MacOS, repacked from official website";
+    homepage = "https://pcsx2.net";
+    description = "Playstation 2 emulator (precompiled binary, repacked from official website)";
+    longDescription = ''
+      PCSX2 is an open-source PlayStation 2 (AKA PS2) emulator. Its purpose is
+      to emulate the PS2 hardware, using a combination of MIPS CPU Interpreters,
+      Recompilers and a Virtual Machine which manages hardware states and PS2
+      system memory. This allows you to play PS2 games on your PC, with many
+      additional features and benefits.
+    '';
+    changelog = "https://github.com/PCSX2/pcsx2/releases/tag/v${finalAttrs.version}";
+    downloadPage = "https://github.com/PCSX2/pcsx2";
+    license = with lib.licenses; [
+      gpl3Plus
+      lgpl3Plus
+    ];
     maintainers = with lib.maintainers; [ matteopacini ];
-    mainProgram = "pcsx2-qt";
-    platforms = lib.systems.inspect.patternLogicalAnd lib.systems.inspect.patterns.isDarwin lib.systems.inspect.patterns.isx86_64;
+    platforms = [ "x86_64-darwin" ];
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
   };
 })
diff --git a/pkgs/by-name/pc/pcsx2-bin/update.sh b/pkgs/by-name/pc/pcsx2-bin/update.sh
deleted file mode 100755
index 0450ad205744..000000000000
--- a/pkgs/by-name/pc/pcsx2-bin/update.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env nix-shell
-#!nix-shell -i bash -p curl jq gnused common-updater-scripts
-
-set -eou pipefail
-
-LATEST_VERSION="$(curl --silent --fail ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/PCSX2/pcsx2/releases" | jq '.[0].tag_name' --raw-output | sed 's/^v//')"
-
-update-source-version pcsx2-bin "$LATEST_VERSION"
diff --git a/pkgs/by-name/pd/pdf2odt/package.nix b/pkgs/by-name/pd/pdf2odt/package.nix
index eb748da0842b..809af8919343 100644
--- a/pkgs/by-name/pd/pdf2odt/package.nix
+++ b/pkgs/by-name/pd/pdf2odt/package.nix
@@ -49,6 +49,10 @@ resholve.mkDerivation rec {
       imagemagick
       zip
     ];
+    execer = [
+      # zip can exec; confirmed 2 invocations in pdf2odt don't
+      "cannot:${zip}/bin/zip"
+    ];
   };
 
   meta = with lib; {
diff --git a/pkgs/by-name/pd/pdf4qt/package.nix b/pkgs/by-name/pd/pdf4qt/package.nix
index ff9aa46666cf..d11d346724d2 100644
--- a/pkgs/by-name/pd/pdf4qt/package.nix
+++ b/pkgs/by-name/pd/pdf4qt/package.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, substituteAll
 , lcms
 , cmake
 , pkg-config
diff --git a/pkgs/by-name/pe/perl-debug-adapter/package.nix b/pkgs/by-name/pe/perl-debug-adapter/package.nix
index eb9dd371a9b9..85deced748f6 100644
--- a/pkgs/by-name/pe/perl-debug-adapter/package.nix
+++ b/pkgs/by-name/pe/perl-debug-adapter/package.nix
@@ -1,7 +1,6 @@
 { lib
 , buildNpmPackage
 , fetchFromGitHub
-, makeWrapper
 , perl
 # Needed if you want to use it for a perl script with dependencies.
 , extraPerlPackages ? []
diff --git a/pkgs/by-name/pe/petsc/package.nix b/pkgs/by-name/pe/petsc/package.nix
index 421ed4d5b8f1..a9cc4ace97a3 100644
--- a/pkgs/by-name/pe/petsc/package.nix
+++ b/pkgs/by-name/pe/petsc/package.nix
@@ -2,7 +2,7 @@
   lib,
   stdenv,
   fetchzip,
-  darwin,
+  cctools,
   gfortran,
   python3,
   blas,
@@ -51,7 +51,7 @@ stdenv.mkDerivation rec {
 
   prePatch = lib.optionalString stdenv.isDarwin ''
     substituteInPlace config/install.py \
-      --replace /usr/bin/install_name_tool ${darwin.cctools}/bin/install_name_tool
+      --replace /usr/bin/install_name_tool ${cctools}/bin/install_name_tool
   '';
 
   # Both OpenMPI and MPICH get confused by the sandbox environment and spew errors like this (both to stdout and stderr):
diff --git a/pkgs/by-name/pg/pg-gvm/package.nix b/pkgs/by-name/pg/pg-gvm/package.nix
new file mode 100644
index 000000000000..96aa7a2f68b9
--- /dev/null
+++ b/pkgs/by-name/pg/pg-gvm/package.nix
@@ -0,0 +1,60 @@
+{
+  cmake,
+  fetchFromGitHub,
+  glib,
+  gvm-libs,
+  icu,
+  lib,
+  libical,
+  pcre2,
+  pkg-config,
+  postgresql,
+  stdenv,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "pg-gvm";
+  version = "22.6.5";
+
+  src = fetchFromGitHub {
+    owner = "greenbone";
+    repo = "pg-gvm";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-19ZmQdLjfwJwOMoO16rKJYKOnRyt7SQOdkYTxt8WQ2A=";
+  };
+
+  strictDeps = true;
+
+  configurePhase = ''
+    runHook preConfigure
+
+    cmake \
+      -DCMAKE_INSTALL_DEV_PREFIX=$out .
+
+    runHook postConfigure
+  '';
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    glib
+    gvm-libs
+    icu
+    libical
+    pcre2
+    postgresql
+  ];
+
+  meta = {
+    description = "Greenbone Library for helper functions in PostgreSQL";
+    homepage = "https://github.com/greenbone/pg-gvm";
+    changelog = "https://github.com/greenbone/pg-gvm/releases/tag/v${version}";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ tochiaha ];
+    mainProgram = "pg-gvm";
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/pkgs/by-name/pg/pghero/package.nix b/pkgs/by-name/pg/pghero/package.nix
index 0f74a39add63..34c9d9466da5 100644
--- a/pkgs/by-name/pg/pghero/package.nix
+++ b/pkgs/by-name/pg/pghero/package.nix
@@ -1,6 +1,5 @@
 { lib
 , stdenv
-, ruby
 , bundlerEnv
 , buildPackages
 , fetchFromGitHub
diff --git a/pkgs/by-name/ph/phpdocumentor/package.nix b/pkgs/by-name/ph/phpdocumentor/package.nix
index 174b4e853de7..d67758673a10 100644
--- a/pkgs/by-name/ph/phpdocumentor/package.nix
+++ b/pkgs/by-name/ph/phpdocumentor/package.nix
@@ -6,13 +6,13 @@
 
 php.buildComposerProject (finalAttrs: {
   pname = "phpdocumentor";
-  version = "3.5.2";
+  version = "3.5.3";
 
   src = fetchFromGitHub {
     owner = "phpDocumentor";
     repo = "phpDocumentor";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-7gW6iqMOcWBaxCFlE5C3K6jjdu5t4lIuL4sXai0Uw9s=";
+    hash = "sha256-zpAKygpxyKYfefa5ag76saTSQNLon/v3rYkl0Nj2+FM=";
   };
 
   vendorHash = "sha256-VNlAzWueF7ZXBpr9RrJghMPrAUof7f1DCh1osFIwFfs=";
diff --git a/pkgs/by-name/ph/phpunit/package.nix b/pkgs/by-name/ph/phpunit/package.nix
index 272a7d74e170..347f8e80a862 100644
--- a/pkgs/by-name/ph/phpunit/package.nix
+++ b/pkgs/by-name/ph/phpunit/package.nix
@@ -6,13 +6,13 @@
 
 php.buildComposerProject (finalAttrs: {
   pname = "phpunit";
-  version = "11.2.7";
+  version = "11.2.8";
 
   src = fetchFromGitHub {
     owner = "sebastianbergmann";
     repo = "phpunit";
     rev = finalAttrs.version;
-    hash = "sha256-s/zfTW8a+E/FOuHg+oSpVZdxBdfIVL0RmvBBcI6zB9Y=";
+    hash = "sha256-f3xLLOLpbSbgYoGpJHvUpea+wOu2U3M6jxZy/Rxro20=";
   };
 
   vendorHash = "sha256-Gjii3m8wWmZbozKnJW/n9+wQUupemIU8XjmlCuTtfxU=";
diff --git a/pkgs/by-name/ph/physac/package.nix b/pkgs/by-name/ph/physac/package.nix
index 3040c9eda253..5d6ff694e5ab 100644
--- a/pkgs/by-name/ph/physac/package.nix
+++ b/pkgs/by-name/ph/physac/package.nix
@@ -6,7 +6,7 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "physac";
-  version = "2.5-unstable-2023-12-11";
+  version = "1.1-unstable-2023-12-11";
 
   src = fetchFromGitHub {
     owner = "victorfisac";
diff --git a/pkgs/by-name/pi/picocrypt/package.nix b/pkgs/by-name/pi/picocrypt/package.nix
index 964746933186..2cad57457117 100644
--- a/pkgs/by-name/pi/picocrypt/package.nix
+++ b/pkgs/by-name/pi/picocrypt/package.nix
@@ -3,7 +3,6 @@
   buildGoModule,
   fetchFromGitHub,
   stdenv,
-  darwin,
   copyDesktopItems,
   makeDesktopItem,
 
diff --git a/pkgs/by-name/pi/pix/package.nix b/pkgs/by-name/pi/pix/package.nix
index ca16fe960dca..b7804eafeae1 100644
--- a/pkgs/by-name/pi/pix/package.nix
+++ b/pkgs/by-name/pi/pix/package.nix
@@ -33,13 +33,13 @@
 
 stdenv.mkDerivation rec {
   pname = "pix";
-  version = "3.4.2";
+  version = "3.4.3";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Ra+5hXSNPRc2LvTeEYwg1xSnIYgrpfvTrpPwzuTXhdU=";
+    sha256 = "sha256-WL9EW7oKeQwufw1VYDigbqAt52GQTpc5RgDEmnKO6vc=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/pl/plasma-panel-colorizer/package.nix b/pkgs/by-name/pl/plasma-panel-colorizer/package.nix
new file mode 100644
index 000000000000..2ee82abcf42a
--- /dev/null
+++ b/pkgs/by-name/pl/plasma-panel-colorizer/package.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+  kdePackages,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "plasma-panel-colorizer";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "luisbocanegra";
+    repo = "plasma-panel-colorizer";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-+JweNB+zjbXh6Htyvu2vgogAr5Fl5wDPCpm6GV18NJ0=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    kdePackages.extra-cmake-modules
+    kdePackages.plasma-desktop
+  ];
+
+  dontWrapQtApps = true;
+
+  meta = {
+    description = "Fully-featured widget to bring Latte-Dock and WM status bar customization features to the default KDE Plasma panel";
+    homepage = "https://github.com/luisbocanegra/plasma-panel-colorizer";
+    changelog = "https://github.com/luisbocanegra/plasma-panel-colorizer/blob/main/CHANGELOG.md";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ HeitorAugustoLN ];
+    inherit (kdePackages.kwindowsystem.meta) platforms;
+  };
+})
diff --git a/pkgs/by-name/pl/plasma-plugin-blurredwallpaper/package.nix b/pkgs/by-name/pl/plasma-plugin-blurredwallpaper/package.nix
new file mode 100644
index 000000000000..b6fc12d6484a
--- /dev/null
+++ b/pkgs/by-name/pl/plasma-plugin-blurredwallpaper/package.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitHub,
+  nix-update-script,
+}:
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "plasma-plugin-blurredwallpaper";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner = "bouteillerAlan";
+    repo = "blurredwallpaper";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-+MjnVsGHqitQytxiAH39Kx9SXuTEFfIC14Ayzu4yE4I=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+    install -d $out/share/plasma/wallpapers/a2n.blur{,.plasma5}
+    cp -r a2n.blur{,.plasma5} $out/share/plasma/wallpapers/
+    runHook postInstall
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "Plasma 6 wallpaper plugin to blur the wallpaper of active window";
+    homepage = "https://github.com/bouteillerAlan/blurredwallpaper";
+    license = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [
+      dr460nf1r3
+      johnrtitor
+    ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/pr/pretix/package.nix b/pkgs/by-name/pr/pretix/package.nix
index fa30d5c1a17d..1a8731768616 100644
--- a/pkgs/by-name/pr/pretix/package.nix
+++ b/pkgs/by-name/pr/pretix/package.nix
@@ -98,6 +98,7 @@ python.pkgs.buildPythonApplication rec {
       --replace-fail "markdown==3.6" markdown \
       --replace-fail "protobuf==5.27.*" protobuf \
       --replace-fail "pycryptodome==3.20.*" pycryptodome \
+      --replace-fail "pypdf==4.2.*" pypdf \
       --replace-fail "python-dateutil==2.9.*" python-dateutil \
       --replace-fail "requests==2.31.*" "requests" \
       --replace-fail "sentry-sdk==2.5.*" "sentry-sdk>=2" \
diff --git a/pkgs/by-name/pr/prettier-plugin-go-template/package.nix b/pkgs/by-name/pr/prettier-plugin-go-template/package.nix
index 162c343e7ef5..79161f56c481 100644
--- a/pkgs/by-name/pr/prettier-plugin-go-template/package.nix
+++ b/pkgs/by-name/pr/prettier-plugin-go-template/package.nix
@@ -17,8 +17,6 @@ buildNpmPackage rec {
 
   npmDepsHash = "sha256-PpJnVZFRxpUHux2jIBDtyBS4qNo6IJY4kwTAq6stEVQ=";
 
-  dontNpmBuild = true;
-
   meta = {
     description = "Fixes prettier formatting for go templates";
     mainProgram = "prettier-plugin-go-template";
diff --git a/pkgs/by-name/pr/previewqt/package.nix b/pkgs/by-name/pr/previewqt/package.nix
new file mode 100644
index 000000000000..f493f6ec3dab
--- /dev/null
+++ b/pkgs/by-name/pr/previewqt/package.nix
@@ -0,0 +1,64 @@
+{
+  lib,
+  vips,
+  resvg,
+  mpv,
+  libraw,
+  imagemagick,
+  libdevil,
+  stdenv,
+  fetchFromGitLab,
+  cmake,
+  libarchive,
+  qt6Packages,
+  extra-cmake-modules,
+  exiv2,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "previewqt";
+  version = "3.0";
+
+  src = fetchFromGitLab {
+    owner = "lspies";
+    repo = "previewqt";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-cDtqgezKGgSdhw8x1mM4cZ0H3SfUPEyWP6rRD+kRwXc=";
+  };
+
+  # can't find qtquick3d
+  strictDeps = false;
+
+  nativeBuildInputs = [
+    cmake
+    extra-cmake-modules
+    qt6Packages.wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    exiv2
+    imagemagick
+    qt6Packages.poppler
+    qt6Packages.qtmultimedia
+    qt6Packages.qtquick3d
+    qt6Packages.qtsvg
+    qt6Packages.qttools
+    qt6Packages.qtwebengine
+    libarchive
+    libdevil
+    libraw
+    mpv
+    resvg
+    vips
+  ];
+
+  meta = {
+    description = "Qt-based file previewer";
+    homepage = "https://photoqt.org/previewqt";
+    changelog = "https://gitlab.com/lspies/previewqt/-/blob/v${version}/CHANGELOG";
+    license = lib.licenses.gpl2Plus;
+    maintainers = with lib.maintainers; [ eclairevoyant ];
+    mainProgram = "previewqt";
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/pr/prismlauncher/package.nix b/pkgs/by-name/pr/prismlauncher/package.nix
index c6ff6894389d..27b66966d42e 100644
--- a/pkgs/by-name/pr/prismlauncher/package.nix
+++ b/pkgs/by-name/pr/prismlauncher/package.nix
@@ -3,7 +3,7 @@
   stdenv,
   symlinkJoin,
   prismlauncher-unwrapped,
-  addOpenGLRunpath,
+  addDriverRunpath,
   flite,
   gamemode,
   glfw,
@@ -132,7 +132,7 @@ symlinkJoin {
     in
     [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ]
     ++ lib.optionals stdenv.isLinux [
-      "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}"
+      "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}"
       "--prefix PATH : ${lib.makeBinPath runtimePrograms}"
     ];
 
diff --git a/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix b/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix
index 3b98cf5e3d76..4adcaf0a747d 100644
--- a/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix
+++ b/pkgs/by-name/pr/prometheus-deluge-exporter/package.nix
@@ -1,7 +1,6 @@
 { lib
 , python3
 , fetchFromGitHub
-, nixosTests
 }:
 
 python3.pkgs.buildPythonApplication rec {
diff --git a/pkgs/by-name/pr/promql-cli/package.nix b/pkgs/by-name/pr/promql-cli/package.nix
new file mode 100644
index 000000000000..d5188e83f293
--- /dev/null
+++ b/pkgs/by-name/pr/promql-cli/package.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "promql-cli";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "nalbury";
+    repo = pname;
+    rev = "v${version}";
+    hash = "sha256-EV63fdG+GF+kVLH2TxHPhRcUU5xBvkW5bhHC1lEoj84=";
+  };
+
+  vendorHash = "sha256-jhNll04xGaxS6NJTh4spSW9zPrff8jk5OEQiRevPQwU=";
+
+  ldflags = [ "-s" "-w" ];
+
+  postInstall = ''
+    mv -v $out/bin/promql-cli $out/bin/promql
+  '';
+
+  meta = with lib; {
+    description = "Command-line tool to query a Prometheus server with PromQL and visualize the output";
+    homepage = "https://github.com/nalbury/promql-cli";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "promql";
+  };
+}
diff --git a/pkgs/by-name/pr/protoc-gen-js/package.nix b/pkgs/by-name/pr/protoc-gen-js/package.nix
index 08fb3345fedc..78d03e9b2b7b 100644
--- a/pkgs/by-name/pr/protoc-gen-js/package.nix
+++ b/pkgs/by-name/pr/protoc-gen-js/package.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildBazelPackage, bazel_6, fetchFromGitHub, darwin }:
+{ stdenv, lib, buildBazelPackage, bazel_6, fetchFromGitHub, cctools }:
 
 buildBazelPackage rec {
   pname = "protoc-gen-js";
@@ -17,7 +17,7 @@ buildBazelPackage rec {
   removeRulesCC = false;
   removeLocalConfigCC = false;
 
-  LIBTOOL = lib.optionalString stdenv.isDarwin "${darwin.cctools}/bin/libtool";
+  LIBTOOL = lib.optionalString stdenv.isDarwin "${cctools}/bin/libtool";
 
   fetchAttrs.sha256 = "sha256-WOBlZ0XNrl5UxIaSDxZeOfzS2a8ZkrKdTLKHBDC9UNQ=";
 
diff --git a/pkgs/by-name/pr/proton-pass/package.nix b/pkgs/by-name/pr/proton-pass/package.nix
index 9e2b4d5f490d..58d26335599a 100644
--- a/pkgs/by-name/pr/proton-pass/package.nix
+++ b/pkgs/by-name/pr/proton-pass/package.nix
@@ -8,11 +8,11 @@
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "proton-pass";
-  version = "1.20.1";
+  version = "1.20.2";
 
   src = fetchurl {
     url = "https://proton.me/download/PassDesktop/linux/x64/ProtonPass_${finalAttrs.version}.deb";
-    hash = "sha256-G14/gVevvccV8ILPr701IP8krR2/mOnRn0icCP1Hi4s=";
+    hash = "sha256-4QSBKVnEH7yDXwqY+29/a+yWv89i/TVCYO26V95KA4s=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix
index 3a500fe0c769..815b0dc8fe8e 100644
--- a/pkgs/by-name/pr/protonmail-desktop/package.nix
+++ b/pkgs/by-name/pr/protonmail-desktop/package.nix
@@ -10,27 +10,33 @@
 
 let
   mainProgram = "proton-mail";
+  srcHashes = {
+    # Upstream info: It's intended to stay like this in further releases
+    # https://github.com/NixOS/nixpkgs/pull/326152#discussion_r1679558135
+    universal-darwin = "sha256-JfZwHFp0aZtHcbP7tyG7uqFs2w+LWKfnfyuxxpxDJZ8=";
+    x86_64-linux = "sha256-En5vkTHYtwN6GMgbtyhzsPqknOPRO9KlTqZfbBFaIFQ=";
+  };
+
 in
 stdenv.mkDerivation rec {
   pname = "protonmail-desktop";
-  version = "1.0.4";
+  # Upstream info: "v"-prefix got dropped
+  version = "1.0.5";
 
-  src =
-    {
-      "x86_64-linux" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/proton-mail_${version}_amd64.deb";
-        hash = "sha256-KY/rjiJozOQW27FYljy5N1VKuKroJz3V485DPaH01JY=";
-      };
-      "x86_64-darwin" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-x64-${version}.zip";
-        hash = "sha256-I5Yj1JR3DaAmC6WKI4X/d/q9rvmsck9SE3Mx3AY6yvU=";
-      };
-      "aarch64-darwin" = fetchurl {
-        url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-arm64-${version}.zip";
-        hash = "sha256-j1F8hhLSq/C1WQXGrYnvFK8nNz4qwoA1ohNzPsS3tiY=";
-      };
-    }
-    .${stdenv.hostPlatform.system};
+  src = fetchurl {
+    url =
+      if stdenv.isDarwin then
+        "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/Proton.Mail-darwin-universal-${version}.zip"
+      else
+        "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/proton-mail_${version}_amd64.deb";
+    sha256 =
+      {
+        x86_64-linux = srcHashes.x86_64-linux;
+        x86_64-darwin = srcHashes.universal-darwin;
+        aarch64-darwin = srcHashes.universal-darwin;
+      }
+      .${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}");
+  };
 
   sourceRoot = lib.optionalString stdenv.isDarwin ".";
 
@@ -42,18 +48,25 @@ stdenv.mkDerivation rec {
   ] ++ lib.optional stdenv.isLinux dpkg ++ lib.optional stdenv.isDarwin unzip;
 
   installPhase =
-    lib.optionalString stdenv.isLinux ''
-      runHook preInstall
-      mkdir -p $out
-      cp -r usr/share/ $out/
-      cp -r usr/lib/proton-mail/resources/app.asar $out/share/
-      runHook postInstall
+    let
+      darwin = ''
+        mkdir -p $out/{Applications,bin}
+        cp -r "Proton Mail.app" $out/Applications/
+        makeWrapper $out/Applications/"Proton Mail.app"/Contents/MacOS/Proton\ Mail $out/bin/protonmail-desktop
+      '';
+      linux = ''
+        runHook preInstall
+        mkdir -p $out
+        cp -r usr/share/ $out/
+        cp -r usr/lib/proton-mail/resources/app.asar $out/share/
+      '';
+
+    in
     ''
-    + lib.optionalString stdenv.isDarwin ''
       runHook preInstall
-      mkdir -p $out/{Applications,bin}
-      cp -r "Proton Mail.app" $out/Applications/
-      makeWrapper $out/Applications/"Proton Mail.app"/Contents/MacOS/Proton\ Mail $out/bin/protonmail-desktop
+
+      ${if stdenv.isDarwin then darwin else linux}
+
       runHook postInstall
     '';
 
@@ -66,17 +79,23 @@ stdenv.mkDerivation rec {
       --inherit-argv0
   '';
 
-  meta = with lib; {
+  passthru.updateScript = ./update.sh;
+
+  meta = {
     description = "Desktop application for Mail and Calendar, made with Electron";
     homepage = "https://github.com/ProtonMail/inbox-desktop";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [
       rsniezek
       sebtm
       matteopacini
     ];
-    platforms = [ "x86_64-linux" ] ++ platforms.darwin;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    platforms = [
+      "x86_64-linux"
+      "x86_64-darwin"
+      "aarch64-darwin"
+    ];
+    sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
     inherit mainProgram;
   };
 }
diff --git a/pkgs/by-name/pr/protonmail-desktop/update.sh b/pkgs/by-name/pr/protonmail-desktop/update.sh
new file mode 100755
index 000000000000..a640b40d49e3
--- /dev/null
+++ b/pkgs/by-name/pr/protonmail-desktop/update.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p common-updater-scripts jq
+
+# shellcheck disable=SC1008
+
+set -eu -o pipefail
+
+latestVersion=$(curl https://api.github.com/repos/ProtonMail/inbox-desktop/releases/latest | jq -r '.tag_name')
+
+declare -A platforms
+platforms[x86_64-linux]="amd64"
+platforms[x86_64-darwin]="x64"
+platforms[aarch64-darwin]="arm64"
+
+for platform in "${!platforms[@]}"
+do
+  arch=${platforms[$platform]}
+  os=$(echo "$platform" | cut -d "-" -f2)
+
+  if [[ "$os" == "linux" ]]; then
+    downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/proton-mail_${latestVersion}_${arch}.deb"
+  else
+    downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/Proton.Mail-${os}-${arch}-${latestVersion}.zip"
+  fi
+  echo "$downloadUrl"
+
+  latestSha=$(nix store prefetch-file "$downloadUrl" --json | jq -r '.hash')
+
+  update-source-version "protonmail-desktop" "$latestVersion" "$latestSha" --system="$platform" --ignore-same-version --file=./pkgs/by-name/pr/protonmail-desktop/package.nix
+done
diff --git a/pkgs/by-name/pr/prowler/package.nix b/pkgs/by-name/pr/prowler/package.nix
index 1b3649775af8..98c1ddfd34f7 100644
--- a/pkgs/by-name/pr/prowler/package.nix
+++ b/pkgs/by-name/pr/prowler/package.nix
@@ -6,21 +6,19 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "prowler";
-  version = "3.15.0";
+  version = "3.16.11";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "prowler-cloud";
     repo = "prowler";
     rev = "refs/tags/${version}";
-    hash = "sha256-7aWWaGdHTveFwXsFNj4+tjX5g83/nD77jLAOrDOw8JE=";
+    hash = "sha256-cBqPD5lOhaMXh4OKo7+mERU3YjRU1NiRzSbnKFR6+1I=";
   };
 
   pythonRelaxDeps = true;
 
-  build-system = with python3.pkgs; [
-    poetry-core
-  ];
+  build-system = with python3.pkgs; [ poetry-core ];
 
   dependencies = with python3.pkgs; [
     alive-progress
@@ -53,10 +51,12 @@ python3.pkgs.buildPythonApplication rec {
     msgraph-sdk
     msrestazure
     pydantic_1
+    pytz
     schema
     shodan
     slack-sdk
     tabulate
+    tzlocal
   ];
 
   pythonImportsCheck = [ "prowler" ];
diff --git a/pkgs/by-name/pr/prox/package.nix b/pkgs/by-name/pr/prox/package.nix
index ef7b588ea51f..7a92dc2ab56d 100644
--- a/pkgs/by-name/pr/prox/package.nix
+++ b/pkgs/by-name/pr/prox/package.nix
@@ -24,7 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/fgrosse/prox";
-    description = "Process runner for Procfile-based applications ";
+    description = "Process runner for Procfile-based applications";
     mainProgram = "prox";
     license = licenses.bsd2;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/by-name/pu/pupdate/package.nix b/pkgs/by-name/pu/pupdate/package.nix
index a45b77d2e965..ae2ed54131be 100644
--- a/pkgs/by-name/pu/pupdate/package.nix
+++ b/pkgs/by-name/pu/pupdate/package.nix
@@ -1,5 +1,4 @@
-{ pkgs
-, stdenv
+{ stdenv
 , lib
 , fetchFromGitHub
 , buildDotnetModule
@@ -12,13 +11,13 @@
 
 buildDotnetModule rec {
   pname = "pupdate";
-  version = "3.10.3";
+  version = "3.11.0";
 
   src = fetchFromGitHub {
     owner = "mattpannella";
     repo = "${pname}";
     rev = "${version}";
-    hash = "sha256-xaoOfylDf8KBGjS5RxPH156PRfEBFk+sRZ4QTCMSQbY=";
+    hash = "sha256-SqEmpmjI0m6bJT43TLEmEciNEqR/ggQZqFLCm7oFSnY=";
   };
 
   buildInputs = [
@@ -55,7 +54,7 @@ buildDotnetModule rec {
 
   meta = with lib; {
     homepage = "https://github.com/mattpannella/pupdate";
-    description = "Pupdate - A thing for updating your Analogue Pocket ";
+    description = "Pupdate - A thing for updating your Analogue Pocket";
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ p-rintz ];
diff --git a/pkgs/by-name/pv/pv/package.nix b/pkgs/by-name/pv/pv/package.nix
new file mode 100644
index 000000000000..2b52759c3b78
--- /dev/null
+++ b/pkgs/by-name/pv/pv/package.nix
@@ -0,0 +1,23 @@
+{ lib
+, stdenv
+, fetchurl
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "pv";
+  version = "1.8.12";
+
+  src = fetchurl {
+    url = "https://www.ivarch.com/programs/sources/pv-${finalAttrs.version}.tar.gz";
+    hash = "sha256-lof53u2wnQ3ADYDDBpHwyRKCwNXY+n1qKghch0LCzXw=";
+  };
+
+  meta = {
+    homepage = "https://www.ivarch.com/programs/pv.shtml";
+    description = "Tool for monitoring the progress of data through a pipeline";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ matthiasbeyer ];
+    platforms = lib.platforms.all;
+    mainProgram = "pv";
+  };
+})
diff --git a/pkgs/by-name/pw/pw3270/package.nix b/pkgs/by-name/pw/pw3270/package.nix
index 657a21806950..953674cd3ec5 100644
--- a/pkgs/by-name/pw/pw3270/package.nix
+++ b/pkgs/by-name/pw/pw3270/package.nix
@@ -5,7 +5,6 @@
 , pkg-config
 , automake
 , autoconf
-, m4
 , libtool
 , gtk3
 , libv3270
@@ -13,7 +12,6 @@
 , openssl
 , gettext
 , desktop-file-utils
-, glib
 , wrapGAppsHook3
 }:
 
diff --git a/pkgs/by-name/py/pyright/package.nix b/pkgs/by-name/py/pyright/package.nix
index 8d53e6cd0a38..f9d8679b2104 100644
--- a/pkgs/by-name/py/pyright/package.nix
+++ b/pkgs/by-name/py/pyright/package.nix
@@ -1,13 +1,13 @@
 { lib, buildNpmPackage, fetchFromGitHub, runCommand, jq }:
 
 let
-  version = "1.1.370";
+  version = "1.1.373";
 
   src = fetchFromGitHub {
     owner = "Microsoft";
     repo = "pyright";
     rev = "${version}";
-    hash = "sha256-IYQ6HUEaT3KjMcFeWal4Ru2A/Kxf7sAMZ1p48l9RQ2o=";
+    hash = "sha256-TMQ9ttWUDwf7Lp2JOwpIu4Bn3TbioXxkCPpEZiPDPyk=";
   };
 
   patchedPackageJSON = runCommand "package.json" { } ''
@@ -37,7 +37,7 @@ let
     pname = "pyright-internal";
     inherit version src;
     sourceRoot = "${src.name}/packages/pyright-internal";
-    npmDepsHash = "sha256-P57+FEyjsHXwZ3A91bfecCuXvkrrwqsRHMjV3oGt1Nw=";
+    npmDepsHash = "sha256-BsfhbfhjHIlip3IiOJewjVD6Eq4bgr+Yo81rvIrJr7E=";
     dontNpmBuild = true;
     installPhase = ''
       runHook preInstall
@@ -51,7 +51,7 @@ buildNpmPackage rec {
   inherit version src;
 
   sourceRoot = "${src.name}/packages/pyright";
-  npmDepsHash = "sha256-tLRSGuJMKAKvTsmERI7SyQXamAJPi/h4P/wQEo4HdtY=";
+  npmDepsHash = "sha256-cZhNkQjO1dAghXNoVCF0NQEi9QjXci626Ck9PXntoYA=";
 
   postPatch = ''
     chmod +w ../../
diff --git a/pkgs/by-name/qr/qrcode/package.nix b/pkgs/by-name/qr/qrcode/package.nix
index 2a02e8e2043e..0d919daf8137 100644
--- a/pkgs/by-name/qr/qrcode/package.nix
+++ b/pkgs/by-name/qr/qrcode/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation {
   pname = "qrcode";
-  version = "0-unstable-2024-06-05";
+  version = "0-unstable-2024-07-18";
 
   src = fetchFromGitHub {
     owner = "qsantos";
     repo = "qrcode";
-    rev = "822923d1b088c58e329c155baa5e5f3e83021947";
-    hash = "sha256-e/HnMOcfpGaQkPdp9zww08G4Rc1z0flA2Ghu57kKsQA=";
+    rev = "6e882a26a30ab9478ba98591ecc547614fb62b69";
+    hash = "sha256-wJL+XyYnI8crKVu+xwCioD5YcFjE5a92qkbOB7juw+s=";
   };
 
   makeFlags = [ "CC=${stdenv.cc.targetPrefix}cc" ];
diff --git a/pkgs/by-name/qr/qrtool/package.nix b/pkgs/by-name/qr/qrtool/package.nix
index 2ae9805af816..c761e4c17863 100644
--- a/pkgs/by-name/qr/qrtool/package.nix
+++ b/pkgs/by-name/qr/qrtool/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "qrtool";
-  version = "0.11.2";
+  version = "0.11.3";
 
   src = fetchFromGitHub {
     owner = "sorairolake";
     repo = "qrtool";
     rev = "v${version}";
-    sha256 = "sha256-l6OVNCIw69fAX4mhnG3U1PBdmWHMD1JJMtiOgRrv198=";
+    sha256 = "sha256-TA4JuFd01gOzLDFYzuP0Ohk+Bd6lT3oZF9sFY9KjOfM=";
   };
 
-  cargoHash = "sha256-1sYX54h/HQzotOOTQEdmhtQZAm+KD5G3BXnEbWSzQGA=";
+  cargoHash = "sha256-bcrwf7Ufd7o2FPIxEReZGy9EANdWNOgoFBHzSdoYTlI=";
 
   nativeBuildInputs = [ asciidoctor installShellFiles ];
 
diff --git a/pkgs/by-name/qt/qtractor/package.nix b/pkgs/by-name/qt/qtractor/package.nix
index d92c1c5eca3f..c56c67996d56 100644
--- a/pkgs/by-name/qt/qtractor/package.nix
+++ b/pkgs/by-name/qt/qtractor/package.nix
@@ -78,7 +78,7 @@ stdenv.mkDerivation rec {
     in "https://github.com/rncbc/qtractor/blob/qtractor_${version'}/ChangeLog";
     license = licenses.gpl2Plus;
     mainProgram = "qtractor";
-    maintainers = with maintainers; [ goibhniu ];
+    maintainers = [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/by-name/ra/rabbit/package.nix b/pkgs/by-name/ra/rabbit/package.nix
index 2ee17d7818a6..0ae3c134fe9f 100644
--- a/pkgs/by-name/ra/rabbit/package.nix
+++ b/pkgs/by-name/ra/rabbit/package.nix
@@ -5,17 +5,20 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "rabbit";
-  version = "2.0.0";
+  version = "2.1.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "natarajan-chidambaram";
     repo = "RABBIT";
     rev = "refs/tags/${version}";
-    hash = "sha256-cAWLVB7KpLsfXcxAbSXkE3O6N0V1mw3z9UdMeH0IkpI=";
+    hash = "sha256-l5k5wPEd6/x7xHc+GlnoyTry7GRTnzNiTLxrLAZFVzQ=";
   };
 
-  pythonRelaxDeps = true;
+  pythonRelaxDeps = [
+    "numpy"
+    "scipy"
+  ];
 
   build-system = [
     python3.pkgs.setuptools
@@ -25,7 +28,6 @@ python3.pkgs.buildPythonApplication rec {
   dependencies = with python3.pkgs; [
     numpy
     pandas
-    pip
     python-dateutil
     requests
     scikit-learn
diff --git a/pkgs/by-name/ra/rasm/package.nix b/pkgs/by-name/ra/rasm/package.nix
index a1708485e871..5e79bb7ae9b8 100644
--- a/pkgs/by-name/ra/rasm/package.nix
+++ b/pkgs/by-name/ra/rasm/package.nix
@@ -18,13 +18,13 @@ stdenv.mkDerivation rec {
     install -Dt $out/bin rasm
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "http://rasm.wikidot.com/english-index:home";
     description = "Z80 assembler";
     mainProgram = "rasm";
     # use -n option to display all licenses
-    license = licenses.mit; # expat version
+    license = lib.licenses.mit; # expat version
     maintainers = with lib.maintainers; [ sigmanificient ];
-    platforms = platforms.all;
+    platforms = lib.platforms.all;
   };
 }
diff --git a/pkgs/by-name/ra/ratchet/tests.nix b/pkgs/by-name/ra/ratchet/tests.nix
index 7585c06d9172..75ae285d734e 100644
--- a/pkgs/by-name/ra/ratchet/tests.nix
+++ b/pkgs/by-name/ra/ratchet/tests.nix
@@ -1,5 +1,4 @@
 {
-  lib,
   runCommand,
   ratchet,
 }: let
diff --git a/pkgs/by-name/ra/rav1e/package.nix b/pkgs/by-name/ra/rav1e/package.nix
index 2a0ad2ab37fd..50cf9bef9e1e 100644
--- a/pkgs/by-name/ra/rav1e/package.nix
+++ b/pkgs/by-name/ra/rav1e/package.nix
@@ -46,6 +46,8 @@ rustPlatform.buildRustPackage rec {
   # and linking it with cctools ld64.
   postPatch = lib.optionalString (stdenv.isDarwin && stdenv.isx86_64) ''
     substituteInPlace build.rs --replace-fail '.arg("-x")' '.arg("-S")'
+    # Thin LTO doesn’t appear to work with Rust 1.79. rav1e fail to build when building fern.
+    substituteInPlace Cargo.toml --replace-fail 'lto = "thin"' 'lto = "fat"'
   '';
 
   checkType = "debug";
diff --git a/pkgs/by-name/re/realvnc-vnc-viewer/darwin.nix b/pkgs/by-name/re/realvnc-vnc-viewer/darwin.nix
index 7b2f6523f13b..6f1f113665e9 100644
--- a/pkgs/by-name/re/realvnc-vnc-viewer/darwin.nix
+++ b/pkgs/by-name/re/realvnc-vnc-viewer/darwin.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenvNoCC
+{ stdenvNoCC
 , fetchurl
 , undmg
 , pname
diff --git a/pkgs/by-name/re/realvnc-vnc-viewer/linux.nix b/pkgs/by-name/re/realvnc-vnc-viewer/linux.nix
index 30d2b60c2042..3d13bfdf9dc4 100644
--- a/pkgs/by-name/re/realvnc-vnc-viewer/linux.nix
+++ b/pkgs/by-name/re/realvnc-vnc-viewer/linux.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , fetchurl
 , autoPatchelfHook
 , rpmextract
diff --git a/pkgs/by-name/re/release-plz/package.nix b/pkgs/by-name/re/release-plz/package.nix
index 49c4703aabd7..25958a05d8c8 100644
--- a/pkgs/by-name/re/release-plz/package.nix
+++ b/pkgs/by-name/re/release-plz/package.nix
@@ -9,16 +9,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "release-plz";
-  version = "0.3.74";
+  version = "0.3.79";
 
   src = fetchFromGitHub {
     owner = "MarcoIeni";
     repo = "release-plz";
     rev = "release-plz-v${version}";
-    hash = "sha256-6Cj23OlIVWnuJC4jpmd7o5L4pUSUkTycZbpu8CzSVM0=";
+    hash = "sha256-tI9/FtGxjKPIFg6L7pNeSx24G3FcfwOlIqcuF6wCTSU=";
   };
 
-  cargoHash = "sha256-YAijOHu59BWIsS5cYFYbG4zGG0l+x9cqHfEGu3oL5l0=";
+  cargoHash = "sha256-UN3SkNNY8ovaT/eNb9JyF9KQWt8KG0TX9ztLjrAnPPo=";
 
   nativeBuildInputs = [ installShellFiles pkg-config perl ];
   buildInputs = [ openssl ];
diff --git a/pkgs/by-name/re/remind/package.nix b/pkgs/by-name/re/remind/package.nix
new file mode 100644
index 000000000000..34fed0a25a05
--- /dev/null
+++ b/pkgs/by-name/re/remind/package.nix
@@ -0,0 +1,58 @@
+{
+  lib,
+  stdenv,
+  fetchurl,
+  tk,
+  tcllib,
+  tcl,
+  tkremind ? null,
+  withGui ?
+    if tkremind != null then
+      lib.warn "tkremind is deprecated and should be removed; use withGui instead." tkremind
+    else
+      true,
+}:
+
+tcl.mkTclDerivation rec {
+  pname = "remind";
+  version = "05.00.02";
+
+  src = fetchurl {
+    url = "https://dianne.skoll.ca/projects/remind/download/remind-${version}.tar.gz";
+    hash = "sha256-XxVjAV3TGDPI8XaFXXSminsMffq8m8ljw68YMIC2lYg=";
+  };
+
+  propagatedBuildInputs = lib.optionals withGui [
+    tcllib
+    tk
+  ];
+
+  postPatch = lib.optionalString withGui ''
+    # NOTA BENE: The path to rem2pdf is replaced in tkremind for future use
+    # as rem2pdf is currently not build since it requires the JSON::MaybeXS,
+    # Pango and Cairo Perl modules.
+    substituteInPlace scripts/tkremind \
+      --replace-fail "exec wish" "exec ${lib.getExe' tk "wish"}" \
+      --replace-fail 'set Remind "remind"' 'set Remind "$out/bin/remind"' \
+      --replace-fail 'set Rem2PS "rem2ps"' 'set Rem2PS "$out/bin/rem2ps"' \
+      --replace-fail 'set Rem2PDF "rem2pdf"' 'set Rem2PDF "$out/bin/rem2pdf"'
+  '';
+
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin (toString [
+    # On Darwin setenv and unsetenv are defined in stdlib.h from libSystem
+    "-DHAVE_SETENV"
+    "-DHAVE_UNSETENV"
+  ]);
+
+  meta = with lib; {
+    homepage = "https://dianne.skoll.ca/projects/remind/";
+    description = "Sophisticated calendar and alarm program for the console";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [
+      raskin
+      kovirobi
+    ];
+    mainProgram = "remind";
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/by-name/re/remnote/package.nix b/pkgs/by-name/re/remnote/package.nix
index 1079de98b1d2..b0a3fc50d88b 100644
--- a/pkgs/by-name/re/remnote/package.nix
+++ b/pkgs/by-name/re/remnote/package.nix
@@ -6,10 +6,10 @@
 }:
 let
   pname = "remnote";
-  version = "1.16.59";
+  version = "1.16.72";
   src = fetchurl {
     url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
-    hash = "sha256-mF+6QL7ApPX1BAoPMbPGBUCJVNfa4W4VVu0E3MTzens=";
+    hash = "sha256-BoKxQ8ngfShm7tC+ojgIR8krq82gJOdbGy8/K7yDRLM=";
   };
   appimageContents = appimageTools.extractType2 { inherit pname version src; };
 in
diff --git a/pkgs/by-name/re/renovate/package.nix b/pkgs/by-name/re/renovate/package.nix
index afa41bcef68a..5a184e0f67df 100644
--- a/pkgs/by-name/re/renovate/package.nix
+++ b/pkgs/by-name/re/renovate/package.nix
@@ -21,13 +21,13 @@ let
 in
 stdenv'.mkDerivation (finalAttrs: {
   pname = "renovate";
-  version = "37.431.7";
+  version = "37.440.7";
 
   src = fetchFromGitHub {
     owner = "renovatebot";
     repo = "renovate";
     rev = "refs/tags/${finalAttrs.version}";
-    hash = "sha256-aaqsScfi0pXfrxOJ7xjPxtV9m9EUadhivagcAddP8HY=";
+    hash = "sha256-VMv55BVeauRa/hmg1Y7D15ltAbccdcMd4Azk5IInuH0=";
   };
 
   postPatch = ''
@@ -44,7 +44,7 @@ stdenv'.mkDerivation (finalAttrs: {
 
   pnpmDeps = pnpm_9.fetchDeps {
     inherit (finalAttrs) pname version src;
-    hash = "sha256-atTs7sYxiioCXO5r6C07UULztquKgWCi+A2iqq+30VQ=";
+    hash = "sha256-ZYQ7G2BKkRxuyg31dysim+P1Vje0VysJm+UFyy4xuKI=";
   };
 
   env.COREPACK_ENABLE_STRICT = 0;
diff --git a/pkgs/by-name/re/resources/package.nix b/pkgs/by-name/re/resources/package.nix
index 82d1f0a24e8b..cf710d62fdf3 100644
--- a/pkgs/by-name/re/resources/package.nix
+++ b/pkgs/by-name/re/resources/package.nix
@@ -15,23 +15,24 @@
 , libadwaita
 , dmidecode
 , util-linux
+, nix-update-script
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "resources";
-  version = "1.5.0";
+  version = "1.5.1";
 
   src = fetchFromGitHub {
     owner = "nokyan";
     repo = "resources";
     rev = "refs/tags/v${finalAttrs.version}";
-    hash = "sha256-Xj8c8ZVhlS2h4ZygeCOaT1XHEbgTSkseinofP9X+5qY=";
+    hash = "sha256-uzZCczayJ5C0TZznA2wjGNYF3nB6fh/rrBKvv9s3J5g=";
   };
 
   cargoDeps = rustPlatform.fetchCargoTarball {
     inherit (finalAttrs) src;
     name = "resources-${finalAttrs.version}";
-    hash = "sha256-PZ91xSiWt9rMnSy8KZOmWbUL5Y0Nf3Kk577ZwkdnHwg=";
+    hash = "sha256-a0VdSNy8E7qen+6yFXuQBmYnDD/DMUgrZqJK6BJja60=";
   };
 
   nativeBuildInputs = [
@@ -65,6 +66,10 @@ stdenv.mkDerivation (finalAttrs: {
     (lib.mesonOption "profile" "default")
   ];
 
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
   meta = {
     changelog = "https://github.com/nokyan/resources/releases/tag/${finalAttrs.version}";
     description = "Monitor your system resources and processes";
diff --git a/pkgs/by-name/re/resticprofile/package.nix b/pkgs/by-name/re/resticprofile/package.nix
new file mode 100644
index 000000000000..2903a9987833
--- /dev/null
+++ b/pkgs/by-name/re/resticprofile/package.nix
@@ -0,0 +1,91 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  installShellFiles,
+  restic,
+  bash,
+  testers,
+  resticprofile,
+}:
+
+buildGoModule rec {
+  pname = "resticprofile";
+  version = "0.27.0";
+
+  src = fetchFromGitHub {
+    owner = "creativeprojects";
+    repo = "resticprofile";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-CUTDlSpP0ztr3sEKT0ppFnWx/bcVuY1oIKWJNZylDoM=";
+  };
+
+  postPatch = ''
+    substituteInPlace schedule_jobs.go \
+        --replace-fail "os.Executable()" "\"$out/bin/resticprofile\", nil"
+
+    substituteInPlace shell/command.go \
+        --replace-fail '"bash"' '"${lib.getExe bash}"'
+
+    substituteInPlace filesearch/filesearch.go \
+        --replace-fail 'paths := getSearchBinaryLocations()' 'return "${lib.getExe restic}", nil; paths := getSearchBinaryLocations()'
+
+  '';
+
+  vendorHash = "sha256-t2R5uNsliSn+rIvRM0vT6lQJY62DhhozXnONiCJ9CMc=";
+
+  ldflags = [
+    "-X main.commit=${src.rev}"
+    "-X main.date=unknown"
+    "-X main.builtBy=nixpkgs"
+  ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  preCheck = ''
+    rm battery_test.go # tries to get battery data
+    rm update_test.go # tries to use network
+    rm lock/lock_test.go # needs ping
+    rm preventsleep/caffeinate_test.go # tries to communicate with dbus
+    rm priority/ioprio_test.go # tries to set nice(2) IO priority
+    rm restic/downloader_test.go # tries to use network
+    rm schedule/schedule_test.go # tries to use systemctl
+
+    # `config/path_test.go` expects `$HOME` to be the same as `~nixbld` which is `$NIX_BUILD_TOP`
+    export HOME="$NIX_BUILD_TOP"
+    # `util/tempdir_test.go` expects `$HOME/.cache` to exist
+    mkdir "$HOME/.cache"
+  '';
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 $GOPATH/bin/resticprofile -t $out/bin
+
+    installShellCompletion --cmd resticprofile \
+        --bash <($out/bin/resticprofile generate --bash-completion) \
+        --zsh <($out/bin/resticprofile generate --zsh-completion)
+
+    runHook postInstall
+  '';
+
+  passthru = {
+    tests.version = testers.testVersion {
+      package = resticprofile;
+      command = "resticprofile version";
+    };
+  };
+
+  meta = {
+    changelog = "https://github.com/creativeprojects/resticprofile/releases/tag/v${version}";
+    description = "Configuration profiles manager for restic backup";
+    homepage = "https://creativeprojects.github.io/resticprofile/";
+    license = with lib.licenses; [
+      gpl3Only
+      lgpl3 # bash shell completion
+    ];
+    mainProgram = "resticprofile";
+    maintainers = with lib.maintainers; [ tomasajt ];
+    platforms = lib.platforms.linux ++ lib.platforms.darwin;
+  };
+}
diff --git a/pkgs/by-name/ri/ricochet-refresh/package.nix b/pkgs/by-name/ri/ricochet-refresh/package.nix
index e0e55bb8c515..8bbc781bb4f5 100644
--- a/pkgs/by-name/ri/ricochet-refresh/package.nix
+++ b/pkgs/by-name/ri/ricochet-refresh/package.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   nativeBuildInputs = [
     pkg-config
+    protobuf
     cmake
     qt5.wrapQtAppsHook
   ];
diff --git a/pkgs/by-name/ri/ride/package.nix b/pkgs/by-name/ri/ride/package.nix
index 25d18248d5bb..0cce0041710a 100644
--- a/pkgs/by-name/ri/ride/package.nix
+++ b/pkgs/by-name/ri/ride/package.nix
@@ -12,7 +12,7 @@
   copyDesktopItems,
   makeDesktopItem,
   electron,
-  darwin,
+  cctools,
 }:
 
 let
@@ -92,7 +92,7 @@ buildNpmPackage rec {
       makeWrapper
     ]
     ++ lib.optionals (!stdenv.isDarwin) [ copyDesktopItems ]
-    ++ lib.optionals stdenv.isDarwin [ darwin.cctools ];
+    ++ lib.optionals stdenv.isDarwin [ cctools ];
 
   env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
 
diff --git a/pkgs/by-name/rm/rmg/package.nix b/pkgs/by-name/rm/rmg/package.nix
index 6b04798900ad..4dd9ac30d648 100644
--- a/pkgs/by-name/rm/rmg/package.nix
+++ b/pkgs/by-name/rm/rmg/package.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, fetchpatch
 , gitUpdater
 , boost
 , cmake
diff --git a/pkgs/by-name/rm/rmpc/Cargo.lock.patch b/pkgs/by-name/rm/rmpc/Cargo.lock.patch
new file mode 100644
index 000000000000..404baea3e165
--- /dev/null
+++ b/pkgs/by-name/rm/rmpc/Cargo.lock.patch
@@ -0,0 +1,28 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index e4e2d1a..72839b4 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -198,9 +198,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "bitstream-io"
+-version = "2.5.0"
++version = "2.3.0"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499"
++checksum = "7c12d1856e42f0d817a835fe55853957c85c8c8a470114029143d3f12671446e"
+ 
+ [[package]]
+ name = "built"
+@@ -1376,9 +1376,9 @@ dependencies = [
+ 
+ [[package]]
+ name = "ravif"
+-version = "0.11.8"
++version = "0.11.5"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+-checksum = "c6ba61c28ba24c0cf8406e025cb29a742637e3f70776e61c27a8a8b72a042d12"
++checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
+ dependencies = [
+  "avif-serialize",
+  "imgref",
diff --git a/pkgs/by-name/rm/rmpc/package.nix b/pkgs/by-name/rm/rmpc/package.nix
new file mode 100644
index 000000000000..4ac072cb81c7
--- /dev/null
+++ b/pkgs/by-name/rm/rmpc/package.nix
@@ -0,0 +1,57 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  fetchpatch,
+  pkg-config,
+  cmake,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "rmpc";
+  version = "0.2.1";
+
+  src = fetchFromGitHub {
+    owner = "mierak";
+    repo = "rmpc";
+    rev = "v${version}";
+    hash = "sha256-g+yzW0DfaBhJKTikYZ8eqe4pX8nJvbpJ1xaZ3W/O/bo=";
+  };
+
+  cargoHash = "sha256-wFrHgB4wYGeXvfdGf4SJAAL8fE6dAKDLL51Ohmn+1HQ=";
+
+  cargoPatches = [
+    # Patch Cargo.lock to make rmpc compile with older versions of rustc
+    # Remove when Rust 1.79.0 is in master
+    ./Cargo.lock.patch
+  ];
+
+  patches = [
+    # Fix release mode tests compilation issues
+    # Remove when next rmpc version comes out
+    (fetchpatch {
+      url = "https://github.com/mierak/rmpc/commit/f12be6f606f5319523f41576e7c463b6008b9069.patch";
+      hash = "sha256-4L/MrdC/ydTqnkt3qd5H8hLZimiqct6sOkEq8rJN0F4=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+    cmake
+  ];
+
+  meta = {
+    changelog = "https://github.com/mierak/rmpc/releases/tag/${src.rev}";
+    description = "TUI music player client for MPD with album art support via kitty image protocol";
+    homepage = "https://mierak.github.io/rmpc/";
+    license = lib.licenses.bsd3;
+    longDescription = ''
+      Rusty Music Player Client is a beautiful, modern and configurable terminal-based Music Player
+      Daemon client. It was inspired by ncmpcpp and aims to provide an alternative with support for
+      album art through kitty image protocol without any ugly hacks. It also features ranger/lf
+      inspired browsing of songs and other goodies.
+    '';
+    maintainers = with lib.maintainers; [ donovanglover ];
+    mainProgram = "rmpc";
+  };
+}
diff --git a/pkgs/by-name/rn/rnote/Cargo.lock b/pkgs/by-name/rn/rnote/Cargo.lock
new file mode 100644
index 000000000000..b38a33f7f143
--- /dev/null
+++ b/pkgs/by-name/rn/rnote/Cargo.lock
@@ -0,0 +1,4902 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[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.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "aligned-vec"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f"
+
+[[package]]
+name = "alsa"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce"
+dependencies = [
+ "alsa-sys",
+ "bitflags 2.6.0",
+ "libc",
+]
+
+[[package]]
+name = "alsa-sys"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "android-tzdata"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "is_terminal_polyfill",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
+
+[[package]]
+name = "approx"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "arbitrary"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
+
+[[package]]
+name = "arg_enum_proc_macro"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "arrayref"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-fs"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
+dependencies = [
+ "async-lock",
+ "blocking",
+ "futures-lite",
+]
+
+[[package]]
+name = "async-io"
+version = "2.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964"
+dependencies = [
+ "async-lock",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a"
+dependencies = [
+ "async-channel",
+ "async-io",
+ "async-lock",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener",
+ "futures-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfb3634b73397aa844481f814fad23bbf07fdb0eabec10f2eb95e58944b1ec32"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi 0.1.19",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
+
+[[package]]
+name = "av1-grain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "log",
+ "nom",
+ "num-rational",
+ "v_frame",
+]
+
+[[package]]
+name = "avif-serialize"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2"
+dependencies = [
+ "arrayvec",
+]
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bindgen"
+version = "0.69.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
+dependencies = [
+ "bitflags 2.6.0",
+ "cexpr",
+ "clang-sys",
+ "itertools 0.12.1",
+ "lazy_static",
+ "lazycell",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash 1.1.0",
+ "shlex",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "bit_field"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "bitstream-io"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dcde5f311c85b8ca30c2e4198d4326bc342c76541590106f5fa4a50946ea499"
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "blocking"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea"
+dependencies = [
+ "async-channel",
+ "async-task",
+ "futures-io",
+ "futures-lite",
+ "piper",
+]
+
+[[package]]
+name = "built"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "236e6289eda5a812bc6b53c3b024039382a2895fbbeef2d748b2931546d392c4"
+
+[[package]]
+name = "bumpalo"
+version = "3.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c"
+
+[[package]]
+name = "by_address"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06"
+
+[[package]]
+name = "bytemuck"
+version = "1.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "byteorder-lite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
+
+[[package]]
+name = "bytes"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952"
+
+[[package]]
+name = "cairo-rs"
+version = "0.19.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2ac2a4d0e69036cf0062976f6efcba1aaee3e448594e6514bb2ddf87acce562"
+dependencies = [
+ "bitflags 2.6.0",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd3bb3119664efbd78b5e6c93957447944f16bdbced84c17a9f41c7829b81e64"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "cast"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
+
+[[package]]
+name = "cc"
+version = "1.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f"
+dependencies = [
+ "jobserver",
+ "libc",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[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 = "chrono"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
+dependencies = [
+ "android-tzdata",
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "wasm-bindgen",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "clang-sys"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading",
+]
+
+[[package]]
+name = "clap"
+version = "4.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim 0.11.1",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97"
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0"
+
+[[package]]
+name = "combine"
+version = "4.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "console"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb"
+dependencies = [
+ "encode_unicode",
+ "lazy_static",
+ "libc",
+ "unicode-width",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "coreaudio-rs"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation-sys",
+ "coreaudio-sys",
+]
+
+[[package]]
+name = "coreaudio-sys"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9"
+dependencies = [
+ "bindgen",
+]
+
+[[package]]
+name = "cpal"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779"
+dependencies = [
+ "alsa",
+ "core-foundation-sys",
+ "coreaudio-rs",
+ "dasp_sample",
+ "jni",
+ "js-sys",
+ "libc",
+ "mach2",
+ "ndk",
+ "ndk-context",
+ "oboe",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80"
+
+[[package]]
+name = "crunchy"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
+
+[[package]]
+name = "cssparser"
+version = "0.31.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b3df4f93e5fbbe73ec01ec8d3f68bba73107993a5b1e7519273c32db9b0d5be"
+dependencies = [
+ "cssparser-macros",
+ "dtoa-short",
+ "itoa",
+ "phf 0.11.2",
+ "smallvec",
+]
+
+[[package]]
+name = "cssparser-macros"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
+dependencies = [
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "darling"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim 0.10.0",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.14.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "dashmap"
+version = "4.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c"
+dependencies = [
+ "cfg-if",
+ "num_cpus",
+]
+
+[[package]]
+name = "dasp_sample"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f"
+
+[[package]]
+name = "data-url"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a"
+
+[[package]]
+name = "derive_builder"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68"
+dependencies = [
+ "derive_builder_core",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "dialoguer"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de"
+dependencies = [
+ "console",
+ "shell-words",
+ "tempfile",
+ "thiserror",
+ "zeroize",
+]
+
+[[package]]
+name = "downcast-rs"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
+
+[[package]]
+name = "dtoa"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653"
+
+[[package]]
+name = "dtoa-short"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
+dependencies = [
+ "dtoa",
+]
+
+[[package]]
+name = "earcutr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01"
+dependencies = [
+ "itertools 0.11.0",
+ "num-traits",
+]
+
+[[package]]
+name = "either"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
+
+[[package]]
+name = "encode_unicode"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+dependencies = [
+ "cfg-if",
+]
+
+[[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.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "euclid"
+version = "0.22.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0f0eb73b934648cd7a4a61f1b15391cd95dab0b4da6e2e66c2a072c144b4a20"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "exr"
+version = "1.72.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
+dependencies = [
+ "bit_field",
+ "flume",
+ "half",
+ "lebe",
+ "miniz_oxide",
+ "rayon-core",
+ "smallvec",
+ "zune-inflate",
+]
+
+[[package]]
+name = "extended"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af9673d8203fcb076b19dfd17e38b3d4ae9f44959416ea532ce72415a6020365"
+
+[[package]]
+name = "fast-srgb8"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1"
+
+[[package]]
+name = "fastrand"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a"
+
+[[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",
+ "rustc_version",
+]
+
+[[package]]
+name = "file-id"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6584280525fb2059cba3db2c04abf947a1a29a45ddae89f3870f8281704fafc9"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "float-cmp"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "float_next_after"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8"
+
+[[package]]
+name = "flume"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181"
+dependencies = [
+ "spin",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "fontconfig-parser"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d"
+dependencies = [
+ "roxmltree 0.19.0",
+]
+
+[[package]]
+name = "fontdb"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e32eac81c1135c1df01d4e6d4233c47ba11f6a6d07f33e0bba09d18797077770"
+dependencies = [
+ "fontconfig-parser",
+ "log",
+ "memmap2",
+ "slotmap",
+ "tinyvec",
+ "ttf-parser",
+]
+
+[[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 = "fs_extra"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
+
+[[package]]
+name = "fsevent-sys"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-io",
+ "futures-sink",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+dependencies = [
+ "futures-core",
+ "futures-sink",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+
+[[package]]
+name = "futures-lite"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5"
+dependencies = [
+ "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.72",
+]
+
+[[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-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "fxhash"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "624eaba126021103c7339b2e179ae4ee8cdab842daab419040710f38ed9f8699"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4efa05a4f83c8cc50eb4d883787b919b85e5f1d8dd10b5a1df53bf5689782379"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db265c9dd42d6a371e09e52deab3a84808427198b86ac792d75fd35c07990a07"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9418fb4e8a67074919fe7604429c45aa74eb9df82e7ca529767c6d4e9dc66dd"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "geo"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f811f663912a69249fa620dcd2a005db7254529da2d8a0b23942e81f47084501"
+dependencies = [
+ "earcutr",
+ "float_next_after",
+ "geo-types",
+ "geographiclib-rs",
+ "log",
+ "num-traits",
+ "robust",
+ "rstar",
+ "spade",
+]
+
+[[package]]
+name = "geo-types"
+version = "0.7.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61"
+dependencies = [
+ "approx",
+ "num-traits",
+ "rstar",
+ "serde",
+]
+
+[[package]]
+name = "geographiclib-rs"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e5ed84f8089c70234b0a8e0aedb6dc733671612ddc0d37c6066052f9781960"
+dependencies = [
+ "libm",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "gettext-rs"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364"
+dependencies = [
+ "gettext-sys",
+ "locale_config",
+]
+
+[[package]]
+name = "gettext-sys"
+version = "0.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d"
+dependencies = [
+ "cc",
+ "temp-dir",
+]
+
+[[package]]
+name = "gif"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
+dependencies = [
+ "color_quant",
+ "weezl",
+]
+
+[[package]]
+name = "gio"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "glib"
+version = "0.19.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39650279f135469465018daae0ba53357942a5212137515777d5fdca74984a44"
+dependencies = [
+ "bitflags 2.6.0",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "memchr",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-build-tools"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "108f374fff60efd14b0d70d8916e7213aed18d7dd071ba3e9334ed2dac1dc86a"
+dependencies = [
+ "gio",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.19.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4429b0277a14ae9751350ad9b658b1be0abb5b54faa5bcdf6e74a3372582fad7"
+dependencies = [
+ "heck",
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "gobject-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5fb86031d24d9ec0a2a15978fc7a65d545a2549642cf1eb7c3dda358da42bcf"
+dependencies = [
+ "glib",
+ "graphene-sys",
+ "libc",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f530e0944bccba4b55065e9c69f4975ad691609191ebac16e13ab8e1f27af05"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7563884bf6939f4468e5d94654945bdd9afcaf8c3ba4c5dd17b5342b747221be"
+dependencies = [
+ "cairo-rs",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23024bf2636c38bbd1f822f58acc9d1c25b28da896ff0f291a1a232d4272b3dc"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk4-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b04e11319b08af11358ab543105a9e49b0c491faca35e2b8e7e36bfba8b671ab"
+dependencies = [
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "graphene-rs",
+ "gsk4",
+ "gtk4-macros",
+ "gtk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gtk4-macros"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec655a7ef88d8ce9592899deb8b2d0fa50bab1e6dd69182deb764e643c522408"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "gtk4-sys"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c8aa86b7f85ea71d66ea88c1d4bae1cfacf51ca4856274565133838d77e57b5"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "half"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
+dependencies = [
+ "cfg-if",
+ "crunchy",
+]
+
+[[package]]
+name = "hash32"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
+dependencies = [
+ "byteorder",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+dependencies = [
+ "ahash",
+ "allocator-api2",
+]
+
+[[package]]
+name = "heapless"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad"
+dependencies = [
+ "hash32",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+
+[[package]]
+name = "hermit-abi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "wasm-bindgen",
+ "windows-core 0.52.0",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ijson"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b96214564d1f12875bd9661b183d8494dd10e373cb693629536fe2f3125e254b"
+dependencies = [
+ "dashmap",
+ "lazy_static",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "image"
+version = "0.24.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "exr",
+ "gif",
+ "jpeg-decoder",
+ "num-traits",
+ "png",
+ "qoi",
+ "tiff",
+]
+
+[[package]]
+name = "image"
+version = "0.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10"
+dependencies = [
+ "bytemuck",
+ "byteorder-lite",
+ "color_quant",
+ "exr",
+ "gif",
+ "image-webp",
+ "num-traits",
+ "png",
+ "qoi",
+ "ravif",
+ "rayon",
+ "rgb",
+ "tiff",
+ "zune-core",
+ "zune-jpeg",
+]
+
+[[package]]
+name = "image-webp"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f79afb8cbee2ef20f59ccd477a218c12a93943d075b492015ecb1bb81f8ee904"
+dependencies = [
+ "byteorder-lite",
+ "quick-error",
+]
+
+[[package]]
+name = "imagesize"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284"
+
+[[package]]
+name = "imgref"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126"
+
+[[package]]
+name = "indexmap"
+version = "2.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.17.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3"
+dependencies = [
+ "console",
+ "instant",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+]
+
+[[package]]
+name = "ink-stroke-modeler-rs"
+version = "0.1.0"
+source = "git+https://github.com/flxzt/ink-stroke-modeler-rs?rev=84d311e9b0d034dcd955a1f353d37f54b2bda70f#84d311e9b0d034dcd955a1f353d37f54b2bda70f"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "inotify"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff"
+dependencies = [
+ "bitflags 1.3.2",
+ "inotify-sys",
+ "libc",
+]
+
+[[package]]
+name = "inotify-sys"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "interpolate_name"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "is_terminal_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+
+[[package]]
+name = "itertools"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+
+[[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",
+ "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.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "jpeg-decoder"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
+dependencies = [
+ "rayon",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "kqueue"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
+dependencies = [
+ "kqueue-sys",
+ "libc",
+]
+
+[[package]]
+name = "kqueue-sys"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
+dependencies = [
+ "bitflags 1.3.2",
+ "libc",
+]
+
+[[package]]
+name = "kurbo"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440"
+dependencies = [
+ "arrayvec",
+ "smallvec",
+]
+
+[[package]]
+name = "kurbo"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5aa9f0f96a938266bdb12928a67169e8d22c6a786fda8ed984b85e6ba93c3c"
+dependencies = [
+ "arrayvec",
+ "smallvec",
+]
+
+[[package]]
+name = "language-tags"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388"
+
+[[package]]
+name = "lazy_static"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+
+[[package]]
+name = "lebe"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+
+[[package]]
+name = "libadwaita"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91b4990248b9e1ec5e72094a2ccaea70ec3809f88f6fd52192f2af306b87c5d9"
+dependencies = [
+ "gdk-pixbuf",
+ "gdk4",
+ "gio",
+ "glib",
+ "gtk4",
+ "libadwaita-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "libadwaita-sys"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23a748e4e92be1265cd9e93d569c0b5dfc7814107985aa6743d670ab281ea1a8"
+dependencies = [
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk4-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.155"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
+
+[[package]]
+name = "libfuzzer-sys"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
+dependencies = [
+ "arbitrary",
+ "cc",
+ "once_cell",
+]
+
+[[package]]
+name = "libloading"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
+dependencies = [
+ "cfg-if",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
+
+[[package]]
+name = "librsvg"
+version = "2.58.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a0e5200e66bdf58bf95bdbdda1e7e81b73abaa7351a39f26031e8c047735892"
+dependencies = [
+ "cairo-rs",
+ "cast",
+ "cssparser",
+ "data-url",
+ "encoding_rs",
+ "float-cmp",
+ "gio",
+ "glib",
+ "image 0.24.9",
+ "itertools 0.12.1",
+ "language-tags",
+ "libc",
+ "locale_config",
+ "markup5ever",
+ "nalgebra 0.32.6",
+ "num-traits",
+ "pango",
+ "pangocairo",
+ "rayon",
+ "rctree",
+ "regex",
+ "rgb",
+ "selectors",
+ "string_cache",
+ "system-deps",
+ "tinyvec",
+ "url",
+ "xml5ever",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"
+
+[[package]]
+name = "locale_config"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934"
+dependencies = [
+ "lazy_static",
+ "objc",
+ "objc-foundation",
+ "regex",
+ "winapi",
+]
+
+[[package]]
+name = "lock_api"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
+
+[[package]]
+name = "loop9"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
+dependencies = [
+ "imgref",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "mach2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "malloc_buf"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "markup5ever"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016"
+dependencies = [
+ "log",
+ "phf 0.10.1",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
+ "tendril",
+]
+
+[[package]]
+name = "matchers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
+dependencies = [
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "matrixmultiply"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
+dependencies = [
+ "autocfg",
+ "rawpointer",
+]
+
+[[package]]
+name = "maybe-rayon"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+
+[[package]]
+name = "memmap2"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
+dependencies = [
+ "adler",
+ "simd-adler32",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c"
+dependencies = [
+ "libc",
+ "log",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "nalgebra"
+version = "0.32.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5c17de023a86f59ed79891b2e5d5a94c705dbe904a5b5c9c952ea6221b03e4"
+dependencies = [
+ "approx",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "simba 0.8.1",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra"
+version = "0.33.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c4b5f057b303842cf3262c27e465f4c303572e7f6b0648f60e16248ac3397f4"
+dependencies = [
+ "approx",
+ "matrixmultiply",
+ "nalgebra-macros",
+ "num-complex",
+ "num-rational",
+ "num-traits",
+ "serde",
+ "simba 0.9.0",
+ "typenum",
+]
+
+[[package]]
+name = "nalgebra-macros"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "ndk"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
+dependencies = [
+ "bitflags 2.6.0",
+ "jni-sys",
+ "log",
+ "ndk-sys",
+ "num_enum",
+ "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 = "new_debug_unreachable"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "noop_proc_macro"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
+
+[[package]]
+name = "notify"
+version = "6.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
+dependencies = [
+ "bitflags 2.6.0",
+ "crossbeam-channel",
+ "filetime",
+ "fsevent-sys",
+ "inotify",
+ "kqueue",
+ "libc",
+ "log",
+ "mio",
+ "walkdir",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "notify-debouncer-full"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49f5dab59c348b9b50cf7f261960a20e389feb2713636399cd9082cd4b536154"
+dependencies = [
+ "crossbeam-channel",
+ "file-id",
+ "log",
+ "notify",
+ "parking_lot",
+ "walkdir",
+]
+
+[[package]]
+name = "nu-ansi-term"
+version = "0.46.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
+dependencies = [
+ "overload",
+ "winapi",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
+dependencies = [
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+ "serde",
+]
+
+[[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
+dependencies = [
+ "num-bigint",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi 0.3.9",
+ "libc",
+]
+
+[[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",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "numeric-sort"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5180ed575d2ae6100dc63813e3810aba273c291608cf019aa58f76784ecc331b"
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+]
+
+[[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_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "oboe"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb"
+dependencies = [
+ "jni",
+ "ndk",
+ "ndk-context",
+ "num-derive",
+ "num-traits",
+ "oboe-sys",
+]
+
+[[package]]
+name = "oboe-sys"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "open"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3"
+dependencies = [
+ "is-wsl",
+ "libc",
+ "pathdiff",
+]
+
+[[package]]
+name = "ordered-float"
+version = "4.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19ff2cf528c6c03d9ed653d6c4ce1dc0582dc4af309790ad92f07c1cd551b0be"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "palette"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6"
+dependencies = [
+ "approx",
+ "fast-srgb8",
+ "palette_derive",
+ "phf 0.11.2",
+]
+
+[[package]]
+name = "palette_derive"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30"
+dependencies = [
+ "by_address",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "pango"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f0d328648058085cfd6897c9ae4272884098a926f3a833cd50c8c73e6eccecd"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff03da4fa086c0b244d4a4587d3e20622a3ecdb21daea9edf66597224c634ba0"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "pangocairo"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4c8b43c02ec1c4e16daf7fc50fbce6b8ead5705c18ae56274f703233cce1cd9"
+dependencies = [
+ "cairo-rs",
+ "glib",
+ "libc",
+ "pango",
+ "pangocairo-sys",
+]
+
+[[package]]
+name = "pangocairo-sys"
+version = "0.19.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "591904498438879785f5b7a2fdf7c38e9ec08c514b93c614b5c3b48cd11dd8d7"
+dependencies = [
+ "cairo-sys-rs",
+ "glib-sys",
+ "libc",
+ "pango-sys",
+ "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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall 0.5.3",
+ "smallvec",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "parry2d-f64"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83cb2f7d0e018b2fc6c3cecfc05c82a198b9087534f16d2ea2a5552c2ac0fc2b"
+dependencies = [
+ "approx",
+ "arrayvec",
+ "bitflags 2.6.0",
+ "downcast-rs",
+ "either",
+ "log",
+ "nalgebra 0.33.0",
+ "num-derive",
+ "num-traits",
+ "ordered-float",
+ "rustc-hash 2.0.0",
+ "serde",
+ "simba 0.9.0",
+ "slab",
+ "smallvec",
+ "spade",
+ "thiserror",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "path-absolutize"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5"
+dependencies = [
+ "path-dedot",
+]
+
+[[package]]
+name = "path-dedot"
+version = "3.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_shared 0.10.0",
+]
+
+[[package]]
+name = "phf"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
+dependencies = [
+ "phf_macros",
+ "phf_shared 0.11.2",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb1c3a8bc4dd4e5cfce29b44ffc14bedd2ee294559a294e2a4d4c9e9a6a13cd"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6"
+dependencies = [
+ "phf_shared 0.10.0",
+ "rand",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
+dependencies = [
+ "phf_shared 0.11.2",
+ "rand",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b"
+dependencies = [
+ "phf_generator 0.11.2",
+ "phf_shared 0.11.2",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "pico-args"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
+
+[[package]]
+name = "piet"
+version = "0.6.2"
+source = "git+https://github.com/linebender/piet?rev=02eb5f0152e893626c43980bf37eeb0ccb1acb46#02eb5f0152e893626c43980bf37eeb0ccb1acb46"
+dependencies = [
+ "kurbo 0.10.4",
+ "unic-bidi",
+]
+
+[[package]]
+name = "piet-cairo"
+version = "0.6.2"
+source = "git+https://github.com/linebender/piet?rev=02eb5f0152e893626c43980bf37eeb0ccb1acb46#02eb5f0152e893626c43980bf37eeb0ccb1acb46"
+dependencies = [
+ "cairo-rs",
+ "pango",
+ "pangocairo",
+ "piet",
+ "unicode-segmentation",
+ "xi-unicode",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02"
+
+[[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.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+
+[[package]]
+name = "png"
+version = "0.17.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "points_on_curve"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbd55aaa619ef3e710ba6515663cb9afdf54ab4b09b2b3d069622f3a71736295"
+dependencies = [
+ "euclid",
+ "num-traits",
+]
+
+[[package]]
+name = "polling"
+version = "3.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi 0.4.0",
+ "pin-project-lite",
+ "rustix",
+ "tracing",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "poppler-rs"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9421853a6cc8dfaea2e31bd751fb037abdc3a727f04d0eb10fcf7061f6eff562"
+dependencies = [
+ "cairo-rs",
+ "gio",
+ "glib",
+ "libc",
+ "poppler-sys-rs",
+]
+
+[[package]]
+name = "poppler-sys-rs"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10f6737da38a7bb0126931c4a7b23b7bea517410bd48676f18af6b38c5f88d51"
+dependencies = [
+ "cairo-sys-rs",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+dependencies = [
+ "toml_edit 0.21.1",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "profiling"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58"
+dependencies = [
+ "profiling-procmacros",
+]
+
+[[package]]
+name = "profiling-procmacros"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8021cf59c8ec9c432cfc2526ac6b8aa508ecaf29cd415f271b8406c1b851c3fd"
+dependencies = [
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "qoi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
+[[package]]
+name = "quote"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
+dependencies = [
+ "num-traits",
+ "rand",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rav1e"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9"
+dependencies = [
+ "arbitrary",
+ "arg_enum_proc_macro",
+ "arrayvec",
+ "av1-grain",
+ "bitstream-io",
+ "built",
+ "cfg-if",
+ "interpolate_name",
+ "itertools 0.12.1",
+ "libc",
+ "libfuzzer-sys",
+ "log",
+ "maybe-rayon",
+ "new_debug_unreachable",
+ "noop_proc_macro",
+ "num-derive",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "profiling",
+ "rand",
+ "rand_chacha",
+ "simd_helpers",
+ "system-deps",
+ "thiserror",
+ "v_frame",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "ravif"
+version = "0.11.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5797d09f9bd33604689e87e8380df4951d4912f01b63f71205e2abd4ae25e6b6"
+dependencies = [
+ "avif-serialize",
+ "imgref",
+ "loop9",
+ "quick-error",
+ "rav1e",
+ "rgb",
+]
+
+[[package]]
+name = "rawpointer"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+
+[[package]]
+name = "rayon"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "rctree"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e03e7866abec1101869ffa8e2c8355c4c2419d0214ece0cc3e428e5b94dea6e9"
+
+[[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_syscall"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
+dependencies = [
+ "bitflags 2.6.0",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.7",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax 0.6.29",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.4",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
+
+[[package]]
+name = "rgb"
+version = "0.8.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ade4539f42266ded9e755c605bdddf546242b2c961b03b06a7375260788a0523"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "rnote"
+version = "0.11.0"
+dependencies = [
+ "anyhow",
+ "approx",
+ "async-fs",
+ "base64",
+ "cairo-rs",
+ "fs_extra",
+ "futures",
+ "gettext-rs",
+ "glib-build-tools",
+ "gtk4",
+ "ijson",
+ "image 0.25.2",
+ "itertools 0.13.0",
+ "kurbo 0.10.4",
+ "libadwaita",
+ "nalgebra 0.33.0",
+ "notify-debouncer-full",
+ "num-derive",
+ "num-traits",
+ "numeric-sort",
+ "once_cell",
+ "open",
+ "palette",
+ "parry2d-f64",
+ "path-absolutize",
+ "piet",
+ "piet-cairo",
+ "poppler-rs",
+ "rand",
+ "rand_distr",
+ "rand_pcg",
+ "rayon",
+ "regex",
+ "rnote-compose",
+ "rnote-engine",
+ "rough_piet",
+ "roughr",
+ "serde",
+ "serde_json",
+ "svg",
+ "thiserror",
+ "tracing",
+ "tracing-subscriber",
+ "unicode-segmentation",
+ "url",
+ "winresource",
+]
+
+[[package]]
+name = "rnote-cli"
+version = "0.11.0"
+dependencies = [
+ "anyhow",
+ "atty",
+ "clap",
+ "dialoguer",
+ "indicatif",
+ "nalgebra 0.33.0",
+ "open",
+ "parry2d-f64",
+ "rnote-compose",
+ "rnote-engine",
+ "smol",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "rnote-compose"
+version = "0.11.0"
+dependencies = [
+ "anyhow",
+ "approx",
+ "base64",
+ "clap",
+ "ink-stroke-modeler-rs",
+ "kurbo 0.10.4",
+ "nalgebra 0.33.0",
+ "num-derive",
+ "num-traits",
+ "once_cell",
+ "palette",
+ "parry2d-f64",
+ "piet",
+ "piet-cairo",
+ "rand",
+ "rand_distr",
+ "rand_pcg",
+ "regex",
+ "rough_piet",
+ "roughr",
+ "serde",
+ "svg",
+ "tracing",
+]
+
+[[package]]
+name = "rnote-engine"
+version = "0.11.0"
+dependencies = [
+ "anyhow",
+ "approx",
+ "base64",
+ "cairo-rs",
+ "chrono",
+ "clap",
+ "flate2",
+ "futures",
+ "geo",
+ "gio",
+ "glib",
+ "gtk4",
+ "ijson",
+ "image 0.25.2",
+ "itertools 0.13.0",
+ "kurbo 0.10.4",
+ "librsvg",
+ "nalgebra 0.33.0",
+ "num-derive",
+ "num-traits",
+ "once_cell",
+ "parry2d-f64",
+ "piet",
+ "piet-cairo",
+ "poppler-rs",
+ "rand",
+ "rand_distr",
+ "rand_pcg",
+ "rayon",
+ "regex",
+ "rnote-compose",
+ "rodio",
+ "rough_piet",
+ "roughr",
+ "roxmltree 0.20.0",
+ "rstar",
+ "semver",
+ "serde",
+ "serde_json",
+ "slotmap",
+ "svg",
+ "thiserror",
+ "tracing",
+ "unicode-segmentation",
+ "usvg",
+ "xmlwriter",
+]
+
+[[package]]
+name = "robust"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
+
+[[package]]
+name = "rodio"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6006a627c1a38d37f3d3a85c6575418cfe34a5392d60a686d0071e1c8d427acb"
+dependencies = [
+ "cpal",
+ "symphonia",
+ "thiserror",
+]
+
+[[package]]
+name = "rough_piet"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfe58846983e22ea4e24f4340733df25c4788f74333d6afb92fa0611b0616557"
+dependencies = [
+ "euclid",
+ "num-traits",
+ "palette",
+ "piet",
+ "roughr",
+]
+
+[[package]]
+name = "roughr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d622b5059d31ffa6aae33cd2e58b2e7f4c44c607af50731bb36ff4e39109cac"
+dependencies = [
+ "derive_builder",
+ "euclid",
+ "num-traits",
+ "palette",
+ "points_on_curve",
+ "rand",
+ "svg_path_ops",
+ "svgtypes 0.8.2",
+]
+
+[[package]]
+name = "roxmltree"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f"
+
+[[package]]
+name = "roxmltree"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
+
+[[package]]
+name = "rstar"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "133315eb94c7b1e8d0cb097e5a710d850263372fd028fff18969de708afc7008"
+dependencies = [
+ "heapless",
+ "num-traits",
+ "smallvec",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
+[[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.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f"
+dependencies = [
+ "bitflags 2.6.0",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustybuzz"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c"
+dependencies = [
+ "bitflags 2.6.0",
+ "bytemuck",
+ "smallvec",
+ "ttf-parser",
+ "unicode-bidi-mirroring",
+ "unicode-ccc",
+ "unicode-properties",
+ "unicode-script",
+]
+
+[[package]]
+name = "ryu"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+
+[[package]]
+name = "safe_arch"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a"
+dependencies = [
+ "bytemuck",
+]
+
+[[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 = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "selectors"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4eb30575f3638fc8f6815f448d50cb1a2e255b0897985c8c59f4d37b72a07b06"
+dependencies = [
+ "bitflags 2.6.0",
+ "cssparser",
+ "derive_more",
+ "fxhash",
+ "log",
+ "new_debug_unreachable",
+ "phf 0.10.1",
+ "phf_codegen",
+ "precomputed-hash",
+ "servo_arc",
+ "smallvec",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.204"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.120"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "servo_arc"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d036d71a959e00c77a63538b90a6c2390969f9772b096ea837205c6bd0491a44"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shell-words"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde"
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "simba"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae"
+dependencies = [
+ "approx",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "wide",
+]
+
+[[package]]
+name = "simba"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa"
+dependencies = [
+ "approx",
+ "num-complex",
+ "num-traits",
+ "paste",
+ "wide",
+]
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+
+[[package]]
+name = "simd_helpers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
+dependencies = [
+ "quote",
+]
+
+[[package]]
+name = "simplecss"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a11be7c62927d9427e9f40f3444d5499d868648e2edbc4e2116de69e7ec0e89d"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
+
+[[package]]
+name = "siphasher"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
+
+[[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 = [
+ "serde",
+ "version_check",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
+
+[[package]]
+name = "smol"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e635339259e51ef85ac7aa29a1cd991b957047507288697a690e80ab97d07cad"
+dependencies = [
+ "async-channel",
+ "async-executor",
+ "async-fs",
+ "async-io",
+ "async-lock",
+ "async-net",
+ "async-process",
+ "blocking",
+ "futures-lite",
+]
+
+[[package]]
+name = "spade"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d676a3ce6cfd1e455199fefcf82db082f970872ce017df660f076a4e07a0d64"
+dependencies = [
+ "hashbrown",
+ "num-traits",
+ "robust",
+ "smallvec",
+]
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+dependencies = [
+ "lock_api",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "strict-num"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
+dependencies = [
+ "float-cmp",
+]
+
+[[package]]
+name = "string_cache"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b"
+dependencies = [
+ "new_debug_unreachable",
+ "once_cell",
+ "parking_lot",
+ "phf_shared 0.10.0",
+ "precomputed-hash",
+ "serde",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "svg"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "700efb40f3f559c23c18b446e8ed62b08b56b2bb3197b36d57e0470b4102779e"
+
+[[package]]
+name = "svg_path_ops"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9f934257a2a95c29314aceebc68a34b201e9c1fc875fc1c5d63e96895ace8cd"
+dependencies = [
+ "svgtypes 0.8.2",
+]
+
+[[package]]
+name = "svgtypes"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22975e8a2bac6a76bb54f898a6b18764633b00e780330f0b689f65afb3975564"
+dependencies = [
+ "siphasher 0.3.11",
+]
+
+[[package]]
+name = "svgtypes"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fae3064df9b89391c9a76a0425a69d124aee9c5c28455204709e72c39868a43c"
+dependencies = [
+ "kurbo 0.11.0",
+ "siphasher 1.0.1",
+]
+
+[[package]]
+name = "symphonia"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"
+dependencies = [
+ "lazy_static",
+ "symphonia-codec-adpcm",
+ "symphonia-codec-pcm",
+ "symphonia-core",
+ "symphonia-format-riff",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-codec-adpcm"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c94e1feac3327cd616e973d5be69ad36b3945f16b06f19c6773fc3ac0b426a0f"
+dependencies = [
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-codec-pcm"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f395a67057c2ebc5e84d7bb1be71cce1a7ba99f64e0f0f0e303a03f79116f89b"
+dependencies = [
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-core"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3"
+dependencies = [
+ "arrayvec",
+ "bitflags 1.3.2",
+ "bytemuck",
+ "lazy_static",
+ "log",
+]
+
+[[package]]
+name = "symphonia-format-riff"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f7be232f962f937f4b7115cbe62c330929345434c834359425e043bfd15f50"
+dependencies = [
+ "extended",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
+[[package]]
+name = "symphonia-metadata"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c"
+dependencies = [
+ "encoding_rs",
+ "lazy_static",
+ "log",
+ "symphonia-core",
+]
+
+[[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.72"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
+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",
+ "pkg-config",
+ "toml 0.8.16",
+ "version-compare",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2"
+
+[[package]]
+name = "temp-dir"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f227968ec00f0e5322f9b8173c7a0cbcff6181a0a5b28e9892491c286277231"
+
+[[package]]
+name = "tempfile"
+version = "3.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "tendril"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
+dependencies = [
+ "futf",
+ "mac",
+ "utf-8",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.63"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "tiff"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
+dependencies = [
+ "flate2",
+ "jpeg-decoder",
+ "weezl",
+]
+
+[[package]]
+name = "tiny-skia-path"
+version = "0.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
+dependencies = [
+ "arrayref",
+ "bytemuck",
+ "strict-num",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938"
+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 = "toml"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.22.17",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow 0.6.16",
+]
+
+[[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.72",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
+dependencies = [
+ "log",
+ "once_cell",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "ttf-parser"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8"
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unic-bidi"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1356b759fb6a82050666f11dce4b6fe3571781f1449f3ef78074e408d468ec09"
+dependencies = [
+ "matches",
+ "unic-ucd-bidi",
+]
+
+[[package]]
+name = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-ucd-bidi"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1d568b51222484e1f8209ce48caa6b430bf352962b877d592c29ab31fb53d8c"
+dependencies = [
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-bidi-mirroring"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23cb788ffebc92c5948d0e997106233eeb1d8b9512f93f41651f52b6c5f5af86"
+
+[[package]]
+name = "unicode-ccc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1df77b101bcc4ea3d78dafc5ad7e4f58ceffe0b2b16bf446aeb50b6cb4157656"
+
+[[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-properties"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291"
+
+[[package]]
+name = "unicode-script"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+
+[[package]]
+name = "unicode-vo"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
+
+[[package]]
+name = "url"
+version = "2.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "usvg"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b84ea542ae85c715f07b082438a4231c3760539d902e11d093847a0b22963032"
+dependencies = [
+ "base64",
+ "data-url",
+ "flate2",
+ "fontdb",
+ "imagesize",
+ "kurbo 0.11.0",
+ "log",
+ "pico-args",
+ "roxmltree 0.20.0",
+ "rustybuzz",
+ "simplecss",
+ "siphasher 1.0.1",
+ "strict-num",
+ "svgtypes 0.15.1",
+ "tiny-skia-path",
+ "unicode-bidi",
+ "unicode-script",
+ "unicode-vo",
+ "xmlwriter",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8parse"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
+
+[[package]]
+name = "v_frame"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
+dependencies = [
+ "aligned-vec",
+ "num-traits",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[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.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+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.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.42"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
+
+[[package]]
+name = "web-sys"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "weezl"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082"
+
+[[package]]
+name = "wide"
+version = "0.7.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "901e8597c777fa042e9e245bd56c0dc4418c5db3f845b6ff94fbac732c6a0692"
+dependencies = [
+ "bytemuck",
+ "safe_arch",
+]
+
+[[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.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[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.54.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49"
+dependencies = [
+ "windows-core 0.54.0",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.54.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65"
+dependencies = [
+ "windows-result",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[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.6",
+]
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.6.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winresource"
+version = "0.1.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77e2aaaf8cfa92078c0c0375423d631f82f2f57979c2884fdd5f604a11e45329"
+dependencies = [
+ "toml 0.7.8",
+ "version_check",
+]
+
+[[package]]
+name = "xi-unicode"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a"
+
+[[package]]
+name = "xml5ever"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4034e1d05af98b51ad7214527730626f019682d797ba38b51689212118d8e650"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+]
+
+[[package]]
+name = "xmlwriter"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.72",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
+
+[[package]]
+name = "zune-core"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
+
+[[package]]
+name = "zune-inflate"
+version = "0.2.54"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "zune-jpeg"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768"
+dependencies = [
+ "zune-core",
+]
diff --git a/pkgs/by-name/rn/rnote/package.nix b/pkgs/by-name/rn/rnote/package.nix
new file mode 100644
index 000000000000..792c9faa0450
--- /dev/null
+++ b/pkgs/by-name/rn/rnote/package.nix
@@ -0,0 +1,99 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, alsa-lib
+, appstream
+, appstream-glib
+, cargo
+, cmake
+, desktop-file-utils
+, dos2unix
+, glib
+, gst_all_1
+, gtk4
+, libadwaita
+, libxml2
+, meson
+, ninja
+, pkg-config
+, poppler
+, python3
+, rustPlatform
+, rustc
+, shared-mime-info
+, wrapGAppsHook4
+, darwin
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rnote";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "flxzt";
+    repo = "rnote";
+    rev = "v${version}";
+    hash = "sha256-RbuEgmly6Mjmx58zOV+tg6Mv5ghCNy/dE5FXYrEXtdg=";
+  };
+
+  cargoDeps = rustPlatform.importCargoLock {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "ink-stroke-modeler-rs-0.1.0" = "sha256-B6lT6qSOIHxqBpKTE4nO2+Xs9KF7JLVRUHOkYp8Sl+M=";
+      "piet-0.6.2" = "sha256-3juXzuKwoLuxia6MoVwbcBJ3jXBQ9QRNVoxo3yFp2Iw=";
+    };
+  };
+
+  nativeBuildInputs = [
+    appstream-glib # For appstream-util
+    cmake
+    desktop-file-utils # For update-desktop-database
+    dos2unix
+    meson
+    ninja
+    pkg-config
+    python3 # For the postinstall script
+    rustPlatform.bindgenHook
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+    shared-mime-info # For update-mime-database
+    wrapGAppsHook4
+  ];
+
+  dontUseCmakeConfigure = true;
+
+  mesonFlags = [
+    (lib.mesonBool "cli" true)
+  ];
+
+  buildInputs = [
+    appstream
+    glib
+    gst_all_1.gstreamer
+    gtk4
+    libadwaita
+    libxml2
+    poppler
+  ] ++ lib.optionals stdenv.isLinux [
+    alsa-lib
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.AudioUnit
+  ];
+
+  postPatch = ''
+    chmod +x build-aux/*.py
+    patchShebangs build-aux
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/flxzt/rnote";
+    changelog = "https://github.com/flxzt/rnote/releases/tag/${src.rev}";
+    description = "Simple drawing application to create handwritten notes";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ dotlambda gepbird yrd ];
+    platforms = platforms.unix;
+    # compiler error since 2023-11-17
+    broken = stdenv.isDarwin;
+  };
+}
diff --git a/pkgs/by-name/ro/rockcraft/package.nix b/pkgs/by-name/ro/rockcraft/package.nix
index 2443a887a321..48b95df85b52 100644
--- a/pkgs/by-name/ro/rockcraft/package.nix
+++ b/pkgs/by-name/ro/rockcraft/package.nix
@@ -1,13 +1,50 @@
 {
   lib,
-  python3Packages,
+  python3,
   fetchFromGitHub,
   dpkg,
   nix-update-script,
-  python3,
 }:
 
-python3Packages.buildPythonApplication rec {
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      craft-application = super.craft-application.overridePythonAttrs (old: rec {
+        version = "1.2.1";
+        src = fetchFromGitHub {
+          owner = "canonical";
+          repo = "craft-application";
+          rev = "refs/tags/${version}";
+          hash = "sha256-CXZEWVoE66dlQJp4G8tinufjyaDJaH1Muxz/qd/81oA=";
+        };
+        postPatch = ''
+          substituteInPlace pyproject.toml \
+            --replace-fail "setuptools==67.7.2" "setuptools"
+        '';
+        preCheck = ''
+          export HOME=$(mktemp -d)
+        '';
+      });
+      pydantic-yaml = super.pydantic-yaml.overridePythonAttrs (old: rec {
+        version = "0.11.2";
+        src = fetchFromGitHub {
+          owner = "NowanIlfideme";
+          repo = "pydantic-yaml";
+          rev = "refs/tags/v${version}";
+          hash = "sha256-AeUyVav0/k4Fz69Qizn4hcJKoi/CDR9eUan/nJhWsDY=";
+        };
+        dependencies = with self; [
+          deprecated
+          importlib-metadata
+          pydantic_1
+          ruamel-yaml
+          types-deprecated
+        ];
+      });
+    };
+  };
+in
+python.pkgs.buildPythonApplication rec {
   pname = "rockcraft";
   version = "1.2.3";
 
@@ -26,20 +63,21 @@ python3Packages.buildPythonApplication rec {
       --replace-fail "distutils.util" "setuptools.dist"
   '';
 
-  propagatedBuildInputs = with python3Packages; [
-    craft-application-1
+  build-system = with python.pkgs; [ setuptools-scm ];
+
+  dependencies = with python.pkgs; [
+    craft-application
     craft-archives
     spdx-lookup
   ];
 
   nativeCheckInputs =
-    with python3Packages;
+    with python.pkgs;
     [
       pytest-check
       pytest-mock
       pytest-subprocess
       pytestCheckHook
-      setuptools
     ]
     ++ [ dpkg ];
 
diff --git a/pkgs/by-name/ro/roddhjav-apparmor-rules/package.nix b/pkgs/by-name/ro/roddhjav-apparmor-rules/package.nix
index 9fe79b3acc41..996e51627905 100644
--- a/pkgs/by-name/ro/roddhjav-apparmor-rules/package.nix
+++ b/pkgs/by-name/ro/roddhjav-apparmor-rules/package.nix
@@ -7,13 +7,13 @@
 
 stdenvNoCC.mkDerivation {
   pname = "roddhjav-apparmor-rules";
-  version = "0-unstable-2024-07-12";
+  version = "0-unstable-2024-07-20";
 
   src = fetchFromGitHub {
     owner = "roddhjav";
     repo = "apparmor.d";
-    rev = "bd1239b46a006d3cb227fc6fffcf95cf684e1ea2";
-    hash = "sha256-gVm3z7bKUQlIBP6Jdy6OIYhb4juQ663gMzV5aoPr+iA=";
+    rev = "d9ca201519ddd361987860efccf95babbe24163c";
+    hash = "sha256-cftNBgsoKnqlV8Lu41prvaNQ3AhTnHb3CvzGv+D1kU4=";
   };
 
   dontConfigure = true;
diff --git a/pkgs/by-name/ro/route-graph/package.nix b/pkgs/by-name/ro/route-graph/package.nix
index 7e6e8d2bd6a6..8e1a4e183ce0 100644
--- a/pkgs/by-name/ro/route-graph/package.nix
+++ b/pkgs/by-name/ro/route-graph/package.nix
@@ -31,7 +31,7 @@ python3.pkgs.buildPythonApplication rec {
     scapy
     typer
     typing-extensions
-  ] ++ typer.optional-dependencies.all);
+  ]);
 
   # Project has no tests
   doCheck = false;
diff --git a/pkgs/by-name/rs/rs-tftpd/package.nix b/pkgs/by-name/rs/rs-tftpd/package.nix
index a099f92881ce..ec6c62e96e36 100644
--- a/pkgs/by-name/rs/rs-tftpd/package.nix
+++ b/pkgs/by-name/rs/rs-tftpd/package.nix
@@ -6,16 +6,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rs-tftpd";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "altugbakan";
     repo = "rs-tftpd";
     rev = version;
-    hash = "sha256-J7Cy8ymqZH1dCQ4/NWi+ukOsD/0KAfqgYBnCgfRt/KU=";
+    hash = "sha256-ZWafSqHEBgS7LR9hTfatatvAFZnCP8L5rHLerdjyrUc=";
   };
 
-  cargoHash = "sha256-gVNwMgv3acJaoQFJi5G/zo2ECzxYvcgaHlpwuCF2HVE=";
+  cargoHash = "sha256-uBVDH7YYSuFv0r5T2+EAoL02ta+1hjaza/Ilu+a+k0k=";
+
+  buildFeatures = [ "client" ];
 
   passthru.updateScript = nix-update-script {};
 
diff --git a/pkgs/by-name/rs/rspamd-trainer/package.nix b/pkgs/by-name/rs/rspamd-trainer/package.nix
index 3ed3c7aaea08..56e6f9e9ce8e 100644
--- a/pkgs/by-name/rs/rspamd-trainer/package.nix
+++ b/pkgs/by-name/rs/rspamd-trainer/package.nix
@@ -2,7 +2,6 @@
 , python3
 , python3Packages
 , fetchFromGitLab
-, makeWrapper
 , fetchpatch
 , rspamd
 }:
diff --git a/pkgs/by-name/ry/ryujinx/deps.nix b/pkgs/by-name/ry/ryujinx/deps.nix
index 0262b9903fc5..42afe0f6e9cf 100644
--- a/pkgs/by-name/ry/ryujinx/deps.nix
+++ b/pkgs/by-name/ry/ryujinx/deps.nix
@@ -2,210 +2,210 @@
 # Please dont edit it manually, your changes might get overwritten!
 
 { fetchNuGet }: [
-  (fetchNuGet { pname = "Avalonia"; version = "11.0.10"; sha256 = "0mvsc6fg8qbvdqkdkia61jkprb3yhvvgvq6s8hgd09v6lzjsbq8n"; })
-  (fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; sha256 = "1az4s1g22ipak9a3xfh55z2h3rm6lpqh7svbpw6ag4ysrgsjjsjd"; })
-  (fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.29"; sha256 = "05mm7f0jssih3gbzqfgjnfq5cnqa85ihsg0z1897ciihv8qd3waq"; })
-  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.10"; sha256 = "0s2wn7sf0dsa861gh6ghfgf881p6bvyahfpl583rcnsi6ci2hjhv"; })
-  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.4"; sha256 = "1sqdcaknqazq4mw2x1jb6pfmfnyhpkd4xh6fl4ld85qikzzj7796"; })
-  (fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.10"; sha256 = "13g5sac0ba8dy1pn21j2g4fin57x1vs1pl07gzgv53bl8nz1xznj"; })
-  (fetchNuGet { pname = "Avalonia.Controls.ItemsRepeater"; version = "11.0.4"; sha256 = "1p7mz33a6dn6ghvwajxdghq15mn5f6isvvqzxcjbnhh3m5c1zhrz"; })
-  (fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.10"; sha256 = "0s27ajknbrymnchv66rybrs3snzh825iy0nqby72yk726znp52vw"; })
-  (fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.10"; sha256 = "1c7hv9ypvn1ncg6cmzn2cs0nkax0y0pnbx1h1asjzn8rnbwcvnca"; })
-  (fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.10"; sha256 = "18f9vpsxfaak4qpqvcz9rdygx3k8dhzb64iqlhva88nhahwlwlxr"; })
-  (fetchNuGet { pname = "Avalonia.Markup.Xaml.Loader"; version = "11.0.10"; sha256 = "0vlvysxi2qdg3na604jivzs68ldry1i43lmxxa3lhh7q9pqqpzjy"; })
-  (fetchNuGet { pname = "Avalonia.Native"; version = "11.0.10"; sha256 = "06pihfddbvdw1s3rs6v183ljch1bsxym80fclfqrh3npa3ag9n1z"; })
-  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.10"; sha256 = "0p75z6k4ivzhdn9y9gwqsqmja7x03d4mxaicbccjbnz06irybnxa"; })
-  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.4"; sha256 = "096436hhg45v02pp4f43mf00xn6blx7x66sb8fq5j4jn7479fynp"; })
-  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.0"; sha256 = "1ra1kd0kkblppr5zy7rzdbwllggrzvp9lkxblf9mg3y8rnp6fk83"; })
-  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.10"; sha256 = "0w45j4ypqnwmsh3byzaghn43ycfkfnn8415i5lw2q5ip7vp3a9fm"; })
-  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.4"; sha256 = "1ysmq4f8bxabpq3nhcrrvgwvxb9z7gx9565bvdyksdhsq16wyxym"; })
-  (fetchNuGet { pname = "Avalonia.Svg"; version = "11.0.0.18"; sha256 = "1mcvjwzc7z2kij1wx567nhb6irqzn45wd5b258nls53i3izxm1jk"; })
-  (fetchNuGet { pname = "Avalonia.Svg.Skia"; version = "11.0.0.18"; sha256 = "1915rg60p5bkigqmjchg6538hxnnqbz2sf69967gly9nps81101k"; })
-  (fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.10"; sha256 = "0vssdz6rng0k85qsv2xn6x0dldaalnnx718n7plwxg3j1pddr1z7"; })
-  (fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.10"; sha256 = "1gh3fad9ya56qwzhk7590bdzkky76yx1jjj60rqr013b97qbd3gs"; })
-  (fetchNuGet { pname = "Avalonia.X11"; version = "11.0.10"; sha256 = "1x09mp8q3mrj5fijqk7qp5qivrysqnbc2bkj2ssvawb9rjy6497w"; })
-  (fetchNuGet { pname = "CommandLineParser"; version = "2.9.1"; sha256 = "1sldkj8lakggn4hnyabjj1fppqh50fkdrr1k99d4gswpbk5kv582"; })
-  (fetchNuGet { pname = "Concentus"; version = "2.2.0"; sha256 = "00x2ch3y57wi661xmla84ypwh8qjcrl0q3i2461dskd8lppw21pg"; })
-  (fetchNuGet { pname = "DiscordRichPresence"; version = "1.2.1.24"; sha256 = "0maw0yd6xgwy0cgk593z3zva0r5j267zpdmmpq8avj3zbna6n4x1"; })
-  (fetchNuGet { pname = "DynamicData"; version = "8.4.1"; sha256 = "03mdxfrwgfprpn9g17sxhzxg09k3dkkm2xs29i4r36b5jlgmms5g"; })
-  (fetchNuGet { pname = "ExCSS"; version = "4.2.3"; sha256 = "1likxhccg4l4g4i65z4dfzp9059hij6h1q7prx2sgakvk8zzmw9k"; })
-  (fetchNuGet { pname = "FluentAvaloniaUI"; version = "2.0.5"; sha256 = "1fk38vm4fqrhwv7zcffg34dfrgdwfqndpyjpyblyx7xj3nlpm8hi"; })
-  (fetchNuGet { pname = "FSharp.Core"; version = "7.0.200"; sha256 = "1ji816r8idwjmxk8bzyq1z32ybz7xdg3nb0a7pnvqr8vys11bkgb"; })
-  (fetchNuGet { pname = "GtkSharp.Dependencies"; version = "1.1.1"; sha256 = "0ffywnc3ca1lwhxdnk99l238vsprsrsh678bgm238lb7ja7m52pw"; })
-  (fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; sha256 = "115aybicqs9ijjlcv6k6r5v0agkjm1bm1nkd0rj3jglv8s0xvmp2"; })
-  (fetchNuGet { pname = "HarfBuzzSharp"; version = "7.3.0"; sha256 = "1rqcmdyzxz9kc0k8594hbpksjc23mkakmjybi4b8702qycxx0lrf"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; sha256 = "1f18ahwkaginrg0vwsi6s56lvnqvvxv7pzklfs5lnknasxy1a76z"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "7.3.0"; sha256 = "0i9gaiyjgmcpnfn1fixbxq8shqlh4ahng7j4dxlf38zlln1f6h80"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; sha256 = "052d8frpkj4ijs6fm6xp55xbv95b1s9biqwa0w8zp3rgm88m9236"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "7.3.0"; sha256 = "1b5ng37bwk75cifw7p1hzn8z6sswi8h7h510qgwlbvgmlrs5r0ga"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; sha256 = "043hv36bg5240znbm8x5la7py17m4jfzy57q3ka32f6zjld83j36"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "7.3.0"; sha256 = "0dcmclnyryb82wzsky1dn0gbjsvx84mfx46v984f5fmg4v238lpm"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; sha256 = "08khd2jqm8sw58ljz5srangzfm2sz3gd2q1jzc5fr80lj8rv6r74"; })
-  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "7.3.0"; sha256 = "1hyvmz7rfbrxbcpnwyvb64gdk1hifcpz3rln58yyb7g1pnbpnw2s"; })
-  (fetchNuGet { pname = "LibHac"; version = "0.19.0"; sha256 = "06fyfqxi92mz55adzkk2y56spvf0217icnri2s1gcpyvc5w2cc8l"; })
-  (fetchNuGet { pname = "MicroCom.CodeGenerator.MSBuild"; version = "0.11.0"; sha256 = "0ynvaq3faqh4pirl0l8l6xq2ikk3f27xw05i8vm3vwamgy4p7k2f"; })
-  (fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; sha256 = "0p9c3m0zk59x9dcqw077hzd2yk60myisbacvm36mnwpcjwzjkp2m"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; sha256 = "0bbl0jpqywqmzz2gagld1p2gvdfldjfjmm25hil9wj2nq1zc4di8"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.4"; sha256 = "0wd6v57p53ahz5z9zg4iyzmy3src7rlsncyqpcag02jjj1yx6g58"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; sha256 = "12n7rvr39bzkf2maw7zplw8rwpxpxss4ich3bb2pw770rx4nyvyw"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.9.2"; sha256 = "097lb4acla3x0m2s0w47f6321q3k2phnhpbh338d79an4b5ffks1"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; sha256 = "1kmry65csvfn72zzc16vj1nfbfwam28wcmlrk3m5rzb8ydbzgylb"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.9.2"; sha256 = "002llvcwkaqnpzsipp9s20piw61i89spamr0wlxrvss41zh90klg"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; sha256 = "0w0yx0lpg54iw5jazqk46h48gx43ij32gwac8iywdj6kxfxm03vw"; })
-  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; sha256 = "0hjgxcsj5zy27lqk0986m59n5dbplx2vjjla2lsvg4bwg8qa7bpk"; })
-  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.9.0"; sha256 = "1gljgi69k0fz8vy8bn6xlyxabj6q4vls2zza9wz7ng6ix3irm89r"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; sha256 = "0gw297dgkh0al1zxvgvncqs0j15lsna9l1wpqas4rflmys440xvb"; })
-  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; sha256 = "0gd67zlw554j098kabg887b5a6pq9kzavpa3jjy5w53ccjzjfy8j"; })
-  (fetchNuGet { pname = "Microsoft.DotNet.PlatformAbstractions"; version = "3.1.6"; sha256 = "0b9myd7gqbpaw9pkd2bx45jhik9mwj0f1ss57sk2cxmag2lkdws5"; })
-  (fetchNuGet { pname = "Microsoft.Extensions.DependencyModel"; version = "6.0.0"; sha256 = "08c4fh1n8vsish1vh7h73mva34g0as4ph29s4lvps7kmjb4z64nl"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "7.6.2"; sha256 = "02vjbpn852iprpf5ay4f6b5da75z33pii4cbm8pqx3v9j7w7r5r2"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.JsonWebTokens"; version = "7.6.2"; sha256 = "0bnmxfh0whdvd3vcj6z0w4zxkld6dsxjv1nwg8k2qv9508qy8z4l"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "7.6.2"; sha256 = "1v7vqpvg0039l9r3k196fp4pwzjbaxk27dg8hxph6y55kqwipll4"; })
-  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "7.6.2"; sha256 = "0nvrn2nc6s1r4s1g1kggpg9pc96wsw6xqy4qkknnfyz2w3dlsj9z"; })
-  (fetchNuGet { pname = "Microsoft.IO.RecyclableMemoryStream"; version = "3.0.1"; sha256 = "12hiz0c7xqff3a0kfmmr11vdi38ba1my06xs4p5galqwj7zn0wds"; })
-  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.9.0"; sha256 = "1lls1fly2gr1n9n1xyl9k33l2v4pwfmylyzkq8v4v5ldnwkl1zdb"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.0"; sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; sha256 = "1507hnpr9my3z4w1r6xk5n0s1j3y6a2c2cnynj76za7cphxi1141"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; sha256 = "0mwpwdflidzgzfx2dlpkvvnkgkr2ayaf0s80737h4wa35gaj11rc"; })
-  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.9.0"; sha256 = "1kgsl9w9fganbm9wvlkqgk0ag9hfi58z88rkfybc6kvg78bx89ca"; })
-  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.9.0"; sha256 = "19ffh31a1jxzn8j69m1vnk5hyfz3dbxmflq77b8x82zybiilh5nl"; })
-  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.5.0"; sha256 = "1zapbz161ji8h82xiajgriq6zgzmb1f3ar517p2h63plhsq5gh2q"; })
-  (fetchNuGet { pname = "MsgPack.Cli"; version = "1.0.1"; sha256 = "1dk2bs3g16lsxcjjm7gfx6jxa4667wccw94jlh2ql7y7smvh9z8r"; })
-  (fetchNuGet { pname = "NetCoreServer"; version = "8.0.7"; sha256 = "171mn5b56ikkjvsx3hvgmh3lga9c2ja31as0hnfr3040rdrj4ij5"; })
-  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.0"; sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; })
-  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; sha256 = "1fn9fxppfcg4jgypp2pmrpr6awl3qz1xmnri0cygpkwvyx27df1y"; })
-  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb"; })
-  (fetchNuGet { pname = "NUnit"; version = "3.13.3"; sha256 = "0wdzfkygqnr73s6lpxg5b1pwaqz9f414fxpvpdmf72bvh4jaqzv6"; })
-  (fetchNuGet { pname = "NUnit3TestAdapter"; version = "4.1.0"; sha256 = "1z5g15npmsjszhfmkrdmp4ds7jpxzhxblss2rjl5mfn5sihy4cww"; })
-  (fetchNuGet { pname = "OpenTK.Audio.OpenAL"; version = "4.8.2"; sha256 = "1r89s76nq5v4pc1p77avq3vdp2k9n0byf7clcdwc0d0k6s4r34lb"; })
-  (fetchNuGet { pname = "OpenTK.Core"; version = "4.8.2"; sha256 = "10mgcgz7dk2sqwc3fd4la69mp5p91qy6b49ycpnw3jvp7mbbim77"; })
-  (fetchNuGet { pname = "OpenTK.Graphics"; version = "4.8.2"; sha256 = "13d6dkrpv5p1xaj6bxxwc5wjw3p08dhif4k61jq3wfixsfm5gnhc"; })
-  (fetchNuGet { pname = "OpenTK.Mathematics"; version = "4.8.2"; sha256 = "12klcy0ifx9hmn1bhk5fnmp6xasck15xiirpda2ai7rpisrjvysc"; })
-  (fetchNuGet { pname = "OpenTK.redist.glfw"; version = "3.3.8.39"; sha256 = "05z0hcignvzk8ffg6mn8m10sv5wppicibjz7zncsj3h3z8cin3vf"; })
-  (fetchNuGet { pname = "OpenTK.Windowing.GraphicsLibraryFramework"; version = "4.8.2"; sha256 = "11jc154j5r1jvcxa7by42xkyj5dkiv4q6yffkr6r1vmn9yshclvb"; })
-  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; })
-  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; })
-  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; })
-  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; })
-  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; })
-  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; })
-  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; })
-  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; })
-  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; })
-  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; })
-  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; })
-  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; })
-  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; })
-  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; })
-  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; })
-  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; })
-  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; })
-  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; })
-  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; })
-  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; })
-  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; })
-  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; })
-  (fetchNuGet { pname = "Ryujinx.AtkSharp"; version = "3.24.24.59-ryujinx"; sha256 = "0497v1himb77qfir5crgx25fgi7h12vzx9m3c8xxlvbs8xg77bcq"; })
-  (fetchNuGet { pname = "Ryujinx.Audio.OpenAL.Dependencies"; version = "1.21.0.1"; sha256 = "0z5k42h252nr60d02p2ww9190d7k1kzrb26vil4ydfhxqqqv6w9l"; })
-  (fetchNuGet { pname = "Ryujinx.CairoSharp"; version = "3.24.24.59-ryujinx"; sha256 = "1cfspnfrkmr1cv703smnygdkf8d2r9gwz0i1xcck7lhxb5b7h1gs"; })
-  (fetchNuGet { pname = "Ryujinx.GdkSharp"; version = "3.24.24.59-ryujinx"; sha256 = "1fqilm4fzddq88y2g5jx811wcjbzjd6bk5n7cxvy4c71iknhlmdg"; })
-  (fetchNuGet { pname = "Ryujinx.GioSharp"; version = "3.24.24.59-ryujinx"; sha256 = "1m8s91zvx8drynsar75xi1nm8c4jyvrq406qadf0p8clbsgxvdxi"; })
-  (fetchNuGet { pname = "Ryujinx.GLibSharp"; version = "3.24.24.59-ryujinx"; sha256 = "0samifm14g1960z87hzxmqb8bzp0vckaja7gn5fy8akgh03z96yd"; })
-  (fetchNuGet { pname = "Ryujinx.Graphics.Nvdec.Dependencies"; version = "5.0.3-build14"; sha256 = "0559wbj59b81hc89g0s360x6j556is1swj9hcnm8z0d0anvgxxzr"; })
-  (fetchNuGet { pname = "Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK"; version = "1.2.0"; sha256 = "1qkas5b6k022r57acpc4h981ddmzz9rwjbgbxbphrjd8h7lz1l5x"; })
-  (fetchNuGet { pname = "Ryujinx.GtkSharp"; version = "3.24.24.59-ryujinx"; sha256 = "0dri508x5kca2wk0mpgwg6fxj4n5n3kplapwdmlcpfcbwbmrrnyr"; })
-  (fetchNuGet { pname = "Ryujinx.PangoSharp"; version = "3.24.24.59-ryujinx"; sha256 = "1bdxm5k54zs0h6n2dh20j5jlyn0yml9r8qr828ql0k8zl7yhlq40"; })
-  (fetchNuGet { pname = "Ryujinx.SDL2-CS"; version = "2.30.0-build32"; sha256 = "18alxq2ydnkwjv1rdfnssrs80l5pkmfjyjg8kjkwnp99ml7fbfia"; })
-  (fetchNuGet { pname = "securifybv.PropertyStore"; version = "0.1.0"; sha256 = "1s7bga6989jdpz4mk4kf1ysgq13pwjmk21xf4rh4kj4b9psd6cwd"; })
-  (fetchNuGet { pname = "securifybv.ShellLink"; version = "0.1.0"; sha256 = "1v52d01590m8y06bybis6hlg296wk3y7ilqyh01ram62v5wrjvq2"; })
-  (fetchNuGet { pname = "shaderc.net"; version = "0.1.0"; sha256 = "0f35s9h0vj9f1rx9bssj66hibc3j9bzrb4wgb5q2jwkf5xncxbpq"; })
-  (fetchNuGet { pname = "SharpZipLib"; version = "1.4.2"; sha256 = "0ijrzz2szxjmv2cipk7rpmg14dfaigdkg7xabjvb38ih56m9a27y"; })
-  (fetchNuGet { pname = "ShimSkiaSharp"; version = "1.0.0.18"; sha256 = "1vxsw5kkw3z4c59v5678k4nmxng92845y3pi4fgv1wcnxgw5aqzg"; })
-  (fetchNuGet { pname = "Silk.NET.Core"; version = "2.16.0"; sha256 = "1mkqc2aicvknmpyfry2v7jjxh3apaxa6dmk1vfbwxnkysl417x0k"; })
-  (fetchNuGet { pname = "Silk.NET.Vulkan"; version = "2.16.0"; sha256 = "0sg5mxv7ga5pq6wc0lz52j07fxrcfmb0an30r4cxsxk66298z2wy"; })
-  (fetchNuGet { pname = "Silk.NET.Vulkan.Extensions.EXT"; version = "2.16.0"; sha256 = "05918f6fl8byla2m7qjp7dvxww2rbpj2sqd4xq26rl885fmddfvf"; })
-  (fetchNuGet { pname = "Silk.NET.Vulkan.Extensions.KHR"; version = "2.16.0"; sha256 = "1j4wsv7kjgjkmf2vlm5jjnqkdh265rkz5s1hx42i0f4bmdaz2kj1"; })
-  (fetchNuGet { pname = "SixLabors.Fonts"; version = "1.0.0"; sha256 = "1lsc789fqsnh3jx5w0g5k2n1wlww58zyzrcf5rs3wx2fjrqi084k"; })
-  (fetchNuGet { pname = "SixLabors.ImageSharp"; version = "2.1.8"; sha256 = "049k8zf9acqncfdbdc7875fvndk2089mwlm5igam88vwc5i5vh75"; })
-  (fetchNuGet { pname = "SixLabors.ImageSharp.Drawing"; version = "1.0.0"; sha256 = "0gh6xzw0jhjxf2slky11sdj0s8mp5dmps5k0rlx4krm68xb98zr0"; })
-  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.3"; sha256 = "1yq694myq2rhfp2hwwpyzcg1pzpxcp7j72wib8p9pw9dfj7008sv"; })
-  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.6"; sha256 = "0xs11zjw9ha68maw3l825kfwlrid43qwy0mswljxhpjh0y1k6k6b"; })
-  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.7"; sha256 = "0f6wbk9dnjiffb9ycjachy1m9zw3pai2m503nym07qgb0izxm792"; })
-  (fetchNuGet { pname = "SkiaSharp.HarfBuzz"; version = "2.88.6"; sha256 = "1h61vk9ibavwwrxqgclzsxmchighvfaqlcqrj0dpi2fzw57f54c2"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; sha256 = "0dajvr60nwvnv7s6kcqgw1w97zxdpz1c5lb7kcq7r0hi0l05ck3q"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.7"; sha256 = "0p0z6nxkkmabv46wmxhs3yr0xy24i6jzn54gk0hsm3h1a8vi3m21"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.3"; sha256 = "191ajgi6fnfqcvqvkayjsxasiz6l0bv3pps8vv9abbyc4b12qvph"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.6"; sha256 = "1fp9h8c8k6sbsh48b69dc6461isd4dajq7yw5i7j6fhkas78q4zf"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.7"; sha256 = "05xwa1izzvqz4gznvx2x31qnpvl1lc65hm5p9sscjg5afisya0ss"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; sha256 = "1w5njksq3amrrp7fqxw89nv6ar2kgc5yx092i4rxv7hrjbd1aagx"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.7"; sha256 = "1k2hfasgbv01navc55zzwdwzfxcw4186jni35c00zykgwhbwb250"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.3"; sha256 = "03wwfbarsxjnk70qhqyd1dw65098dncqk2m0vksx92j70i7lry6q"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.6"; sha256 = "1w2mwcwkqvrg4x4ybc4674xnkqwh1n2ihg520gqgpnqfc11ghc4n"; })
-  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.7"; sha256 = "119mlbh5hmlis7vb111s95dwg5p1anm2hmv7cm6fz7gy18473d7v"; })
-  (fetchNuGet { pname = "SPB"; version = "0.0.4-build32"; sha256 = "0fk803f4llcc7g111g7wdn6fwqjrlyr64p97lv9xannbk9bxnk0r"; })
-  (fetchNuGet { pname = "Svg.Custom"; version = "1.0.0.18"; sha256 = "0186sxdcz7c30g3vvygbahvsmywn1cqq53m8h6la1z2c00zr22s6"; })
-  (fetchNuGet { pname = "Svg.Model"; version = "1.0.0.18"; sha256 = "03vjk6pmxpff6q7saqgq9qdfbs6sf11hqrp469ycfzbikgil4xh9"; })
-  (fetchNuGet { pname = "Svg.Skia"; version = "1.0.0.18"; sha256 = "0vnjy0gc8qfv626rn3z4sy03ds186h1yv9fwq3p84pq6l04ng5d3"; })
-  (fetchNuGet { pname = "System.Buffers"; version = "4.5.1"; sha256 = "04kb1mdrlcixj9zh1xdi5as0k0qi8byr5mi3p3jcxx72qz93s2y3"; })
-  (fetchNuGet { pname = "System.CodeDom"; version = "4.4.0"; sha256 = "1zgbafm5p380r50ap5iddp11kzhr9khrf2pnai6k593wjar74p1g"; })
-  (fetchNuGet { pname = "System.CodeDom"; version = "8.0.0"; sha256 = "0zyzd15v0nf8gla7nz243m1kff8ia6vqp471i3g7xgawgj5n21dv"; })
-  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; sha256 = "1kvcllagxz2q92g81zkz81djkn2lid25ayjfgjalncyc68i15p0r"; })
-  (fetchNuGet { pname = "System.Collections.Immutable"; version = "8.0.0"; sha256 = "0z53a42zjd59zdkszcm7pvij4ri5xbb8jly9hzaad9khlf69bcqp"; })
-  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; sha256 = "1jj6f6g87k0iwsgmg3xmnn67a14mq88np0l1ys5zkxhkvbc8976p"; })
-  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; })
-  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; sha256 = "1d951hrvrpndk7insiag80qxjbf2y0y39y8h5hnq9612ws661glk"; })
-  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; })
-  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; })
-  (fetchNuGet { pname = "System.IO.Hashing"; version = "8.0.0"; sha256 = "1hg5i9hiihj9x4d0mlvhfddmivzrhzz83dyh26fqw1nd8jvqccxk"; })
-  (fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; sha256 = "08211lvckdsdbd67xz4f6cyk76cli565j0dby1grlc4k9bhwby65"; })
-  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; })
-  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; sha256 = "0ky2nrcvh70rqq88m9a5yqabsl4fyd17bpr63iy2mbivjs2nyypv"; })
-  (fetchNuGet { pname = "System.Management"; version = "8.0.0"; sha256 = "1zbwj6ii8axa4w8ymjzi9d9pj28nhswygahyqppvzaxypw6my2hz"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; sha256 = "14gbbs22mcxwggn0fcfs1b062521azb9fbb7c113x0mq6dzq9h6y"; })
-  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; sha256 = "08jsfwimcarfzrhlyvjjid61j02irx6xsklf32rv57x2aaikvx0h"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.3.0"; sha256 = "05kji1mv4sl75iwmc613p873145nynm02xiajx8pn0h2kx53d23s"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; sha256 = "0rdvma399070b0i46c4qq1h2yvjj3k013sqzkilz4bz5cwmx1rba"; })
-  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
-  (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; sha256 = "191p63zy5rpqx7dnrb3h7prvgixmk168fhvvkkvhlazncf8r3nc2"; })
-  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; })
-  (fetchNuGet { pname = "System.Reactive"; version = "6.0.0"; sha256 = "1mkvx1fwychpczksy6svfmniqhbm3xqblxqik6178l12xgq7aw45"; })
-  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; })
-  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; })
-  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; })
-  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; sha256 = "1wdbavrrkajy7qbdblpbpbalbdl48q3h34cchz24gvdgyrlf15r4"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; sha256 = "17qsl5nanlqk9iz0l5wijdn6ka632fs1m1fvx18dfgswm258r3ss"; })
-  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "8.0.0"; sha256 = "10a8vm0c3n5cili5nix6bdmiaxr69qisvk356pb81f2s8bgq40bm"; })
-  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; })
-  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; })
-  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; })
-  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; sha256 = "119br3pd85lq8zcgh4f60jzmv1g976q1kdgi3hvqdlhfbw6siz2j"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; sha256 = "02k25ivn50dmqx5jn8hawwmz24yf0454fjd823qk6lygj9513q4x"; })
-  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; sha256 = "0qm741kh4rh57wky16sq4m0v05fxmkjjr87krycf5vp9f0zbahbc"; })
-  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; })
-  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; })
-  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; })
-  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.5.0"; sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0"; })
-  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.5.0"; sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; })
-  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; sha256 = "1z21qyfs6sg76rp68qdx0c9iy57naan89pg7p6i3qpj8kyzn921w"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "5.0.0"; sha256 = "1bn2pzaaq4wx9ixirr8151vm5hynn3lmrljcgjx9yghmm4k677k0"; })
-  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "8.0.0"; sha256 = "1lgdd78cik4qyvp2fggaa0kzxasw6kc9a6cjqw46siagrm0qnc3y"; })
-  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "6.0.0"; sha256 = "06n9ql3fmhpjl32g3492sj181zjml5dlcc5l76xq2h38c4f87sai"; })
-  (fetchNuGet { pname = "System.Text.Json"; version = "6.0.0"; sha256 = "1si2my1g0q0qv1hiqnji4xh9wd05qavxnzj9dwgs23iqvgjky0gl"; })
-  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; })
-  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; })
-  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; sha256 = "0y6ncasgfcgnjrhynaf0lwpkpkmv4a07sswwkwbwb5h7riisj153"; })
-  (fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; sha256 = "0d99kcs7r9cp6gpyc7z230czkkyx4164x86dhy0mca73f2ykc2g2"; })
-  (fetchNuGet { pname = "UnicornEngine.Unicorn"; version = "2.0.2-rc1-fb78016"; sha256 = "1r43b5fd5q8xq8b5nk11jsz2gnm96dh7sxc0rrv2p605ivz7icin"; })
+  (fetchNuGet { pname = "Avalonia"; version = "11.0.10"; hash = "sha256-FuGl5admJ9AeRNrg/faGfqx8pwxGxdkmbnth9Jxhelc="; })
+  (fetchNuGet { pname = "Avalonia.Angle.Windows.Natives"; version = "2.1.0.2023020321"; hash = "sha256-TWop9cvak6cMv2vrA/GlpuYBxS8Fuj5UmupGIV7Q5Ks="; })
+  (fetchNuGet { pname = "Avalonia.BuildServices"; version = "0.0.29"; hash = "sha256-WPHRMNowRnYSCh88DWNBCltWsLPyOfzXGzBqLYE7tRY="; })
+  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.10"; hash = "sha256-G0ooIjNRW5YHKvQ6qPxe5gaE3HPwGfiCQUo34PSxXGg="; })
+  (fetchNuGet { pname = "Avalonia.Controls.ColorPicker"; version = "11.0.4"; hash = "sha256-Jp0j/58RF9Qooc7ATtq80FtX3TVLhi54JfgrbKdiDes="; })
+  (fetchNuGet { pname = "Avalonia.Controls.DataGrid"; version = "11.0.10"; hash = "sha256-0v4evkV0jbLffwfQG/QO/RQbHXlCBmFv8A2pBZjS5Y0="; })
+  (fetchNuGet { pname = "Avalonia.Controls.ItemsRepeater"; version = "11.0.4"; hash = "sha256-P8MfWKkDQrsk6x/vraNxxdYSMHytS8U3fMY2o8b49dw="; })
+  (fetchNuGet { pname = "Avalonia.Desktop"; version = "11.0.10"; hash = "sha256-fIty7TfiTC+OX9gCH4tA8Fs9dF4+G7Mhs9XnZadUR2g="; })
+  (fetchNuGet { pname = "Avalonia.Diagnostics"; version = "11.0.10"; hash = "sha256-itnN+LIZ2S+1CjD0ZS/woKtpgWbC/srMYzbYfX3a8LA="; })
+  (fetchNuGet { pname = "Avalonia.FreeDesktop"; version = "11.0.10"; hash = "sha256-uVNOOVTQIqQ2pDgSsz5saI7+fMvps40vJlMp1/XdyaE="; })
+  (fetchNuGet { pname = "Avalonia.Markup.Xaml.Loader"; version = "11.0.10"; hash = "sha256-Xv6L8U34QEiH6r3SQWLwuVFk9N9REmCUHa9hEbv2m24="; })
+  (fetchNuGet { pname = "Avalonia.Native"; version = "11.0.10"; hash = "sha256-P9j01FDXDpixo8wBVH3XK0Am6UBhG52HDrzt1ZqD8Ro="; })
+  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.10"; hash = "sha256-qtvlczTg2yUZWyyqXkkboB8lK9aYv+STbfDvSKb55Vw="; })
+  (fetchNuGet { pname = "Avalonia.Remote.Protocol"; version = "11.0.4"; hash = "sha256-13qXDjlWElmwQ0sb00+ny9gOgKuDOHKvALuQB6EZxCQ="; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.0"; hash = "sha256-A01nrs3Ij1eTo6tPmu7++T1K+Wo/H/9LvpeuOUGbQeU="; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.10"; hash = "sha256-1SU17j43Fiw4LbEEgqx10zE/iIVPfb8G1JVbfD2RhXA="; })
+  (fetchNuGet { pname = "Avalonia.Skia"; version = "11.0.4"; hash = "sha256-1XfPTcAaNj1926uYkvo7P62++ds5M2gHvkv1hRzBVfs="; })
+  (fetchNuGet { pname = "Avalonia.Svg"; version = "11.0.0.18"; hash = "sha256-U4bafxxxFE0tKmKVxguxH+doFrTHlM6DjFP8wz6Xm9U="; })
+  (fetchNuGet { pname = "Avalonia.Svg.Skia"; version = "11.0.0.18"; hash = "sha256-M4AQkL42efqOSck4Lf7C1naIRjEPMlnxi3OVC8zLJaQ="; })
+  (fetchNuGet { pname = "Avalonia.Themes.Simple"; version = "11.0.10"; hash = "sha256-54fc2g1yvM7pPRaF062lSjXaQDe2i61xQRM8m81vWm8="; })
+  (fetchNuGet { pname = "Avalonia.Win32"; version = "11.0.10"; hash = "sha256-+o228ElrBJBxBkZKGbo3x8/52wKpnAk/x6Yon5pyA74="; })
+  (fetchNuGet { pname = "Avalonia.X11"; version = "11.0.10"; hash = "sha256-/CRivMxpcbW1FnIuwZbF2ucdcbn4TCyjKzLXgdGtCfQ="; })
+  (fetchNuGet { pname = "CommandLineParser"; version = "2.9.1"; hash = "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo="; })
+  (fetchNuGet { pname = "Concentus"; version = "2.2.0"; hash = "sha256-7wbB76WoTd2CISIODGhmEiPIrydI0dqDMZGf4gdkogM="; })
+  (fetchNuGet { pname = "DiscordRichPresence"; version = "1.2.1.24"; hash = "sha256-oRNrlF1/yK0QvrW2+48RsmSg9h9/pDIfA56/bpoHXFU="; })
+  (fetchNuGet { pname = "DynamicData"; version = "8.4.1"; hash = "sha256-r+haH5VlmZFJTEJ3UedsYybw+oddn/CSvfm6x7PrrQ4="; })
+  (fetchNuGet { pname = "ExCSS"; version = "4.2.3"; hash = "sha256-M/H6P5p7qqdFz/fgAI2MMBWQ7neN/GIieYSSxxjsM9I="; })
+  (fetchNuGet { pname = "FluentAvaloniaUI"; version = "2.0.5"; hash = "sha256-EaJ6qR2yn+7p8lf62yx2vL3sGhnPOfbP5jBjR+pGY7o="; })
+  (fetchNuGet { pname = "FSharp.Core"; version = "7.0.200"; hash = "sha256-680VgvYbZbztPQosO17r5y8vxg/Y/4Vmr5K3iLIJKMo="; })
+  (fetchNuGet { pname = "GtkSharp.Dependencies"; version = "1.1.1"; hash = "sha256-/IpSj5JnUTREfQsdA3XW+eqNhqApTds65DQoNpjl3jk="; })
+  (fetchNuGet { pname = "HarfBuzzSharp"; version = "2.8.2.3"; hash = "sha256-4tbdgUabPjlkBm3aUFeocj4Fdslmms2olDFpzOLyqoQ="; })
+  (fetchNuGet { pname = "HarfBuzzSharp"; version = "7.3.0"; hash = "sha256-LlPQO/NYgIMWicvLOtWsQzCp512QpIImYDP9/n2rDOc="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "2.8.2.3"; hash = "sha256-3xwVfNfKTkuLdnT+e3bfG9tNTdEmar7ByzY+NTlUKLg="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Linux"; version = "7.3.0"; hash = "sha256-AEHjgqX0o+Fob0SeZ6EikGKoEe6rRxess5fVJ31UL0U="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "2.8.2.3"; hash = "sha256-ZohUEaovj/sRB4rjuJIOq6S9eim3m+qMlpHIebNDTRQ="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.macOS"; version = "7.3.0"; hash = "sha256-6oFcdKb17UX5wyAUeCCKXGvzkf0w3MNdZOVMvs54tqw="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "2.8.2.3"; hash = "sha256-ZsiBGpXfODHUHPgU/50k9QR/j6Klo7rsB0SUt8zYcBA="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.WebAssembly"; version = "7.3.0"; hash = "sha256-9VI0xCavuuIIStuQ7ipBfWu5HrAt+Kk/F2j57C1llTU="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "2.8.2.3"; hash = "sha256-5GSzM5IUoOwK+zJg0d74WlT3n1VZly8pKlyjiqVocCI="; })
+  (fetchNuGet { pname = "HarfBuzzSharp.NativeAssets.Win32"; version = "7.3.0"; hash = "sha256-WnB7l73hneU9Kpbm8S9zEYbZHjFre24vWz0vl8+v28M="; })
+  (fetchNuGet { pname = "LibHac"; version = "0.19.0"; hash = "sha256-FDEmeGHbX/aCFjFbFk8QwO2rTfFizt9UKb+KFDt23hk="; })
+  (fetchNuGet { pname = "MicroCom.CodeGenerator.MSBuild"; version = "0.11.0"; hash = "sha256-TsxziX9V8T3qRrEA3o9wY84ocDcUUUBzvARi5QZW23o="; })
+  (fetchNuGet { pname = "MicroCom.Runtime"; version = "0.11.0"; hash = "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.0.0"; hash = "sha256-KDbCfsBWSJ5ohEXUKp1s1LX9xA2NPvXE/xVzj68EdC0="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Analyzers"; version = "3.3.4"; hash = "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "3.8.0"; hash = "sha256-3G9vSc/gHH7FWgOySLTut1+eEaf3H66qcPOvNPLOx4o="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Common"; version = "4.9.2"; hash = "sha256-QU/nyiJWpdPQGHBdaOEVc+AghnGHcKBFBX0oyhRZ9CQ="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "3.8.0"; hash = "sha256-i/r3V/No/VzqmJlWxpGoirvlbJDbBPa/ONZtzYrxuc4="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp"; version = "4.9.2"; hash = "sha256-j06Q4A9E65075SBXdXVCMRgeLxA63Rv1vxarydmmVAA="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.CSharp.Scripting"; version = "3.8.0"; hash = "sha256-fA9Qu+vTyMZ9REzxJ4aMg/SHCDRk4q9k4ZGUdynoHnA="; })
+  (fetchNuGet { pname = "Microsoft.CodeAnalysis.Scripting.Common"; version = "3.8.0"; hash = "sha256-866jMHp8kbc1FYpKuUWnd7ViU6kGJTAxPcL/IjXrT0I="; })
+  (fetchNuGet { pname = "Microsoft.CodeCoverage"; version = "17.9.0"; hash = "sha256-OaGa4+jRPHs+T+p/oekm2Miluqfd2IX8Rt+BmUx8kr4="; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.3.0"; hash = "sha256-a3dAiPaVuky0wpcHmpTVtAQJNGZ2v91/oArA+dpJgj8="; })
+  (fetchNuGet { pname = "Microsoft.CSharp"; version = "4.7.0"; hash = "sha256-Enknv2RsFF68lEPdrf5M+BpV1kHoLTVRApKUwuk/pj0="; })
+  (fetchNuGet { pname = "Microsoft.DotNet.PlatformAbstractions"; version = "3.1.6"; hash = "sha256-RfM2qXiqdiamPkXr4IDkNc0IZSF9iTZv4uou/E7zNS0="; })
+  (fetchNuGet { pname = "Microsoft.Extensions.DependencyModel"; version = "6.0.0"; hash = "sha256-1BLzyZJ1Hn03JToJeIlW4JGhdh0HHrgD1FFvZAN0hCE="; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Abstractions"; version = "7.6.2"; hash = "sha256-Ipd8+JFpj44vqouRGO8YvxzVyjKOeFXczTeKguxdcgs="; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.JsonWebTokens"; version = "7.6.2"; hash = "sha256-lHzkMQIlbSwmetyGLbtuptHZP+HgG8n2aLtBDqDr1S4="; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Logging"; version = "7.6.2"; hash = "sha256-hNIbOZ6leANvh+i1I2ZXS35+yXUmhTlyomkA8PbF++w="; })
+  (fetchNuGet { pname = "Microsoft.IdentityModel.Tokens"; version = "7.6.2"; hash = "sha256-P0lN2+Die2ftnJh43A3X3CR207vvzfCCJjlow6yweVs="; })
+  (fetchNuGet { pname = "Microsoft.IO.RecyclableMemoryStream"; version = "3.0.1"; hash = "sha256-unFg/5EcU/XKJbob4GtQC43Ydgi5VjeBGs7hfhj4EYo="; })
+  (fetchNuGet { pname = "Microsoft.NET.Test.Sdk"; version = "17.9.0"; hash = "sha256-q/1AJ7eNlk02wvN76qvjl2xBx5iJ+h5ssiE/4akLmtI="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "1.1.0"; hash = "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.0.0"; hash = "sha256-IEvBk6wUXSdyCnkj6tHahOJv290tVVT8tyemYcR0Yro="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "2.1.2"; hash = "sha256-gYQQO7zsqG+OtN4ywYQyfsiggS2zmxw4+cPXlK+FB5Q="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Platforms"; version = "5.0.0"; hash = "sha256-LIcg1StDcQLPOABp4JRXIs837d7z0ia6+++3SF3jl1c="; })
+  (fetchNuGet { pname = "Microsoft.NETCore.Targets"; version = "1.1.0"; hash = "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ="; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.ObjectModel"; version = "17.9.0"; hash = "sha256-iiXUFzpvT8OWdzMj9FGJDqanwHx40s1TXVY9l3ii+s0="; })
+  (fetchNuGet { pname = "Microsoft.TestPlatform.TestHost"; version = "17.9.0"; hash = "sha256-1BZIY1z+C9TROgdTV/tq4zsPy7Q71GQksr/LoMKAzqU="; })
+  (fetchNuGet { pname = "Microsoft.Win32.Registry"; version = "4.5.0"; hash = "sha256-WMBXsIb0DgPFPaFkNVxY9b9vcMxPqtgFgijKYMJfV/0="; })
+  (fetchNuGet { pname = "MsgPack.Cli"; version = "1.0.1"; hash = "sha256-Gf0Ed9XHH4oFpJIkzhg/xhDVpenunSol65qa8IZeYrY="; })
+  (fetchNuGet { pname = "NetCoreServer"; version = "8.0.7"; hash = "sha256-RUYic8uAgJGdhUCrMJQULKlHB6xvw9H1lnNGU1axNZw="; })
+  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.0"; hash = "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0="; })
+  (fetchNuGet { pname = "NETStandard.Library"; version = "2.0.3"; hash = "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo="; })
+  (fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.1"; hash = "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo="; })
+  (fetchNuGet { pname = "NUnit"; version = "3.13.3"; hash = "sha256-Zn+sJIF7ieNqu/t2RwJx6WPFb1jl9UuNHidb/Px0v3E="; })
+  (fetchNuGet { pname = "NUnit3TestAdapter"; version = "4.1.0"; hash = "sha256-nDPiYdTFulqozEJrujr8/cqjG7m15Vkd/Frqem0Jr/w="; })
+  (fetchNuGet { pname = "OpenTK.Audio.OpenAL"; version = "4.8.2"; hash = "sha256-i5KRiTYTNMB4Y5Qd5xewaYrb9sBbnXMDu2QXbM3RCeU="; })
+  (fetchNuGet { pname = "OpenTK.Core"; version = "4.8.2"; hash = "sha256-59S4Vj13y8HtZT6RZTwO6ZZbk1GUNDcYx1rMdv5jr4I="; })
+  (fetchNuGet { pname = "OpenTK.Graphics"; version = "4.8.2"; hash = "sha256-DNpXqtM9Oj6wDGYSF2FD4A4ueWG892Wk6uGWffNspo0="; })
+  (fetchNuGet { pname = "OpenTK.Mathematics"; version = "4.8.2"; hash = "sha256-TPsts443n6iEajfH2EuYTKtubrWuTLiCrTB1F4FndIo="; })
+  (fetchNuGet { pname = "OpenTK.redist.glfw"; version = "3.3.8.39"; hash = "sha256-bg8bGfoDDqmZ/efLFVm8l5etQajIVvOcQ/Nv+yKD4Bc="; })
+  (fetchNuGet { pname = "OpenTK.Windowing.GraphicsLibraryFramework"; version = "4.8.2"; hash = "sha256-a1MGtU+27pBNns55g8mOsxXpZxfEr6M62zLkIkkJTIY="; })
+  (fetchNuGet { pname = "runtime.any.System.Collections"; version = "4.3.0"; hash = "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8="; })
+  (fetchNuGet { pname = "runtime.any.System.Globalization"; version = "4.3.0"; hash = "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="; })
+  (fetchNuGet { pname = "runtime.any.System.IO"; version = "4.3.0"; hash = "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection"; version = "4.3.0"; hash = "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Extensions"; version = "4.3.0"; hash = "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8="; })
+  (fetchNuGet { pname = "runtime.any.System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ="; })
+  (fetchNuGet { pname = "runtime.any.System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime"; version = "4.3.0"; hash = "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4="; })
+  (fetchNuGet { pname = "runtime.any.System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA="; })
+  (fetchNuGet { pname = "runtime.any.System.Text.Encoding"; version = "4.3.0"; hash = "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs="; })
+  (fetchNuGet { pname = "runtime.any.System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="; })
+  (fetchNuGet { pname = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps="; })
+  (fetchNuGet { pname = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I="; })
+  (fetchNuGet { pname = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA="; })
+  (fetchNuGet { pname = "runtime.native.System"; version = "4.3.0"; hash = "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="; })
+  (fetchNuGet { pname = "runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I="; })
+  (fetchNuGet { pname = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM="; })
+  (fetchNuGet { pname = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="; })
+  (fetchNuGet { pname = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0="; })
+  (fetchNuGet { pname = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4="; })
+  (fetchNuGet { pname = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g="; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc="; })
+  (fetchNuGet { pname = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; version = "4.3.0"; hash = "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw="; })
+  (fetchNuGet { pname = "runtime.unix.System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI="; })
+  (fetchNuGet { pname = "runtime.unix.System.Private.Uri"; version = "4.3.0"; hash = "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs="; })
+  (fetchNuGet { pname = "runtime.unix.System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4="; })
+  (fetchNuGet { pname = "Ryujinx.AtkSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-mK1zXkd6bdo7YqOm/rcI8MTniugvs5Kjw+esGmHYJxE="; })
+  (fetchNuGet { pname = "Ryujinx.Audio.OpenAL.Dependencies"; version = "1.21.0.1"; hash = "sha256-NHGzMcYduuYJjduIlf8M8zSQQuJcXAEaMNmKIqAgs3w="; })
+  (fetchNuGet { pname = "Ryujinx.CairoSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-+gV4Vlkd0jMZ6yGCz1/KoiE32/O26gHOZiHXmZ292rE="; })
+  (fetchNuGet { pname = "Ryujinx.GdkSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-r1UK7YzhMOJ3Z8eWuUyTf0nGQ0Bdlic8Qri170ilEbs="; })
+  (fetchNuGet { pname = "Ryujinx.GioSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-sbfdn16UoQtcU9gAgvP2kjBUbYi9nKy09bmhvn9IGtU="; })
+  (fetchNuGet { pname = "Ryujinx.GLibSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-zZv0B4BvKuRdse8oqSbb4P6FFq79w4M+MCk8EqqLVWk="; })
+  (fetchNuGet { pname = "Ryujinx.Graphics.Nvdec.Dependencies"; version = "5.0.3-build14"; hash = "sha256-+ff+tlWggY+qZTBJroOOphRpOjBDg5cQgwGtVOTiqRQ="; })
+  (fetchNuGet { pname = "Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK"; version = "1.2.0"; hash = "sha256-vdDw6YGoyQzv6ustyXP6v7YWUIKEXaZOyUKAaVbRauI="; })
+  (fetchNuGet { pname = "Ryujinx.GtkSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-2duc6+KLuctobfwqeuewxRLZnXn83QomF4rN0hEoMTc="; })
+  (fetchNuGet { pname = "Ryujinx.PangoSharp"; version = "3.24.24.59-ryujinx"; hash = "sha256-gGAK/aEfTUAxEihjlBOtHlhPZZFAwCasgUB/Umapva0="; })
+  (fetchNuGet { pname = "Ryujinx.SDL2-CS"; version = "2.30.0-build32"; hash = "sha256-KrrlDq0pXcunnOhJL12dt1CAdNbaupbDlnza5gXuVKE="; })
+  (fetchNuGet { pname = "securifybv.PropertyStore"; version = "0.1.0"; hash = "sha256-jTPT9E2LyElgJq4HMavkdwT8tA9uklnJv00mlIx66+g="; })
+  (fetchNuGet { pname = "securifybv.ShellLink"; version = "0.1.0"; hash = "sha256-Am+ZednCVJUDgB7TePyY3CTxKDQ6Lr8M8KiCVAJoouw="; })
+  (fetchNuGet { pname = "shaderc.net"; version = "0.1.0"; hash = "sha256-+K7ObC9ucilwWY+Tlf9KcrAVoTFS65V6Di7JDWDSZTg="; })
+  (fetchNuGet { pname = "SharpZipLib"; version = "1.4.2"; hash = "sha256-/giVqikworG2XKqfN9uLyjUSXr35zBuZ2FX2r8X/WUY="; })
+  (fetchNuGet { pname = "ShimSkiaSharp"; version = "1.0.0.18"; hash = "sha256-72NV+OuW8bCfI/EOXwgS6dleLZnomLJTYeQPPmfhuu8="; })
+  (fetchNuGet { pname = "Silk.NET.Core"; version = "2.16.0"; hash = "sha256-E/QTCNV+2s6X22HWZlRXVw3YpTxb+Oz8rXZuFpVgeNY="; })
+  (fetchNuGet { pname = "Silk.NET.Vulkan"; version = "2.16.0"; hash = "sha256-nouPkjBmdt0ZyWBYBVZ1LHd3gBTlU8C4wbeod3av5Wk="; })
+  (fetchNuGet { pname = "Silk.NET.Vulkan.Extensions.EXT"; version = "2.16.0"; hash = "sha256-brvWqisI0WwE7qRhLeRdWXDedztX4lOFon4h6oxDIRU="; })
+  (fetchNuGet { pname = "Silk.NET.Vulkan.Extensions.KHR"; version = "2.16.0"; hash = "sha256-QU7xVauLOBAF6TDo8mcuRsA2sZWyVLqFq1M+Oc/WnMg="; })
+  (fetchNuGet { pname = "SixLabors.Fonts"; version = "1.0.0"; hash = "sha256-kyAQcZZOdD50Lo7l7z8qnFMerJjlAV66HNBq7BI6TNM="; })
+  (fetchNuGet { pname = "SixLabors.ImageSharp"; version = "2.1.8"; hash = "sha256-5cBdYmF8I1TVi6VSXhMCYja7XTnosLaaYxYzldxHMxE="; })
+  (fetchNuGet { pname = "SixLabors.ImageSharp.Drawing"; version = "1.0.0"; hash = "sha256-IH+UVkem5kk6zWAWfWsrtyINZNMh+Em1cF1CCfjvBj4="; })
+  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.3"; hash = "sha256-WyMAjnQt8ZsuWpGLI89l/f4bHvv+cg7FdTAL7CtJBvs="; })
+  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.6"; hash = "sha256-y0wzgwdQXtgl5boCz/EgLWbK3SwC0cFVRUbBxOUPQXc="; })
+  (fetchNuGet { pname = "SkiaSharp"; version = "2.88.7"; hash = "sha256-Ip3afwTr4QOqtwOUKqK6g/9Ug4dMSebTci5K29Jc3Dg="; })
+  (fetchNuGet { pname = "SkiaSharp.HarfBuzz"; version = "2.88.6"; hash = "sha256-gpHiTuHfiXgbkBkzipXb8EXIatefsod75nyrFdPcwcA="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.3"; hash = "sha256-eExWAAURgnwwm2fRwsK/rf+TeOAPs2n02XZzC0zeUjU="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Linux"; version = "2.88.7"; hash = "sha256-QdQRN1IBjqohmI8U+6WJRPgOsh8a9soN2UvVObs1H1w="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.3"; hash = "sha256-8G4swiLMr6XS3kjfO/YC1PyoVdfSq7nxZthZZ+KTKqQ="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.6"; hash = "sha256-7hOMjlYTOiNPLNwfLFUjTcdgiGEtmYUI1EubiRiC6bo="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.macOS"; version = "2.88.7"; hash = "sha256-WgPldXSqPMm0TrdUWAyjge5rcRhd9G3/Ix/v/2NQvBc="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.3"; hash = "sha256-/SkV2pIZnt0ziSKB7gt7U2Rltk2Id+zOzbmqgfWUtvA="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.WebAssembly"; version = "2.88.7"; hash = "sha256-oIjFF+Rv+g8AKyNaaVAgnHX3eeP/l8K2sgHs9bRyUMw="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.3"; hash = "sha256-2PhMTwRHitT13KCKiZltKIFieAvNY4jBmVZ2ndVynA8="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.6"; hash = "sha256-ljD4QmAO2/vwA6I8GIUNkONpOzmGsOVJJy9vPDnjVfA="; })
+  (fetchNuGet { pname = "SkiaSharp.NativeAssets.Win32"; version = "2.88.7"; hash = "sha256-+7RxCAr+ne9MZWdXKKpV4ZbHW0k6hLD20ZFWWOCiNYU="; })
+  (fetchNuGet { pname = "SPB"; version = "0.0.4-build32"; hash = "sha256-GUzbV5rLWtXTpiddYrKnWWLujG38vBDCO4xRStwAaDo="; })
+  (fetchNuGet { pname = "Svg.Custom"; version = "1.0.0.18"; hash = "sha256-RguRPwBM/KCogaiOgjELlvuqN1Tr+b3HA4Odz1rXBgU="; })
+  (fetchNuGet { pname = "Svg.Model"; version = "1.0.0.18"; hash = "sha256-CXZC45txfcd8MuRmDENw2ujlGk74YaUPNs7dXq+Zcg8="; })
+  (fetchNuGet { pname = "Svg.Skia"; version = "1.0.0.18"; hash = "sha256-o5VnCaAGX4LuwNyl7QM0KOg2gNfkD5uNMNthxB7w0m4="; })
+  (fetchNuGet { pname = "System.Buffers"; version = "4.5.1"; hash = "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI="; })
+  (fetchNuGet { pname = "System.CodeDom"; version = "4.4.0"; hash = "sha256-L1xyspJ8pDJNVPYKl+FMGf4Zwm0tlqtAyQCNW6pT6/0="; })
+  (fetchNuGet { pname = "System.CodeDom"; version = "8.0.0"; hash = "sha256-uwVhi3xcvX7eiOGQi7dRETk3Qx1EfHsUfchZsEto338="; })
+  (fetchNuGet { pname = "System.Collections"; version = "4.3.0"; hash = "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "5.0.0"; hash = "sha256-GdwSIjLMM0uVfE56VUSLVNgpW0B//oCeSFj8/hSlbM8="; })
+  (fetchNuGet { pname = "System.Collections.Immutable"; version = "8.0.0"; hash = "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w="; })
+  (fetchNuGet { pname = "System.ComponentModel.Annotations"; version = "4.5.0"; hash = "sha256-15yE2NoT9vmL9oGCaxHClQR1jLW1j1ef5hHMg55xRso="; })
+  (fetchNuGet { pname = "System.Diagnostics.Debug"; version = "4.3.0"; hash = "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="; })
+  (fetchNuGet { pname = "System.Dynamic.Runtime"; version = "4.3.0"; hash = "sha256-k75gjOYimIQtLBD5NDzwwi3ZMUBPRW3jmc3evDMMJbU="; })
+  (fetchNuGet { pname = "System.Globalization"; version = "4.3.0"; hash = "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="; })
+  (fetchNuGet { pname = "System.IO"; version = "4.3.0"; hash = "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="; })
+  (fetchNuGet { pname = "System.IO.Hashing"; version = "8.0.0"; hash = "sha256-szOGt0TNBo6dEdC3gf6H+e9YW3Nw0woa6UnCGGGK5cE="; })
+  (fetchNuGet { pname = "System.IO.Pipelines"; version = "6.0.0"; hash = "sha256-xfjF4UqTMJpf8KsBWUyJlJkzPTOO/H5MW023yTYNQSA="; })
+  (fetchNuGet { pname = "System.Linq"; version = "4.3.0"; hash = "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A="; })
+  (fetchNuGet { pname = "System.Linq.Expressions"; version = "4.3.0"; hash = "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8="; })
+  (fetchNuGet { pname = "System.Management"; version = "8.0.0"; hash = "sha256-HwpfDb++q7/vxR6q57mGFgl5U0vxy+oRJ6orFKORfP0="; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.4"; hash = "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E="; })
+  (fetchNuGet { pname = "System.Memory"; version = "4.5.5"; hash = "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI="; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.3.0"; hash = "sha256-eog2Sp8CAntRlyp2Aar1tpAwDrojGFZ5LIdqsmuIchY="; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.4.0"; hash = "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U="; })
+  (fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; hash = "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8="; })
+  (fetchNuGet { pname = "System.ObjectModel"; version = "4.3.0"; hash = "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q="; })
+  (fetchNuGet { pname = "System.Private.Uri"; version = "4.3.0"; hash = "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM="; })
+  (fetchNuGet { pname = "System.Reactive"; version = "6.0.0"; hash = "sha256-hXB18OsiUHSCmRF3unAfdUEcbXVbG6/nZxcyz13oe9Y="; })
+  (fetchNuGet { pname = "System.Reflection"; version = "4.3.0"; hash = "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY="; })
+  (fetchNuGet { pname = "System.Reflection.Emit"; version = "4.3.0"; hash = "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU="; })
+  (fetchNuGet { pname = "System.Reflection.Emit.ILGeneration"; version = "4.3.0"; hash = "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA="; })
+  (fetchNuGet { pname = "System.Reflection.Emit.Lightweight"; version = "4.3.0"; hash = "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I="; })
+  (fetchNuGet { pname = "System.Reflection.Extensions"; version = "4.3.0"; hash = "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk="; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "1.6.0"; hash = "sha256-JJfgaPav7UfEh4yRAQdGhLZF1brr0tUWPl6qmfNWq/E="; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "5.0.0"; hash = "sha256-Wo+MiqhcP9dQ6NuFGrQTw6hpbJORFwp+TBNTq2yhGp8="; })
+  (fetchNuGet { pname = "System.Reflection.Metadata"; version = "8.0.0"; hash = "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE="; })
+  (fetchNuGet { pname = "System.Reflection.Primitives"; version = "4.3.0"; hash = "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM="; })
+  (fetchNuGet { pname = "System.Reflection.TypeExtensions"; version = "4.3.0"; hash = "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng="; })
+  (fetchNuGet { pname = "System.Resources.ResourceManager"; version = "4.3.0"; hash = "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo="; })
+  (fetchNuGet { pname = "System.Runtime"; version = "4.3.0"; hash = "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "4.7.1"; hash = "sha256-UvyoDV8O0oY3HPG1GbA56YVdvwTGEfjYR5gW1O7IK4U="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "5.0.0"; hash = "sha256-neARSpLPUzPxEKhJRwoBzhPxK+cKIitLx7WBYncsYgo="; })
+  (fetchNuGet { pname = "System.Runtime.CompilerServices.Unsafe"; version = "6.0.0"; hash = "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="; })
+  (fetchNuGet { pname = "System.Runtime.Extensions"; version = "4.3.0"; hash = "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o="; })
+  (fetchNuGet { pname = "System.Runtime.Handles"; version = "4.3.0"; hash = "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms="; })
+  (fetchNuGet { pname = "System.Runtime.InteropServices"; version = "4.3.0"; hash = "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="; })
+  (fetchNuGet { pname = "System.Security.AccessControl"; version = "4.5.0"; hash = "sha256-AFsKPb/nTk2/mqH/PYpaoI8PLsiKKimaXf+7Mb5VfPM="; })
+  (fetchNuGet { pname = "System.Security.Principal.Windows"; version = "4.5.0"; hash = "sha256-BkUYNguz0e4NJp1kkW7aJBn3dyH9STwB5N8XqnlCsmY="; })
+  (fetchNuGet { pname = "System.Text.Encoding"; version = "4.3.0"; hash = "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg="; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "4.5.1"; hash = "sha256-PIhkv59IXjyiuefdhKxS9hQfEwO9YWRuNudpo53HQfw="; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "5.0.0"; hash = "sha256-YJ5jJqkVPp+6fEzSXOmw1sNSdygB5Rx7TJ0TrNS/wq4="; })
+  (fetchNuGet { pname = "System.Text.Encoding.CodePages"; version = "8.0.0"; hash = "sha256-fjCLQc1PRW0Ix5IZldg0XKv+J1DqPSfu9pjMyNBp7dE="; })
+  (fetchNuGet { pname = "System.Text.Encodings.Web"; version = "6.0.0"; hash = "sha256-UemDHGFoQIG7ObQwRluhVf6AgtQikfHEoPLC6gbFyRo="; })
+  (fetchNuGet { pname = "System.Text.Json"; version = "6.0.0"; hash = "sha256-9AE/5ds4DqEfb0l+27fCBTSeYCdRWhxh2Bhg8IKvIuo="; })
+  (fetchNuGet { pname = "System.Threading"; version = "4.3.0"; hash = "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc="; })
+  (fetchNuGet { pname = "System.Threading.Tasks"; version = "4.3.0"; hash = "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="; })
+  (fetchNuGet { pname = "System.Threading.Tasks.Extensions"; version = "4.5.4"; hash = "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng="; })
+  (fetchNuGet { pname = "Tmds.DBus.Protocol"; version = "0.15.0"; hash = "sha256-4gk2vXDjKFaBh82gTkwg3c/5GRjiH+bvM5elfDSbKTU="; })
+  (fetchNuGet { pname = "UnicornEngine.Unicorn"; version = "2.0.2-rc1-fb78016"; hash = "sha256-NrJ4/o4FmCt2zoB1fWAzqdonvpYhTFsWwh3h0lxZg+Q="; })
 ]
diff --git a/pkgs/by-name/ry/ryujinx/package.nix b/pkgs/by-name/ry/ryujinx/package.nix
index 15606e8a1195..7e5078b9edec 100644
--- a/pkgs/by-name/ry/ryujinx/package.nix
+++ b/pkgs/by-name/ry/ryujinx/package.nix
@@ -26,13 +26,13 @@
 
 buildDotnetModule rec {
   pname = "ryujinx";
-  version = "1.1.1340"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
+  version = "1.1.1358"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
 
   src = fetchFromGitHub {
     owner = "Ryujinx";
     repo = "Ryujinx";
-    rev = "1a0a351a152f837094699e78f51f8970e131bd1a";
-    sha256 = "0vkzbrp1b3ig1gsax6jyr02m1vqxx4xps741y5j77a2wxv8l6zsm";
+    rev = "add681144bd1ab8eb5094f38ec71292a33958aff";
+    sha256 = "02jrh5134jjh5zk2d160a7fzhc2i4v4yqhyixs1bh88352ynf23z";
   };
 
   dotnet-sdk = dotnetCorePackages.sdk_8_0;
diff --git a/pkgs/by-name/sa/salmon/package.nix b/pkgs/by-name/sa/salmon/package.nix
index cf74c0677fe7..09a2fec4c257 100644
--- a/pkgs/by-name/sa/salmon/package.nix
+++ b/pkgs/by-name/sa/salmon/package.nix
@@ -1,7 +1,5 @@
 { lib
 , stdenv
-, autoreconfHook
-, bash
 , boost
 , bzip2
 , cereal_1_3_2
diff --git a/pkgs/by-name/sa/sanjuuni/package.nix b/pkgs/by-name/sa/sanjuuni/package.nix
index e43efa771b57..d448f5e07132 100644
--- a/pkgs/by-name/sa/sanjuuni/package.nix
+++ b/pkgs/by-name/sa/sanjuuni/package.nix
@@ -2,7 +2,6 @@
   lib,
   stdenv,
   fetchFromGitHub,
-  fetchpatch,
   pkg-config,
   ffmpeg,
   poco,
diff --git a/pkgs/by-name/sa/sarasa-gothic/package.nix b/pkgs/by-name/sa/sarasa-gothic/package.nix
index 17217e5f8e56..6805ebac7fdb 100644
--- a/pkgs/by-name/sa/sarasa-gothic/package.nix
+++ b/pkgs/by-name/sa/sarasa-gothic/package.nix
@@ -7,13 +7,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "sarasa-gothic";
-  version = "1.0.15";
+  version = "1.0.16";
 
   src = fetchurl {
     # Use the 'ttc' files here for a smaller closure size.
     # (Using 'ttf' files gives a closure size about 15x larger, as of November 2021.)
     url = "https://github.com/be5invis/Sarasa-Gothic/releases/download/v${finalAttrs.version}/Sarasa-TTC-${finalAttrs.version}.zip";
-    hash = "sha256-jN50v0N7wSL/F6qOSjp+nRmooR/mNiebsbe4Iy5YmeM=";
+    hash = "sha256-DivT1OEbjZQAV6anWzrYpgzQoYFFPFZAM33TdITZHAg=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/by-name/sc/schemamap/package.nix b/pkgs/by-name/sc/schemamap/package.nix
new file mode 100644
index 000000000000..95908de6e1c6
--- /dev/null
+++ b/pkgs/by-name/sc/schemamap/package.nix
@@ -0,0 +1,51 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  rustPlatform,
+  pkg-config,
+  openssl,
+  darwin,
+}:
+
+let
+  version = "0.3.0";
+in
+rustPlatform.buildRustPackage rec {
+  pname = "schemamap";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "schemamap";
+    repo = "schemamap";
+    rev = "v${version}";
+    hash = "sha256-49i2zyOy/yngSgvKd66RsOhF6OlYfgDnEtPEbmhEcIo=";
+  };
+
+  sourceRoot = "${src.name}/rust";
+
+  cargoHash = "sha256-ILgvS96D6yF4Teaa5on6jHZlVoxRLSk8A523PzH1b5Y=";
+
+  buildInputs =
+    [ openssl ]
+    ++ lib.optionals stdenv.isDarwin (
+      with darwin.apple_sdk;
+      [
+        frameworks.Security
+        frameworks.CoreFoundation
+        frameworks.CoreServices
+        frameworks.SystemConfiguration
+      ]
+    );
+
+  nativeBuildInputs = [ pkg-config ];
+
+  meta = {
+    changelog = "https://github.com/schemamap/schemamap/releases/tag/v${version}";
+    description = "Instant batch data import for Postgres";
+    homepage = "https://schemamap.io";
+    license = lib.licenses.mit;
+    mainProgram = "schemamap";
+    maintainers = with lib.maintainers; [ thenonameguy ];
+  };
+}
diff --git a/pkgs/by-name/sc/scons/env.patch b/pkgs/by-name/sc/scons/env.patch
new file mode 100644
index 000000000000..95615016aed9
--- /dev/null
+++ b/pkgs/by-name/sc/scons/env.patch
@@ -0,0 +1,9 @@
+diff --git a/SCons/Platform/posix.py b/SCons/Platform/posix.py
+index 4c9f8f9ba..d68da1b08 100644
+--- a/SCons/Platform/posix.py
++++ b/SCons/Platform/posix.py
+@@ -30,0 +31 @@ selection method.
++import os
+@@ -87 +88 @@ def generate(env):
+-    env['ENV']['PATH']    = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin'
++    env['ENV']['PATH']    = os.environ["PATH"]
diff --git a/pkgs/by-name/sc/scons/no-man-pages.patch b/pkgs/by-name/sc/scons/no-man-pages.patch
new file mode 100644
index 000000000000..4dd459b8261e
--- /dev/null
+++ b/pkgs/by-name/sc/scons/no-man-pages.patch
@@ -0,0 +1,14 @@
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -67,11 +67,6 @@ console_scripts =
+ SCons.Tool.docbook = *.*
+ 
+ 
+-[options.data_files]
+-. = scons.1
+-    scons-time.1
+-    sconsign.1
+-
+ [sdist]
+     dist_dir=build/dist
+ 
diff --git a/pkgs/by-name/sc/scons/package.nix b/pkgs/by-name/sc/scons/package.nix
new file mode 100644
index 000000000000..8ebc736097b0
--- /dev/null
+++ b/pkgs/by-name/sc/scons/package.nix
@@ -0,0 +1,45 @@
+{ lib, fetchFromGitHub, python3Packages }:
+python3Packages.buildPythonApplication rec {
+  pname = "scons";
+  version = "4.7.0";
+
+  src = fetchFromGitHub {
+    owner = "Scons";
+    repo = "scons";
+    rev = version;
+    hash = "sha256-7VzGuz9CAUF6MRCEpj5z1FkZD19/Ic+YBukYQocvkr0=";
+  };
+
+  pyproject = true;
+
+  patches = [
+    ./env.patch
+    ./no-man-pages.patch
+  ];
+
+  build-system = [
+    python3Packages.setuptools
+  ];
+
+  setupHook = ./setup-hook.sh;
+
+  passthru = {
+    # expose the used python version so tools using this (and extensing scos
+    # with other python modules) can use the exact same python version.
+    inherit (python3Packages) python;
+  };
+
+  meta = {
+    description = "Improved, cross-platform substitute for Make";
+    longDescription = ''
+      SCons is an Open Source software construction tool. Think of SCons as an
+      improved, cross-platform substitute for the classic Make utility with
+      integrated functionality similar to autoconf/automake and compiler caches
+      such as ccache. In short, SCons is an easier, more reliable and faster way
+      to build software.
+    '';
+    homepage = "https://scons.org/";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+  };
+}
diff --git a/pkgs/by-name/sc/scons/setup-hook.sh b/pkgs/by-name/sc/scons/setup-hook.sh
new file mode 100644
index 000000000000..bfd8f3cc07b9
--- /dev/null
+++ b/pkgs/by-name/sc/scons/setup-hook.sh
@@ -0,0 +1,87 @@
+# shellcheck shell=bash disable=SC2206
+
+sconsBuildPhase() {
+    runHook preBuild
+
+    if [ -n "$prefix" ]; then
+        mkdir -p "$prefix"
+    fi
+
+    if [ -z "${dontAddPrefix:-}" ] && [ -n "$prefix" ]; then
+        buildFlags="${prefixKey:-prefix=}$prefix $buildFlags"
+    fi
+
+    local flagsArray=(
+      ${enableParallelBuilding:+-j${NIX_BUILD_CORES}}
+      $sconsFlags ${sconsFlagsArray[@]}
+      $buildFlags ${buildFlagsArray[@]}
+    )
+
+    echoCmd 'scons build flags' "${flagsArray[@]}"
+    scons "${flagsArray[@]}"
+
+    runHook postBuild
+}
+
+sconsInstallPhase() {
+    runHook preInstall
+
+    if [ -n "$prefix" ]; then
+        mkdir -p "$prefix"
+    fi
+
+    if [ -z "${dontAddPrefix:-}" ] && [ -n "$prefix" ]; then
+        installFlags="${prefixKey:-prefix=}$prefix $installFlags"
+    fi
+
+    local flagsArray=(
+        ${enableParallelInstalling:+-j${NIX_BUILD_CORES}}
+        $sconsFlags ${sconsFlagsArray[@]}
+        $installFlags ${installFlagsArray[@]}
+        ${installTargets:-install}
+    )
+
+    echoCmd 'scons install flags' "${flagsArray[@]}"
+    scons "${flagsArray[@]}"
+
+    runHook postInstall
+}
+
+sconsCheckPhase() {
+    runHook preCheck
+
+    if [ -z "${checkTarget:-}" ]; then
+        if scons -n check >/dev/null 2>&1; then
+            checkTarget="check"
+        elif scons -n test >/dev/null 2>&1; then
+            checkTarget="test"
+        fi
+    fi
+
+    if [ -z "${checkTarget:-}" ]; then
+        echo "no check/test target found, doing nothing"
+    else
+        local flagsArray=(
+            ${enableParallelChecking:+-j${NIX_BUILD_CORES}}
+            $sconsFlags ${sconsFlagsArray[@]}
+            ${checkFlagsArray[@]}
+        )
+
+        echoCmd 'scons check flags' "${flagsArray[@]}"
+        scons "${flagsArray[@]}"
+    fi
+
+    runHook postCheck
+}
+
+if [ -z "${dontUseSconsBuild-}" ] && [ -z "${buildPhase-}" ]; then
+    buildPhase=sconsBuildPhase
+fi
+
+if [ -z "${dontUseSconsCheck-}" ] && [ -z "${checkPhase-}" ]; then
+    checkPhase=sconsCheckPhase
+fi
+
+if [ -z "${dontUseSconsInstall-}" ] && [ -z "${installPhase-}" ]; then
+    installPhase=sconsInstallPhase
+fi
diff --git a/pkgs/by-name/sc/screego/package.nix b/pkgs/by-name/sc/screego/package.nix
new file mode 100644
index 000000000000..90ac0304c4fc
--- /dev/null
+++ b/pkgs/by-name/sc/screego/package.nix
@@ -0,0 +1,78 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+  fetchYarnDeps,
+  yarnConfigHook,
+  yarnBuildHook,
+  nodejs,
+  stdenv,
+}:
+let
+
+  version = "1.10.3";
+
+  src = fetchFromGitHub {
+    owner = "screego";
+    repo = "server";
+    rev = "v${version}";
+    hash = "sha256-X8KZAUh1cO8qNYH6nc9zZ+mnfItgef8N948ErJLlZII=";
+  };
+
+  ui = stdenv.mkDerivation {
+    pname = "screego-ui";
+    inherit version;
+
+    src = src + "/ui";
+
+    offlineCache = fetchYarnDeps {
+      yarnLock = "${src}/ui/yarn.lock";
+      hash = "sha256-ye8UDkal10k/5uCd0VrZsG2FJGB727q+luExFTUmB/M=";
+    };
+
+    nativeBuildInputs = [
+      yarnConfigHook
+      yarnBuildHook
+      nodejs
+    ];
+
+    installPhase = ''
+      cp -r build $out
+    '';
+
+  };
+
+in
+
+buildGoModule rec {
+  inherit src version;
+
+  pname = "screego-server";
+
+  vendorHash = "sha256-ry8LO+KmNU9MKL8/buk9qriDe/zq+2uIsws6wVZmoo4=";
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X=main.version=${version}"
+    "-X=main.commitHash=${src.rev}"
+    "-X=main.mode=prod"
+  ];
+
+  postPatch = ''
+    mkdir -p ./ui/build
+    cp -r "${ui}" ./ui/build
+  '';
+
+  postInstall = ''
+    mv $out/bin/server $out/bin/screego
+  '';
+
+  meta = with lib; {
+    description = "Screen sharing for developers";
+    homepage = "https://screego.net";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ pinpox ];
+    mainProgram = "screego";
+  };
+}
diff --git a/pkgs/by-name/sd/SDL2_image_2_0/package.nix b/pkgs/by-name/sd/SDL2_image_2_0/package.nix
index c52a60637766..98de34a2530a 100644
--- a/pkgs/by-name/sd/SDL2_image_2_0/package.nix
+++ b/pkgs/by-name/sd/SDL2_image_2_0/package.nix
@@ -1,9 +1,5 @@
 # Dependency of pygame, toppler
-{
-  lib,
-  SDL2_image,
-  fetchurl,
-}:
+{ SDL2_image, fetchurl }:
 
 SDL2_image.overrideAttrs (oldAttrs: {
   version = "2.0.5";
diff --git a/pkgs/by-name/sd/SDL2_image_2_6/package.nix b/pkgs/by-name/sd/SDL2_image_2_6/package.nix
index ef57e146098e..edd912311b82 100644
--- a/pkgs/by-name/sd/SDL2_image_2_6/package.nix
+++ b/pkgs/by-name/sd/SDL2_image_2_6/package.nix
@@ -1,10 +1,6 @@
 # Dependency for hedgewars:
 # https://github.com/NixOS/nixpkgs/pull/274185#issuecomment-1856764786
-{
-  lib,
-  SDL2_image,
-  fetchurl,
-}:
+{ SDL2_image, fetchurl }:
 
 SDL2_image.overrideAttrs (oldAttrs: {
   version = "2.6.3";
diff --git a/pkgs/by-name/se/seabird/package.nix b/pkgs/by-name/se/seabird/package.nix
index f0d6021a40df..b364c52b4823 100644
--- a/pkgs/by-name/se/seabird/package.nix
+++ b/pkgs/by-name/se/seabird/package.nix
@@ -14,16 +14,16 @@
 
 buildGoModule rec {
   pname = "seabird";
-  version = "0.4.2";
+  version = "0.5.1";
 
   src = fetchFromGitHub {
     owner = "getseabird";
     repo = "seabird";
     rev = "v${version}";
-    hash = "sha256-GfoP3TeSzA4Hi3fCUR3Y3yWUAj3ogxTRsD4hXuERPio=";
+    hash = "sha256-y+QIBqU3kAxedhWLnu07m9HQOCgHfOvVscIxxWtUcZo=";
   };
 
-  vendorHash = "sha256-uUMQ2AddIfPvD7B3KOfN7fWL8oIEK6G5L+NPYo+em5k=";
+  vendorHash = "sha256-4o9z4XjtW7kNHAb8L0kuq9rgQzTwvAAXcl6+RIGjmqI=";
 
   nativeBuildInputs = [
     copyDesktopItems
diff --git a/pkgs/by-name/se/sendme/package.nix b/pkgs/by-name/se/sendme/package.nix
index c807fd5bbcb6..0054e560becd 100644
--- a/pkgs/by-name/se/sendme/package.nix
+++ b/pkgs/by-name/se/sendme/package.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sendme";
-  version = "0.11.0";
+  version = "0.12.0";
 
   src = fetchFromGitHub {
     owner = "n0-computer";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-OBsVy1pCvybTp5IvqjBC20ofPxx/4thJELKhkb1FRHk=";
+    hash = "sha256-3fD09NAHpuE5Me5bn87afUrnrsaRVZscPUavioIT4q0=";
   };
 
-  cargoHash = "sha256-sS0BCA4K+U0AfScY3v8AnKJxb5w8yFAFjbBr+nSFRN8=";
+  cargoHash = "sha256-TGEoD/PEFnuheTKVdTJVB5XEobrQFLk8JoEBFELj/pY=";
 
   buildInputs = lib.optionals stdenv.isDarwin (
     with darwin.apple_sdk.frameworks; [
diff --git a/pkgs/by-name/sk/skimpdf/package.nix b/pkgs/by-name/sk/skimpdf/package.nix
index 0be793c9cb15..da7f2da2d6fe 100644
--- a/pkgs/by-name/sk/skimpdf/package.nix
+++ b/pkgs/by-name/sk/skimpdf/package.nix
@@ -1,19 +1,20 @@
-{ stdenv
-, lib
-, undmg
-, fetchurl
+{
+  stdenv,
+  lib,
+  undmg,
+  fetchurl,
 }:
 stdenv.mkDerivation rec {
   pname = "Skim";
-  version = "1.7.2";
+  version = "1.7.3";
 
   src = fetchurl {
     name = "Skim-${version}.dmg";
     url = "mirror://sourceforge/project/skim-app/Skim/Skim-${version}/Skim-${version}.dmg";
-    sha256 = "t/A3Bd7mQ8hFGdbpQou4ru9i5jX4HaYOXgMvfPAUEYc=";
+    hash = "sha256-AMHEzlipL0Bv68Gnyq040t4DQhPkQcmDixZ6Oo0Vobc=";
   };
 
-  nativeBuildInputs = [ undmg ];
+  nativeBuildInputs = [undmg];
 
   sourceRoot = ".";
 
@@ -28,9 +29,9 @@ stdenv.mkDerivation rec {
     description = "Skim is a PDF reader and note-taker for OS X";
     homepage = "https://skim-app.sourceforge.io/";
     license = licenses.bsd0;
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    sourceProvenance = with sourceTypes; [binaryNativeCode];
     mainProgram = "Skim.app";
-    maintainers = with maintainers; [ YvesStraten ];
+    maintainers = with maintainers; [YvesStraten];
     platforms = platforms.darwin;
   };
 }
diff --git a/pkgs/by-name/sk/skypeexport/package.nix b/pkgs/by-name/sk/skypeexport/package.nix
index 2e6d72866073..dffa1e4d7cc1 100644
--- a/pkgs/by-name/sk/skypeexport/package.nix
+++ b/pkgs/by-name/sk/skypeexport/package.nix
@@ -31,6 +31,6 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/Temptin/SkypeExport";
     license = licenses.gpl2;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ yana ];
+    maintainers = with maintainers; [ ];
   };
 })
diff --git a/pkgs/by-name/sk/skypilot/package.nix b/pkgs/by-name/sk/skypilot/package.nix
index 0a951a8cd96d..fe832ae33417 100644
--- a/pkgs/by-name/sk/skypilot/package.nix
+++ b/pkgs/by-name/sk/skypilot/package.nix
@@ -1,7 +1,5 @@
 {
   lib,
-  pkgs,
-  stdenv,
   fetchFromGitHub,
   python3Packages,
 }:
diff --git a/pkgs/by-name/sm/smassh/package.nix b/pkgs/by-name/sm/smassh/package.nix
index d723be41d2b9..15ca2dd6ac35 100644
--- a/pkgs/by-name/sm/smassh/package.nix
+++ b/pkgs/by-name/sm/smassh/package.nix
@@ -1,29 +1,29 @@
-{ lib
-, fetchFromGitHub
-, smassh
-, python3
-, testers
+{
+  lib,
+  fetchFromGitHub,
+  smassh,
+  python311,
+  testers,
 }:
 
+let
+  python3 = python311;
+in
 python3.pkgs.buildPythonApplication rec {
   pname = "smassh";
-  version = "3.1.3";
+  version = "3.1.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kraanzu";
     repo = "smassh";
     rev = "v${version}";
-    hash = "sha256-QE7TFf/5hdd2W2EsVbn3gV/FundhJNxHqv0JWV5dYDc=";
+    hash = "sha256-MeLub6zeviY7yyPP2FI9b37nUwHZbxW6onuFXSkmvqk";
   };
 
-  nativeBuildInputs = with python3.pkgs; [
-    poetry-core
-  ];
+  nativeBuildInputs = with python3.pkgs; [ poetry-core ];
 
-  pythonRelaxDeps = [
-    "textual"
-  ];
+  pythonRelaxDeps = [ "textual" ];
 
   propagatedBuildInputs = with python3.pkgs; [
     textual
diff --git a/pkgs/by-name/sm/smile/package.nix b/pkgs/by-name/sm/smile/package.nix
index b6e177690659..a7d98caf2013 100644
--- a/pkgs/by-name/sm/smile/package.nix
+++ b/pkgs/by-name/sm/smile/package.nix
@@ -4,11 +4,12 @@
 , desktop-file-utils
 , glib
 , gobject-introspection
-, gtk4
 , meson
 , ninja
 , wrapGAppsHook4
 , libadwaita
+, xdotool
+, wl-clipboard
 }:
 
 python3.pkgs.buildPythonApplication rec {
@@ -45,7 +46,13 @@ python3.pkgs.buildPythonApplication rec {
   dontWrapGApps = true;
 
   preFixup = ''
-    makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
+    makeWrapperArgs+=(
+      "''${gappsWrapperArgs[@]}"
+      --prefix PATH : ${lib.makeBinPath [
+        xdotool
+        wl-clipboard
+      ]}
+    )
   '';
 
   meta = {
diff --git a/pkgs/by-name/sn/snapcraft/package.nix b/pkgs/by-name/sn/snapcraft/package.nix
index a79e272ecd64..1af08c97fd1a 100644
--- a/pkgs/by-name/sn/snapcraft/package.nix
+++ b/pkgs/by-name/sn/snapcraft/package.nix
@@ -5,26 +5,44 @@
   lib,
   makeWrapper,
   nix-update-script,
-  python3Packages,
+  python3,
   squashfsTools,
   stdenv,
 }:
-python3Packages.buildPythonApplication rec {
+
+let
+  python = python3.override {
+    packageOverrides = self: super: {
+      pydantic-yaml = super.pydantic-yaml.overridePythonAttrs (old: rec {
+        version = "0.11.2";
+        src = fetchFromGitHub {
+          owner = "NowanIlfideme";
+          repo = "pydantic-yaml";
+          rev = "refs/tags/v${version}";
+          hash = "sha256-AeUyVav0/k4Fz69Qizn4hcJKoi/CDR9eUan/nJhWsDY=";
+        };
+        dependencies = with self; [
+          deprecated
+          importlib-metadata
+          pydantic_1
+          ruamel-yaml
+          types-deprecated
+        ];
+      });
+    };
+  };
+in
+python.pkgs.buildPythonApplication rec {
   pname = "snapcraft";
-  version = "8.2.12";
+  version = "8.3.1";
 
   pyproject = true;
 
-  # Somewhere deep in the dependency tree is 'versioningit', which depends
-  # on pydantic 2. Snapcraft will soon migrate to pydantic 2, and disabling
-  # this doesn't seem to affect the functionality of the application.
-  catchConflicts = false;
-
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "snapcraft";
     rev = "refs/tags/${version}";
-    hash = "sha256-1PwIbMweeYGi+jLfhFB3LYThqaN2VW7zdyzjD1m57ow=";
+    hash = "sha256-cdRlUY9hAJ8US93aiJymzsV27JVPY7lWCK7IUdjDmYE=";
   };
 
   patches = [
@@ -68,13 +86,14 @@ python3Packages.buildPythonApplication rec {
       --replace-fail 'arch_linker_path = Path(arch_config.dynamic_linker)' \
       'return str(Path("${glibc}/lib/ld-linux-x86-64.so.2"))'
 
-    substituteInPlace snapcraft_legacy/internal/xattrs.py \
-      --replace-fail 'distutils.util' 'setuptools.dist'
+    substituteInPlace pyproject.toml \
+      --replace-fail '"pytest-cov>=4.0",' "" \
+      --replace-fail "--cov=snapcraft" ""
   '';
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
-  propagatedBuildInputs = with python3Packages; [
+  dependencies = with python.pkgs; [
     attrs
     catkin-pkg
     click
@@ -93,27 +112,38 @@ python3Packages.buildPythonApplication rec {
     lxml
     macaroonbakery
     mypy-extensions
+    overrides
+    packaging
     progressbar
     pyelftools
     pygit2
     pylxd
+    pymacaroons
     python-apt
     python-gnupg
+    pyxdg
+    pyyaml
     raven
     requests-toolbelt
+    requests-unixsocket
     simplejson
     snap-helpers
     tabulate
+    toml
     tinydb
+    typing-extensions
+    urllib3
+    validators
   ];
 
-  nativeBuildInputs = with python3Packages; [ setuptools ];
+  build-system = with python.pkgs; [ setuptools ];
 
   pythonRelaxDeps = [
     "docutils"
     "jsonschema"
     "pygit2"
     "urllib3"
+    "validators"
   ];
 
   postInstall = ''
@@ -121,10 +151,9 @@ python3Packages.buildPythonApplication rec {
   '';
 
   nativeCheckInputs =
-    with python3Packages;
+    with python.pkgs;
     [
       pytest-check
-      pytest-cov
       pytest-mock
       pytest-subprocess
       pytestCheckHook
@@ -148,6 +177,7 @@ python3Packages.buildPythonApplication rec {
     "test_classic_linter_filter"
     "test_classic_linter"
     "test_complex_snap_yaml"
+    "test_core24_try_command"
     "test_get_base_configuration_snap_channel"
     "test_get_base_configuration_snap_instance_name_default"
     "test_get_base_configuration_snap_instance_name_not_running_as_snap"
diff --git a/pkgs/by-name/sn/snekim/package.nix b/pkgs/by-name/sn/snekim/package.nix
index cf7d2b718f83..8c8841b9dbd7 100644
--- a/pkgs/by-name/sn/snekim/package.nix
+++ b/pkgs/by-name/sn/snekim/package.nix
@@ -1,4 +1,4 @@
-{ lib, buildNimPackage, fetchFromGitea, raylib }:
+{ lib, buildNimPackage, fetchFromGitea }:
 
 buildNimPackage (finalAttrs: {
   pname = "snekim";
diff --git a/pkgs/by-name/sn/snippetexpandergui/package.nix b/pkgs/by-name/sn/snippetexpandergui/package.nix
index 7a7606e3d36b..8434f8672305 100644
--- a/pkgs/by-name/sn/snippetexpandergui/package.nix
+++ b/pkgs/by-name/sn/snippetexpandergui/package.nix
@@ -7,7 +7,6 @@
 , xorg
 , gtk3
 , webkitgtk
-, gsettings-desktop-schemas
 , snippetexpanderd
 , snippetexpanderx
 }:
diff --git a/pkgs/by-name/so/sonarr/package.nix b/pkgs/by-name/so/sonarr/package.nix
index 3491ca44c249..6ba68993bf49 100644
--- a/pkgs/by-name/so/sonarr/package.nix
+++ b/pkgs/by-name/so/sonarr/package.nix
@@ -17,12 +17,12 @@
 , prefetch-yarn-deps
 }:
 let
-  version = "4.0.7.1863";
+  version = "4.0.8.1874";
   src = fetchFromGitHub {
     owner = "Sonarr";
     repo = "Sonarr";
     rev = "v${version}";
-    hash = "sha256-wleqBvwglU7RonBa1ZWV3C0wB8cUpBlSU2ENDfi26Yo=";
+    hash = "sha256-4WjeuVqzuUmgbKIjcQOJCNrTnT9Wn6kpVxS+1T1hqyQ=";
   };
 in
 buildDotnetModule {
diff --git a/pkgs/by-name/sp/spectral-language-server/package.nix b/pkgs/by-name/sp/spectral-language-server/package.nix
index 9c895e171f7a..3a6ac22184ef 100644
--- a/pkgs/by-name/sp/spectral-language-server/package.nix
+++ b/pkgs/by-name/sp/spectral-language-server/package.nix
@@ -3,8 +3,6 @@
 , stdenv
 , fetchYarnDeps
 , yarnConfigHook
-, yarnBuildHook
-, nodejs
 , fetchFromGitHub
 , typescript
 , jq
diff --git a/pkgs/by-name/sp/spigot/tests/approximation.nix b/pkgs/by-name/sp/spigot/tests/approximation.nix
index ffb329e6a317..fbf4875e1e61 100644
--- a/pkgs/by-name/sp/spigot/tests/approximation.nix
+++ b/pkgs/by-name/sp/spigot/tests/approximation.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , spigot
 }:
 
diff --git a/pkgs/by-name/sp/sploitscan/package.nix b/pkgs/by-name/sp/sploitscan/package.nix
index 1cac0714afc5..763f68d6ad8a 100644
--- a/pkgs/by-name/sp/sploitscan/package.nix
+++ b/pkgs/by-name/sp/sploitscan/package.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "sploitscan";
-  version = "0.10.3";
+  version = "0.10.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "xaitax";
     repo = "SploitScan";
     rev = "refs/tags/v${version}";
-    hash = "sha256-86+qX0agtDsEGYaMpP4Rb6OTPZj4KJVDCP8bbiA6K9c=";
+    hash = "sha256-6bC8mGzM6P0otzIG0+h0Koe9c+QI97HkEZh0HwfVviY=";
   };
 
   pythonRelaxDeps = [
diff --git a/pkgs/by-name/sq/sqlite-vss/package.nix b/pkgs/by-name/sq/sqlite-vss/package.nix
index e1c65b63407a..5f25699c9920 100644
--- a/pkgs/by-name/sq/sqlite-vss/package.nix
+++ b/pkgs/by-name/sq/sqlite-vss/package.nix
@@ -43,6 +43,9 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = with lib;{
+    # Low maintenance mode, doesn't support up-to-date faiss
+    # https://github.com/NixOS/nixpkgs/pull/330191#issuecomment-2252965866
+    broken = lib.versionAtLeast faiss.version "1.8.0";
     description = "SQLite extension for efficient vector search based on Faiss";
     homepage = "https://github.com/asg017/sqlite-vss";
     changelog = "https://github.com/asg017/sqlite-vss/releases/tag/v${finalAttrs.version}";
diff --git a/pkgs/by-name/sr/srb2kart/package.nix b/pkgs/by-name/sr/srb2kart/package.nix
index 9601d99263ac..8260bdb39408 100644
--- a/pkgs/by-name/sr/srb2kart/package.nix
+++ b/pkgs/by-name/sr/srb2kart/package.nix
@@ -100,7 +100,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://mb.srb2.org/threads/srb2kart.25868/";
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ viric donovanglover ];
+    maintainers = with maintainers; [ donovanglover ];
     mainProgram = "srb2kart";
   };
 })
diff --git a/pkgs/by-name/ss/ssh-openpgp-auth/generic.nix b/pkgs/by-name/ss/ssh-openpgp-auth/generic.nix
index 5fadd5798ae8..47edd91a4f3c 100644
--- a/pkgs/by-name/ss/ssh-openpgp-auth/generic.nix
+++ b/pkgs/by-name/ss/ssh-openpgp-auth/generic.nix
@@ -7,7 +7,6 @@
 , just
 , rust-script
 , installShellFiles
-, bzip2
 , nettle
 , openssl
 , sqlite
diff --git a/pkgs/by-name/ss/sshesame/package.nix b/pkgs/by-name/ss/sshesame/package.nix
index aef563ba3df4..4a8baeb05cc8 100644
--- a/pkgs/by-name/ss/sshesame/package.nix
+++ b/pkgs/by-name/ss/sshesame/package.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "sshesame";
-  version = "0.0.35";
+  version = "0.0.38";
 
   src = fetchFromGitHub {
     owner = "jaksi";
     repo = "sshesame";
     rev = "v${version}";
-    hash = "sha256-D+vygu+Zx/p/UmqOXqx/4zGv6mtCUKTeU5HdBhxdbN4=";
+    hash = "sha256-CSoDUfbYSf+V7jHVqXGhLc6Mrluy+XbZKCs6IA8reIw=";
   };
 
-  vendorHash = "sha256-WX3rgv9xz3lisYSjf7xvx4oukDSuxE1yqLl6Sz/iDYc=";
+  vendorHash = "sha256-tfxqr1yDXE+ACCfAtZ0xePpB/xktfwJe/xPU8qAVz54=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/pkgs/by-name/st/stackit-cli/package.nix b/pkgs/by-name/st/stackit-cli/package.nix
index bd937c558c73..ee53cc4932d7 100644
--- a/pkgs/by-name/st/stackit-cli/package.nix
+++ b/pkgs/by-name/st/stackit-cli/package.nix
@@ -6,7 +6,6 @@
 , less
 , xdg-utils
 , testers
-, runCommand
 , stackit-cli
 }:
 
diff --git a/pkgs/by-name/st/stackql/package.nix b/pkgs/by-name/st/stackql/package.nix
index d1d749d971fa..4c13281ea436 100644
--- a/pkgs/by-name/st/stackql/package.nix
+++ b/pkgs/by-name/st/stackql/package.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "stackql";
-  version = "0.5.665";
+  version = "0.5.699";
 
   src = fetchFromGitHub {
     owner = "stackql";
     repo = "stackql";
     rev = "v${version}";
-    hash = "sha256-oX1WB6XkjEPzbj3qqXoD8urp827LAU7Cc7lLcpTTZJE=";
+    hash = "sha256-nObrqCStZI80pgzZOvumgK5Osycf5Uj5ESETpWkqBx0=";
   };
 
-  vendorHash = "sha256-JCWXs3tfTG+aj4hG0eFhl52FmNFvPiBuWpQG2RC6FTM=";
+  vendorHash = "sha256-dFrJS7qd5N2Vmm6GOhRcCltbvUh0aTJTfqnxRHMmMJo=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/st/stalwart-mail/package.nix b/pkgs/by-name/st/stalwart-mail/package.nix
index 871305321b1e..2309acd9a9fc 100644
--- a/pkgs/by-name/st/stalwart-mail/package.nix
+++ b/pkgs/by-name/st/stalwart-mail/package.nix
@@ -14,7 +14,6 @@
   nix-update-script,
   nixosTests,
   rocksdb_8_11,
-  callPackage,
 }:
 
 let
diff --git a/pkgs/by-name/st/stats/package.nix b/pkgs/by-name/st/stats/package.nix
index 14073bc8d2cd..105ed52dbdfd 100644
--- a/pkgs/by-name/st/stats/package.nix
+++ b/pkgs/by-name/st/stats/package.nix
@@ -8,11 +8,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "stats";
-  version = "2.11.1";
+  version = "2.11.4";
 
   src = fetchurl {
     url = "https://github.com/exelban/stats/releases/download/v${finalAttrs.version}/Stats.dmg";
-    hash = "sha256-/6QFchDpWrJZEKuIsQi6FcGprVOa8J8THJ9Kt3ESrwY=";
+    hash = "sha256-Cm5gu+rL3eerAOnNcNUL2MlXsxV2jMiJLwgGtskIVP4=";
   };
 
   sourceRoot = ".";
diff --git a/pkgs/by-name/st/step-cli/package.nix b/pkgs/by-name/st/step-cli/package.nix
index 184fe36c2755..d0d4aacce489 100644
--- a/pkgs/by-name/st/step-cli/package.nix
+++ b/pkgs/by-name/st/step-cli/package.nix
@@ -13,7 +13,7 @@ in
       owner = "smallstep";
       repo = "cli";
       rev = "refs/tags/v${version}";
-      hash = "sha256-lM42KlTgOch6AwQIzvjQNH1wVfFikVI9rVgH2/2KyJE=";
+      hash = "sha256-9w7rUtlLa1kl9oVboWZWj4eoZh+pPdGsEEQDWYdEMns=";
     };
 
     ldflags = [
diff --git a/pkgs/by-name/st/stevenblack-blocklist/package.nix b/pkgs/by-name/st/stevenblack-blocklist/package.nix
index 0fb108c57ece..cac6c8ea3d47 100644
--- a/pkgs/by-name/st/stevenblack-blocklist/package.nix
+++ b/pkgs/by-name/st/stevenblack-blocklist/package.nix
@@ -6,13 +6,13 @@
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "stevenblack-blocklist";
-  version = "3.14.88";
+  version = "3.14.90";
 
   src = fetchFromGitHub {
     owner = "StevenBlack";
     repo = "hosts";
     rev = "refs/tags/${finalAttrs.version}";
-    hash = "sha256-tS7CDuotk+aAbtOR1x3u3ymyRvPgb3GZjuDcJNm6lZs=";
+    hash = "sha256-0/niQ0qWzGesqWIe/NZ2SD0Pdvk3GRsY1mT24eFMpt8=";
   };
 
   outputs = [
diff --git a/pkgs/by-name/sw/swaycons/package.nix b/pkgs/by-name/sw/swaycons/package.nix
index b60b5a6115a2..c4f6e31a6a43 100644
--- a/pkgs/by-name/sw/swaycons/package.nix
+++ b/pkgs/by-name/sw/swaycons/package.nix
@@ -14,7 +14,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-vyZcfBH2mry8Yd41QPX4+yLv0nS9J1yrgg7lpslJs7M=";
   };
 
-  cargoSha256 = "sha256-cdZ7DpH//c9TulvPYd6aaXpQHYC1b+T7BrxAyr56Pf0=";
+  cargoHash = "sha256-cdZ7DpH//c9TulvPYd6aaXpQHYC1b+T7BrxAyr56Pf0=";
 
   meta = with lib; {
     description = "Window Icons in Sway with Nerd Fonts!";
diff --git a/pkgs/by-name/sw/swayfx/package.nix b/pkgs/by-name/sw/swayfx/package.nix
index 9583f9b7a710..d9fe039a2a53 100644
--- a/pkgs/by-name/sw/swayfx/package.nix
+++ b/pkgs/by-name/sw/swayfx/package.nix
@@ -1,5 +1,4 @@
 {
-  lib,
   swayfx-unwrapped,
   sway,
   # Used by the NixOS module:
diff --git a/pkgs/by-name/sw/swayws/package.nix b/pkgs/by-name/sw/swayws/package.nix
index 75b88ad1baf4..8041763adef0 100644
--- a/pkgs/by-name/sw/swayws/package.nix
+++ b/pkgs/by-name/sw/swayws/package.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-f0kXy7/31imgHHqKPmW9K+QrLqroaPaXwlJkzOoezRU=";
   };
 
-  cargoSha256 = "sha256-VYT6wV59fraAoJgR/i6GlO8s7LUoehGtxPAggEL1eLo=";
+  cargoHash = "sha256-VYT6wV59fraAoJgR/i6GlO8s7LUoehGtxPAggEL1eLo=";
   # Required patch until upstream fixes https://gitlab.com/w0lff/swayws/-/issues/1
   cargoPatches = [
     ./ws-update-Cargo-lock.patch
diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/Cargo.lock b/pkgs/by-name/sw/switch-to-configuration-ng/Cargo.lock
index d66a2c6e7527..9b70ccfe23b3 100644
--- a/pkgs/by-name/sw/switch-to-configuration-ng/Cargo.lock
+++ b/pkgs/by-name/sw/switch-to-configuration-ng/Cargo.lock
@@ -22,9 +22,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.82"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519"
+checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da"
 
 [[package]]
 name = "atty"
@@ -153,9 +153,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.14"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c"
+checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
 dependencies = [
  "cfg-if",
  "libc",
@@ -202,9 +202,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
 
 [[package]]
 name = "libc"
-version = "0.2.154"
+version = "0.2.155"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346"
+checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
 
 [[package]]
 name = "libdbus-sys"
@@ -229,9 +229,9 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
 
 [[package]]
 name = "memchr"
-version = "2.7.2"
+version = "2.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d"
+checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
 
 [[package]]
 name = "nix"
@@ -290,9 +290,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.81"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
+checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
 dependencies = [
  "unicode-ident",
 ]
@@ -308,9 +308,9 @@ dependencies = [
 
 [[package]]
 name = "regex"
-version = "1.10.4"
+version = "1.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c"
+checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -320,9 +320,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.6"
+version = "0.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea"
+checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -331,9 +331,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56"
+checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
 
 [[package]]
 name = "rust-ini"
@@ -348,18 +348,18 @@ dependencies = [
 
 [[package]]
 name = "serde"
-version = "1.0.200"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f"
+checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.200"
+version = "1.0.203"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb"
+checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -389,9 +389,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.60"
+version = "2.0.67"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
+checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -476,9 +476,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.12"
+version = "0.1.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6"
+checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d"
 
 [[package]]
 name = "vec_map"
diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs
index a35b55065c07..057604b03178 100644
--- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs
+++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs
@@ -1656,7 +1656,16 @@ won't take effect until you reboot the system.
             die();
         }
         Ok(users) => {
-            for (uid, name, _) in users {
+            for (uid, name, user_dbus_path) in users {
+                let gid: u32 = dbus_conn
+                    .with_proxy(
+                        "org.freedesktop.login1",
+                        &user_dbus_path,
+                        Duration::from_millis(5000),
+                    )
+                    .get("org.freedesktop.login1.User", "GID")
+                    .with_context(|| format!("Failed to get GID for {name}"))?;
+
                 eprintln!("reloading user units for {}...", name);
                 let myself = Path::new("/proc/self/exe")
                     .canonicalize()
@@ -1664,10 +1673,12 @@ won't take effect until you reboot the system.
 
                 std::process::Command::new(&myself)
                     .uid(uid)
+                    .gid(gid)
                     .env("XDG_RUNTIME_DIR", format!("/run/user/{}", uid))
                     .env("__NIXOS_SWITCH_TO_CONFIGURATION_PARENT_EXE", &myself)
                     .spawn()
-                    .map(|mut child| _ = child.wait())
+                    .with_context(|| format!("Failed to spawn user activation for {name}"))?
+                    .wait()
                     .with_context(|| format!("Failed to run user activation for {name}"))?;
             }
         }
@@ -1854,7 +1865,7 @@ won't take effect until you reboot the system.
             // A unit in auto-restart substate is a failure *if* it previously failed to start
             let unit_object_path = systemd
                 .get_unit(&unit)
-                .context("Failed to get unit info for {unit}")?;
+                .with_context(|| format!("Failed to get unit info for {unit}"))?;
             let exec_main_status: i32 = dbus_conn
                 .with_proxy(
                     "org.freedesktop.systemd1",
@@ -1862,7 +1873,7 @@ won't take effect until you reboot the system.
                     Duration::from_millis(5000),
                 )
                 .get("org.freedesktop.systemd1.Service", "ExecMainStatus")
-                .context("Failed to get ExecMainStatus for {unit}")?;
+                .with_context(|| format!("Failed to get ExecMainStatus for {unit}"))?;
 
             if exec_main_status != 0 {
                 failed_units.push(unit);
diff --git a/pkgs/by-name/sw/swt/package.nix b/pkgs/by-name/sw/swt/package.nix
index c67424f4fc06..49f2d4ce0f88 100644
--- a/pkgs/by-name/sw/swt/package.nix
+++ b/pkgs/by-name/sw/swt/package.nix
@@ -1,7 +1,6 @@
 {
   atk,
   fetchzip,
-  glib,
   gtk2,
   jdk,
   lib,
diff --git a/pkgs/by-name/sy/symfony-cli/package.nix b/pkgs/by-name/sy/symfony-cli/package.nix
index 2d9a28bf1410..47ae24c60822 100644
--- a/pkgs/by-name/sy/symfony-cli/package.nix
+++ b/pkgs/by-name/sy/symfony-cli/package.nix
@@ -10,14 +10,14 @@
 
 buildGoModule rec {
   pname = "symfony-cli";
-  version = "5.9.1";
-  vendorHash = "sha256-oo4lLJTF44hBb8QaIMONj+2WRdDSlhImZaC/nniWAhs=";
+  version = "5.10.2";
+  vendorHash = "sha256-WSZM/9inaFLlZIAwH3E8hWyRQaOvY8BJ6ECpbkqJN6g=";
 
   src = fetchFromGitHub {
     owner = "symfony-cli";
     repo = "symfony-cli";
     rev = "v${version}";
-    hash = "sha256-uJbX1IzZtcXH7mZuqh2YZy9wYZHNWfUHRZ8Tlm5zEac=";
+    hash = "sha256-/fJ9Ovk2gXCIvvieCXxnI8gDjwrhQHJoF3Ia47dSdgQ=";
     leaveDotGit = true;
     postFetch = ''
       git --git-dir $out/.git log -1 --pretty=%cd --date=format:'%Y-%m-%dT%H:%M:%SZ' > $out/SOURCE_DATE
diff --git a/pkgs/by-name/sy/symphony/package.nix b/pkgs/by-name/sy/symphony/package.nix
index cb75fae961b1..3e420421b0f5 100644
--- a/pkgs/by-name/sy/symphony/package.nix
+++ b/pkgs/by-name/sy/symphony/package.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, cmake
 , coin-utils
 , coinmp
 , gfortran
diff --git a/pkgs/by-name/ta/tabiew/package.nix b/pkgs/by-name/ta/tabiew/package.nix
index a4367bdf43fb..bc5bf7e69cc3 100644
--- a/pkgs/by-name/ta/tabiew/package.nix
+++ b/pkgs/by-name/ta/tabiew/package.nix
@@ -5,16 +5,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "tabiew";
-  version = "0.6.0";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "shshemi";
     repo = "tabiew";
     rev = "v${version}";
-    hash = "sha256-Sui2UX2EWXgtkU83tb2QP0EQCImAvWrR2dYkfXjqDdc=";
+    hash = "sha256-WnIlGWfIoCq9jrMG9SI3zYFs6ItjrMFF6KiNYkiA9Ag=";
   };
 
-  cargoHash = "sha256-QEuO5Jtv9xw9W2jI2g3pJENi/CQcFsC3PCc63v2Cd40=";
+  cargoHash = "sha256-lB6EaJnPoUxB+cs6rmiiOmgoOo+kzETRwKWbtsik42A=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/pkgs/by-name/ta/taskwarrior3/package.nix b/pkgs/by-name/ta/taskwarrior3/package.nix
index 17a14daf2adf..79c82c0ea509 100644
--- a/pkgs/by-name/ta/taskwarrior3/package.nix
+++ b/pkgs/by-name/ta/taskwarrior3/package.nix
@@ -8,7 +8,6 @@
   fetchFromGitHub,
   cmake,
   libuuid,
-  gnutls,
   python3,
   xdg-utils,
   installShellFiles,
diff --git a/pkgs/by-name/te/tenv/package.nix b/pkgs/by-name/te/tenv/package.nix
index 027da48e36c1..93ce7d68e809 100644
--- a/pkgs/by-name/te/tenv/package.nix
+++ b/pkgs/by-name/te/tenv/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "tenv";
-  version = "2.6.1";
+  version = "2.7.9";
 
   src = fetchFromGitHub {
     owner = "tofuutils";
     repo = "tenv";
     rev = "v${version}";
-    hash = "sha256-qGb7Wj0qH9yh/C0H9Yd0NppoqtjCxnbaTYpv6T8KoL4=";
+    hash = "sha256-oeMbpnYCkJ5GjfgOlNyQpwy80DbrupXIFS2dx4W2xo4=";
   };
 
   vendorHash = "sha256-/4RiOF9YU4GEZlJcx2S2bLhJ1Q6F+8To3XiyWzGGHUU=";
diff --git a/pkgs/by-name/te/termshot/package.nix b/pkgs/by-name/te/termshot/package.nix
index b44f6ec906f3..17f83504ef46 100644
--- a/pkgs/by-name/te/termshot/package.nix
+++ b/pkgs/by-name/te/termshot/package.nix
@@ -5,16 +5,16 @@
 }:
 buildGoModule rec {
   pname = "termshot";
-  version = "0.2.7";
+  version = "0.2.8";
 
   src = fetchFromGitHub {
     owner = "homeport";
     repo = "termshot";
     rev = "v${version}";
-    hash = "sha256-Sxp6abYq0MrqtqDdpffSBdZB3/EyIMF9Ixsc7IgW5hI=";
+    hash = "sha256-cCtae2O9P9czivNVcytJKz3tQ41TaqokZcTOwt2v6jk=";
   };
 
-  vendorHash = "sha256-jzDbA1iN+1dbTVgKw228TuCV3eeAVmHFDiHd2qF/80E=";
+  vendorHash = "sha256-ji2B9Gr1oQGouGH2hBpTyfjbht6bRfIeLcdTBhmmIwk=";
 
   ldflags = [
     "-s"
diff --git a/pkgs/by-name/te/termsnap/package.nix b/pkgs/by-name/te/termsnap/package.nix
index 55648f690d14..203b4d751e9a 100644
--- a/pkgs/by-name/te/termsnap/package.nix
+++ b/pkgs/by-name/te/termsnap/package.nix
@@ -15,7 +15,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-FTgbbiDlHXGjkv3a2TAxjAqdClWkuteyUrtjQ8fMSIs=";
   };
 
-  cargoSha256 = "sha256-hXlRkqcMHFEAnm883Q8sR8gcEbSNMutoJQsMW2M5wOY=";
+  cargoHash = "sha256-hXlRkqcMHFEAnm883Q8sR8gcEbSNMutoJQsMW2M5wOY=";
 
   meta = with lib; {
     description = "Create SVGs from terminal output";
diff --git a/pkgs/by-name/te/terragrunt/package.nix b/pkgs/by-name/te/terragrunt/package.nix
index 577e4f6aebf4..a8262a50d84e 100644
--- a/pkgs/by-name/te/terragrunt/package.nix
+++ b/pkgs/by-name/te/terragrunt/package.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "terragrunt";
-  version = "0.62.0";
+  version = "0.63.2";
 
   src = fetchFromGitHub {
     owner = "gruntwork-io";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-vubx/8rnUyOtQwykbFT8s/gAhuPorQtmkLJiiGu/pQY=";
+    hash = "sha256-Y6bDXohGeQ5H4Cq50dwA503pOQA8+ab9po4slL3BRDg=";
   };
 
   nativeBuildInputs = [ go-mockery ];
@@ -21,7 +21,7 @@ buildGoModule rec {
     make generate-mocks
   '';
 
-  vendorHash = "sha256-1znEc/WmD3sCUqWxIvV0AdruxpUG7jh2IqTkGGak1VM=";
+  vendorHash = "sha256-l0RFHOQIHLSCzSKq09ibtXEMph/Lhv9ie6B+jpLTxbY=";
 
   doCheck = false;
 
diff --git a/pkgs/by-name/te/tetrio-desktop/package.nix b/pkgs/by-name/te/tetrio-desktop/package.nix
index f07299b37cc3..56e2f60acc86 100644
--- a/pkgs/by-name/te/tetrio-desktop/package.nix
+++ b/pkgs/by-name/te/tetrio-desktop/package.nix
@@ -4,7 +4,7 @@
 , dpkg
 , makeWrapper
 , callPackage
-, addOpenGLRunpath
+, addDriverRunpath
 , electron
 , withTetrioPlus ? false
 , tetrio-plus ? null
@@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   postFixup = ''
     makeShellWrapper '${lib.getExe electron}' $out/bin/tetrio \
-      --prefix LD_LIBRARY_PATH : ${addOpenGLRunpath.driverLink}/lib \
+      --prefix LD_LIBRARY_PATH : ${addDriverRunpath.driverLink}/lib \
       --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
       --add-flags $out/share/TETR.IO/app.asar
   '';
diff --git a/pkgs/by-name/ti/tic-80/package.nix b/pkgs/by-name/ti/tic-80/package.nix
index 0e82c4eb44d5..28839ec7716a 100644
--- a/pkgs/by-name/ti/tic-80/package.nix
+++ b/pkgs/by-name/ti/tic-80/package.nix
@@ -3,16 +3,13 @@
 , cmake
 , pkg-config
 , python3
-, ruby
 , rake
-, git
 , curl
 , fetchFromGitHub
 , libGL
 , libGLU
 , alsa-lib
 , libX11
-, xorgproto
 , libICE
 , libXi
 , libXScrnSaver
@@ -30,7 +27,6 @@
 , libdecor
 , pipewire
 , libpulseaudio
-, libiconv
 # Whether to build TIC-80's "Pro" version, which is an incentive to support the project financially,
 # that enables some additional features. It is, however, fully open source.
 , withPro ? false
diff --git a/pkgs/by-name/ti/tio/package.nix b/pkgs/by-name/ti/tio/package.nix
index 1c2b45c2efd4..72535c57fb4e 100644
--- a/pkgs/by-name/ti/tio/package.nix
+++ b/pkgs/by-name/ti/tio/package.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "tio";
-  version = "3.5";
+  version = "3.6";
 
   src = fetchFromGitHub {
     owner = "tio";
     repo = "tio";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-3d3TYHSERIQdw+Iw6qCydGpWRpWrhZwb4SnwV1nVtIk=";
+    hash = "sha256-1NXp94AQOgMNKf+P2eJ6ifUhWSqIYllVeCraBO2pHxQ=";
   };
 
   strictDeps = true;
@@ -42,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Serial console TTY";
     homepage = "https://tio.github.io/";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ yana ];
+    maintainers = with maintainers; [ ];
     mainProgram = "tio";
     platforms = platforms.unix;
   };
diff --git a/pkgs/by-name/ti/tippecanoe/package.nix b/pkgs/by-name/ti/tippecanoe/package.nix
index c0da90796860..b588212f6f73 100644
--- a/pkgs/by-name/ti/tippecanoe/package.nix
+++ b/pkgs/by-name/ti/tippecanoe/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "tippecanoe";
-  version = "2.56.0";
+  version = "2.57.0";
 
   src = fetchFromGitHub {
     owner = "felt";
     repo = "tippecanoe";
     rev = finalAttrs.version;
-    hash = "sha256-n1ZhOlhrI1cSOwv7NP2VDAPC/2HmMJBkNLH6NPY3BnM=";
+    hash = "sha256-IFyewy/is5BNJ7/LzhHXLwLaSrMAJ6II1aSY9AspEk4=";
   };
 
   buildInputs = [ sqlite zlib ];
diff --git a/pkgs/by-name/to/tomb/package.nix b/pkgs/by-name/to/tomb/package.nix
new file mode 100644
index 000000000000..94d7cf2b34a6
--- /dev/null
+++ b/pkgs/by-name/to/tomb/package.nix
@@ -0,0 +1,87 @@
+{
+  coreutils,
+  cryptsetup,
+  e2fsprogs,
+  fetchFromGitHub,
+  file,
+  gawk,
+  getent,
+  gettext,
+  gnugrep,
+  gnupg,
+  lib,
+  libargon2,
+  lsof,
+  makeWrapper,
+  nix-update-script,
+  pinentry,
+  stdenvNoCC,
+  util-linux,
+  zsh,
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "tomb";
+  version = "2.11";
+
+  src = fetchFromGitHub {
+    owner = "dyne";
+    repo = "Tomb";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-H9etbodTKxROJAITbViQQ6tkEr9rKNITTHfsGGQbyR0=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [
+    pinentry
+    zsh
+  ];
+
+  postPatch = ''
+    # if not, it shows .tomb-wrapped when running
+    substituteInPlace tomb \
+      --replace-fail 'TOMBEXEC=$0' 'TOMBEXEC=tomb'
+  '';
+
+  installPhase = ''
+    install -Dm755 tomb $out/bin/tomb
+    install -Dm644 doc/tomb.1 $out/share/man/man1/tomb.1
+
+    wrapProgram $out/bin/tomb \
+      --prefix PATH : $out/bin:${
+        lib.makeBinPath [
+          coreutils
+          cryptsetup
+          e2fsprogs
+          file
+          gawk
+          getent
+          gettext
+          gnugrep
+          gnupg
+          libargon2
+          lsof
+          pinentry
+          util-linux
+        ]
+      }
+  '';
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "File encryption on GNU/Linux";
+    homepage = "https://www.dyne.org/software/tomb/";
+    changelog = "https://github.com/dyne/Tomb/blob/v${version}/ChangeLog.md";
+    license = lib.licenses.gpl3Only;
+    mainProgram = "tomb";
+    maintainers = with lib.maintainers; [
+      peterhoeg
+      anthonyroussel
+    ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/to/toolong/package.nix b/pkgs/by-name/to/toolong/package.nix
new file mode 100644
index 000000000000..264aa4f7dfaf
--- /dev/null
+++ b/pkgs/by-name/to/toolong/package.nix
@@ -0,0 +1,45 @@
+{
+  lib,
+  python311Packages,
+  fetchFromGitHub,
+  testers,
+  toolong,
+}:
+
+python311Packages.buildPythonApplication rec {
+  pname = "toolong";
+  version = "1.4.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "Textualize";
+    repo = "toolong";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-Zd6j1BIrsLJqptg7BXb67qY3DaeHRHieWJoYYCDHaoc=";
+  };
+
+  build-system = [ python311Packages.poetry-core ];
+  dependencies = with python311Packages; [
+    click
+    textual
+    typing-extensions
+  ];
+
+  pythonRelaxDeps = [ "textual" ];
+
+  pythonImportsCheck = [ "toolong" ];
+  doCheck = false; # no tests
+
+  passthru.tests.version = testers.testVersion {
+    package = toolong;
+    command = "${lib.getExe toolong} --version";
+  };
+
+  meta = with lib; {
+    description = "Terminal application to view, tail, merge, and search log files (plus JSONL)";
+    license = licenses.mit;
+    homepage = "https://github.com/textualize/toolong";
+    maintainers = with maintainers; [ sigmanificient ];
+    mainProgram = "tl";
+  };
+}
diff --git a/pkgs/by-name/tr/tracker-miners/package.nix b/pkgs/by-name/tr/tracker-miners/package.nix
index caf2e36488b2..fb882da42b73 100644
--- a/pkgs/by-name/tr/tracker-miners/package.nix
+++ b/pkgs/by-name/tr/tracker-miners/package.nix
@@ -54,6 +54,10 @@ stdenv.mkDerivation (finalAttrs: {
     hash = "sha256-50OIFUtcGXtLfuQvDc6MX7vd1NNhCT74jU+zA+M9pf4=";
   };
 
+  patches = [
+    ./tracker-landlock-nix-store-permission.patch
+  ];
+
   nativeBuildInputs = [
     asciidoc
     docbook-xsl-nons
diff --git a/pkgs/by-name/tr/tracker-miners/tracker-landlock-nix-store-permission.patch b/pkgs/by-name/tr/tracker-miners/tracker-landlock-nix-store-permission.patch
new file mode 100644
index 000000000000..4715241ee628
--- /dev/null
+++ b/pkgs/by-name/tr/tracker-miners/tracker-landlock-nix-store-permission.patch
@@ -0,0 +1,15 @@
+diff --git a/src/libtracker-miners-common/tracker-landlock.c b/src/libtracker-miners-common/tracker-landlock.c
+index 6d4510be1..1de5d5a90 100644
+--- a/src/libtracker-miners-common/tracker-landlock.c
++++ b/src/libtracker-miners-common/tracker-landlock.c
+@@ -184,6 +184,10 @@ gboolean
+ tracker_landlock_init (const gchar * const *indexed_folders)
+ {
+ 	TrackerLandlockRule stock_rules[] = {
++		{ "/nix/store",
++		 (LANDLOCK_ACCESS_FS_EXECUTE |
++		  LANDLOCK_ACCESS_FS_READ_FILE |
++		  LANDLOCK_ACCESS_FS_READ_DIR) },
+ 		/* Allow access to the executable itself */
+ 		{ LIBEXECDIR "/tracker-extract-3",
+ 		 LANDLOCK_ACCESS_FS_READ_FILE |
diff --git a/pkgs/by-name/tr/tracy/package.nix b/pkgs/by-name/tr/tracy/package.nix
index 82d4b9c285b8..4e462bae4a3b 100644
--- a/pkgs/by-name/tr/tracy/package.nix
+++ b/pkgs/by-name/tr/tracy/package.nix
@@ -56,9 +56,7 @@ stdenv.mkDerivation rec {
     # ../../../server/TracyView.cpp:649:34, preventing building.
     ++ lib.optional stdenv.isDarwin "-Wno-format-security"
     ++ lib.optional stdenv.isLinux "-ltbb"
-    ++ lib.optional stdenv.cc.isClang "-faligned-allocation"
-    # workaround issue #19098
-    ++ lib.optional (stdenv.cc.isClang && stdenv.isDarwin) "-fno-lto");
+    ++ lib.optional stdenv.cc.isClang "-faligned-allocation");
 
   buildPhase = ''
     runHook preBuild
diff --git a/pkgs/by-name/tr/trak/package.nix b/pkgs/by-name/tr/trak/package.nix
index 2129850159bd..46323b4b472e 100644
--- a/pkgs/by-name/tr/trak/package.nix
+++ b/pkgs/by-name/tr/trak/package.nix
@@ -20,7 +20,7 @@ python3Packages.buildPythonApplication rec {
   dependencies = with python3Packages; [
     questionary
     typer
-  ] ++ typer.optional-dependencies.all;
+  ];
 
   build-system = [ python3Packages.poetry-core ];
 
diff --git a/pkgs/by-name/tr/transmission_3/package.nix b/pkgs/by-name/tr/transmission_3/package.nix
index 32f9b92079a7..21dfed11c543 100644
--- a/pkgs/by-name/tr/transmission_3/package.nix
+++ b/pkgs/by-name/tr/transmission_3/package.nix
@@ -1,7 +1,6 @@
 { stdenv
 , lib
 , fetchFromGitHub
-, fetchurl
 , cmake
 , pkg-config
 , openssl
diff --git a/pkgs/by-name/tr/trealla/package.nix b/pkgs/by-name/tr/trealla/package.nix
index b52d24a34178..7be1d05f17ee 100644
--- a/pkgs/by-name/tr/trealla/package.nix
+++ b/pkgs/by-name/tr/trealla/package.nix
@@ -23,13 +23,13 @@ assert lib.elem lineEditingLibrary [
 ];
 stdenv.mkDerivation (finalAttrs: {
   pname = "trealla";
-  version = "2.53.48";
+  version = "2.55.3";
 
   src = fetchFromGitHub {
     owner = "trealla-prolog";
     repo = "trealla";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-yxx4Mi1CrgFWIWbRq2wsNs6D7OL1OkeA4QyTYf158aU=";
+    hash = "sha256-a/CaeSJMHecJ6OVsodzSrINs8dsrFoDAUMy/T/Xkt7U=";
   };
 
   postPatch = ''
diff --git a/pkgs/by-name/tr/treefmt1/package.nix b/pkgs/by-name/tr/treefmt1/package.nix
index 48fc4b44962e..ab61a50bd955 100644
--- a/pkgs/by-name/tr/treefmt1/package.nix
+++ b/pkgs/by-name/tr/treefmt1/package.nix
@@ -10,7 +10,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-icAe54Mv1xpOjUPSk8QDZaMk2ueNvjER6UyJ9uyUL6s=";
   };
 
-  cargoSha256 = "sha256-bpNIGuh74nwEmHPeXtPmsML9vJOb00xkdjK0Nd7esAc=";
+  cargoHash = "sha256-bpNIGuh74nwEmHPeXtPmsML9vJOb00xkdjK0Nd7esAc=";
 
   meta = {
     description = "one CLI to format the code tree";
diff --git a/pkgs/by-name/tr/tribler/package.nix b/pkgs/by-name/tr/tribler/package.nix
index bdc4090c49af..3d30b91cfcc2 100644
--- a/pkgs/by-name/tr/tribler/package.nix
+++ b/pkgs/by-name/tr/tribler/package.nix
@@ -118,7 +118,7 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.lgpl21Plus;
     maintainers = with lib.maintainers; [
       xvapx
-      viric
+
       mkg20001
     ];
     platforms = lib.platforms.linux;
diff --git a/pkgs/by-name/tr/trickest-cli/package.nix b/pkgs/by-name/tr/trickest-cli/package.nix
index ad6799ad6201..ef5b72fd722a 100644
--- a/pkgs/by-name/tr/trickest-cli/package.nix
+++ b/pkgs/by-name/tr/trickest-cli/package.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "trickest-cli";
-  version = "1.8.0";
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "trickest";
     repo = "trickest-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wzBUPotuv1natDB896Uu+O9Nj4ycT8jkcvIumjMdbqs=";
+    hash = "sha256-6fshMuwGv4tkaqySHVsCwX+kBpUt+u/x9qnJNZ3c0HA=";
   };
 
   vendorHash = "sha256-gk8YMMvTHBL7yoXU9n0jhtUS472fqLW5m+mSl4Lio6c=";
diff --git a/pkgs/by-name/op/openai-triton-llvm/package.nix b/pkgs/by-name/tr/triton-llvm/package.nix
index 7b6f40662a75..90a45c133c73 100644
--- a/pkgs/by-name/op/openai-triton-llvm/package.nix
+++ b/pkgs/by-name/tr/triton-llvm/package.nix
@@ -36,7 +36,7 @@ let
   llvmTargetsToBuild' = [ "AMDGPU" "NVPTX" ] ++ builtins.map inferNativeTarget llvmTargetsToBuild;
 
   # This LLVM version can't seem to find pygments/pyyaml,
-  # but a later update will likely fix this (openai-triton-2.1.0)
+  # but a later update will likely fix this (triton-2.1.0)
   python =
     if buildTests
     then python3Packages.python.withPackages (p: with p; [ psutil pygments pyyaml ])
@@ -44,7 +44,7 @@ let
 
   isNative = stdenv.hostPlatform == stdenv.buildPlatform;
 in stdenv.mkDerivation (finalAttrs: {
-  pname = "openai-triton-llvm";
+  pname = "triton-llvm";
   version = "17.0.0-c5dede880d17";
 
   outputs = [
@@ -55,7 +55,7 @@ in stdenv.mkDerivation (finalAttrs: {
     "man"
   ];
 
-  # See https://github.com/openai/triton/blob/main/python/setup.py
+  # See https://github.com/triton-lang/triton/blob/main/python/setup.py
   # and https://github.com/ptillet/triton-llvm-releases/releases
   src = fetchFromGitHub {
     owner = "llvm";
diff --git a/pkgs/by-name/tr/trrntzip/package.nix b/pkgs/by-name/tr/trrntzip/package.nix
index 89018ea649af..baa671ce217c 100644
--- a/pkgs/by-name/tr/trrntzip/package.nix
+++ b/pkgs/by-name/tr/trrntzip/package.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "trrntzip";
-  version = "1.1";
+  version = "1.3";
 
   src = fetchFromGitHub {
     owner = "0-wiz-0";
     repo = "trrntzip";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-7BrTJCQH9x9cNqm7tGOLxQlbTmlxs5S2hAD4ZWIady8=";
+    hash = "sha256-whxPqXT6w91jWv9aoTE4ITbjqohgwytzA0HN7WXKcTA=";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/by-name/tt/ttf-indic/package.nix b/pkgs/by-name/tt/ttf-indic/package.nix
new file mode 100644
index 000000000000..52c980660c89
--- /dev/null
+++ b/pkgs/by-name/tt/ttf-indic/package.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchurl,
+}:
+
+stdenvNoCC.mkDerivation rec {
+  pname = "ttf-indic";
+  version = "0.2";
+
+  src = fetchurl {
+    url = "https://www.indlinux.org/downloads/files/indic-otf-${version}.tar.gz";
+    hash = "sha256-ZFmg1JanAf3eeF7M+yohrXYSUb0zLgNSFldEMzkhXnI=";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -m444 -Dt $out/share/fonts/truetype OpenType/*.ttf
+
+    runHook postInstall
+  '';
+
+  meta = {
+    homepage = "https://www.indlinux.org/wiki/index.php/Downloads";
+    description = "Indic Opentype Fonts collection";
+    license = lib.licenses.gpl2Only;
+    maintainers = [ lib.maintainers.akssri ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/pkgs/by-name/tu/tuifimanager/package.nix b/pkgs/by-name/tu/tuifimanager/package.nix
index 8b214453a788..15706439a30a 100644
--- a/pkgs/by-name/tu/tuifimanager/package.nix
+++ b/pkgs/by-name/tu/tuifimanager/package.nix
@@ -62,7 +62,7 @@ python3.pkgs.buildPythonApplication rec {
 
   pythonImportsCheck = [ "TUIFIManager" ];
 
-  meta = with lib; {
+  meta = {
     description = "Cross-platform terminal-based termux-oriented file manager";
     longDescription = ''
       A cross-platform terminal-based termux-oriented file manager (and component),
@@ -70,8 +70,8 @@ python3.pkgs.buildPythonApplication rec {
       attempt to get more attention to the Uni-Curses project.
     '';
     homepage = "https://github.com/GiorgosXou/TUIFIManager";
-    license = licenses.gpl3Only;
-    maintainers = with maintainers; [ michaelBelsanti sigmanificient ];
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ michaelBelsanti sigmanificient ];
     mainProgram = "tuifi";
   };
 }
diff --git a/pkgs/by-name/tu/tuxclocker-nvidia-plugin/package.nix b/pkgs/by-name/tu/tuxclocker-nvidia-plugin/package.nix
index b783953acd93..50f98eb550ab 100644
--- a/pkgs/by-name/tu/tuxclocker-nvidia-plugin/package.nix
+++ b/pkgs/by-name/tu/tuxclocker-nvidia-plugin/package.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , boost
 , libX11
 , libXext
@@ -11,7 +10,7 @@
 stdenv.mkDerivation {
   pname = "tuxclocker-nvidia-plugin";
 
-  inherit (tuxclocker-plugins) src version meta BOOST_INCLUDEDIR BOOST_LIBRARYDIR nativeBuildInputs;
+  inherit (tuxclocker-plugins) src version meta nativeBuildInputs;
 
   buildInputs = [
     boost
diff --git a/pkgs/by-name/tu/tuxclocker-plugins/package.nix b/pkgs/by-name/tu/tuxclocker-plugins/package.nix
index 12deedd5c56f..3cb8ef84d643 100644
--- a/pkgs/by-name/tu/tuxclocker-plugins/package.nix
+++ b/pkgs/by-name/tu/tuxclocker-plugins/package.nix
@@ -1,7 +1,5 @@
-{ lib
-, stdenv
+{ stdenv
 , boost
-, cmake
 , gettext
 , libdrm
 , meson
@@ -13,7 +11,7 @@
 }:
 
 stdenv.mkDerivation {
-  inherit (tuxclocker) src version meta BOOST_INCLUDEDIR BOOST_LIBRARYDIR;
+  inherit (tuxclocker) src version meta;
 
   pname = "tuxclocker-plugins";
 
diff --git a/pkgs/by-name/tw/tweego/package.nix b/pkgs/by-name/tw/tweego/package.nix
new file mode 100644
index 000000000000..16c01c105265
--- /dev/null
+++ b/pkgs/by-name/tw/tweego/package.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+}:
+buildGoModule rec {
+  pname = "tweego";
+  version = "2.1.1";
+
+  src = fetchFromGitHub {
+    owner = "tmedwards";
+    repo = "tweego";
+    rev = "v${version}";
+    hash = "sha256-LE85mSByTz7uFjs0XtrpfD7OARoMPE56FpjFw+FlGYw=";
+  };
+
+  proxyVendor = true;
+  vendorHash = "sha256-1O27CiCXgrD0RC+3jrVxAiq/RnI2s1FW2/uoBAd1fF8=";
+
+  preBuild = ''
+    go mod tidy
+  '';
+
+  meta = {
+    description = "Free (gratis and libre) command line compiler for Twine/Twee story formats, written in Go";
+    homepage = "https://www.motoslave.net/tweego";
+    license = lib.licenses.bsd2;
+    maintainers = with lib.maintainers; [chrispwill];
+    mainProgram = "tweego";
+  };
+}
diff --git a/pkgs/by-name/tw/twiggy/package.nix b/pkgs/by-name/tw/twiggy/package.nix
index b4e77337f0a4..dd34321c81e6 100644
--- a/pkgs/by-name/tw/twiggy/package.nix
+++ b/pkgs/by-name/tw/twiggy/package.nix
@@ -11,7 +11,7 @@ rustPlatform.buildRustPackage rec {
     hash = "sha256-NbtS7A5Zl8634Q3xyjVzNraNszjt1uIXqmctArfnqkk=";
   };
 
-  cargoSha256 = "sha256-94pfhVZ0CNMn+lCl5O+wOyE+D6fVXbH4NAPx92nMNbM=";
+  cargoHash = "sha256-94pfhVZ0CNMn+lCl5O+wOyE+D6fVXbH4NAPx92nMNbM=";
 
   meta = with lib; {
     homepage = "https://rustwasm.github.io/twiggy/";
diff --git a/pkgs/by-name/ub/ubuntu-classic/package.nix b/pkgs/by-name/ub/ubuntu-classic/package.nix
index 23dabae70e22..edb10821d771 100644
--- a/pkgs/by-name/ub/ubuntu-classic/package.nix
+++ b/pkgs/by-name/ub/ubuntu-classic/package.nix
@@ -3,7 +3,6 @@
   stdenvNoCC,
   fetchgit,
   gitUpdater,
-  rename,
 }:
 
 stdenvNoCC.mkDerivation (finalAttrs: {
diff --git a/pkgs/by-name/ub/ubuntu-sans-mono/package.nix b/pkgs/by-name/ub/ubuntu-sans-mono/package.nix
index adc76824ef39..c74bc57395a5 100644
--- a/pkgs/by-name/ub/ubuntu-sans-mono/package.nix
+++ b/pkgs/by-name/ub/ubuntu-sans-mono/package.nix
@@ -8,13 +8,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "ubuntu-sans-mono";
-  version = "1.004";
+  version = "1.006";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "Ubuntu-Sans-Mono-fonts";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-IjfjFsXRYK2l6i4Q/LoYuwu5t18TmVXXJQDSsW45qNc=";
+    hash = "sha256-EFZZnMZTQHo2Tr9/rtb7C5gAlQ/0uYT+MQ1gKkqQ5hE=";
   };
 
   installPhase = ''
diff --git a/pkgs/by-name/uc/ucg/tests/simple.nix b/pkgs/by-name/uc/ucg/tests/simple.nix
index 09910d0829da..033f408ce1b7 100644
--- a/pkgs/by-name/uc/ucg/tests/simple.nix
+++ b/pkgs/by-name/uc/ucg/tests/simple.nix
@@ -1,5 +1,4 @@
-{ lib
-, stdenv
+{ stdenv
 , ucg
 }:
 
diff --git a/pkgs/by-name/un/unison/package.nix b/pkgs/by-name/un/unison/package.nix
index f512d775ea8d..400c73e105b4 100644
--- a/pkgs/by-name/un/unison/package.nix
+++ b/pkgs/by-name/un/unison/package.nix
@@ -56,7 +56,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://www.cis.upenn.edu/~bcpierce/unison/";
     description = "Bidirectional file synchronizer";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ viric nevivurn ];
+    maintainers = with maintainers; [ nevivurn ];
     platforms = platforms.unix;
     broken = stdenv.isDarwin && enableX11; # unison-gui and uimac are broken on darwin
     mainProgram = if enableX11 then "unison-gui" else "unison";
diff --git a/pkgs/by-name/up/updatecli/package.nix b/pkgs/by-name/up/updatecli/package.nix
index 2b509597d2d5..26e2f95cd990 100644
--- a/pkgs/by-name/up/updatecli/package.nix
+++ b/pkgs/by-name/up/updatecli/package.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "updatecli";
-  version = "0.78.0";
+  version = "0.80.0";
 
   src = fetchFromGitHub {
     owner = "updatecli";
     repo = "updatecli";
     rev = "v${version}";
-    hash = "sha256-VpMi+r7QUSD99PRzbTeIxXn1O9GdfHNJM1F0OBzvNmc=";
+    hash = "sha256-6TUgUUZ051PRRb8HSK2BBOPQWp9mh/b8c3vm4aBEdy4=";
   };
 
-  vendorHash = "sha256-Ji8r5c8LP7StGp/ve9RkQDeL21HBoK3Fln8LGBeqBpw=";
+  vendorHash = "sha256-K/s25VRIslhfaw3owmRx8ZakKneHgJJzPS9PqcR0ioo=";
 
   # tests require network access
   doCheck = false;
diff --git a/pkgs/by-name/ur/urban-cli/package.nix b/pkgs/by-name/ur/urban-cli/package.nix
new file mode 100644
index 000000000000..fb05c8e7686e
--- /dev/null
+++ b/pkgs/by-name/ur/urban-cli/package.nix
@@ -0,0 +1,32 @@
+{
+  lib,
+  buildGoModule,
+  fetchFromGitHub,
+}:
+
+buildGoModule rec {
+  pname = "urban-cli";
+  version = "0.2.4";
+
+  src = fetchFromGitHub {
+    owner = "tfkhdyt";
+    repo = "urban-cli";
+    rev = "v${version}";
+    hash = "sha256-URTEhtOiwb3IDyjRUtUmVTaeDXw4Beg0woWdGxeq098=";
+  };
+
+  vendorHash = "sha256-fEZzX+ecSWKITXczcwm5BGw5OWuixa4XKrEx8z0pxXQ=";
+
+  ldflags = [
+    "-s"
+    "-w"
+  ];
+
+  meta = {
+    description = "Blazingly fast command line interface for Urban Dictionary";
+    homepage = "https://github.com/tfkhdyt/urban-cli";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ tfkhdyt ];
+    mainProgram = "urban-cli";
+  };
+}
diff --git a/pkgs/by-name/us/ustr/package.nix b/pkgs/by-name/us/ustr/package.nix
index 0da93206752b..776f82103cb1 100644
--- a/pkgs/by-name/us/ustr/package.nix
+++ b/pkgs/by-name/us/ustr/package.nix
@@ -41,12 +41,12 @@ stdenv.mkDerivation (finalAttrs: {
     find $out/lib -name \*debug\* -delete
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "http://www.and.org/ustr/";
     description = "Micro String API for C language";
     mainProgram = "ustr-import";
-    license = licenses.bsd2;
+    license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ sigmanificient ];
-    platforms = platforms.linux;
+    platforms = lib.platforms.linux;
   };
 })
diff --git a/pkgs/by-name/uw/uwsm/package.nix b/pkgs/by-name/uw/uwsm/package.nix
new file mode 100644
index 000000000000..669cbd123a5a
--- /dev/null
+++ b/pkgs/by-name/uw/uwsm/package.nix
@@ -0,0 +1,71 @@
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  meson,
+  ninja,
+  scdoc,
+  pkg-config,
+  nix-update-script,
+  dmenu,
+  libnotify,
+  python3Packages,
+  util-linux,
+  fumonSupport ? true,
+  uuctlSupport ? true,
+  uwsmAppSupport ? true,
+}:
+let
+  python = python3Packages.python.withPackages (ps: [
+    ps.pydbus
+    ps.dbus-python
+    ps.pyxdg
+  ]);
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "uwsm";
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner = "Vladimir-csp";
+    repo = "uwsm";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-M2j7l5XTSS2IzaJofAHct1tuAO2A9Ps9mCgAWKEvzoE=";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    scdoc
+  ];
+
+  buildInputs = [
+    libnotify
+    util-linux
+  ] ++ (lib.optionals uuctlSupport [ dmenu ]);
+
+  propagatedBuildInputs = [ python ];
+
+  mesonFlags = [
+    "--prefix=${placeholder "out"}"
+    (lib.mapAttrsToList lib.mesonEnable {
+      "uwsm-app" = uwsmAppSupport;
+      "fumon" = fumonSupport;
+      "uuctl" = uuctlSupport;
+      "man-pages" = true;
+    })
+  ];
+
+  passthru = {
+    updateScript = nix-update-script { };
+  };
+
+  meta = {
+    description = "Universal wayland session manager";
+    homepage = "https://github.com/Vladimir-csp/uwsm";
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ johnrtitor ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/pkgs/by-name/ux/uxn/package.nix b/pkgs/by-name/ux/uxn/package.nix
index 0c6f291835a5..72ad80374b96 100644
--- a/pkgs/by-name/ux/uxn/package.nix
+++ b/pkgs/by-name/ux/uxn/package.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "uxn";
-  version = "1.0-unstable-2024-06-15";
+  version = "1.0-unstable-2024-07-26";
 
   src = fetchFromSourcehut {
     owner = "~rabbits";
     repo = "uxn";
-    rev = "1c74aa173147b19135f1bf21af5fb30f9b76e02d";
-    hash = "sha256-xhMXDAc/laQKZtYBFvFSyVtJv5AkvugV8olHmB6Mt4g=";
+    rev = "bf10311d5aad4184098c84a96845e30b1f53634d";
+    hash = "sha256-OVITP8AbWchcFaVOHkck8hwGlEl/TgtbtkApoKex4ig=";
   };
 
   outputs = [ "out" "projects" ];
diff --git a/pkgs/by-name/va/vatprism/0001-Fix-build-on-JDK-21.patch b/pkgs/by-name/va/vatprism/0001-Fix-build-on-JDK-21.patch
new file mode 100644
index 000000000000..6e6302662cfe
--- /dev/null
+++ b/pkgs/by-name/va/vatprism/0001-Fix-build-on-JDK-21.patch
@@ -0,0 +1,25 @@
+From 78e78dc10e2a4fd84ef0041d346d8f6d162f22c6 Mon Sep 17 00:00:00 2001
+From: ThePuzzlemaker <tpzker@thepuzzlemaker.info>
+Date: Wed, 24 Jul 2024 21:18:04 -0500
+Subject: [PATCH] Fix build on JDK 21+
+
+---
+ pom.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/pom.xml b/pom.xml
+index 5a3254b..42b1405 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -59,7 +59,7 @@
+         <maven.compiler.target>${java.version}</maven.compiler.target>
+ 
+         <java.version>15</java.version>
+-        <lombok.version>1.18.22</lombok.version>
++        <lombok.version>1.18.30</lombok.version>
+         <javafx.version>17.0.1</javafx.version>
+         <slf4j.version>1.7.32</slf4j.version>
+         <mvvmfx.version>1.9.0-SNAPSHOT</mvvmfx.version>
+-- 
+2.44.1
+
diff --git a/pkgs/by-name/va/vatprism/package.nix b/pkgs/by-name/va/vatprism/package.nix
new file mode 100644
index 000000000000..5995e26fefd2
--- /dev/null
+++ b/pkgs/by-name/va/vatprism/package.nix
@@ -0,0 +1,102 @@
+{
+  lib,
+  stdenv,
+  jdk,
+  maven,
+  makeWrapper,
+  fetchFromGitHub,
+  libGL,
+  libxkbcommon,
+  wayland,
+  fontconfig,
+  libX11,
+  libXcursor,
+  libXi,
+  libXrandr,
+  libXxf86vm,
+  libXtst,
+  copyDesktopItems,
+  makeDesktopItem,
+}:
+let
+  libPath = lib.makeLibraryPath [
+    libGL
+    libxkbcommon
+    wayland
+    libX11
+    libXcursor
+    libXi
+    libXrandr
+    libXxf86vm
+    libXtst
+    fontconfig
+  ];
+in
+maven.buildMavenPackage rec {
+  pname = "vatprism";
+  version = "0.3.5";
+  src = fetchFromGitHub {
+    owner = "marvk";
+    repo = "vatprism";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ofEwHUCm79roHe2bawmKFw2QHhIonnlkFG5nhE6uN+g=";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper
+    copyDesktopItems
+  ];
+  # https://github.com/marvk/vatprism/pull/141
+  patches = [ ./0001-Fix-build-on-JDK-21.patch ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "vatprism";
+      desktopName = "VATprism";
+      exec = "vatprism";
+      terminal = false;
+      icon = "vatprism";
+    })
+  ];
+
+  mvnHash =
+    if (stdenv.isLinux && stdenv.isAarch64) then
+      "sha256-x0nFt2C7dZqMdllI1+Io9SPBY2J/dVgBTVb9T24vFFI="
+    else
+      "sha256-9uyNCUqnMgpiwm2kz544pWNB/SkRpASm2Dln0e4yZos=";
+
+  installPhase = ''
+    runHook preInstall
+    # create the bin directory
+    mkdir -p $out/bin $out/share/icons/hicolor/256x256/apps
+
+    # copy out the JAR
+    # Maven already setup the classpath to use m2 repository layout
+    # with the prefix of lib/
+    cp target-fat-jar/vatsim-map-${version}-fat.jar $out/
+    cp src/main/resources/net/marvk/fs/vatsim/map/icon-256.png $out/share/icons/hicolor/256x256/apps/vatprism.png
+
+    # create a wrapper that will automatically set the classpath
+    # this should be the paths from the dependency derivation
+    makeWrapper ${jdk}/bin/java $out/bin/${pname} \
+        --add-flags "-jar $out/vatsim-map-${version}-fat.jar" \
+        --set JAVA_HOME ${jdk.home} \
+        --suffix LD_LIBRARY_PATH : ${libPath}
+    runHook postInstall
+  '';
+
+  meta = {
+    description = "VATSIM map and data explorer";
+    longDescription = ''
+      VATprism is a VATSIM Map and VATSIM Data Explorer, VATSIM being the
+      Virtual Air Traffic Simulation Network. VATprism allows users to explore
+      available ATC services, connected pilots, Airports, Flight and Upper
+      Information Regions and more!
+    '';
+    homepage = "https://vatprism.org/";
+    mainProgram = "vatprism";
+    license = lib.licenses.agpl3Plus;
+    platforms = lib.platforms.linux;
+    maintainers = with lib.maintainers; [ thepuzzlemaker ];
+  };
+}
diff --git a/pkgs/by-name/va/vaults/package.nix b/pkgs/by-name/va/vaults/package.nix
index 6e0f1078819b..d2cb90dc51d8 100644
--- a/pkgs/by-name/va/vaults/package.nix
+++ b/pkgs/by-name/va/vaults/package.nix
@@ -17,7 +17,6 @@
 , wayland
 , gocryptfs
 , cryfs
-, cmake
 }:
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/by-name/vc/vcluster/package.nix b/pkgs/by-name/vc/vcluster/package.nix
new file mode 100644
index 000000000000..bee814c8a0ca
--- /dev/null
+++ b/pkgs/by-name/vc/vcluster/package.nix
@@ -0,0 +1,74 @@
+{
+  buildGoModule,
+  fetchFromGitHub,
+  go,
+  installShellFiles,
+  lib,
+  nix-update-script,
+  testers,
+  vcluster,
+}:
+
+buildGoModule rec {
+  pname = "vcluster";
+  version = "0.19.7";
+
+  src = fetchFromGitHub {
+    owner = "loft-sh";
+    repo = "vcluster";
+    rev = "v${version}";
+    hash = "sha256-sO/kpbzoAy4ohmLZ3Q7+HzoC0NoK2y0qkJ6Ib8TlEns=";
+  };
+
+  vendorHash = null;
+
+  subPackages = [ "cmd/vclusterctl" ];
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X main.version=${version}"
+    "-X main.goVersion=${lib.getVersion go}"
+  ];
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  # Test is disabled because e2e tests expect k8s.
+  doCheck = false;
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin
+    install -Dm755 "$GOPATH/bin/vclusterctl" -T $out/bin/vcluster
+    runHook postInstall
+  '';
+
+  postInstall = ''
+    installShellCompletion --cmd vcluster \
+      --bash <($out/bin/vcluster completion bash) \
+      --fish <($out/bin/vcluster completion fish) \
+      --zsh <($out/bin/vcluster completion zsh)
+  '';
+
+  passthru.tests.version = testers.testVersion {
+    package = vcluster;
+    command = "vcluster --version";
+  };
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    changelog = "https://github.com/loft-sh/vcluster/releases/tag/v${version}";
+    description = "Create fully functional virtual Kubernetes clusters";
+    downloadPage = "https://github.com/loft-sh/vcluster";
+    homepage = "https://www.vcluster.com/";
+    license = lib.licenses.asl20;
+    mainProgram = "vcluster";
+    maintainers = with lib.maintainers; [
+      berryp
+      peterromfeldhk
+      qjoly
+      superherointj
+    ];
+  };
+}
diff --git a/pkgs/by-name/vc/vcpkg/package.nix b/pkgs/by-name/vc/vcpkg/package.nix
index 74e16ebf8465..f92719cb0cc7 100644
--- a/pkgs/by-name/vc/vcpkg/package.nix
+++ b/pkgs/by-name/vc/vcpkg/package.nix
@@ -27,6 +27,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
       --replace-fail "arm-linux-gnueabihf-as"  "armv7l-unknown-linux-gnueabihf-as" \
       --replace-fail "arm-linux-gnueabihf-gcc" "armv7l-unknown-linux-gnueabihf-gcc" \
       --replace-fail "arm-linux-gnueabihf-g++" "armv7l-unknown-linux-gnueabihf-g++"
+    # If we don’t turn this off, then you won’t be able to run binaries that
+    # are installed by vcpkg.
+    find triplets -name '*linux*.cmake' -exec bash -c 'echo "set(X_VCPKG_RPATH_KEEP_SYSTEM_PATHS ON)" >> "$1"' -- {} \;
   '';
 
   installPhase = ''
diff --git a/pkgs/by-name/vi/vidmerger/package.nix b/pkgs/by-name/vi/vidmerger/package.nix
index 7cdfaf2944d8..cf0412b42929 100644
--- a/pkgs/by-name/vi/vidmerger/package.nix
+++ b/pkgs/by-name/vi/vidmerger/package.nix
@@ -31,7 +31,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   meta = with lib; {
-    description = "Merge video & audio files via CLI ";
+    description = "Merge video & audio files via CLI";
     homepage = "https://github.com/TGotwig/vidmerger";
     license = with licenses; [ mit commons-clause ];
     maintainers = with maintainers; [ ByteSudoer ];
diff --git a/pkgs/by-name/vi/vieb/package.nix b/pkgs/by-name/vi/vieb/package.nix
index 707a0a0f5cbb..6927cb3e24af 100644
--- a/pkgs/by-name/vi/vieb/package.nix
+++ b/pkgs/by-name/vi/vieb/package.nix
@@ -1,4 +1,4 @@
-{ stdenv, buildNpmPackage, fetchFromGitHub, electron, makeWrapper, python3, makeDesktopItem, nix-update-script, lib }:
+{ stdenv, buildNpmPackage, fetchFromGitHub, electron, makeWrapper, python3, makeDesktopItem, lib }:
 
 buildNpmPackage rec {
   pname = "vieb";
diff --git a/pkgs/by-name/vl/vlc-bin/package.nix b/pkgs/by-name/vl/vlc-bin/package.nix
index d986353a2bda..275e768c7ea2 100644
--- a/pkgs/by-name/vl/vlc-bin/package.nix
+++ b/pkgs/by-name/vl/vlc-bin/package.nix
@@ -14,14 +14,14 @@
 assert builtins.elem variant [ "arm64" "intel64" "universal" ];
 stdenv.mkDerivation (finalAttrs: {
   pname = "vlc-bin-${variant}";
-  version = "3.0.20";
+  version = "3.0.21";
 
   src = fetchurl {
     url = "http://get.videolan.org/vlc/${finalAttrs.version}/macosx/vlc-${finalAttrs.version}-${variant}.dmg";
     hash = {
-      "arm64" = "sha256-XV8O5S2BmCpiL0AhkopktHBalVRJniDDPQusIlkLEY4=";
-      "intel64" = "sha256-pNwUQfyrjiuQxil0zlOZu4isv2xw1U8hxhWNn7H7onk=";
-      "universal" = "sha256-IqGPOWzMmHbGDV+0QxFslv19BC2J1Z5Qzcuja/Od1Us=";
+      "arm64" = "sha256-Fd1lv2SJ2p7Gpn9VhcdMQKWJk6z/QagpWKkW3XQXgEQ=";
+      "intel64" = "sha256-1DH9BRw9x68CvTE8bQXZDPYEtw7T7Fu6b9TEnvPmONk=";
+      "universal" = "sha256-UDgOVvgdYw41MUJqJlq/iz3ubAgiu3yeMLUyx9aaZcA=";
     }.${variant};
   };
 
diff --git a/pkgs/by-name/vw/vwsfriend/package.nix b/pkgs/by-name/vw/vwsfriend/package.nix
new file mode 100644
index 000000000000..42b65fd876a1
--- /dev/null
+++ b/pkgs/by-name/vw/vwsfriend/package.nix
@@ -0,0 +1,63 @@
+{
+  lib,
+  python3,
+  fetchFromGitHub,
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "vwsfriend";
+  version = "0.24.4";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "tillsteinbach";
+    repo = "VWsFriend";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-tt71J+UAIgYY/ac3ZyNDVTrnRvaKU+5WXVe///Hyv2U=";
+  };
+
+  sourceRoot = "${src.name}/vwsfriend";
+
+  postPatch = ''
+    # we don't need pytest-runner, pylint, etc.
+    true > setup_requirements.txt
+
+    substituteInPlace requirements.txt \
+      --replace-fail psycopg2-binary psycopg2
+  '';
+
+  build-system = with python3.pkgs; [ setuptools ];
+
+  pythonRelaxDeps = true;
+
+  dependencies =
+    with python3.pkgs;
+    [
+      weconnect
+      hap-python
+      pypng
+      sqlalchemy
+      psycopg2
+      requests
+      werkzeug
+      flask
+      flask-login
+      flask-caching
+      wtforms
+      flask-wtf
+      flask-sqlalchemy
+      alembic
+      haversine
+    ]
+    ++ weconnect.optional-dependencies.Images
+    ++ hap-python.optional-dependencies.QRCode;
+
+  meta = {
+    changelog = "https://github.com/tillsteinbach/VWsFriend/blob/${src.rev}/CHANGELOG.md";
+    description = "VW WeConnect visualization and control";
+    homepage = "https://github.com/tillsteinbach/VWsFriend";
+    license = lib.licenses.mit;
+    mainProgram = "vwsfriend";
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/pkgs/by-name/wa/waf/hook.nix b/pkgs/by-name/wa/waf/hook.nix
index f97a4ed22146..37757aec1888 100644
--- a/pkgs/by-name/wa/waf/hook.nix
+++ b/pkgs/by-name/wa/waf/hook.nix
@@ -1,6 +1,4 @@
-{ lib
-, pkgs
-, makeSetupHook
+{ makeSetupHook
 , waf
 }:
 
diff --git a/pkgs/by-name/wa/wakatime-cli/package.nix b/pkgs/by-name/wa/wakatime-cli/package.nix
index 8ca8064f07da..dd20ce1c2d82 100644
--- a/pkgs/by-name/wa/wakatime-cli/package.nix
+++ b/pkgs/by-name/wa/wakatime-cli/package.nix
@@ -47,11 +47,11 @@ buildGoModule rec {
     command = "HOME=$(mktemp -d) wakatime-cli --version";
   };
 
-  meta = with lib; {
+  meta = {
     homepage = "https://wakatime.com/";
     description = "WakaTime command line interface";
-    license = licenses.bsd3;
-    maintainers = with maintainers; [ sigmanificient ];
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ sigmanificient ];
     mainProgram = "wakatime-cli";
   };
 }
diff --git a/pkgs/by-name/wa/wapm/package.nix b/pkgs/by-name/wa/wapm/package.nix
index f93867c59d82..afaaed863d67 100644
--- a/pkgs/by-name/wa/wapm/package.nix
+++ b/pkgs/by-name/wa/wapm/package.nix
@@ -19,7 +19,7 @@ rustPlatform.buildRustPackage rec {
     sha256 = "sha256-T7YEe8xg5iwI/npisW0m+6FLi+eaAQVgYNe6TvMlhAs=";
   };
 
-  cargoSha256 = "sha256-r4123NJ+nxNOVIg6svWr636xbxOJQ7tp76JoAi2m9p8=";
+  cargoHash = "sha256-r4123NJ+nxNOVIg6svWr636xbxOJQ7tp76JoAi2m9p8=";
 
   nativeBuildInputs = [ perl ];
 
diff --git a/pkgs/by-name/wa/warp-terminal/versions.json b/pkgs/by-name/wa/warp-terminal/versions.json
index f8e8d51256b8..6181bb8a2cbe 100644
--- a/pkgs/by-name/wa/warp-terminal/versions.json
+++ b/pkgs/by-name/wa/warp-terminal/versions.json
@@ -1,10 +1,10 @@
 {
   "darwin": {
-    "hash": "sha256-ku1zQLrRDCvw8RJueWQb8rFJneW943mcPUJ5QB4SXzg=",
-    "version": "0.2024.07.09.08.01.stable_00"
+    "hash": "sha256-SNSWXDOmZAjPv33ioDOHSEflC6BKTmVAcAvc/Bn4VwE=",
+    "version": "0.2024.07.16.08.02.stable_03"
   },
   "linux": {
-    "hash": "sha256-EZrANAhkXukquQuCmfA/bIhQnJExE003WZuKU/axr98=",
-    "version": "0.2024.07.09.08.01.stable_00"
+    "hash": "sha256-rn97dcZ1XsQllzmQ9HbvLyvq5EsN42A5WHe1fVUjilY=",
+    "version": "0.2024.07.16.08.02.stable_03"
   }
 }
diff --git a/pkgs/by-name/wa/warpinator/package.nix b/pkgs/by-name/wa/warpinator/package.nix
index 0544858d66b7..c01cb066490e 100644
--- a/pkgs/by-name/wa/warpinator/package.nix
+++ b/pkgs/by-name/wa/warpinator/package.nix
@@ -36,13 +36,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "warpinator";
-  version = "1.8.5";
+  version = "1.8.6";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     rev = version;
-    hash = "sha256-PODQvdi4CARHOyDG0dal6ge8icyFnvJXOdhqEcbcrAk=";
+    hash = "sha256-GJp2iRB3F42pSfYd2FLpmDTZ1zqt8thdRPAHu9/ns5E=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/wi/windowmaker/dockapps/default.nix b/pkgs/by-name/wi/windowmaker/dockapps/default.nix
index 84cfe01bddf3..d927fd951fdf 100644
--- a/pkgs/by-name/wi/windowmaker/dockapps/default.nix
+++ b/pkgs/by-name/wi/windowmaker/dockapps/default.nix
@@ -1,4 +1,4 @@
-{ config, lib, pkgs }:
+{ lib, pkgs }:
 
 lib.makeScope pkgs.newScope (self: {
 
diff --git a/pkgs/by-name/wi/wiremock/package.nix b/pkgs/by-name/wi/wiremock/package.nix
index bd8300483052..75e4c30f64b4 100644
--- a/pkgs/by-name/wi/wiremock/package.nix
+++ b/pkgs/by-name/wi/wiremock/package.nix
@@ -10,11 +10,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "wiremock";
-  version = "3.8.0";
+  version = "3.9.1";
 
   src = fetchurl {
     url = "mirror://maven/org/wiremock/wiremock-standalone/${finalAttrs.version}/wiremock-standalone-${finalAttrs.version}.jar";
-    hash = "sha256-cEsa2xg8ZDb5/LQO5Gj+LCuV18D+LbEK7nrGT+cm158=";
+    hash = "sha256-cjqIDVDTsKFFrw3wfleMLLhed/6yIx5pkcmhNmkmkSw=";
   };
 
   dontUnpack = true;
diff --git a/pkgs/by-name/wl/wldash/package.nix b/pkgs/by-name/wl/wldash/package.nix
index ab45f201e8e6..5b2aa6b6825a 100644
--- a/pkgs/by-name/wl/wldash/package.nix
+++ b/pkgs/by-name/wl/wldash/package.nix
@@ -4,7 +4,6 @@
   dbus,
   fetchFromGitHub,
   fontconfig,
-  libffi,
   libpulseaudio,
   libxkbcommon,
   pkg-config,
@@ -57,7 +56,7 @@ rustPlatform.buildRustPackage {
     ./0002-Update-fontconfig.patch
   ];
 
-  cargoSha256 = "sha256-Y7nhj8VpO6sEzVkM3uPv8Tlk2jPn3c/uPJqFc/HjHI0=";
+  cargoHash = "sha256-Y7nhj8VpO6sEzVkM3uPv8Tlk2jPn3c/uPJqFc/HjHI0=";
 
   dontPatchELF = true;
 
diff --git a/pkgs/by-name/wr/wrangler/package.nix b/pkgs/by-name/wr/wrangler/package.nix
index a6c19c4125e9..618dfdfb0277 100644
--- a/pkgs/by-name/wr/wrangler/package.nix
+++ b/pkgs/by-name/wr/wrangler/package.nix
@@ -12,18 +12,18 @@
 }:
 stdenv.mkDerivation (finalAttrs: {
   pname = "wrangler";
-  version = "3.62.0";
+  version = "3.66.0";
 
   src = fetchFromGitHub {
     owner = "cloudflare";
     repo = "workers-sdk";
     rev = "wrangler@${finalAttrs.version}";
-    hash = "sha256-/4iIkvSn85fkRggmIha2kRlW0MEwvzy0ZAmIb8+LpZQ=";
+    hash = "sha256-YY+wp9rmXDWeSvdMC6FQyuDf8XP3GhHeHuFe9q0uNng=";
   };
 
   pnpmDeps = pnpm_9.fetchDeps {
     inherit (finalAttrs) pname version src;
-    hash = "sha256-aTTaiGXm1WYwmy+ljUC9yO3qtvN20SA+24T83dWYrI0=";
+    hash = "sha256-BjSpgkDYafnDb0SBdL3B6IYWT4EOqCAxdDm+Ev6QIgw=";
   };
 
   buildInputs = [
@@ -84,6 +84,7 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with lib.maintainers; [
       seanrmurphy
       dezren39
+      ryand56
     ];
     mainProgram = "wrangler";
     # cpp is required for building workerd.
diff --git a/pkgs/by-name/wt/wttrbar/package.nix b/pkgs/by-name/wt/wttrbar/package.nix
index 370630423c78..d4e41919c569 100644
--- a/pkgs/by-name/wt/wttrbar/package.nix
+++ b/pkgs/by-name/wt/wttrbar/package.nix
@@ -8,18 +8,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wttrbar";
-  version = "0.10.4";
+  version = "0.10.5";
 
   src = fetchFromGitHub {
     owner = "bjesus";
     repo = "wttrbar";
     rev = version;
-    hash = "sha256-2DaFbwzxpV5vNOey9me/Tj5t9idszTZHoj1cl4RkoeE=";
+    hash = "sha256-u+JrmpXDH+9tsjATs6xLjjQmuBWCuE9daPlJUWfcm+A=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Security SystemConfiguration ]);
 
-  cargoHash = "sha256-rbsRW+c3rzHCMwFQAS22tIfbwudaqpVmRsGXFKOEWkQ=";
+  cargoHash = "sha256-UUIDiTXGWezbPVjz5OqFivnmLaIJ/yZYBgob4CAt43s=";
 
   passthru.updateScript = nix-update-script { };
 
diff --git a/pkgs/by-name/wv/wvdial/package.nix b/pkgs/by-name/wv/wvdial/package.nix
new file mode 100644
index 000000000000..c71addca1a9b
--- /dev/null
+++ b/pkgs/by-name/wv/wvdial/package.nix
@@ -0,0 +1,44 @@
+{
+  stdenv,
+  fetchFromGitea,
+  fetchpatch,
+  wvstreams,
+  pkg-config,
+  lib,
+}:
+
+stdenv.mkDerivation {
+  pname = "wvdial";
+  version = "unstable-2016-06-15";
+
+  src = fetchFromGitea {
+    domain = "gitea.osmocom.org";
+    owner = "retronetworking";
+    repo = "wvdial";
+    rev = "42d084173cc939586c1963b8835cb00ec56b2823";
+    hash = "sha256-q7pFvpJvv+ZvbN4xxolI9ZRULr+N5sqO9BOXUqSG5v4=";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://git.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvdial/typo_pon.wvdial.1.patch?h=73a68490efe05cdbec540ec6f17782816632a24d";
+      hash = "sha256-fsneoB5GeKH/nxwW0z8Mk6892PtnZ3J77wP4BGo3Tj8=";
+    })
+  ];
+
+  buildInputs = [ wvstreams ];
+  nativeBuildInputs = [ pkg-config ];
+
+  makeFlags = [
+    "prefix=${placeholder "out"}"
+    "PPPDIR=${placeholder "out"}/etc/ppp/peers"
+  ];
+
+  meta = {
+    description = "A dialer that automatically recognises the modem";
+    homepage = "https://gitea.osmocom.org/retronetworking/wvdial";
+    license = lib.licenses.lgpl2;
+    maintainers = with lib.maintainers; [ flokli ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/wv/wvstreams/package.nix b/pkgs/by-name/wv/wvstreams/package.nix
new file mode 100644
index 000000000000..347b67313048
--- /dev/null
+++ b/pkgs/by-name/wv/wvstreams/package.nix
@@ -0,0 +1,110 @@
+{
+  stdenv,
+  fetchpatch,
+  fetchurl,
+  dbus,
+  zlib,
+  openssl,
+  readline,
+  lib,
+  perl,
+}:
+
+stdenv.mkDerivation {
+  pname = "wvstreams";
+  version = "4.6.1";
+
+  # See https://layers.openembedded.org/layerindex/recipe/190863/
+  src = fetchurl {
+    url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/wvstreams/wvstreams-4.6.1.tar.gz";
+    hash = "sha256-hAP1+/g6qawMbOFdl/2FYHSIFSqoTgB7fQYhuOvAdjM=";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/04_signed_request.diff?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-zlPiME+KYjesmKt3a+JoE087qE1MbnlVPjC75qQoIks=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/05_gcc.diff?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-Twqk0J8E05kAvhHjAoAuYEpS445t3mb/BvuxTmaaGoM=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/06_gcc-4.7.diff?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-JMPNUdfAJ/gq+am/F1DE2q3+35ItiLAve1+LLl8+Oe4=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/07_buildflags.diff?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-N3HmuBakD5VHoToOqU6EmTHlgFG6A7x84Gbf2P2u+s8=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/gcc-6.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-fXhBUKaHD27mspwrKNY5G7F6UHqq/dmnPlf9cIvM7hM=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/argp.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-55vWFfd/SDa9dE+GmSHDMU2kTrn+tNUW2clPknSdi7g=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Check-for-limits.h-during-configure.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-XRJCZMnygcQie9sUc1iCe9HVE9lEFCed4JRDtd/C/84=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0003-wvtask-Check-for-HAVE_LIBC_STACK_END-only-on-glibc-s.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-v0WAFyWwQ70dpq1BEXQjkOrdUUk4tBFJVKeHffs4FmA=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0004-wvcrash-Replace-use-of-basename-API.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-1UZziDaE0BCM/YmYjBgFA2Q8zfnWpQcal08a0qcClmo=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0005-check-for-libexecinfo-during-configure.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-4Ad10pijea/qusrdCJAEjpc1/qfQNE32t/M2YMk5jNg=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-build-fix-parallel-make.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-zWREskvLoAH2sYn6kbemTC1V5KrF9jX0B0d+ASExQBA=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0002-wvrules.mk-Use-_DEFAULT_SOURCE.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-ACiuwqwg5nUbzqoJR5h9GENXmN3ELzkBjujZivBoM4g=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/openssl-buildfix.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-pMHopuBEge7Llq1Syb8sZJArhUOWBNmcOvVcNtFgnbA=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Forward-port-to-OpenSSL-1.1.x.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-R5pfYxefEvvxB1k+gZzRQgsbmkgpK9cBqZxCXHQnQlM=";
+    })
+    (fetchpatch {
+      url = "https://cgit.openembedded.org/meta-openembedded/plain/meta-oe/recipes-connectivity/wvdial/wvstreams/0001-Fix-narrowing-conversion-error.patch?id=0e6c34f82ca4d43cbca3754c5fe37c5b3bdd0f37";
+      hash = "sha256-esCD7jMVxD1sC2C4jx+pnnIWHpXAVGF/CGXvwHc9rhU=";
+    })
+  ];
+
+  outputs = [
+    "bin"
+    "dev"
+    "lib"
+    "out"
+  ];
+
+  enableParallelBuilding = true;
+
+  buildInputs = [
+    dbus
+    zlib
+    openssl
+    readline
+    perl
+  ];
+
+  meta = {
+    description = "Network programming library in C++";
+    homepage = "http://alumnit.ca/wiki/index.php?page=WvStreams";
+    license = lib.licenses.lgpl2;
+    maintainers = [ lib.maintainers.flokli ];
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/pkgs/by-name/x5/x509-limbo/package.nix b/pkgs/by-name/x5/x509-limbo/package.nix
index 239f1c85e300..0971d8b6cd45 100644
--- a/pkgs/by-name/x5/x509-limbo/package.nix
+++ b/pkgs/by-name/x5/x509-limbo/package.nix
@@ -1,7 +1,6 @@
 { lib
 , fetchFromGitHub
 , python3
-, x509-limbo
 }:
 
 python3.pkgs.buildPythonPackage {
@@ -39,7 +38,7 @@ python3.pkgs.buildPythonPackage {
 
   meta = with lib; {
     homepage = "https://x509-limbo.com/";
-    description = "Suite of testvectors for X.509 certificate path validation and tools for building them ";
+    description = "Suite of testvectors for X.509 certificate path validation and tools for building them";
     mainProgram = "limbo";
 
     license = licenses.asl20;
diff --git a/pkgs/by-name/xa/xapp/package.nix b/pkgs/by-name/xa/xapp/package.nix
index d6f4536eef8b..a483513d30ef 100644
--- a/pkgs/by-name/xa/xapp/package.nix
+++ b/pkgs/by-name/xa/xapp/package.nix
@@ -22,7 +22,7 @@
 
 stdenv.mkDerivation rec {
   pname = "xapp";
-  version = "2.8.4";
+  version = "2.8.5";
 
   outputs = [ "out" "dev" ];
 
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     owner = "linuxmint";
     repo = pname;
     rev = version;
-    hash = "sha256-Q82UI2GEv2g01pcrvn8JBOf9FgjbG0c1qfSINx0CouQ=";
+    hash = "sha256-HGWaa1S+maphP9colWdWSzGyoA0f4vJkF889X5/rzvs=";
   };
 
   # Recommended by upstream, which enables the build of xapp-debug.
diff --git a/pkgs/by-name/xe/xed-editor/package.nix b/pkgs/by-name/xe/xed-editor/package.nix
index 4078721a085f..35dc31e9e46c 100644
--- a/pkgs/by-name/xe/xed-editor/package.nix
+++ b/pkgs/by-name/xe/xed-editor/package.nix
@@ -20,13 +20,13 @@
 
 stdenv.mkDerivation rec {
   pname = "xed-editor";
-  version = "3.6.5";
+  version = "3.6.6";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = "xed";
     rev = version;
-    sha256 = "sha256-FG8SlMyhee0W88Pt3oW1tsFyy/KeCOE+QlDbE6hzjcg=";
+    sha256 = "sha256-Lpdv8mX3GDzXH1FGGdmgK9b8P3EY7ETuEhGfSwc6IIE=";
   };
 
   patches = [
diff --git a/pkgs/by-name/xe/xemu/package.nix b/pkgs/by-name/xe/xemu/package.nix
index a9688b69f7f8..2d4ed56d9564 100644
--- a/pkgs/by-name/xe/xemu/package.nix
+++ b/pkgs/by-name/xe/xemu/package.nix
@@ -27,14 +27,14 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "xemu";
-  version = "0.7.128";
+  version = "0.7.131";
 
   src = fetchFromGitHub {
     owner = "xemu-project";
     repo = "xemu";
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-gJ5Da7bn4I7EOK12zqjekOJn+299v8WqH8e68GYUKpQ=";
+    hash = "sha256-xupCEqTovrEA7qEEr9nBjO7iIbTeXv59cg99W6Nc/54=";
   };
 
   nativeBuildInputs =
diff --git a/pkgs/by-name/xm/xmldiff/package.nix b/pkgs/by-name/xm/xmldiff/package.nix
index 1cacb6ac278c..dc0885a71f3f 100644
--- a/pkgs/by-name/xm/xmldiff/package.nix
+++ b/pkgs/by-name/xm/xmldiff/package.nix
@@ -32,7 +32,7 @@ python3.pkgs.buildPythonApplication {
       computer readable data, it is also often used as a format for hierarchical
       data that can be rendered into human readable formats. A traditional diff
       on such a format would tell you line by line the differences, but this
-      would not be be readable by a human. xmldiff provides tools to make human
+      would not be readable by a human. xmldiff provides tools to make human
       readable diffs in those situations.
     '';
     license = lib.licenses.mit;
diff --git a/pkgs/by-name/xr/xreader/package.nix b/pkgs/by-name/xr/xreader/package.nix
index 94386d42815f..08ea7ad793ae 100644
--- a/pkgs/by-name/xr/xreader/package.nix
+++ b/pkgs/by-name/xr/xreader/package.nix
@@ -27,13 +27,13 @@
 
 stdenv.mkDerivation rec {
   pname = "xreader";
-  version = "4.2.1";
+  version = "4.2.2";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     rev = version;
-    sha256 = "sha256-+q0fZA72m5T5ZB6bYWPWdQGxLpwjNp5Vak2TzaGwGWQ=";
+    sha256 = "sha256-c3oZ+PAsu180mlriQlF86TCBAnehLBv9Nc0SCtSkUuQ=";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/by-name/xv/xviewer/package.nix b/pkgs/by-name/xv/xviewer/package.nix
index a00ef0bf6efe..365988ede268 100644
--- a/pkgs/by-name/xv/xviewer/package.nix
+++ b/pkgs/by-name/xv/xviewer/package.nix
@@ -20,20 +20,20 @@
 , pkg-config
 , python3
 , wrapGAppsHook3
-, cinnamon
+, cinnamon-desktop
 , yelp-tools
 , xapp
 }:
 
 stdenv.mkDerivation rec {
   pname = "xviewer";
-  version = "3.4.5";
+  version = "3.4.6";
 
   src = fetchFromGitHub {
     owner = "linuxmint";
     repo = pname;
     rev = version;
-    sha256 = "sha256-J6KDkGPbcRBofsJVmd+1IEapSfSd3ftjz0AggvBI8ck=";
+    sha256 = "sha256-J1IlgHKyNGJTn1sIU3q02eTgWqyeRm2leFIhtKPIdhg=";
   };
 
   nativeBuildInputs = [
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
   ];
 
   buildInputs = [
-    cinnamon.cinnamon-desktop
+    cinnamon-desktop
     exempi
     gdk-pixbuf
     glib
diff --git a/pkgs/by-name/ya/yamlscript/package.nix b/pkgs/by-name/ya/yamlscript/package.nix
index 587bbccdbacc..08960e07be13 100644
--- a/pkgs/by-name/ya/yamlscript/package.nix
+++ b/pkgs/by-name/ya/yamlscript/package.nix
@@ -2,11 +2,11 @@
 
 buildGraalvmNativeImage rec {
   pname = "yamlscript";
-  version = "0.1.66";
+  version = "0.1.68";
 
   src = fetchurl {
     url = "https://github.com/yaml/yamlscript/releases/download/${version}/yamlscript.cli-${version}-standalone.jar";
-    hash = "sha256-FsSMH4kdfMjWe3sMsCkdTf5bhYX0abqGOQvNdHYBu80=";
+    hash = "sha256-NeiG8o5Le549kYILw9vA1EmQ1PcHjCAdwQAnKdYNMwk=";
   };
 
   executable = "ys";
diff --git a/pkgs/by-name/ya/yazi-unwrapped/package.nix b/pkgs/by-name/ya/yazi-unwrapped/package.nix
index a9b89f1bd870..68b15123b946 100644
--- a/pkgs/by-name/ya/yazi-unwrapped/package.nix
+++ b/pkgs/by-name/ya/yazi-unwrapped/package.nix
@@ -7,8 +7,6 @@
   stdenv,
   Foundation,
   rust-jemalloc-sys,
-
-  nix-update-script,
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -25,6 +23,8 @@ rustPlatform.buildRustPackage rec {
   cargoHash = "sha256-qnbinuTuaPiD7ib3aCJzSwuA4s3naFzi+txqX7jkHIo=";
 
   env.YAZI_GEN_COMPLETIONS = true;
+  env.VERGEN_GIT_SHA = "Nixpkgs";
+  env.VERGEN_BUILD_DATE = "2024-04-23";
 
   # TODO: remove in the next release
   cargoBuildFlags = [
@@ -47,7 +47,7 @@ rustPlatform.buildRustPackage rec {
     install -Dm444 assets/logo.png $out/share/pixmaps/yazi.png
   '';
 
-  passthru.updateScript = nix-update-script { };
+  passthru.updateScript.command = [ ./update.sh ];
 
   meta = {
     description = "Blazing fast terminal file manager written in Rust, based on async I/O";
diff --git a/pkgs/by-name/ya/yazi-unwrapped/update.sh b/pkgs/by-name/ya/yazi-unwrapped/update.sh
new file mode 100755
index 000000000000..e87b94dfc241
--- /dev/null
+++ b/pkgs/by-name/ya/yazi-unwrapped/update.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p bash nix-update curl coreutils jq common-updater-scripts nix-prefetch
+
+set -eux
+
+NIXPKGS_DIR="$PWD"
+SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")"
+
+# Get latest release
+YAZI_RELEASE=$(
+    curl --silent ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
+        https://api.github.com/repos/sxyazi/yazi/releases/latest
+)
+
+# Get release information
+latestBuildDate=$(echo "$YAZI_RELEASE" | jq -r ".published_at")
+latestVersion=$(echo "$YAZI_RELEASE" | jq -r ".tag_name")
+
+latestBuildDate="${latestBuildDate%T*}" # remove the timestamp and get the date
+latestVersion="${latestVersion:1}"      # remove first char 'v'
+
+oldVersion=$(nix eval --raw -f "$NIXPKGS_DIR" yazi-unwrapped.version)
+
+if [[ "$oldVersion" == "$latestVersion" ]]; then
+    echo "Yazi is up-to-date: ${oldVersion}"
+    exit 0
+fi
+
+echo "Updating Yazi"
+
+# Version
+update-source-version yazi-unwrapped "${latestVersion}"
+
+pushd "$SCRIPT_DIR"
+# Build date
+sed -i 's#env.VERGEN_BUILD_DATE = "[^"]*"#env.VERGEN_BUILD_DATE = "'"${latestBuildDate}"'"#' package.nix
+
+# Hashes
+cargoHash=$(nix-prefetch "{ sha256 }: (import $NIXPKGS_DIR {}).yazi-unwrapped.cargoDeps.overrideAttrs (_: { outputHash = sha256; })")
+sed -i -E 's#\bcargoHash = ".*?"#cargoHash = "'"$cargoHash"'"#' package.nix
+popd
diff --git a/pkgs/by-name/ye/yeswiki/package.nix b/pkgs/by-name/ye/yeswiki/package.nix
index 64ccd4353525..0e0562eaf52a 100644
--- a/pkgs/by-name/ye/yeswiki/package.nix
+++ b/pkgs/by-name/ye/yeswiki/package.nix
@@ -1,5 +1,4 @@
 {
-  lib,
   stdenv,
   fetchurl,
   unzip,
diff --git a/pkgs/by-name/yt/yt-dlp/package.nix b/pkgs/by-name/yt/yt-dlp/package.nix
new file mode 100644
index 000000000000..f61baab5e190
--- /dev/null
+++ b/pkgs/by-name/yt/yt-dlp/package.nix
@@ -0,0 +1,86 @@
+{ lib
+, python3Packages
+, fetchPypi
+, ffmpeg-headless
+, rtmpdump
+, atomicparsley
+, atomicparsleySupport ? true
+, ffmpegSupport ? true
+, rtmpSupport ? true
+, withAlias ? false # Provides bin/youtube-dl for backcompat
+, update-python-libraries
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "yt-dlp";
+  # The websites yt-dlp deals with are a very moving target. That means that
+  # downloads break constantly. Because of that, updates should always be backported
+  # to the latest stable release.
+  version = "2024.7.25";
+  pyproject = true;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "yt_dlp";
+    hash = "sha256-dYeqJeI2z3sUvbk3i7//9RIC2QGwQgK+DPYsu1bTtSw=";
+  };
+
+  build-system = with python3Packages; [
+    hatchling
+  ];
+
+  dependencies = with python3Packages; [
+    brotli
+    certifi
+    curl-cffi
+    mutagen
+    pycryptodomex
+    requests
+    secretstorage  # "optional", as in not in requirements.txt, needed for `--cookies-from-browser`
+    urllib3
+    websockets
+  ];
+
+  # Ensure these utilities are available in $PATH:
+  # - ffmpeg: post-processing & transcoding support
+  # - rtmpdump: download files over RTMP
+  # - atomicparsley: embedding thumbnails
+  makeWrapperArgs =
+    let
+      packagesToBinPath = []
+        ++ lib.optional atomicparsleySupport atomicparsley
+        ++ lib.optional ffmpegSupport ffmpeg-headless
+        ++ lib.optional rtmpSupport rtmpdump;
+    in lib.optionals (packagesToBinPath != [])
+    [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ];
+
+  setupPyBuildFlags = [
+    "build_lazy_extractors"
+  ];
+
+  # Requires network
+  doCheck = false;
+
+  postInstall = lib.optionalString withAlias ''
+    ln -s "$out/bin/yt-dlp" "$out/bin/youtube-dl"
+  '';
+
+  passthru.updateScript = [ update-python-libraries (toString ./.) ];
+
+  meta = with lib; {
+    homepage = "https://github.com/yt-dlp/yt-dlp/";
+    description = "Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork)";
+    longDescription = ''
+      yt-dlp is a youtube-dl fork based on the now inactive youtube-dlc.
+
+      youtube-dl is a small, Python-based command-line program
+      to download videos from YouTube.com and a few more sites.
+      youtube-dl is released to the public domain, which means
+      you can modify it, redistribute it or use it however you like.
+    '';
+    changelog = "https://github.com/yt-dlp/yt-dlp/releases/tag/${version}";
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ mkg20001 SuperSandro2000 ];
+    mainProgram = "yt-dlp";
+  };
+}
diff --git a/pkgs/by-name/yu/yunfaavatar/package.nix b/pkgs/by-name/yu/yunfaavatar/package.nix
index 369f89d7c888..410893df44d1 100644
--- a/pkgs/by-name/yu/yunfaavatar/package.nix
+++ b/pkgs/by-name/yu/yunfaavatar/package.nix
@@ -2,7 +2,6 @@
   lib,
   stdenvNoCC,
   fetchFromGitHub,
-  bash,
   imagemagick,
   makeWrapper,
 }:
diff --git a/pkgs/by-name/za/zabbix-agent2-plugin-postgresql/package.nix b/pkgs/by-name/za/zabbix-agent2-plugin-postgresql/package.nix
index f8bf2cfc6cf7..da499f9f7157 100644
--- a/pkgs/by-name/za/zabbix-agent2-plugin-postgresql/package.nix
+++ b/pkgs/by-name/za/zabbix-agent2-plugin-postgresql/package.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchurl, pkg-config }:
+{ lib, buildGoModule, fetchurl }:
 
 buildGoModule rec {
   pname = "zabbix-agent2-plugin-postgresql";
diff --git a/pkgs/by-name/ze/zed-editor/Cargo.lock b/pkgs/by-name/ze/zed-editor/Cargo.lock
index 4488e24f16a3..35a55b81023d 100644
--- a/pkgs/by-name/ze/zed-editor/Cargo.lock
+++ b/pkgs/by-name/ze/zed-editor/Cargo.lock
@@ -35,12 +35,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
-name = "adler32"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
-
-[[package]]
 name = "aes"
 version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -93,7 +87,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f6d1ea4484c8676f295307a4892d478c70ac8da1dbd8c7c10830a504b7f1022f"
 dependencies = [
  "base64 0.22.0",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "home",
  "libc",
  "log",
@@ -116,7 +110,7 @@ version = "0.24.1-dev"
 source = "git+https://github.com/alacritty/alacritty?rev=cacdb5bb3b72bad2c729227537979d95af75978f#cacdb5bb3b72bad2c729227537979d95af75978f"
 dependencies = [
  "base64 0.22.0",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "home",
  "libc",
  "log",
@@ -140,6 +134,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
 
 [[package]]
+name = "aligned-vec"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1"
+
+[[package]]
 name = "allocator-api2"
 version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -285,6 +285,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110"
 
 [[package]]
+name = "arg_enum_proc_macro"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.59",
+]
+
+[[package]]
 name = "arrayref"
 version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -330,9 +341,9 @@ dependencies = [
 
 [[package]]
 name = "ashpd"
-version = "0.8.1"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093"
+checksum = "bfe7e0dd0ac5a401dc116ed9f9119cf9decc625600474cb41f0fc0a0050abc9a"
 dependencies = [
  "async-fs 2.1.1",
  "async-net 2.0.0",
@@ -362,6 +373,8 @@ dependencies = [
  "anthropic",
  "anyhow",
  "assistant_slash_command",
+ "async-watch",
+ "breadcrumbs",
  "cargo_toml",
  "chrono",
  "client",
@@ -370,14 +383,15 @@ dependencies = [
  "ctor",
  "editor",
  "env_logger",
- "file_icons",
+ "feature_flags",
  "fs",
  "futures 0.3.28",
  "fuzzy",
  "gpui",
  "heed",
- "html_to_markdown",
+ "html_to_markdown 0.1.0",
  "http 0.1.0",
+ "indexed_docs",
  "indoc",
  "language",
  "log",
@@ -393,7 +407,6 @@ dependencies = [
  "rand 0.8.5",
  "regex",
  "rope",
- "rustdoc",
  "schemars",
  "search",
  "semantic_index",
@@ -405,6 +418,8 @@ dependencies = [
  "strsim 0.11.1",
  "strum",
  "telemetry_events",
+ "terminal",
+ "terminal_view",
  "theme",
  "tiktoken-rs",
  "toml 0.8.10",
@@ -873,6 +888,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "async-watch"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a078faf4e27c0c6cc0efb20e5da59dcccc04968ebf2801d8e0b2195124cdcdb2"
+dependencies = [
+ "event-listener 2.5.3",
+]
+
+[[package]]
 name = "async_zip"
 version = "0.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -976,6 +1000,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
+name = "av1-grain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf"
+dependencies = [
+ "anyhow",
+ "arrayvec",
+ "log",
+ "nom",
+ "num-rational",
+ "v_frame",
+]
+
+[[package]]
+name = "avif-serialize"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2"
+dependencies = [
+ "arrayvec",
+]
+
+[[package]]
 name = "aws-config"
 version = "1.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1421,7 +1468,7 @@ dependencies = [
  "cc",
  "cfg-if",
  "libc",
- "miniz_oxide 0.7.1",
+ "miniz_oxide",
  "object",
  "rustc-demangle",
 ]
@@ -1535,7 +1582,16 @@ version = "0.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1"
 dependencies = [
- "bit-vec",
+ "bit-vec 0.6.3",
+]
+
+[[package]]
+name = "bit-set"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0481a0e032742109b1133a095184ee93d88f3dc9e0d28a5d033dc77a073f44f"
+dependencies = [
+ "bit-vec 0.7.0",
 ]
 
 [[package]]
@@ -1545,6 +1601,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb"
 
 [[package]]
+name = "bit-vec"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2c54ff287cfc0a34f38a6b832ea1bd8e448a330b3e40a50859e6488bee07f22"
+
+[[package]]
+name = "bit_field"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61"
+
+[[package]]
 name = "bitflags"
 version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1552,14 +1620,20 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.2"
+version = "2.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
 dependencies = [
  "serde",
 ]
 
 [[package]]
+name = "bitstream-io"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "415f8399438eb5e4b2f73ed3152a3448b98149dda642a957ee704e1daa5cf1d8"
+
+[[package]]
 name = "bitvec"
 version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1574,11 +1648,11 @@ dependencies = [
 [[package]]
 name = "blade-graphics"
 version = "0.4.0"
-source = "git+https://github.com/zed-industries/blade?rev=33fd51359d113c03b785e28f4a6cf75bacb0b26d#33fd51359d113c03b785e28f4a6cf75bacb0b26d"
+source = "git+https://github.com/zed-industries/blade?rev=a477c2008db27db0b9f745715e119b3ee7ab7818#a477c2008db27db0b9f745715e119b3ee7ab7818"
 dependencies = [
  "ash",
  "ash-window",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "block",
  "bytemuck",
  "codespan-reporting",
@@ -1604,7 +1678,7 @@ dependencies = [
 [[package]]
 name = "blade-macros"
 version = "0.2.1"
-source = "git+https://github.com/zed-industries/blade?rev=33fd51359d113c03b785e28f4a6cf75bacb0b26d#33fd51359d113c03b785e28f4a6cf75bacb0b26d"
+source = "git+https://github.com/zed-industries/blade?rev=a477c2008db27db0b9f745715e119b3ee7ab7818#a477c2008db27db0b9f745715e119b3ee7ab7818"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1614,7 +1688,7 @@ dependencies = [
 [[package]]
 name = "blade-util"
 version = "0.1.0"
-source = "git+https://github.com/zed-industries/blade?rev=33fd51359d113c03b785e28f4a6cf75bacb0b26d#33fd51359d113c03b785e28f4a6cf75bacb0b26d"
+source = "git+https://github.com/zed-industries/blade?rev=a477c2008db27db0b9f745715e119b3ee7ab7818#a477c2008db27db0b9f745715e119b3ee7ab7818"
 dependencies = [
  "blade-graphics",
  "bytemuck",
@@ -1741,6 +1815,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "built"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6a6c0b39c38fd754ac338b00a88066436389c0f029da5d37d1e01091d9b7c17"
+
+[[package]]
 name = "bumpalo"
 version = "3.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1795,6 +1875,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
 
 [[package]]
+name = "byteorder-lite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
+
+[[package]]
 name = "bytes"
 version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1850,7 +1936,7 @@ version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "log",
  "polling 3.3.2",
  "rustix 0.38.32",
@@ -2023,6 +2109,16 @@ dependencies = [
 ]
 
 [[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"
@@ -2212,6 +2308,7 @@ dependencies = [
  "fork",
  "ipc-channel",
  "once_cell",
+ "parking_lot",
  "paths",
  "plist",
  "release_channel",
@@ -2279,6 +2376,7 @@ dependencies = [
  "futures 0.3.28",
  "gpui",
  "http 0.1.0",
+ "isahc",
  "lazy_static",
  "log",
  "once_cell",
@@ -2470,18 +2568,13 @@ name = "collab_ui"
 version = "0.1.0"
 dependencies = [
  "anyhow",
- "auto_update",
  "call",
  "channel",
  "client",
  "collections",
- "command_palette",
  "db",
- "dev_server_projects",
  "editor",
  "emojis",
- "extensions_ui",
- "feedback",
  "futures 0.3.28",
  "fuzzy",
  "gpui",
@@ -2494,7 +2587,6 @@ dependencies = [
  "picker",
  "pretty_assertions",
  "project",
- "recent_projects",
  "release_channel",
  "rich_text",
  "rpc",
@@ -2506,15 +2598,14 @@ dependencies = [
  "smallvec",
  "story",
  "theme",
- "theme_selector",
  "time",
  "time_format",
+ "title_bar",
  "tree-sitter-markdown",
  "ui",
  "util",
  "vcs_menu",
  "workspace",
- "zed_actions",
 ]
 
 [[package]]
@@ -2780,7 +2871,7 @@ name = "cosmic-text"
 version = "0.11.2"
 source = "git+https://github.com/pop-os/cosmic-text?rev=542b20c#542b20ca4376a3b5de5fa629db1a4ace44e18e0c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "fontdb",
  "log",
  "rangemap",
@@ -3226,16 +3317,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "deflate"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174"
-dependencies = [
- "adler32",
- "byteorder",
-]
-
-[[package]]
 name = "deflate64"
 version = "0.1.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3818,6 +3899,22 @@ dependencies = [
 ]
 
 [[package]]
+name = "exr"
+version = "1.72.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
+dependencies = [
+ "bit_field",
+ "flume",
+ "half",
+ "lebe",
+ "miniz_oxide",
+ "rayon-core",
+ "smallvec",
+ "zune-inflate",
+]
+
+[[package]]
 name = "extension"
 version = "0.1.0"
 dependencies = [
@@ -3835,6 +3932,7 @@ dependencies = [
  "futures 0.3.28",
  "gpui",
  "http 0.1.0",
+ "indexed_docs",
  "isahc",
  "language",
  "log",
@@ -3850,6 +3948,7 @@ dependencies = [
  "serde_json",
  "serde_json_lenient",
  "settings",
+ "snippet_provider",
  "task",
  "theme",
  "toml 0.8.10",
@@ -3925,7 +4024,7 @@ version = "0.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7493d4c459da9f84325ad297371a6b2b8a162800873a22e3b6b6512e61d18c05"
 dependencies = [
- "bit-set",
+ "bit-set 0.5.3",
  "regex",
 ]
 
@@ -3982,7 +4081,7 @@ name = "feedback"
 version = "0.1.0"
 dependencies = [
  "anyhow",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "client",
  "db",
  "editor",
@@ -4099,7 +4198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010"
 dependencies = [
  "crc32fast",
- "miniz_oxide 0.7.1",
+ "miniz_oxide",
 ]
 
 [[package]]
@@ -4182,7 +4281,7 @@ checksum = "e32eac81c1135c1df01d4e6d4233c47ba11f6a6d07f33e0bba09d18797077770"
 dependencies = [
  "fontconfig-parser",
  "log",
- "memmap2 0.9.4",
+ "memmap2",
  "slotmap",
  "tinyvec",
  "ttf-parser",
@@ -4316,7 +4415,7 @@ dependencies = [
 name = "fsevent"
 version = "0.1.0"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "core-foundation",
  "fsevent-sys 3.1.0",
  "parking_lot",
@@ -4573,9 +4672,9 @@ dependencies = [
 
 [[package]]
 name = "gif"
-version = "0.11.4"
+version = "0.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06"
+checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2"
 dependencies = [
  "color_quant",
  "weezl",
@@ -4627,7 +4726,7 @@ version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "libc",
  "libgit2-sys",
  "log",
@@ -4738,7 +4837,7 @@ version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "gpu-alloc-types",
 ]
 
@@ -4759,7 +4858,7 @@ version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -4832,6 +4931,7 @@ dependencies = [
  "taffy",
  "thiserror",
  "time",
+ "unicode-segmentation",
  "usvg",
  "util",
  "uuid",
@@ -5005,12 +5105,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
 name = "heed"
 version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6f7acb9683d7c7068aa46d47557bfa4e35a277964b350d9504a87b03610163fd"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "byteorder",
  "heed-traits",
  "heed-types",
@@ -5053,9 +5159,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.3"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 
 [[package]]
 name = "hex"
@@ -5150,6 +5256,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "html_to_markdown"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e608e8dd0939bfb6b516d96a5919751b835297a02230aecb88d2fc84ebebaa8a"
+dependencies = [
+ "anyhow",
+ "html5ever",
+ "markup5ever_rcdom",
+ "regex",
+]
+
+[[package]]
 name = "http"
 version = "0.1.0"
 dependencies = [
@@ -5336,21 +5454,35 @@ dependencies = [
 
 [[package]]
 name = "image"
-version = "0.23.14"
+version = "0.25.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1"
+checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11"
 dependencies = [
  "bytemuck",
  "byteorder",
  "color_quant",
+ "exr",
  "gif",
- "jpeg-decoder",
- "num-iter",
- "num-rational 0.3.2",
+ "image-webp",
  "num-traits",
- "png 0.16.8",
- "scoped_threadpool",
+ "png",
+ "qoi",
+ "ravif",
+ "rayon",
+ "rgb",
  "tiff",
+ "zune-core",
+ "zune-jpeg",
+]
+
+[[package]]
+name = "image-webp"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d730b085583c4d789dfd07fdcf185be59501666a90c97c40162b37e4fdad272d"
+dependencies = [
+ "byteorder-lite",
+ "thiserror",
 ]
 
 [[package]]
@@ -5373,6 +5505,37 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284"
 
 [[package]]
+name = "imgref"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126"
+
+[[package]]
+name = "indexed_docs"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "async-trait",
+ "collections",
+ "derive_more",
+ "fs",
+ "futures 0.3.28",
+ "fuzzy",
+ "gpui",
+ "heed",
+ "html_to_markdown 0.1.0",
+ "http 0.1.0",
+ "indexmap 1.9.3",
+ "indoc",
+ "parking_lot",
+ "paths",
+ "pretty_assertions",
+ "serde",
+ "strum",
+ "util",
+]
+
+[[package]]
 name = "indexmap"
 version = "1.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5486,6 +5649,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "interpolate_name"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.59",
+]
+
+[[package]]
 name = "io-extras"
 version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5501,7 +5675,7 @@ version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 dependencies = [
- "hermit-abi 0.3.3",
+ "hermit-abi 0.3.9",
  "libc",
  "windows-sys 0.48.0",
 ]
@@ -5686,12 +5860,9 @@ dependencies = [
 
 [[package]]
 name = "jpeg-decoder"
-version = "0.1.22"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2"
-dependencies = [
- "rayon",
-]
+checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0"
 
 [[package]]
 name = "js-sys"
@@ -5941,12 +6112,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
 
 [[package]]
+name = "lebe"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
+
+[[package]]
 name = "libc"
 version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
+name = "libfuzzer-sys"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7"
+dependencies = [
+ "arbitrary",
+ "cc",
+ "once_cell",
+]
+
+[[package]]
 name = "libgit2-sys"
 version = "0.17.0+1.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6139,6 +6327,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "loop9"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
+dependencies = [
+ "imgref",
+]
+
+[[package]]
 name = "lsp"
 version = "0.1.0"
 dependencies = [
@@ -6314,6 +6511,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4"
 
 [[package]]
+name = "maybe-rayon"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
+dependencies = [
+ "cfg-if",
+ "rayon",
+]
+
+[[package]]
 name = "md-5"
 version = "0.10.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6351,15 +6558,6 @@ dependencies = [
 
 [[package]]
 name = "memmap2"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "memmap2"
 version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
@@ -6422,25 +6620,6 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
-dependencies = [
- "adler32",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
-dependencies = [
- "adler",
- "autocfg",
-]
-
-[[package]]
-name = "miniz_oxide"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
@@ -6510,17 +6689,17 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
 
 [[package]]
 name = "naga"
-version = "0.14.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae585df4b6514cf8842ac0f1ab4992edc975892704835b549cf818dc0191249e"
+version = "0.20.0"
+source = "git+https://github.com/gfx-rs/wgpu?rev=425526828f738c95ec50b016c6a761bc00d2fb25#425526828f738c95ec50b016c6a761bc00d2fb25"
 dependencies = [
- "bit-set",
- "bitflags 2.4.2",
+ "arrayvec",
+ "bit-set 0.6.0",
+ "bitflags 2.6.0",
+ "cfg_aliases",
  "codespan-reporting",
  "hexf-parse",
  "indexmap 2.2.6",
  "log",
- "num-traits",
  "rustc-hash",
  "spirv",
  "termcolor",
@@ -6616,7 +6795,7 @@ version = "0.27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "cfg-if",
  "libc",
  "memoffset",
@@ -6628,7 +6807,7 @@ version = "0.28.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "cfg-if",
  "cfg_aliases",
  "libc",
@@ -6669,6 +6848,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "noop_proc_macro"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
+
+[[package]]
 name = "notifications"
 version = "0.1.0"
 dependencies = [
@@ -6691,7 +6876,7 @@ version = "6.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "crossbeam-channel",
  "filetime",
  "fsevent-sys 4.1.0",
@@ -6733,7 +6918,7 @@ dependencies = [
  "num-complex",
  "num-integer",
  "num-iter",
- "num-rational 0.4.1",
+ "num-rational",
  "num-traits",
 ]
 
@@ -6810,6 +6995,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "num-derive"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.59",
+]
+
+[[package]]
 name = "num-format"
 version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -6842,17 +7038,6 @@ dependencies = [
 
 [[package]]
 name = "num-rational"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-rational"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
@@ -6879,7 +7064,7 @@ version = "1.16.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
 dependencies = [
- "hermit-abi 0.3.3",
+ "hermit-abi 0.3.9",
  "libc",
 ]
 
@@ -6905,6 +7090,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "nvim-rs"
 version = "0.6.0-pre"
 source = "git+https://github.com/KillTheMule/nvim-rs?branch=master#0d2b1c884f3c39a76b5b7aac0b429f4624843954"
@@ -6959,7 +7153,7 @@ dependencies = [
  "jni 0.20.0",
  "ndk",
  "ndk-context",
- "num-derive",
+ "num-derive 0.3.3",
  "num-traits",
  "oboe-sys",
 ]
@@ -7035,9 +7229,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
 
 [[package]]
 name = "open"
-version = "5.1.2"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "449f0ff855d85ddbf1edd5b646d65249ead3f5e422aaa86b7d2d0b049b103e32"
+checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3"
 dependencies = [
  "is-wsl",
  "libc",
@@ -7064,7 +7258,7 @@ version = "0.10.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "cfg-if",
  "foreign-types 0.3.2",
  "libc",
@@ -7092,9 +7286,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "openssl-src"
-version = "300.2.3+3.2.1"
+version = "300.3.0+3.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843"
+checksum = "eba8804a1c5765b18c4b3f907e6897ebabeedebc9830e1a0046c4a4cf44663e1"
 dependencies = [
  "cc",
 ]
@@ -7209,6 +7403,7 @@ dependencies = [
  "db",
  "editor",
  "file_icons",
+ "fuzzy",
  "gpui",
  "itertools 0.11.0",
  "language",
@@ -7358,7 +7553,7 @@ dependencies = [
 [[package]]
 name = "pathfinder_simd"
 version = "0.5.3"
-source = "git+https://github.com/servo/pathfinder.git?rev=30419d07660dc11a21e42ef4a7fa329600cff152#30419d07660dc11a21e42ef4a7fa329600cff152"
+source = "git+https://github.com/servo/pathfinder.git?rev=4968e819c0d9b015437ffc694511e175801a17c7#4968e819c0d9b015437ffc694511e175801a17c7"
 dependencies = [
  "rustc_version",
 ]
@@ -7649,18 +7844,6 @@ dependencies = [
 
 [[package]]
 name = "png"
-version = "0.16.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6"
-dependencies = [
- "bitflags 1.3.2",
- "crc32fast",
- "deflate",
- "miniz_oxide 0.3.7",
-]
-
-[[package]]
-name = "png"
 version = "0.17.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
@@ -7669,7 +7852,7 @@ dependencies = [
  "crc32fast",
  "fdeflate",
  "flate2",
- "miniz_oxide 0.7.1",
+ "miniz_oxide",
 ]
 
 [[package]]
@@ -7906,6 +8089,7 @@ dependencies = [
  "similar",
  "smol",
  "snippet",
+ "snippet_provider",
  "task",
  "tempfile",
  "terminal",
@@ -8088,12 +8272,27 @@ version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dce76ce678ffc8e5675b22aa1405de0b7037e2fdf8913fea40d1926c6fe1e6e7"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "memchr",
  "unicase",
 ]
 
 [[package]]
+name = "qoi"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
+name = "quick-error"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
+
+[[package]]
 name = "quick-xml"
 version = "0.30.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8217,6 +8416,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991"
 
 [[package]]
+name = "rav1e"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9"
+dependencies = [
+ "arbitrary",
+ "arg_enum_proc_macro",
+ "arrayvec",
+ "av1-grain",
+ "bitstream-io",
+ "built",
+ "cfg-if",
+ "interpolate_name",
+ "itertools 0.12.1",
+ "libc",
+ "libfuzzer-sys",
+ "log",
+ "maybe-rayon",
+ "new_debug_unreachable",
+ "noop_proc_macro",
+ "num-derive 0.4.2",
+ "num-traits",
+ "once_cell",
+ "paste",
+ "profiling",
+ "rand 0.8.5",
+ "rand_chacha 0.3.1",
+ "simd_helpers",
+ "system-deps",
+ "thiserror",
+ "v_frame",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "ravif"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234"
+dependencies = [
+ "avif-serialize",
+ "imgref",
+ "loop9",
+ "quick-error",
+ "rav1e",
+ "rayon",
+ "rgb",
+]
+
+[[package]]
 name = "raw-window-handle"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8294,7 +8543,7 @@ dependencies = [
  "task",
  "terminal_view",
  "ui",
- "ui_text_field",
+ "ui_input",
  "util",
  "workspace",
 ]
@@ -8815,31 +9064,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "rustdoc"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "async-trait",
- "collections",
- "derive_more",
- "fs",
- "futures 0.3.28",
- "fuzzy",
- "gpui",
- "heed",
- "html_to_markdown",
- "http 0.1.0",
- "indexmap 1.9.3",
- "indoc",
- "parking_lot",
- "paths",
- "pretty_assertions",
- "serde",
- "strum",
- "util",
-]
-
-[[package]]
 name = "rustix"
 version = "0.37.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8859,7 +9083,7 @@ version = "0.38.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "errno 0.3.8",
  "itoa",
  "libc",
@@ -8934,7 +9158,7 @@ version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cfb9cf8877777222e4a3bc7eb247e398b56baba500c38c1c46842431adc8b55c"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "bytemuck",
  "libm",
  "smallvec",
@@ -9016,12 +9240,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
 
 [[package]]
-name = "scoped_threadpool"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8"
-
-[[package]]
 name = "scopeguard"
 version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -9163,7 +9381,7 @@ version = "0.1.0"
 dependencies = [
  "any_vec",
  "anyhow",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "client",
  "collections",
  "editor",
@@ -9548,6 +9766,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
 
 [[package]]
+name = "simd_helpers"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
+dependencies = [
+ "quote",
+]
+
+[[package]]
 name = "simdutf8"
 version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -9582,13 +9809,13 @@ dependencies = [
 
 [[package]]
 name = "simplelog"
-version = "0.9.0"
+version = "0.12.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bc0ffd69814a9b251d43afcabf96dad1b29f5028378056257be9e3fecc9f720"
+checksum = "16257adbfaef1ee58b1363bdc0664c9b8e1e30aed86049635fb5f147d065a9c0"
 dependencies = [
- "chrono",
  "log",
  "termcolor",
+ "time",
 ]
 
 [[package]]
@@ -9680,6 +9907,22 @@ dependencies = [
 ]
 
 [[package]]
+name = "snippet_provider"
+version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "collections",
+ "fs",
+ "futures 0.3.28",
+ "gpui",
+ "parking_lot",
+ "serde",
+ "serde_json",
+ "snippet",
+ "util",
+]
+
+[[package]]
 name = "socket2"
 version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -9725,12 +9968,11 @@ dependencies = [
 
 [[package]]
 name = "spirv"
-version = "0.2.0+1.5.4"
+version = "0.3.0+sdk-1.3.268.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "246bfa38fe3db3f1dfc8ca5a2cdeb7348c78be2112740cc0ec8ef18b6d94f830"
+checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
 dependencies = [
- "bitflags 1.3.2",
- "num-traits",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
@@ -9906,7 +10148,7 @@ dependencies = [
  "atoi",
  "base64 0.21.7",
  "bigdecimal",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "byteorder",
  "bytes 1.5.0",
  "chrono",
@@ -9953,7 +10195,7 @@ dependencies = [
  "atoi",
  "base64 0.21.7",
  "bigdecimal",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "byteorder",
  "chrono",
  "crc",
@@ -10059,6 +10301,7 @@ dependencies = [
  "story",
  "strum",
  "theme",
+ "title_bar",
  "ui",
 ]
 
@@ -10356,12 +10599,25 @@ dependencies = [
 ]
 
 [[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.10",
+ "version-compare",
+]
+
+[[package]]
 name = "system-interface"
 version = "0.27.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9aef1f9d4c1dbdd1cb3a63be9efd2f04d8ddbc919d46112982c76818ffc2f1a7"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "cap-fs-ext",
  "cap-std",
  "fd-lock",
@@ -10502,9 +10758,9 @@ dependencies = [
 
 [[package]]
 name = "termcolor"
-version = "1.1.3"
+version = "1.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
 dependencies = [
  "winapi-util",
 ]
@@ -10664,18 +10920,18 @@ dependencies = [
 
 [[package]]
 name = "thiserror"
-version = "1.0.60"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18"
+checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.60"
+version = "1.0.61"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524"
+checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -10694,12 +10950,12 @@ dependencies = [
 
 [[package]]
 name = "tiff"
-version = "0.6.1"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437"
+checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e"
 dependencies = [
+ "flate2",
  "jpeg-decoder",
- "miniz_oxide 0.4.4",
  "weezl",
 ]
 
@@ -10726,7 +10982,9 @@ checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
 dependencies = [
  "deranged",
  "itoa",
+ "libc",
  "num-conv",
+ "num_threads",
  "powerfmt",
  "serde",
  "time-core",
@@ -10779,7 +11037,7 @@ dependencies = [
  "bytemuck",
  "cfg-if",
  "log",
- "png 0.17.13",
+ "png",
  "tiny-skia-path",
 ]
 
@@ -10833,6 +11091,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
+name = "title_bar"
+version = "0.1.0"
+dependencies = [
+ "auto_update",
+ "call",
+ "client",
+ "collections",
+ "command_palette",
+ "dev_server_projects",
+ "editor",
+ "extensions_ui",
+ "feedback",
+ "gpui",
+ "http 0.1.0",
+ "notifications",
+ "pretty_assertions",
+ "project",
+ "recent_projects",
+ "rpc",
+ "serde",
+ "settings",
+ "smallvec",
+ "story",
+ "theme",
+ "theme_selector",
+ "tree-sitter-markdown",
+ "ui",
+ "util",
+ "vcs_menu",
+ "windows 0.57.0",
+ "workspace",
+ "zed_actions",
+]
+
+[[package]]
 name = "tokio"
 version = "1.37.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -11050,7 +11343,7 @@ version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "bytes 1.5.0",
  "futures-core",
  "futures-util",
@@ -11466,7 +11759,7 @@ dependencies = [
 ]
 
 [[package]]
-name = "ui_text_field"
+name = "ui_input"
 version = "0.1.0"
 dependencies = [
  "editor",
@@ -11660,6 +11953,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "v_frame"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b"
+dependencies = [
+ "aligned-vec",
+ "num-traits",
+ "wasm-bindgen",
+]
+
+[[package]]
 name = "valuable"
 version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -11722,6 +12026,12 @@ dependencies = [
 ]
 
 [[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"
@@ -11804,7 +12114,7 @@ version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "40eb22ae96f050e0c0d6f7ce43feeae26c348fc4dea56928ca81537cfaa6188b"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "cursor-icon",
  "log",
  "serde",
@@ -11956,7 +12266,7 @@ version = "0.201.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "84e5df6dba6c0d7fafc63a450f1738451ed7a0b52295d83e868218fa286bf708"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "indexmap 2.2.6",
  "semver",
 ]
@@ -12223,7 +12533,7 @@ checksum = "371d828b6849ea06d598ae7dd1c316e8dd9e99b76f77d93d5886cb25c7f8e188"
 dependencies = [
  "anyhow",
  "async-trait",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "bytes 1.5.0",
  "cap-fs-ext",
  "cap-net-ext",
@@ -12310,7 +12620,7 @@ version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "rustix 0.38.32",
  "wayland-backend",
  "wayland-scanner",
@@ -12333,7 +12643,7 @@ version = "0.31.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "wayland-backend",
  "wayland-client",
  "wayland-scanner",
@@ -12345,7 +12655,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "wayland-backend",
  "wayland-client",
  "wayland-protocols",
@@ -12464,7 +12774,7 @@ checksum = "ae1136a209614ace00b0c11f04dc7cf42540773be3b22eff6ad165110aba29c1"
 dependencies = [
  "anyhow",
  "async-trait",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "thiserror",
  "tracing",
  "wasmtime",
@@ -12894,7 +13204,7 @@ version = "0.36.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "windows-sys 0.52.0",
 ]
 
@@ -12913,7 +13223,7 @@ version = "0.22.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "288f992ea30e6b5c531b52cdd5f3be81c148554b09ea416f058d16556ba92c27"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "wit-bindgen-rt",
  "wit-bindgen-rust-macro",
 ]
@@ -12969,7 +13279,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "421c0c848a0660a8c22e2fd217929a0191f14476b68962afd2af89fd22e39825"
 dependencies = [
  "anyhow",
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
  "indexmap 2.2.6",
  "log",
  "serde",
@@ -13071,6 +13381,7 @@ dependencies = [
  "language",
  "log",
  "parking_lot",
+ "paths",
  "postage",
  "pretty_assertions",
  "rand 0.8.5",
@@ -13174,18 +13485,17 @@ name = "xim-parser"
 version = "0.2.1"
 source = "git+https://github.com/npmania/xim-rs?rev=27132caffc5b9bc9c432ca4afad184ab6e7c16af#27132caffc5b9bc9c432ca4afad184ab6e7c16af"
 dependencies = [
- "bitflags 2.4.2",
+ "bitflags 2.6.0",
 ]
 
 [[package]]
 name = "xkbcommon"
 version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13867d259930edc7091a6c41b4ce6eee464328c6ff9659b7e4c668ca20d4c91e"
+source = "git+https://github.com/ConradIrwin/xkbcommon-rs?rev=fcbb4612185cc129ceeff51d22f7fb51810a03b2#fcbb4612185cc129ceeff51d22f7fb51810a03b2"
 dependencies = [
  "as-raw-xcb-connection",
  "libc",
- "memmap2 0.8.0",
+ "memmap2",
  "xkeysym",
 ]
 
@@ -13318,7 +13628,7 @@ dependencies = [
 
 [[package]]
 name = "zed"
-version = "0.141.3"
+version = "0.144.4"
 dependencies = [
  "activity_indicator",
  "anyhow",
@@ -13393,6 +13703,7 @@ dependencies = [
  "settings",
  "simplelog",
  "smol",
+ "snippet_provider",
  "supermaven",
  "tab_switcher",
  "task",
@@ -13431,9 +13742,9 @@ dependencies = [
 
 [[package]]
 name = "zed_clojure"
-version = "0.0.2"
+version = "0.0.3"
 dependencies = [
- "zed_extension_api 0.0.4",
+ "zed_extension_api 0.0.6",
 ]
 
 [[package]]
@@ -13518,6 +13829,7 @@ dependencies = [
 name = "zed_gleam"
 version = "0.1.3"
 dependencies = [
+ "html_to_markdown 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "zed_extension_api 0.0.7",
 ]
 
@@ -13544,14 +13856,14 @@ dependencies = [
 
 [[package]]
 name = "zed_lua"
-version = "0.0.2"
+version = "0.0.3"
 dependencies = [
  "zed_extension_api 0.0.6",
 ]
 
 [[package]]
 name = "zed_ocaml"
-version = "0.0.1"
+version = "0.0.2"
 dependencies = [
  "zed_extension_api 0.0.6",
 ]
@@ -13565,7 +13877,7 @@ dependencies = [
 
 [[package]]
 name = "zed_prisma"
-version = "0.0.2"
+version = "0.0.3"
 dependencies = [
  "zed_extension_api 0.0.4",
 ]
@@ -13586,7 +13898,7 @@ dependencies = [
 
 [[package]]
 name = "zed_snippets"
-version = "0.0.3"
+version = "0.0.5"
 dependencies = [
  "serde_json",
  "zed_extension_api 0.0.6",
@@ -13607,6 +13919,13 @@ dependencies = [
 ]
 
 [[package]]
+name = "zed_test_extension"
+version = "0.1.0"
+dependencies = [
+ "zed_extension_api 0.0.6",
+]
+
+[[package]]
 name = "zed_toml"
 version = "0.1.1"
 dependencies = [
@@ -13629,7 +13948,7 @@ dependencies = [
 
 [[package]]
 name = "zed_zig"
-version = "0.1.2"
+version = "0.1.3"
 dependencies = [
  "zed_extension_api 0.0.7",
 ]
@@ -13738,6 +14057,30 @@ dependencies = [
 ]
 
 [[package]]
+name = "zune-core"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
+
+[[package]]
+name = "zune-inflate"
+version = "0.2.54"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "zune-jpeg"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448"
+dependencies = [
+ "zune-core",
+]
+
+[[package]]
 name = "zvariant"
 version = "4.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/pkgs/by-name/ze/zed-editor/package.nix b/pkgs/by-name/ze/zed-editor/package.nix
index be95732a6fff..b85496958f30 100644
--- a/pkgs/by-name/ze/zed-editor/package.nix
+++ b/pkgs/by-name/ze/zed-editor/package.nix
@@ -35,13 +35,13 @@ assert withGLES -> stdenv.isLinux;
 
 rustPlatform.buildRustPackage rec {
   pname = "zed";
-  version = "0.141.3";
+  version = "0.144.4";
 
   src = fetchFromGitHub {
     owner = "zed-industries";
     repo = "zed";
     rev = "refs/tags/v${version}";
-    hash = "sha256-D4wVHMNy7xESuEORULyKf3ZxFfRSKfWEXjBnjh3yBVU=";
+    hash = "sha256-F/44NjoBCH2und9VVayE0wxrrOtcFoP5yuvxgxCkxuM=";
     fetchSubmodules = true;
   };
 
@@ -50,12 +50,13 @@ rustPlatform.buildRustPackage rec {
     outputHashes = {
       "alacritty_terminal-0.24.1-dev" = "sha256-aVB1CNOLjNh6AtvdbomODNrk00Md8yz8QzldzvDo1LI=";
       "async-pipe-0.1.3" = "sha256-g120X88HGT8P6GNCrzpS5SutALx5H+45Sf4iSSxzctE=";
-      "blade-graphics-0.4.0" = "sha256-khJke3tIO8V7tT3MBk9vQhBKTiJEWTY6Qr4vzeuKnOk=";
+      "blade-graphics-0.4.0" = "sha256-c0KhzG/FCpAyiafGZTbxDMz1ktCTURNDxO3fkB16nUw=";
       "cosmic-text-0.11.2" = "sha256-TLPDnqixuW+aPAhiBhSvuZIa69vgV3xLcw32OlkdCcM=";
       "font-kit-0.11.0" = "sha256-+4zMzjFyMS60HfLMEXGfXqKn6P+pOngLA45udV09DM8=";
       "lsp-types-0.95.1" = "sha256-N4MKoU9j1p/Xeowki/+XiNQPwIcTm9DgmfM/Eieq4js=";
+      "naga-0.20.0" = "sha256-07lLKQLfWYyOwWmvzFQ0vMeuC5pxmclz6Ub72ooSmwk=";
       "nvim-rs-0.6.0-pre" = "sha256-bdWWuCsBv01mnPA5e5zRpq48BgOqaqIcAu+b7y1NnM8=";
-      "pathfinder_simd-0.5.3" = "sha256-bakBcAQZJdHQPXybe0zoMzE49aOHENQY7/ZWZUMt+pM=";
+      "pathfinder_simd-0.5.3" = "sha256-94/qS5d0UKYXAdx+Lswj6clOTuuK2yxqWuhpYZ8x1nI=";
       "tree-sitter-0.20.100" = "sha256-xZDWAjNIhWC2n39H7jJdKDgyE/J6+MAVSa8dHtZ6CLE=";
       "tree-sitter-go-0.20.0" = "sha256-/mE21JSa3LWEiOgYPJcq0FYzTbBuNwp9JdZTZqmDIUU=";
       "tree-sitter-gowork-0.0.1" = "sha256-lM4L4Ap/c8uCr4xUw9+l/vaGb3FxxnuZI0+xKYFDPVg=";
@@ -64,6 +65,7 @@ rustPlatform.buildRustPackage rec {
       "tree-sitter-markdown-0.0.1" = "sha256-F8VVd7yYa4nCrj/HEC13BTC7lkV3XSb2Z3BNi/VfSbs=";
       "tree-sitter-proto-0.0.2" = "sha256-W0diP2ByAXYrc7Mu/sbqST6lgVIyHeSBmH7/y/X3NhU=";
       "xim-0.4.0" = "sha256-vxu3tjkzGeoRUj7vyP0vDGI7fweX8Drgy9hwOUOEQIA=";
+      "xkbcommon-0.7.0" = "sha256-2RjZWiAaz8apYTrZ82qqH4Gv20WyCtPT+ldOzm0GWMo=";
     };
   };
 
diff --git a/pkgs/by-name/ze/zeronsd/package.nix b/pkgs/by-name/ze/zeronsd/package.nix
new file mode 100644
index 000000000000..71eeb50e6163
--- /dev/null
+++ b/pkgs/by-name/ze/zeronsd/package.nix
@@ -0,0 +1,39 @@
+{
+  lib,
+  rustPlatform,
+  fetchFromGitHub,
+  pkg-config,
+  openssl,
+  rustfmt,
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "zeronsd";
+  version = "0.5.2";
+
+  src = fetchFromGitHub {
+    owner = "zerotier";
+    repo = "zeronsd";
+    rev = "v${version}";
+    hash = "sha256-TL0bgzQgge6j1SpZCdxv/s4pBMSg4/3U5QisjkVE6BE=";
+  };
+
+  cargoHash = "sha256-WGap0j90obpJHiMNokCWg0Q3xIAqwvmiESg9NVnFMKE=";
+
+  strictDeps = true;
+  buildInputs = [ openssl ];
+  nativeBuildInputs = [ pkg-config ];
+
+  RUSTFMT = "${rustfmt}/bin/rustfmt";
+
+  # Integration tests try to access the ZeroTier API which requires an API token.
+  # https://github.com/zerotier/zeronsd/blob/v0.5.2/tests/service/network.rs#L10
+  doCheck = false;
+
+  meta = with lib; {
+    description = "A DNS server for ZeroTier users";
+    homepage = "https://github.com/zerotier/zeronsd";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.dstengele ];
+  };
+}
diff --git a/pkgs/by-name/zi/zig-shell-completions/package.nix b/pkgs/by-name/zi/zig-shell-completions/package.nix
index f9ba4d0886ba..54839e16eddc 100644
--- a/pkgs/by-name/zi/zig-shell-completions/package.nix
+++ b/pkgs/by-name/zi/zig-shell-completions/package.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "zig-shell-completions";
-  version = "0-unstable-2023-11-18";
+  version = "0-unstable-2024-07-08";
 
   src = fetchFromGitHub {
     owner = "ziglang";
     repo = "shell-completions";
-    rev = "31d3ad12890371bf467ef7143f5c2f31cfa7b7c1";
-    hash = "sha256-ID/K0vdg7BTKGgozISk/X4RBxCVfhSkVD6GSZUoP9Ls=";
+    rev = "8d3db71e9a0497de98946b2ca2ee7e87d106607e";
+    hash = "sha256-iil6M59S94f9SojTnwdWGOlIO/QOV77fJOUjyBa7jMk=";
   };
 
   nativeBuildInputs = [ installShellFiles ];
diff --git a/pkgs/by-name/zu/zug/package.nix b/pkgs/by-name/zu/zug/package.nix
index f3356dd51ae6..0c03178b3504 100644
--- a/pkgs/by-name/zu/zug/package.nix
+++ b/pkgs/by-name/zu/zug/package.nix
@@ -1,6 +1,5 @@
 { lib
 , stdenv
-, pkgs
 , fetchFromGitHub
 , cmake
 , boost