about summary refs log tree commit diff
path: root/nixpkgs
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2024-03-01 11:40:12 +0100
committerAlyssa Ross <hi@alyssa.is>2024-03-01 11:40:12 +0100
commitbf6d657e5dbcb5e39fda280ef7e86b2a7794ca86 (patch)
tree8eb035cbab19794f6415cc460fac7226f7a58afc /nixpkgs
parent66f707d69f1e423db5a35c2fe43b32781125a9af (diff)
parent09c1497ce5d4ed4a0edfdd44450d3048074cb300 (diff)
downloadnixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.gz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.bz2
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.lz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.xz
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.tar.zst
nixlib-bf6d657e5dbcb5e39fda280ef7e86b2a7794ca86.zip
Merge branch 'nixos-unstable-small' of https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs')
-rw-r--r--nixpkgs/.editorconfig4
-rw-r--r--nixpkgs/.github/CODEOWNERS17
-rw-r--r--nixpkgs/doc/build-helpers/images/dockertools.section.md10
-rw-r--r--nixpkgs/doc/build-helpers/images/ocitools.section.md107
-rw-r--r--nixpkgs/doc/build-helpers/images/portableservice.section.md205
-rw-r--r--nixpkgs/doc/manpage-urls.json4
-rw-r--r--nixpkgs/doc/packages/darwin-builder.section.md12
-rw-r--r--nixpkgs/lib/attrsets.nix15
-rw-r--r--nixpkgs/lib/default.nix4
-rw-r--r--nixpkgs/lib/fileset/default.nix37
-rw-r--r--nixpkgs/lib/fileset/internal.nix23
-rwxr-xr-xnixpkgs/lib/fileset/tests.sh124
-rw-r--r--nixpkgs/lib/fixed-points.nix13
-rw-r--r--nixpkgs/lib/lists.nix31
-rw-r--r--nixpkgs/lib/meta.nix8
-rw-r--r--nixpkgs/lib/strings.nix3
-rw-r--r--nixpkgs/lib/tests/release.nix55
-rw-r--r--nixpkgs/lib/tests/test-with-nix.nix70
-rw-r--r--nixpkgs/lib/trivial.nix19
-rw-r--r--nixpkgs/lib/versions.nix2
-rw-r--r--nixpkgs/lib/zip-int-bits.nix39
-rw-r--r--nixpkgs/maintainers/maintainer-list.nix61
-rw-r--r--nixpkgs/maintainers/scripts/bootstrap-files/README.md2
-rwxr-xr-xnixpkgs/maintainers/scripts/kde/collect-licenses.sh31
-rwxr-xr-xnixpkgs/maintainers/scripts/kde/collect-logs.nu11
-rwxr-xr-xnixpkgs/maintainers/scripts/kde/collect-metadata.py36
-rwxr-xr-xnixpkgs/maintainers/scripts/kde/collect-missing-deps.py127
-rwxr-xr-xnixpkgs/maintainers/scripts/kde/generate-sources.py113
-rw-r--r--nixpkgs/maintainers/scripts/kde/utils.py185
-rw-r--r--nixpkgs/nixos/doc/manual/development/settings-options.section.md28
-rw-r--r--nixpkgs/nixos/doc/manual/release-notes/rl-2405.section.md21
-rw-r--r--nixpkgs/nixos/lib/make-disk-image.nix55
-rw-r--r--nixpkgs/nixos/lib/systemd-lib.nix16
-rw-r--r--nixpkgs/nixos/lib/systemd-unit-options.nix10
-rw-r--r--nixpkgs/nixos/lib/test-driver/test_driver/driver.py55
-rw-r--r--nixpkgs/nixos/lib/test-driver/test_driver/machine.py95
-rw-r--r--nixpkgs/nixos/lib/test-script-prepend.py13
-rw-r--r--nixpkgs/nixos/lib/testing/nixos-test-base.nix6
-rw-r--r--nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix46
-rw-r--r--nixpkgs/nixos/modules/installer/netboot/netboot.nix19
-rw-r--r--nixpkgs/nixos/modules/module-list.nix3
-rw-r--r--nixpkgs/nixos/modules/programs/gnupg.nix1
-rw-r--r--nixpkgs/nixos/modules/programs/wayland/sway.nix4
-rw-r--r--nixpkgs/nixos/modules/security/pam.nix39
-rw-r--r--nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix12
-rw-r--r--nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix16
-rw-r--r--nixpkgs/nixos/modules/services/games/armagetronad.nix268
-rw-r--r--nixpkgs/nixos/modules/services/hardware/monado.nix102
-rw-r--r--nixpkgs/nixos/modules/services/misc/ollama.nix37
-rw-r--r--nixpkgs/nixos/modules/services/misc/paperless.nix3
-rw-r--r--nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nut.nix15
-rw-r--r--nixpkgs/nixos/modules/services/networking/dhcpcd.nix32
-rw-r--r--nixpkgs/nixos/modules/services/networking/mosquitto.nix34
-rw-r--r--nixpkgs/nixos/modules/services/networking/searx.nix2
-rw-r--r--nixpkgs/nixos/modules/services/networking/unbound.nix25
-rw-r--r--nixpkgs/nixos/modules/services/security/kanidm.nix32
-rw-r--r--nixpkgs/nixos/modules/services/web-apps/mealie.nix79
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix2
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix2
-rw-r--r--nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix276
-rw-r--r--nixpkgs/nixos/modules/services/x11/display-managers/sddm.nix26
-rw-r--r--nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py69
-rw-r--r--nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix65
-rw-r--r--nixpkgs/nixos/modules/system/boot/networkd.nix4
-rw-r--r--nixpkgs/nixos/modules/system/boot/plymouth.nix4
-rw-r--r--nixpkgs/nixos/modules/system/boot/systemd/coredump.nix2
-rw-r--r--nixpkgs/nixos/modules/system/boot/systemd/repart.nix16
-rw-r--r--nixpkgs/nixos/modules/tasks/filesystems/zfs.nix39
-rw-r--r--nixpkgs/nixos/modules/virtualisation/podman/default.nix2
-rw-r--r--nixpkgs/nixos/release-combined.nix1
-rw-r--r--nixpkgs/nixos/release-small.nix4
-rw-r--r--nixpkgs/nixos/release.nix6
-rw-r--r--nixpkgs/nixos/tests/all-tests.nix5
-rw-r--r--nixpkgs/nixos/tests/armagetronad.nix272
-rw-r--r--nixpkgs/nixos/tests/boot.nix82
-rw-r--r--nixpkgs/nixos/tests/common/ec2.nix2
-rw-r--r--nixpkgs/nixos/tests/consul.nix4
-rw-r--r--nixpkgs/nixos/tests/docker-tools.nix22
-rw-r--r--nixpkgs/nixos/tests/incus/container.nix13
-rw-r--r--nixpkgs/nixos/tests/installer.nix46
-rw-r--r--nixpkgs/nixos/tests/k3s/default.nix5
-rw-r--r--nixpkgs/nixos/tests/k3s/etcd.nix100
-rw-r--r--nixpkgs/nixos/tests/kernel-generic.nix1
-rw-r--r--nixpkgs/nixos/tests/lomiri-system-settings.nix99
-rw-r--r--nixpkgs/nixos/tests/mealie.nix24
-rw-r--r--nixpkgs/nixos/tests/monado.nix39
-rw-r--r--nixpkgs/nixos/tests/plasma6.nix64
-rw-r--r--nixpkgs/nixos/tests/searx.nix6
-rw-r--r--nixpkgs/nixos/tests/systemd-boot.nix115
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/muse.nix4
-rw-r--r--nixpkgs/pkgs/applications/audio/mopidy/spotify.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/pyradio/default.nix13
-rw-r--r--nixpkgs/pkgs/applications/audio/spotify/linux.nix6
-rw-r--r--nixpkgs/pkgs/applications/audio/squeezelite/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/backup/unifi-protect-backup/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/blockchains/clightning/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/blockchains/optimism/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix6
-rw-r--r--nixpkgs/pkgs/applications/display-managers/sddm/default.nix105
-rw-r--r--nixpkgs/pkgs/applications/display-managers/sddm/greeter-path.patch14
-rw-r--r--nixpkgs/pkgs/applications/display-managers/sddm/unwrapped.nix86
-rw-r--r--nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix4
-rw-r--r--nixpkgs/pkgs/applications/editors/orbiton/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/editors/rednotebook/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/plugins/generated.nix753
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix337
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/plugins/overrides.nix10
-rw-r--r--nixpkgs/pkgs/applications/editors/vim/plugins/vim-plugin-names2
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/extensions/equinusocio.vsc-material-theme/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/editors/vscode/vscodium.nix12
-rw-r--r--nixpkgs/pkgs/applications/emulators/86box/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/emulators/mame/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/emulators/retroarch/hashes.json54
-rw-r--r--nixpkgs/pkgs/applications/emulators/wine/sources.nix6
-rw-r--r--nixpkgs/pkgs/applications/emulators/yuzu/compat-list.nix6
-rw-r--r--nixpkgs/pkgs/applications/emulators/yuzu/early-access/sources.nix8
-rw-r--r--nixpkgs/pkgs/applications/emulators/yuzu/mainline.nix4
-rw-r--r--nixpkgs/pkgs/applications/file-managers/projectable/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/graphics/gthumb/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/graphics/monado/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/graphics/oculante/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/graphics/upscayl/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/kde/arianna.nix2
-rw-r--r--nixpkgs/pkgs/applications/kde/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/kde/gwenview/default.nix (renamed from nixpkgs/pkgs/applications/kde/gwenview.nix)4
-rw-r--r--nixpkgs/pkgs/applications/kde/gwenview/kimageannotator.patch56
-rw-r--r--nixpkgs/pkgs/applications/misc/1password/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/misc/johnny-reborn/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/misc/johnny-reborn/with-data.nix13
-rw-r--r--nixpkgs/pkgs/applications/misc/kiwix/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/misc/kiwix/lib.nix13
-rw-r--r--nixpkgs/pkgs/applications/misc/kiwix/tools.nix12
-rw-r--r--nixpkgs/pkgs/applications/misc/kratos/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/misc/lutris/fhsenv.nix9
-rw-r--r--nixpkgs/pkgs/applications/misc/mako/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/misc/nwg-panel/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/misc/snagboot/default.nix5
-rw-r--r--nixpkgs/pkgs/applications/misc/swaynotificationcenter/001-backport-pr296.patch50
-rw-r--r--nixpkgs/pkgs/applications/misc/swaynotificationcenter/default.nix15
-rw-r--r--nixpkgs/pkgs/applications/misc/syncthingtray/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/misc/toipe/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/misc/typioca/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/misc/valent/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/misc/wttrbar/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/misc/xmrig/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/core/default.nix11
-rw-r--r--nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/asn/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/avalanchego/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/brave/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix818
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/developer-edition_sources.nix818
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix8
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/floorp/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/librewolf/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/librewolf/src.json14
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/atmos/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/bosh-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/cmctl/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helm/plugins/helm-unittest.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/k3s/builder.nix1
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/karmor/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kube-score/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubedb-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubefirst/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/linkerd/edge.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/popeye/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/talosctl/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/discordo/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/suricata/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/beeper/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/element/pin.nix10
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/Cargo.lock384
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop-beta.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/himalaya/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/networking/onionshare/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/onionshare/fix-qrcode-gui.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/powerdns-admin/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/networking/seafile-client/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rclone/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/office/moneyplex/default.nix123
-rw-r--r--nixpkgs/pkgs/applications/office/paperless-ngx/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/office/wpsoffice/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/radio/wsjtx/default.nix2
-rw-r--r--nixpkgs/pkgs/applications/science/biology/last/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/science/logic/lean4/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/science/math/eigenmath/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/terminal-emulators/rio/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/version-management/commitizen/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/version-management/conform/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-dive/default.nix10
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-gone/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/version-management/git-mit/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitea/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/version-management/gitoxide/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/version-management/legit-web/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/version-management/vcsh/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/davinci-resolve/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/mediathekview/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/video/kodi/addons/youtube/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix6
-rw-r--r--nixpkgs/pkgs/applications/video/shotcut/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/virtualization/OVMF/default.nix8
-rw-r--r--nixpkgs/pkgs/applications/virtualization/docker/default.nix16
-rw-r--r--nixpkgs/pkgs/applications/virtualization/lima/bin.nix10
-rw-r--r--nixpkgs/pkgs/applications/virtualization/lima/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/virtualization/tart/default.nix6
-rw-r--r--nixpkgs/pkgs/applications/virtualization/xen/4.15.nix2
-rw-r--r--nixpkgs/pkgs/applications/window-managers/eww/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix4
-rw-r--r--nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix6
-rw-r--r--nixpkgs/pkgs/build-support/docker/default.nix65
-rw-r--r--nixpkgs/pkgs/build-support/docker/stream_layered_image.py27
-rw-r--r--nixpkgs/pkgs/build-support/php/hooks/composer-install-hook.sh12
-rw-r--r--nixpkgs/pkgs/build-support/php/hooks/composer-repository-hook.sh7
-rw-r--r--nixpkgs/pkgs/build-support/php/hooks/default.nix13
-rw-r--r--nixpkgs/pkgs/build-support/php/hooks/php-script-utils.bash12
-rw-r--r--nixpkgs/pkgs/build-support/substitute/substitute.nix56
-rw-r--r--nixpkgs/pkgs/build-support/substitute/substitute.sh8
-rw-r--r--nixpkgs/pkgs/build-support/trivial-builders/default.nix13
-rw-r--r--nixpkgs/pkgs/by-name/aa/aaaaxy/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ad/adwsteamgtk/package.nix52
-rw-r--r--nixpkgs/pkgs/by-name/an/ansel/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ap/apt-mirror/package.nix46
-rw-r--r--nixpkgs/pkgs/by-name/as/ast-grep/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/at/atuin/package.nix18
-rw-r--r--nixpkgs/pkgs/by-name/au/audiobookshelf/source.json10
-rwxr-xr-xnixpkgs/pkgs/by-name/au/audiobookshelf/update.nu2
-rw-r--r--nixpkgs/pkgs/by-name/be/bemoji/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/bi/bitmagnet/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/bi/bitwarden-cli/package.nix (renamed from nixpkgs/pkgs/tools/security/bitwarden/cli.nix)0
-rw-r--r--nixpkgs/pkgs/by-name/bi/bitwarden-desktop/package.nix (renamed from nixpkgs/pkgs/tools/security/bitwarden/default.nix)7
-rw-r--r--nixpkgs/pkgs/by-name/bp/bpftop/package.nix43
-rw-r--r--nixpkgs/pkgs/by-name/bu/butler/package.nix (renamed from nixpkgs/pkgs/games/itch/butler.nix)0
-rw-r--r--nixpkgs/pkgs/by-name/by/byobu/package.nix98
-rw-r--r--nixpkgs/pkgs/by-name/ca/cargo-make/package.nix (renamed from nixpkgs/pkgs/development/tools/rust/cargo-make/default.nix)6
-rw-r--r--nixpkgs/pkgs/by-name/ch/chrysalis/package.nix (renamed from nixpkgs/pkgs/applications/misc/chrysalis/default.nix)8
-rw-r--r--nixpkgs/pkgs/by-name/ch/chrysalis/update.sh16
-rw-r--r--nixpkgs/pkgs/by-name/cl/cld2/package.nix50
-rw-r--r--nixpkgs/pkgs/by-name/cm/cmake/package.nix1
-rw-r--r--nixpkgs/pkgs/by-name/cn/cntb/package.nix13
-rw-r--r--nixpkgs/pkgs/by-name/cs/csvlens/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/dc/dc3dd/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ed/edbrowse/0001-small-fixes.patch (renamed from nixpkgs/pkgs/applications/editors/edbrowse/0001-small-fixes.patch)0
-rw-r--r--nixpkgs/pkgs/by-name/ed/edbrowse/package.nix (renamed from nixpkgs/pkgs/applications/editors/edbrowse/default.nix)68
-rw-r--r--nixpkgs/pkgs/by-name/el/elf-info/package.nix29
-rw-r--r--nixpkgs/pkgs/by-name/em/emacspeak/package.nix (renamed from nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacspeak/default.nix)35
-rw-r--r--nixpkgs/pkgs/by-name/ez/eza/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ff/ffsubsync/package.nix22
-rw-r--r--nixpkgs/pkgs/by-name/fl/flake-checker/package.nix34
-rw-r--r--nixpkgs/pkgs/by-name/fl/flarectl/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/fl/flottbot/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/fm/fm-go/package.nix31
-rw-r--r--nixpkgs/pkgs/by-name/fw/fwupd/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/gi/gickup/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/gi/git-releaser/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/gi/git-together/package.nix35
-rw-r--r--nixpkgs/pkgs/by-name/go/go-errorlint/package.nix29
-rw-r--r--nixpkgs/pkgs/by-name/gp/gpt4all/package.nix (renamed from nixpkgs/pkgs/by-name/gp/gpt4all-chat/package.nix)7
-rw-r--r--nixpkgs/pkgs/by-name/ho/home-manager/package.nix (renamed from nixpkgs/pkgs/tools/package-management/home-manager/default.nix)42
-rw-r--r--nixpkgs/pkgs/by-name/hu/hugo/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/hy/hypridle/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/hy/hyprlang/package.nix13
-rw-r--r--nixpkgs/pkgs/by-name/hy/hyprlock/package.nix60
-rw-r--r--nixpkgs/pkgs/by-name/im/imhex/package.nix23
-rw-r--r--nixpkgs/pkgs/by-name/in/incus/client.nix3
-rw-r--r--nixpkgs/pkgs/by-name/in/incus/latest.nix13
-rw-r--r--nixpkgs/pkgs/by-name/in/incus/lts.nix2
-rw-r--r--nixpkgs/pkgs/by-name/in/incus/package.nix17
-rw-r--r--nixpkgs/pkgs/by-name/in/incus/unwrapped.nix12
-rw-r--r--nixpkgs/pkgs/by-name/ip/ipam/package.nix42
-rw-r--r--nixpkgs/pkgs/by-name/it/itch/package.nix (renamed from nixpkgs/pkgs/games/itch/default.nix)29
-rw-r--r--nixpkgs/pkgs/by-name/ja/jan/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/ku/kubectl-validate/package.nix40
-rw-r--r--nixpkgs/pkgs/by-name/le/lefthook/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/li/libappimage/package.nix87
-rw-r--r--nixpkgs/pkgs/by-name/li/libgrapheme/package.nix25
-rw-r--r--nixpkgs/pkgs/by-name/li/lightningcss/package.nix (renamed from nixpkgs/pkgs/development/tools/lightningcss/default.nix)6
-rw-r--r--nixpkgs/pkgs/by-name/li/livekit-cli/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/li/livekit/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ll/llama-cpp/package.nix183
-rw-r--r--nixpkgs/pkgs/by-name/lo/loramon/package.nix33
-rw-r--r--nixpkgs/pkgs/by-name/lu/lubelogger/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/me/mealie/mealie-frontend.nix51
-rw-r--r--nixpkgs/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch103
-rw-r--r--nixpkgs/pkgs/by-name/me/mealie/package.nix166
-rw-r--r--nixpkgs/pkgs/by-name/mf/mfcj880dwcupswrapper/package.nix46
-rw-r--r--nixpkgs/pkgs/by-name/mf/mfcj880dwlpr/package.nix94
-rw-r--r--nixpkgs/pkgs/by-name/ms/msolve/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/my/mycelium/Cargo.lock2544
-rw-r--r--nixpkgs/pkgs/by-name/my/mycelium/package.nix39
-rw-r--r--nixpkgs/pkgs/by-name/my/mystmd/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/ni/niri/Cargo.lock588
-rw-r--r--nixpkgs/pkgs/by-name/ni/niri/package.nix22
-rw-r--r--nixpkgs/pkgs/by-name/no/nosql-workbench/package.nix29
-rw-r--r--nixpkgs/pkgs/by-name/oe/oelint-adv/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/op/open-scq30/package.nix74
-rw-r--r--nixpkgs/pkgs/by-name/ou/outils/package.nix (renamed from nixpkgs/pkgs/tools/misc/outils/default.nix)6
-rw-r--r--nixpkgs/pkgs/by-name/pa/patch2pr/package.nix40
-rw-r--r--nixpkgs/pkgs/by-name/py/pyprland/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/ra/raspberrypi-eeprom/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/re/redocly-cli/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/re/renode-unstable/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/rq/rqbit/Cargo.lock35
-rw-r--r--nixpkgs/pkgs/by-name/rq/rqbit/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/sc/scitokens-cpp/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/se/searxng/package.nix1
-rw-r--r--nixpkgs/pkgs/by-name/sn/sn0int/package.nix (renamed from nixpkgs/pkgs/tools/security/sn0int/default.nix)10
-rw-r--r--nixpkgs/pkgs/by-name/sp/spicetify-cli/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/sq/squirreldisk/Cargo.lock4060
-rw-r--r--nixpkgs/pkgs/by-name/sq/squirreldisk/package.json40
-rw-r--r--nixpkgs/pkgs/by-name/sq/squirreldisk/package.nix89
-rw-r--r--nixpkgs/pkgs/by-name/st/stereotool/package.nix171
-rw-r--r--nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix14
-rw-r--r--nixpkgs/pkgs/by-name/sw/swaycons/package.nix2
-rw-r--r--nixpkgs/pkgs/by-name/sw/swayfx-unwrapped/package.nix15
-rw-r--r--nixpkgs/pkgs/by-name/ta/tabby/package.nix73
-rw-r--r--nixpkgs/pkgs/by-name/ta/taschenrechner/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/te/telescope/package.nix (renamed from nixpkgs/pkgs/applications/networking/browsers/telescope/default.nix)11
-rw-r--r--nixpkgs/pkgs/by-name/ti/tigerbeetle/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/ti/tippecanoe/package.nix (renamed from nixpkgs/pkgs/applications/misc/tippecanoe/default.nix)4
-rw-r--r--nixpkgs/pkgs/by-name/tu/tuleap-cli/package.nix8
-rw-r--r--nixpkgs/pkgs/by-name/ue/ueberzugpp/package.nix (renamed from nixpkgs/pkgs/tools/graphics/ueberzugpp/default.nix)10
-rw-r--r--nixpkgs/pkgs/by-name/ui/uiua/package.nix7
-rwxr-xr-xnixpkgs/pkgs/by-name/ui/uiua/update.sh7
-rw-r--r--nixpkgs/pkgs/by-name/un/unison/package.nix (renamed from nixpkgs/pkgs/applications/networking/sync/unison/default.nix)42
-rw-r--r--nixpkgs/pkgs/by-name/uv/uv/Cargo.lock86
-rw-r--r--nixpkgs/pkgs/by-name/uv/uv/package.nix27
-rw-r--r--nixpkgs/pkgs/by-name/ux/uxn/package.nix3
-rw-r--r--nixpkgs/pkgs/by-name/va/vault-unseal/package.nix30
-rw-r--r--nixpkgs/pkgs/by-name/vl/vlc/package.nix (renamed from nixpkgs/pkgs/applications/video/vlc/default.nix)94
-rw-r--r--nixpkgs/pkgs/by-name/wa/warp-terminal/package.nix90
-rw-r--r--nixpkgs/pkgs/by-name/wa/wayland-pipewire-idle-inhibit/package.nix8
-rw-r--r--nixpkgs/pkgs/by-name/wh/whistle/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/wi/wiremock/package.nix4
-rw-r--r--nixpkgs/pkgs/by-name/wi/wit-bindgen/package.nix (renamed from nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix)8
-rw-r--r--nixpkgs/pkgs/by-name/xc/xclicker/package.nix63
-rw-r--r--nixpkgs/pkgs/by-name/xd/xdg-utils-cxx/package.nix30
-rw-r--r--nixpkgs/pkgs/by-name/xr/xr-hardware/package.nix27
-rw-r--r--nixpkgs/pkgs/by-name/za/zapzap/package.nix6
-rw-r--r--nixpkgs/pkgs/by-name/zb/zbus-xmlgen/package.nix7
-rw-r--r--nixpkgs/pkgs/by-name/zc/zcfan/package.nix4
-rw-r--r--nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix4
-rw-r--r--nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix6
-rw-r--r--nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix4
-rw-r--r--nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix4
-rw-r--r--nixpkgs/pkgs/data/themes/alacritty-theme/default.nix6
-rw-r--r--nixpkgs/pkgs/data/themes/whitesur/default.nix4
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/2000-Support-wrapping-for-Nixpkgs.patch160
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/default.nix253
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix89
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/wrapper.nix70
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/data/suru-icon-theme/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/lomiri/default.nix3
-rw-r--r--nixpkgs/pkgs/development/compilers/factor-lang/factor99.nix4
-rw-r--r--nixpkgs/pkgs/development/compilers/intel-graphics-compiler/default.nix11
-rw-r--r--nixpkgs/pkgs/development/compilers/tinycc/default.nix62
-rw-r--r--nixpkgs/pkgs/development/embedded/svdtools/default.nix6
-rw-r--r--nixpkgs/pkgs/development/haskell-modules/configuration-common.nix12
-rw-r--r--nixpkgs/pkgs/development/interpreters/bats/libraries.nix4
-rw-r--r--nixpkgs/pkgs/development/interpreters/micropython/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/SDL2/default.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/accounts-qt/default.nix11
-rw-r--r--nixpkgs/pkgs/development/libraries/duckdb/default.nix42
-rw-r--r--nixpkgs/pkgs/development/libraries/duckdb/version.patch2
-rw-r--r--nixpkgs/pkgs/development/libraries/fcft/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/gegl/default.nix28
-rw-r--r--nixpkgs/pkgs/development/libraries/google-cloud-cpp/default.nix10
-rw-r--r--nixpkgs/pkgs/development/libraries/google-cloud-cpp/skipped_tests.toml139
-rw-r--r--nixpkgs/pkgs/development/libraries/hunspell/dictionaries.nix6
-rw-r--r--nixpkgs/pkgs/development/libraries/imgui/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/kcolorpicker/default.nix18
-rw-r--r--nixpkgs/pkgs/development/libraries/kimageannotator/default.nix21
-rw-r--r--nixpkgs/pkgs/development/libraries/level-zero/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/libgbinder/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/libshumate/default.nix5
-rw-r--r--nixpkgs/pkgs/development/libraries/lightgbm/default.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/lucene++/default.nix3
-rw-r--r--nixpkgs/pkgs/development/libraries/paho-mqtt-c/default.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/paho-mqtt-cpp/default.nix8
-rw-r--r--nixpkgs/pkgs/development/libraries/qt-6/default.nix138
-rw-r--r--nixpkgs/pkgs/development/libraries/qt-6/modules/qtbase.nix40
-rw-r--r--nixpkgs/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch23
-rw-r--r--nixpkgs/pkgs/development/libraries/science/math/libamplsolver/default.nix2
-rw-r--r--nixpkgs/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix4
-rw-r--r--nixpkgs/pkgs/development/libraries/signond/default.nix13
-rw-r--r--nixpkgs/pkgs/development/libraries/zimlib/default.nix14
-rw-r--r--nixpkgs/pkgs/development/misc/brev-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/async.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/default.nix31
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/driver-mariadb.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/driver-postgresql.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/driver-sqlite3.nix8
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/dynload.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/lwt.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/caqti/type-calendar.nix2
-rw-r--r--nixpkgs/pkgs/development/ocaml-modules/xxhash/default.nix44
-rw-r--r--nixpkgs/pkgs/development/php-packages/deployer/default.nix44
-rw-r--r--nixpkgs/pkgs/development/php-packages/phan/default.nix42
-rw-r--r--nixpkgs/pkgs/development/php-packages/phing/composer.lock7486
-rw-r--r--nixpkgs/pkgs/development/php-packages/phing/default.nix45
-rw-r--r--nixpkgs/pkgs/development/php-packages/phive/default.nix39
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-codesniffer/composer.lock1349
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-codesniffer/default.nix27
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-cs-fixer/composer.lock4747
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix45
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-parallel-lint/composer.lock2115
-rw-r--r--nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix53
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpcbf/default.nix35
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpcs/default.nix35
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpmd/composer.lock1235
-rw-r--r--nixpkgs/pkgs/development/php-packages/phpmd/default.nix45
-rw-r--r--nixpkgs/pkgs/development/php-packages/psalm/composer.lock529
-rw-r--r--nixpkgs/pkgs/development/php-packages/psalm/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioairzone/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioautomower/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioboto3/default.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiocsv/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiomysensors/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/aioshelly/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/aiounifi/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/approvaltests/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/argilla/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/arviz/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-encryption-sdk/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/awscrt/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-core/default.nix16
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault-administration/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix27
-rw-r--r--nixpkgs/pkgs/development/python-modules/azure-keyvault-secrets/default.nix29
-rw-r--r--nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/boto3/default.nix22
-rw-r--r--nixpkgs/pkgs/development/python-modules/botocore-stubs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/botocore/default.nix37
-rw-r--r--nixpkgs/pkgs/development/python-modules/bottleneck/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/cachier/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/cbor2/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/chainstream/default.nix26
-rw-r--r--nixpkgs/pkgs/development/python-modules/cheetah3/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/chroma-hnswlib/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/chromadb/default.nix160
-rw-r--r--nixpkgs/pkgs/development/python-modules/clarabel/Cargo.lock1487
-rw-r--r--nixpkgs/pkgs/development/python-modules/clarabel/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/clarifai/default.nix61
-rw-r--r--nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/clickhouse-connect/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudpathlib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/coffea/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cohere/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/cssbeautifier/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/databricks-sql-connector/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbt-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbt-redshift/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/deebot-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dirtyjson/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/dnf-plugins-core/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckdb-engine/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckdb/default.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/duckdb/setup.patch30
-rw-r--r--nixpkgs/pkgs/development/python-modules/e3-core/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/e3-testsuite/default.nix39
-rw-r--r--nixpkgs/pkgs/development/python-modules/eigenpy/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/fastparquet/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/flask-seasurf/0001-Fix-with-new-dependency-versions.patch45
-rw-r--r--nixpkgs/pkgs/development/python-modules/flax/default.nix35
-rw-r--r--nixpkgs/pkgs/development/python-modules/floret/cstdint.patch12
-rw-r--r--nixpkgs/pkgs/development/python-modules/floret/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-compute/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradio/client.nix7
-rw-r--r--nixpkgs/pkgs/development/python-modules/gradio/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/graphviz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/griffe/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/habluetooth/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/holidays/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/home-assistant-chip-core/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix15
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix79
-rw-r--r--nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/indexed-bzip2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/influxdb/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/intake/default.nix51
-rw-r--r--nixpkgs/pkgs/development/python-modules/jax/default.nix18
-rw-r--r--nixpkgs/pkgs/development/python-modules/jax/test-cuda.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix48
-rw-r--r--nixpkgs/pkgs/development/python-modules/karton-core/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/kbcstorage/default.nix38
-rw-r--r--nixpkgs/pkgs/development/python-modules/langchain-core/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/langsmith/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ldfparser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/libtmux/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/litellm/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-cli/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix115
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-embeddings-google/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-legacy/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix28
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-program-openai/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix32
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-json/default.nix34
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix30
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-readers-weather/default.nix36
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix41
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-index/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/llama-parse/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/llamaindex-py-client/default.nix45
-rw-r--r--nixpkgs/pkgs/development/python-modules/lxml-stubs/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/meraki/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/monty/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mplhep/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/msal/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/mscerts/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrest/default.nix14
-rw-r--r--nixpkgs/pkgs/development/python-modules/msrestazure/default.nix53
-rw-r--r--nixpkgs/pkgs/development/python-modules/myuplink/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nats-py/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/neo4j/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/nibabel/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/nibe/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oci/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/openrazer/common.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix54
-rw-r--r--nixpkgs/pkgs/development/python-modules/opower/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/overrides/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pontos/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pubnub/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pulsar-client/default.nix119
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydeconz/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydiscovergy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pydub/default.nix46
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyenphase/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyexiftool/default.nix47
-rw-r--r--nixpkgs/pkgs/development/python-modules/pygitguardian/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyipp/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymc/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/pymicrobot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyngrok/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pyrisco/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pysignalclirestapi/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-idzip/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix13
-rw-r--r--nixpkgs/pkgs/development/python-modules/python-roborock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/pytraccar/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/ratarmount/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdkit/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/reptor/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/requests-ratelimiter/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/ripser/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/roombapy/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/rope/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/s3transfer/default.nix31
-rw-r--r--nixpkgs/pkgs/development/python-modules/sdds/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/shazamio/default.nix1
-rw-r--r--nixpkgs/pkgs/development/python-modules/simpful/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/slackclient/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/snapcast/default.nix11
-rw-r--r--nixpkgs/pkgs/development/python-modules/snorkel/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/speechbrain/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/sqlglot/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/systembridgeconnector/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/tensordict/default.nix17
-rw-r--r--nixpkgs/pkgs/development/python-modules/termcolor/default.nix5
-rw-r--r--nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/torch/default.nix2
-rw-r--r--nixpkgs/pkgs/development/python-modules/trimesh/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/twilio/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-aiobotocore/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-docutils/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-html5lib/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/types-lxml/default.nix69
-rw-r--r--nixpkgs/pkgs/development/python-modules/universal-silabs-flasher/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/unstructured/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/uproot/default.nix12
-rw-r--r--nixpkgs/pkgs/development/python-modules/urwid-readline/default.nix24
-rw-r--r--nixpkgs/pkgs/development/python-modules/userpath/default.nix6
-rw-r--r--nixpkgs/pkgs/development/python-modules/vllm/default.nix10
-rw-r--r--nixpkgs/pkgs/development/python-modules/wagtail-localize/default.nix8
-rw-r--r--nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix21
-rw-r--r--nixpkgs/pkgs/development/python-modules/weconnect/default.nix40
-rw-r--r--nixpkgs/pkgs/development/python-modules/xknx/default.nix19
-rw-r--r--nixpkgs/pkgs/development/python-modules/xknxproject/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yalexs-ble/default.nix4
-rw-r--r--nixpkgs/pkgs/development/python-modules/yalexs/default.nix25
-rw-r--r--nixpkgs/pkgs/development/python-modules/yaspin/default.nix9
-rw-r--r--nixpkgs/pkgs/development/python-modules/yolink-api/default.nix8
-rw-r--r--nixpkgs/pkgs/development/quickemu/default.nix4
-rw-r--r--nixpkgs/pkgs/development/r-modules/default.nix5
-rw-r--r--nixpkgs/pkgs/development/skaware-packages/s6-networking/default.nix4
-rw-r--r--nixpkgs/pkgs/development/skaware-packages/s6-rc-man-pages/default.nix2
-rw-r--r--nixpkgs/pkgs/development/skaware-packages/skalibs/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/analysis/checkov/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/analysis/snyk/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/bearer/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/biome/default.nix5
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/xmake/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/buildah/default.nix9
-rw-r--r--nixpkgs/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/continuous-integration/github-runner/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/database/atlas/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/database/prqlc/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/fable/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/fastddsgen/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/gci/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/kubedock/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/kubernetes-controller-tools/default.nix14
-rw-r--r--nixpkgs/pkgs/development/tools/language-servers/gopls/default.nix7
-rw-r--r--nixpkgs/pkgs/development/tools/misc/binutils/2.38/default.nix2
-rw-r--r--nixpkgs/pkgs/development/tools/misc/binutils/default.nix2
-rw-r--r--nixpkgs/pkgs/development/tools/misc/drush/default.nix31
-rw-r--r--nixpkgs/pkgs/development/tools/misc/n98-magerun/default.nix41
-rw-r--r--nixpkgs/pkgs/development/tools/misc/n98-magerun2/default.nix38
-rw-r--r--nixpkgs/pkgs/development/tools/misc/reviewdog/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/nest-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/oh-my-posh/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/packet-sd/default.nix5
-rw-r--r--nixpkgs/pkgs/development/tools/pet/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rbspy/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-audit/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-chef/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-codspeed/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-dephell/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-generate/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-mobile2/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-shuttle/Cargo.lock1510
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-shuttle/default.nix5
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-tally/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-tauri/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-ui/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-unused-features/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-update/default.nix8
-rw-r--r--nixpkgs/pkgs/development/tools/rust/cargo-workspaces/default.nix2
-rw-r--r--nixpkgs/pkgs/development/tools/rust/probe-rs/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rust/sqlx-cli/default.nix3
-rw-r--r--nixpkgs/pkgs/development/tools/rust/typeshare/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/rye/Cargo.lock113
-rw-r--r--nixpkgs/pkgs/development/tools/rye/default.nix21
-rw-r--r--nixpkgs/pkgs/development/tools/sentry-cli/default.nix16
-rw-r--r--nixpkgs/pkgs/development/tools/spring-boot-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/turso-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/twilio-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/development/tools/vultr-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/wails/default.nix6
-rw-r--r--nixpkgs/pkgs/development/tools/wxformbuilder/default.nix4
-rw-r--r--nixpkgs/pkgs/development/web/bun/default.nix10
-rw-r--r--nixpkgs/pkgs/games/ferium/default.nix6
-rw-r--r--nixpkgs/pkgs/games/hyperrogue/default.nix4
-rw-r--r--nixpkgs/pkgs/games/openmw/tes3mp.nix5
-rw-r--r--nixpkgs/pkgs/games/shattered-pixel-dungeon/summoning-pixel-dungeon.nix2
-rw-r--r--nixpkgs/pkgs/games/unnethack/default.nix5
-rw-r--r--nixpkgs/pkgs/games/vintagestory/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/default.nix84
-rw-r--r--nixpkgs/pkgs/kde/frameworks/attica/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/baloo/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/frameworks/bluez-qt/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/breeze-icons/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/frameworks/default.nix74
-rw-r--r--nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/default.nix8
-rw-r--r--nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh128
-rw-r--r--nixpkgs/pkgs/kde/frameworks/frameworkintegration/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kapidox/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/karchive/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kauth/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kauth/fix-paths.patch17
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kbookmarks/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcalendarcore/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcmutils/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcodecs/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcolorscheme/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcompletion/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kconfig/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kconfigwidgets/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcontacts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcoreaddons/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kcrash/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdav/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdbusaddons/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdeclarative/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kded/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdesu/default.nix7
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch38
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdnssd/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kdoctools/default.nix18
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch14
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kfilemetadata/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kglobalaccel/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kguiaddons/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kholidays/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/ki18n/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kiconthemes/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kidletime/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kimageformats/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kio/0001-Remove-impure-smbd-search-path.patch25
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kio/default.nix18
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kirigami/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kitemmodels/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kitemviews/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kjobwidgets/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/knewstuff/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch14
-rw-r--r--nixpkgs/pkgs/kde/frameworks/knotifications/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/knotifyconfig/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kpackage/default.nix8
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kpackage/follow-symlinks.patch13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kparts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kpeople/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kplotting/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kpty/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kquickcharts/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/krunner/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kservice/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kservice/qdiriterator-follow-symlinks.patch13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kstatusnotifieritem/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/ksvg/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/frameworks/ktexteditor/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/ktexttemplate/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/ktextwidgets/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kunitconversion/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kuserfeedback/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kwallet/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kwidgetsaddons/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kwindowsystem/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/frameworks/kxmlgui/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/frameworks/modemmanager-qt/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/networkmanager-qt/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/prison/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/purpose/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/frameworks/qqc2-desktop-style/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/frameworks/solid/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/frameworks/solid/fix-search-path.patch17
-rw-r--r--nixpkgs/pkgs/kde/frameworks/sonnet/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/frameworks/syndication/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/frameworks/syntax-highlighting/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/frameworks/threadweaver/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi-search/default.nix33
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadi/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/akregator/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/alligator/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/analitza/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/angelfish/default.nix32
-rw-r--r--nixpkgs/pkgs/kde/gear/arianna/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/ark/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/artikulate/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix24
-rw-r--r--nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch35
-rw-r--r--nixpkgs/pkgs/kde/gear/audiotube/default.nix53
-rw-r--r--nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/blinken/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/bomber/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/bovo/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/calendarsupport/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/calindori/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/cantor/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/cervisia/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/colord-kde/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/default.nix248
-rw-r--r--nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/dolphin/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/dragon/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/elisa/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/eventviews/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/falkon/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/filelight/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ghostwriter/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/granatier/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/grantleetheme/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/gwenview/default.nix32
-rw-r--r--nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/itinerary/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch15
-rw-r--r--nixpkgs/pkgs/kde/gear/juk/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/k3b/default.nix53
-rw-r--r--nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kaddressbook/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kajongg/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kalarm/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kalgebra/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kalk/default.nix25
-rw-r--r--nixpkgs/pkgs/kde/gear/kalzium/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/kamera/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kamoso/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kanagram/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kapman/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kapptemplate/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kasts/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kate/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/katomic/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kbackup/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kblackbox/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kblocks/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbounce/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbreakout/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kbruch/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcachegrind/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kcalc/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/gear/kcalutils/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcharselect/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kclock/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kcron/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix20
-rw-r--r--nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch22
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch14
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenlive/default.nix40
-rw-r--r--nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch46
-rw-r--r--nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix35
-rw-r--r--nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdev-php/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kdev-python/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kdevelop/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kdf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdialog/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kdiamond/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/keysmith/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kfind/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kfourinline/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kgeography/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kget/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kgpg/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/khangman/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/khelpcenter/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kig/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kigo/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/killbots/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kimap/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-admin/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix62
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-extras/default.nix45
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kiriki/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kiten/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kitinerary/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kjournald/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kldap/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kleopatra/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/klettres/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/klickety/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/klines/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmag/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmahjongg/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmail/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmailtransport/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmbox/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmime/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmines/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kmix/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kmousetool/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kmouth/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kmplot/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/knavalbattle/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/knetwalk/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/knights/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/knotes/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/koko/default.nix46
-rw-r--r--nixpkgs/pkgs/kde/gear/kolf/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kollision/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kolourpaint/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kompare/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kongress/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/konqueror/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/konquest/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/konsole/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kontact/default.nix23
-rw-r--r--nixpkgs/pkgs/kde/gear/kontactinterface/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kontrast/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/konversation/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kopeninghours/default.nix20
-rw-r--r--nixpkgs/pkgs/kde/gear/korganizer/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kpat/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kpkpass/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kpmcore/default.nix74
-rw-r--r--nixpkgs/pkgs/kde/gear/kpublictransport/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/krdc/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/krecorder/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kreversi/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/krfb/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/kruler/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksanecore/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kshisen/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksirk/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksmtp/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kspaceduel/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksquares/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ksudoku/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ksystemlog/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kteatime/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktimer/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/ktnef/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktorrent/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/ktouch/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/ktrip/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/ktuberling/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kturtle/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/kubrick/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/kwave/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/kweather/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/kwordquiz/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/libgravatar/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libkcddb/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdcraw/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdegames/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/libkdepim/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libkexiv2/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkgapi/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/libkipi/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/libkleo/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/libksane/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/libksieve/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/libktorrent/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/lokalize/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/lskat/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/mailcommon/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/mailimporter/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/marble/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/markdownpart/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/mbox-importer/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/merkuro/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/messagelib/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/minuet/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/neochat/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/okular/default.nix30
-rw-r--r--nixpkgs/pkgs/kde/gear/palapeli/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/parley/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/partitionmanager/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/picmi/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/pimcommon/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/plasmatube/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/gear/poxml/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/rocs/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/skanlite/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/skanpage/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/gear/spectacle/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/gear/step/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/gear/svgpart/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/sweeper/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/telly-skout/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/gear/tokodon/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/gear/umbrello/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/gear/yakuake/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/gear/zanshin/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/generated/dependencies.json6133
-rw-r--r--nixpkgs/pkgs/kde/generated/licenses.json2873
-rw-r--r--nixpkgs/pkgs/kde/generated/projects.json8078
-rw-r--r--nixpkgs/pkgs/kde/generated/sources/frameworks.json362
-rw-r--r--nixpkgs/pkgs/kde/generated/sources/gear.json1232
-rw-r--r--nixpkgs/pkgs/kde/generated/sources/plasma.json317
-rw-r--r--nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix126
-rw-r--r--nixpkgs/pkgs/kde/lib/move-dev-hook.sh8
-rw-r--r--nixpkgs/pkgs/kde/misc/alpaka/default.nix25
-rw-r--r--nixpkgs/pkgs/kde/misc/kdiagram/default.nix20
-rw-r--r--nixpkgs/pkgs/kde/misc/kdsoap-ws-discovery-client/default.nix19
-rw-r--r--nixpkgs/pkgs/kde/misc/kio-fuse/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/misc/kirigami-addons/default.nix31
-rw-r--r--nixpkgs/pkgs/kde/misc/ktextaddons/default.nix27
-rw-r--r--nixpkgs/pkgs/kde/misc/kunifiedpush/default.nix24
-rw-r--r--nixpkgs/pkgs/kde/misc/kweathercore/default.nix19
-rw-r--r--nixpkgs/pkgs/kde/misc/mpvqt/default.nix23
-rw-r--r--nixpkgs/pkgs/kde/misc/oxygen-icons/default.nix18
-rw-r--r--nixpkgs/pkgs/kde/misc/phonon-vlc/default.nix23
-rw-r--r--nixpkgs/pkgs/kde/misc/phonon/default.nix36
-rw-r--r--nixpkgs/pkgs/kde/misc/polkit-qt-1/default.nix24
-rw-r--r--nixpkgs/pkgs/kde/misc/polkit-qt-1/full-paths.patch184
-rw-r--r--nixpkgs/pkgs/kde/misc/pulseaudio-qt/default.nix21
-rw-r--r--nixpkgs/pkgs/kde/plasma/bluedevil/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze-grub/default.nix17
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze-gtk/0001-fix-add-executable-bit.patch25
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze-gtk/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze-plymouth/default.nix52
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze-plymouth/install-paths.patch19
-rw-r--r--nixpkgs/pkgs/kde/plasma/breeze/default.nix44
-rw-r--r--nixpkgs/pkgs/kde/plasma/default.nix65
-rw-r--r--nixpkgs/pkgs/kde/plasma/discover/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/plasma/drkonqi/default.nix41
-rw-r--r--nixpkgs/pkgs/kde/plasma/drkonqi/gdb-path.patch28
-rw-r--r--nixpkgs/pkgs/kde/plasma/flatpak-kcm/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/plasma/kactivitymanagerd/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/plasma/kde-cli-tools/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/kde-gtk-config/0001-gsettings-schemas-path.patch21
-rw-r--r--nixpkgs/pkgs/kde/plasma/kde-gtk-config/default.nix24
-rw-r--r--nixpkgs/pkgs/kde/plasma/kdecoration/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/kdeplasma-addons/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/kgamma/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/kglobalacceld/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/kinfocenter/0001-tool-paths.patch51
-rw-r--r--nixpkgs/pkgs/kde/plasma/kinfocenter/default.nix29
-rw-r--r--nixpkgs/pkgs/kde/plasma/kmenuedit/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/kpipewire/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/plasma/kscreen/default.nix15
-rw-r--r--nixpkgs/pkgs/kde/plasma/kscreenlocker/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/plasma/ksshaskpass/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/ksystemstats/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwallet-pam/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwayland-integration/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwayland/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch114
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwin/0001-follow-symlinks.patch25
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch26
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwin/default.nix54
-rw-r--r--nixpkgs/pkgs/kde/plasma/kwrited/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/layer-shell-qt/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/plasma/libkscreen/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/plasma/libksysguard/default.nix14
-rw-r--r--nixpkgs/pkgs/kde/plasma/libplasma/default.nix13
-rw-r--r--nixpkgs/pkgs/kde/plasma/lightdm-greeter-kde/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/milou/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/ocean-sound-theme/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/oxygen-sounds/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/oxygen/default.nix6
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-activities-stats/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-activities/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-browser-integration/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-desktop/default.nix67
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-desktop/hwclock-path.patch24
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-desktop/kcm-access.patch13
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-desktop/no-discover-shortcut.patch13
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-desktop/tzdir.patch18
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-disks/default.nix16
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-disks/smartctl-path.patch13
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-firewall/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-integration/default.nix67
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-integration/qml-path.patch12
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-mobile/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-nano/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-nm/0002-openvpn-binary-path.patch13
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-nm/default.nix26
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-pa/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-sdk/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-systemmonitor/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-thunderbolt/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-vault/0001-encfs-path.patch31
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-vault/0002-cryfs-path.patch25
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-vault/0003-fusermount-path.patch25
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-vault/0004-gocryptfs-path.patch13
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-vault/default.nix29
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-welcome/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-workspace-wallpapers/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-workspace/default.nix54
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-workspace/tool-paths.patch68
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma-workspace/wallpaper-paths.patch9
-rw-r--r--nixpkgs/pkgs/kde/plasma/plasma5support/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/plymouth-kcm/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/plasma/polkit-kde-agent-1/default.nix9
-rw-r--r--nixpkgs/pkgs/kde/plasma/powerdevil/default.nix11
-rw-r--r--nixpkgs/pkgs/kde/plasma/print-manager/default.nix10
-rw-r--r--nixpkgs/pkgs/kde/plasma/qqc2-breeze-style/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/sddm-kcm/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/systemsettings/default.nix4
-rw-r--r--nixpkgs/pkgs/kde/plasma/wacomtablet/default.nix12
-rw-r--r--nixpkgs/pkgs/kde/plasma/xdg-desktop-portal-kde/default.nix14
-rw-r--r--nixpkgs/pkgs/misc/autotiling/default.nix4
-rw-r--r--nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix6
-rw-r--r--nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix35
-rw-r--r--nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix35
-rw-r--r--nixpkgs/pkgs/misc/tmux-plugins/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/darwin/hexfiend/default.nix13
-rw-r--r--nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix7
-rw-r--r--nixpkgs/pkgs/os-specific/linux/ipset/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/common-config.nix1
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/generic.nix11
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/linux-libre.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix8
-rw-r--r--nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix14
-rw-r--r--nixpkgs/pkgs/os-specific/linux/openvswitch/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/reptyr/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/uhk-agent/default.nix4
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix14
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/stable.nix10
-rw-r--r--nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix10
-rw-r--r--nixpkgs/pkgs/pkgs-lib/formats.nix121
-rw-r--r--nixpkgs/pkgs/pkgs-lib/tests/formats.nix251
-rw-r--r--nixpkgs/pkgs/servers/consul/default.nix6
-rw-r--r--nixpkgs/pkgs/servers/etcd/3.5.nix7
-rw-r--r--nixpkgs/pkgs/servers/geospatial/pg_featureserv/default.nix20
-rw-r--r--nixpkgs/pkgs/servers/geospatial/pg_tileserv/default.nix22
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/component-packages.nix2
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/default.nix40
-rw-r--r--nixpkgs/pkgs/servers/home-assistant/stubs.nix4
-rw-r--r--nixpkgs/pkgs/servers/keycloak/scim-keycloak-user-storage-spi/default.nix8
-rw-r--r--nixpkgs/pkgs/servers/mail/rspamd/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/mattermost/default.nix39
-rw-r--r--nixpkgs/pkgs/servers/mobilizon/common.nix4
-rw-r--r--nixpkgs/pkgs/servers/mobilizon/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/mobilizon/frontend.nix2
-rw-r--r--nixpkgs/pkgs/servers/mobilizon/mix.nix250
-rw-r--r--nixpkgs/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix4
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix6
-rw-r--r--nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix6
-rw-r--r--nixpkgs/pkgs/servers/routinator/default.nix6
-rw-r--r--nixpkgs/pkgs/servers/sql/dolt/default.nix6
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix4
-rw-r--r--nixpkgs/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix4
-rw-r--r--nixpkgs/pkgs/servers/sql/rqlite/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/tailscale/default.nix4
-rw-r--r--nixpkgs/pkgs/servers/web-apps/matomo/default.nix4
-rw-r--r--nixpkgs/pkgs/shells/nix-your-shell/default.nix6
-rw-r--r--nixpkgs/pkgs/shells/nushell/default.nix10
-rw-r--r--nixpkgs/pkgs/shells/nushell/plugins/formats.nix2
-rw-r--r--nixpkgs/pkgs/shells/nushell/plugins/gstat.nix2
-rw-r--r--nixpkgs/pkgs/shells/nushell/plugins/query.nix2
-rw-r--r--nixpkgs/pkgs/shells/zsh/pure-prompt/default.nix4
-rw-r--r--nixpkgs/pkgs/test/default.nix4
-rw-r--r--nixpkgs/pkgs/test/substitute/default.nix96
-rw-r--r--nixpkgs/pkgs/test/systemd/default.nix5
-rw-r--r--nixpkgs/pkgs/test/systemd/nixos/default.nix37
-rw-r--r--nixpkgs/pkgs/tools/admin/clair/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/lxd/wrapper.nix11
-rw-r--r--nixpkgs/pkgs/tools/admin/pulumi-bin/data.nix258
-rw-r--r--nixpkgs/pkgs/tools/admin/syft/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/audio/abcmidi/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/backup/zfs-replicate/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/filesystems/gcsfuse/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/graphics/asymptote/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix38
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/fcitx5/with-addons.nix6
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/ibus/build-without-dbus-launch.patch13
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/ibus/default.nix56
-rw-r--r--nixpkgs/pkgs/tools/misc/audible-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/byobu/default.nix76
-rw-r--r--nixpkgs/pkgs/tools/misc/esphome/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/faketty/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/fastfetch/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/ksnip/default.nix13
-rw-r--r--nixpkgs/pkgs/tools/misc/lesspipe/default.nix82
-rw-r--r--nixpkgs/pkgs/tools/misc/mise/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/nautilus-open-any-terminal/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/ollama/default.nix238
-rw-r--r--nixpkgs/pkgs/tools/misc/parallel/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/rauc/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/tmuxp/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/topicctl/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/haproxy/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/mu/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/networking/muffet/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/netbird/default.nix14
-rw-r--r--nixpkgs/pkgs/tools/networking/sing-box/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/nix/nix-init/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/nix/nixdoc/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/package-management/dnf5/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix50
-rw-r--r--nixpkgs/pkgs/tools/security/bitwarden/electron-27.patch69
-rw-r--r--nixpkgs/pkgs/tools/security/cryptomator/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/dontgo403/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/faraday-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/fulcio/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/ggshield/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/grype/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/hcxtools/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/plasma-pass/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/semgrep/common.nix10
-rw-r--r--nixpkgs/pkgs/tools/security/terrascan/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/trufflehog/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/system/ts/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/goawk/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/rpl/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/text/rpl/remove-argparse-manpage.diff27
-rw-r--r--nixpkgs/pkgs/tools/text/vale/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/zim-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tectonic/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/video/yaydl/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch27
-rw-r--r--nixpkgs/pkgs/tools/virtualization/govc/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/virtualization/multipass/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlogout/default.nix4
-rw-r--r--nixpkgs/pkgs/top-level/aliases.nix7
-rw-r--r--nixpkgs/pkgs/top-level/all-packages.nix144
-rw-r--r--nixpkgs/pkgs/top-level/darwin-packages.nix2
-rw-r--r--nixpkgs/pkgs/top-level/linux-kernels.nix15
-rw-r--r--nixpkgs/pkgs/top-level/ocaml-packages.nix2
-rw-r--r--nixpkgs/pkgs/top-level/perl-packages.nix6
-rw-r--r--nixpkgs/pkgs/top-level/php-packages.nix15
-rw-r--r--nixpkgs/pkgs/top-level/python-packages.nix64
-rw-r--r--nixpkgs/pkgs/top-level/qt6-packages.nix8
1275 files changed, 64281 insertions, 9122 deletions
diff --git a/nixpkgs/.editorconfig b/nixpkgs/.editorconfig
index c4682829e357..cd8012574508 100644
--- a/nixpkgs/.editorconfig
+++ b/nixpkgs/.editorconfig
@@ -108,3 +108,7 @@ charset = unset
 [lib/tests/*.plist]
 indent_style = tab
 insert_final_newline = unset
+
+[pkgs/kde/generated/**]
+insert_final_newline = unset
+end_of_line = unset
diff --git a/nixpkgs/.github/CODEOWNERS b/nixpkgs/.github/CODEOWNERS
index d69b00bbc121..278e11ce6863 100644
--- a/nixpkgs/.github/CODEOWNERS
+++ b/nixpkgs/.github/CODEOWNERS
@@ -185,11 +185,18 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
 # Licenses
 /lib/licenses.nix @alyssais
 
-# Qt / KDE
-/pkgs/applications/kde @ttuegel
-/pkgs/desktops/plasma-5 @ttuegel
-/pkgs/development/libraries/kde-frameworks @ttuegel
-/pkgs/development/libraries/qt-5 @ttuegel
+# Qt
+/pkgs/development/libraries/qt-5 @NixOS/qt-kde
+/pkgs/development/libraries/qt-6 @NixOS/qt-kde
+
+# KDE / Plasma 5
+/pkgs/applications/kde @NixOS/qt-kde
+/pkgs/desktops/plasma-5 @NixOS/qt-kde
+/pkgs/development/libraries/kde-frameworks @NixOS/qt-kde
+
+# KDE / Plasma 6
+/pkgs/kde @NixOS/qt-kde
+/maintainers/scripts/kde @NixOS/qt-kde
 
 # PostgreSQL and related stuff
 /pkgs/servers/sql/postgresql @thoughtpolice @marsam
diff --git a/nixpkgs/doc/build-helpers/images/dockertools.section.md b/nixpkgs/doc/build-helpers/images/dockertools.section.md
index a1d1f2cb2012..001d5695290e 100644
--- a/nixpkgs/doc/build-helpers/images/dockertools.section.md
+++ b/nixpkgs/doc/build-helpers/images/dockertools.section.md
@@ -507,6 +507,16 @@ This allows the function to produce reproducible images.
 
   _Default value:_ `"1970-01-01T00:00:01Z"`.
 
+`uid` (Number; _optional_) []{#dockerTools-buildLayeredImage-arg-uid}
+`gid` (Number; _optional_) []{#dockerTools-buildLayeredImage-arg-gid}
+`uname` (String; _optional_) []{#dockerTools-buildLayeredImage-arg-uname}
+`gname` (String; _optional_) []{#dockerTools-buildLayeredImage-arg-gname}
+
+: Credentials for Nix store ownership.
+  Can be overridden to e.g. `1000` / `1000` / `"user"` / `"user"` to enable building a container where Nix can be used as an unprivileged user in single-user mode.
+
+  _Default value:_ `0` / `0` / `"root"` / `"root"`
+
 `maxLayers` (Number; _optional_) []{#dockerTools-buildLayeredImage-arg-maxLayers}
 
 : The maximum number of layers that will be used by the generated image.
diff --git a/nixpkgs/doc/build-helpers/images/ocitools.section.md b/nixpkgs/doc/build-helpers/images/ocitools.section.md
index c35f65bce007..96627615ffb5 100644
--- a/nixpkgs/doc/build-helpers/images/ocitools.section.md
+++ b/nixpkgs/doc/build-helpers/images/ocitools.section.md
@@ -1,37 +1,104 @@
 # pkgs.ociTools {#sec-pkgs-ociTools}
 
-`pkgs.ociTools` is a set of functions for creating containers according to the [OCI container specification v1.0.0](https://github.com/opencontainers/runtime-spec). Beyond that, it makes no assumptions about the container runner you choose to use to run the created container.
+`pkgs.ociTools` is a set of functions for creating runtime container bundles according to the [OCI runtime specification v1.0.0](https://github.com/opencontainers/runtime-spec/blob/v1.0.0/spec.md).
+It makes no assumptions about the container runner you choose to use to run the created container.
+
+The set of functions in `pkgs.ociTools` currently does not handle the [OCI image specification](https://github.com/opencontainers/image-spec).
+
+At a high-level an OCI implementation would download an OCI Image then unpack that image into an OCI Runtime filesystem bundle.
+At this point the OCI Runtime Bundle would be run by an OCI Runtime.
+`pkgs.ociTools` provides utilities to create OCI Runtime bundles.
 
 ## buildContainer {#ssec-pkgs-ociTools-buildContainer}
 
-This function creates a simple OCI container that runs a single command inside of it. An OCI container consists of a `config.json` and a rootfs directory. The nix store of the container will contain all referenced dependencies of the given command.
+This function creates an OCI runtime container (consisting of a `config.json` and a root filesystem directory) that runs a single command inside of it.
+The nix store of the container will contain all referenced dependencies of the given command.
+
+This function has an assumption that the container will run on POSIX platforms, and sets configurations (such as the user running the process or certain mounts) according to this assumption.
+Because of this, a container built with `buildContainer` will not work on Windows or other non-POSIX platforms without modifications to the container configuration.
+These modifications aren't supported by `buildContainer`.
+
+For `linux` platforms, `buildContainer` also configures the following namespaces (see {manpage}`unshare(1)`) to isolate the OCI container from the global namespace:
+PID, network, mount, IPC, and UTS.
+
+Note that no user namespace is created, which means that you won't be able to run the container unless you are the `root` user.
+
+### Inputs {#ssec-pkgs-ociTools-buildContainer-inputs}
+
+`buildContainer` expects an argument with the following attributes:
+
+`args` (List of String)
+
+: Specifies a set of arguments to run inside the container.
+  Any packages referenced by `args` will be made available inside the container.
+
+`mounts` (Attribute Set; _optional_)
+
+: Would specify additional mounts that the runtime must make available to the container.
+
+  :::{.warning}
+  As explained in [issue #290879](https://github.com/NixOS/nixpkgs/issues/290879), this attribute is currently ignored.
+  :::
+
+  :::{.note}
+  `buildContainer` includes a minimal set of necessary filesystems to be mounted into the container, and this set can't be changed with the `mounts` attribute.
+  :::
+
+  _Default value:_ `{}`.
 
-The parameters of `buildContainer` with an example value are described below:
+`readonly` (Boolean; _optional_)
+
+: If `true`, sets the container's root filesystem as read-only.
+
+  _Default value:_ `false`.
+
+`os` **DEPRECATED**
+
+: Specifies the operating system on which the container filesystem is based on.
+  If specified, its value should follow the [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md#properties).
+  According to the linked specification, all possible values for `$GOOS` in [the Go docs](https://go.dev/doc/install/source#environment) should be valid, but will commonly be one of `darwin` or `linux`.
+
+  _Default value:_ `"linux"`.
+
+`arch` **DEPRECATED**
+
+: Used to specify the architecture for which the binaries in the container filesystem have been compiled.
+  If specified, its value should follow the [OCI Image Configuration Specification](https://github.com/opencontainers/image-spec/blob/main/config.md#properties).
+  According to the linked specification, all possible values for `$GOARCH` in [the Go docs](https://go.dev/doc/install/source#environment) should be valid, but will commonly be one of `386`, `amd64`, `arm`, or `arm64`.
+
+  _Default value:_ `x86_64`.
+
+### Examples {#ssec-pkgs-ociTools-buildContainer-examples}
+
+::: {.example #ex-ociTools-buildContainer-bash}
+# Creating an OCI runtime container that runs `bash`
+
+This example uses `ociTools.buildContainer` to create a simple container that runs `bash`.
 
 ```nix
-buildContainer {
+{ ociTools, lib, bash }:
+ociTools.buildContainer {
   args = [
-    (with pkgs;
-      writeScript "run.sh" ''
-        #!${bash}/bin/bash
-        exec ${bash}/bin/bash
-      '').outPath
+    (lib.getExe bash)
   ];
 
-  mounts = {
-    "/data" = {
-      type = "none";
-      source = "/var/lib/mydata";
-      options = [ "bind" ];
-    };
-  };
-
   readonly = false;
 }
 ```
 
-- `args` specifies a set of arguments to run inside the container. This is the only required argument for `buildContainer`. All referenced packages inside the derivation will be made available inside the container.
+As an example of how to run the container generated by this package, we'll use `runc` to start the container.
+Any other tool that supports OCI containers could be used instead.
 
-- `mounts` specifies additional mount points chosen by the user. By default only a minimal set of necessary filesystems are mounted into the container (e.g procfs, cgroupfs)
+```shell
+$ nix-build
+(some output removed for clarity)
+/nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join
 
-- `readonly` makes the container's rootfs read-only if it is set to true. The default value is false `false`.
+$ cd /nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join
+$ nix-shell -p runc
+[nix-shell:/nix/store/7f9hgx0arvhzp2a3qphp28rxbn748l25-join]$ sudo runc run ocitools-example
+help
+GNU bash, version 5.2.26(1)-release (x86_64-pc-linux-gnu)
+(some output removed for clarity)
+```
+:::
diff --git a/nixpkgs/doc/build-helpers/images/portableservice.section.md b/nixpkgs/doc/build-helpers/images/portableservice.section.md
index 5400928b158f..c271bc775dba 100644
--- a/nixpkgs/doc/build-helpers/images/portableservice.section.md
+++ b/nixpkgs/doc/build-helpers/images/portableservice.section.md
@@ -1,81 +1,174 @@
 # pkgs.portableService {#sec-pkgs-portableService}
 
-`pkgs.portableService` is a function to create _portable service images_,
-as read-only, immutable, `squashfs` archives.
+`pkgs.portableService` is a function to create [Portable Services](https://systemd.io/PORTABLE_SERVICES/) in a read-only, immutable, `squashfs` raw disk image.
+This lets you use Nix to build images which can be run on many recent Linux distributions.
 
-systemd supports a concept of [Portable Services](https://systemd.io/PORTABLE_SERVICES/).
-Portable Services are a delivery method for system services that uses two specific features of container management:
+::: {.note}
+Portable services are supported starting with systemd 239 (released on 2018-06-22).
+:::
 
-* Applications are bundled. I.e. multiple services, their binaries and
-  all their dependencies are packaged in an image, and are run directly from it.
-* Stricter default security policies, i.e. sandboxing of applications.
+The generated image will contain the file system structure as required by the Portable Services specification, along with the packages given to `portableService` and all of their dependencies.
+When generated, the image will exist in the Nix store with the `.raw` file extension, as required by the specification.
+See [](#ex-portableService-hello) to understand how to use the output of `portableService`.
 
-This allows using Nix to build images which can be run on many recent Linux distributions.
+## Inputs {#ssec-pkgs-portableService-inputs}
 
-The primary tool for interacting with Portable Services is `portablectl`,
-and they are managed by the `systemd-portabled` system service.
+`portableService` expects one argument with the following attributes:
 
-::: {.note}
-Portable services are supported starting with systemd 239 (released on 2018-06-22).
-:::
+`pname` (String)
+
+: The name of the portable service.
+  The generated image will be named according to the template `$pname_$version.raw`, which is supported by the Portable Services specification.
+
+`version` (String)
+
+: The version of the portable service.
+  The generated image will be named according to the template `$pname_$version.raw`, which is supported by the Portable Services specification.
+
+`units` (List of Attribute Set)
+
+: A list of derivations for systemd unit files.
+  Each derivation must produce a single file, and must have a name that starts with the value of `pname` and ends with the suffix of the unit type (e.g. ".service", ".socket", ".timer", and so on).
+  See [](#ex-portableService-hello) to better understand this naming constraint.
+
+`description` (String or Null; _optional_)
+
+: If specified, the value is added as `PORTABLE_PRETTY_NAME` to the `/etc/os-release` file in the generated image.
+  This could be used to provide more information to anyone inspecting the image.
+
+  _Default value:_ `null`.
+
+`homepage` (String or Null; _optional_)
+
+: If specified, the value is added as `HOME_URL` to the `/etc/os-release` file in the generated image.
+  This could be used to provide more information to anyone inspecting the image.
+
+  _Default value:_ `null`.
+
+`symlinks` (List of Attribute Set; _optional_)
+
+: A list of attribute sets in the format `{object, symlink}`.
+  For each item in the list, `portableService` will create a symlink in the path specified by `symlink` (relative to the root of the image) that points to `object`.
+
+  All packages that `object` depends on and their dependencies are automatically copied into the image.
+
+  This can be used to create symlinks for applications that assume some files to exist globally (`/etc/ssl` or `/bin/bash`, for example).
+  See [](#ex-portableService-symlinks) to understand how to do that.
+
+  _Default value:_ `[]`.
+
+`contents` (List of Attribute Set; _optional_)
 
-A very simple example of using `portableService` is described below:
+: A list of additional derivations to be included as-is in the image.
+  These derivations will be included directly in a `/nix/store` directory inside the image.
+
+  _Default value:_ `[]`.
+
+`squashfsTools` (Attribute Set; _optional_)
+
+: Allows you to override the package that provides {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
+
+  _Default value:_ `pkgs.squashfsTools`.
+
+`squash-compression` (String; _optional_)
+
+: Passed as the compression option to {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
+
+  _Default value:_ `"xz -Xdict-size 100%"`.
+
+`squash-block-size` (String; _optional_)
+
+: Passed as the block size option to {manpage}`mksquashfs(1)`, which is used internally by `portableService`.
+
+  _Default value:_ `"1M"`.
+
+## Examples {#ssec-pkgs-portableService-examples}
 
 []{#ex-pkgs-portableService}
+:::{.example #ex-portableService-hello}
+# Building a Portable Service image
+
+The following example builds a Portable Service image with the `hello` package, along with a service unit that runs it.
 
 ```nix
-pkgs.portableService {
-  pname = "demo";
-  version = "1.0";
-  units = [ demo-service demo-socket ];
+{ lib, writeText, portableService, hello }:
+let
+  hello-service = writeText "hello.service" ''
+    [Unit]
+    Description=Hello world service
+
+    [Service]
+    Type=oneshot
+    ExecStart=${lib.getExe hello}
+  '';
+in
+portableService {
+  pname = "hello";
+  inherit (hello) version;
+  units = [ hello-service ];
 }
 ```
 
-The above example will build an squashfs archive image in `result/$pname_$version.raw`. The image will contain the
-file system structure as required by the portable service specification, and a subset of the Nix store with all the
-dependencies of the two derivations in the `units` list.
-`units` must be a list of derivations, and their names must be prefixed with the service name (`"demo"` in this case).
-Otherwise `systemd-portabled` will ignore them.
-
-::: {.note}
-The `.raw` file extension of the image is required by the portable services specification.
+After building the package, the generated image can be loaded into a system through {manpage}`portablectl(1)`:
+
+```shell
+$ nix-build
+(some output removed for clarity)
+/nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1
+
+$ portablectl attach /nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1/hello_2.12.1.raw
+Created directory /etc/systemd/system.attached.
+Created directory /etc/systemd/system.attached/hello.service.d.
+Written /etc/systemd/system.attached/hello.service.d/20-portable.conf.
+Created symlink /etc/systemd/system.attached/hello.service.d/10-profile.conf → /usr/lib/systemd/portable/profile/default/service.conf.
+Copied /etc/systemd/system.attached/hello.service.
+Created symlink /etc/portables/hello_2.12.1.raw → /nix/store/8c20z1vh7z8w8dwagl8w87b45dn5k6iq-hello-img-2.12.1/hello_2.12.1.raw.
+
+$ systemctl start hello
+$ journalctl -u hello
+Feb 28 22:39:16 hostname systemd[1]: Starting Hello world service...
+Feb 28 22:39:16 hostname hello[102887]: Hello, world!
+Feb 28 22:39:16 hostname systemd[1]: hello.service: Deactivated successfully.
+Feb 28 22:39:16 hostname systemd[1]: Finished Hello world service.
+
+$ portablectl detach hello_2.12.1
+Removed /etc/systemd/system.attached/hello.service.
+Removed /etc/systemd/system.attached/hello.service.d/10-profile.conf.
+Removed /etc/systemd/system.attached/hello.service.d/20-portable.conf.
+Removed /etc/systemd/system.attached/hello.service.d.
+Removed /etc/portables/hello_2.12.1.raw.
+Removed /etc/systemd/system.attached.
+```
 :::
 
-Some other options available are:
-- `description`, `homepage`
-
-  Are added to the `/etc/os-release` in the image and are shown by the portable services tooling.
-  Default to empty values, not added to os-release.
-- `symlinks`
-
-  A list of attribute sets {object, symlink}. Symlinks will be created  in the root filesystem of the image to
-  objects in the Nix store. Defaults to an empty list.
-- `contents`
+:::{.example #ex-portableService-symlinks}
+# Specifying symlinks when building a Portable Service image
 
-  A list of additional derivations to be included in the image Nix store, as-is. Defaults to an empty list.
-- `squashfsTools`
+Some services may expect files or directories to be available globally.
+An example is a service which expects all trusted SSL certificates to exist in a specific location by default.
 
-  Defaults to `pkgs.squashfsTools`, allows you to override the package that provides `mksquashfs`.
-- `squash-compression`, `squash-block-size`
+To make things available globally, you must specify the `symlinks` attribute when using `portableService`.
+The following package builds on the package from [](#ex-portableService-hello) to make `/etc/ssl` available globally (this is only for illustrative purposes, because `hello` doesn't use `/etc/ssl`).
 
-  Options to `mksquashfs`. Default to `"xz -Xdict-size 100%"` and `"1M"` respectively.
-
-A typical usage of `symlinks` would be:
 ```nix
+{ lib, writeText, portableService, hello, cacert }:
+let
+  hello-service = writeText "hello.service" ''
+    [Unit]
+    Description=Hello world service
+
+    [Service]
+    Type=oneshot
+    ExecStart=${lib.getExe hello}
+  '';
+in
+portableService {
+  pname = "hello";
+  inherit (hello) version;
+  units = [ hello-service ];
   symlinks = [
-    { object = "${pkgs.cacert}/etc/ssl"; symlink = "/etc/ssl"; }
-    { object = "${pkgs.bash}/bin/bash"; symlink = "/bin/sh"; }
-    { object = "${pkgs.php}/bin/php"; symlink = "/usr/bin/php"; }
+    { object = "${cacert}/etc/ssl"; symlink = "/etc/ssl"; }
   ];
+}
 ```
-to create these symlinks for legacy applications that assume them existing globally.
-
-Once the image is created, and deployed on a host in `/var/lib/portables/`, you can attach the image and run the service. As root run:
-```console
-portablectl attach demo_1.0.raw
-systemctl enable --now demo.socket
-systemctl enable --now demo.service
-```
-::: {.note}
-See the [man page](https://www.freedesktop.org/software/systemd/man/portablectl.html) of `portablectl` for more info on its usage.
 :::
diff --git a/nixpkgs/doc/manpage-urls.json b/nixpkgs/doc/manpage-urls.json
index 5739a59d9420..2cc03af4360f 100644
--- a/nixpkgs/doc/manpage-urls.json
+++ b/nixpkgs/doc/manpage-urls.json
@@ -318,5 +318,7 @@
   "passwd(5)": "https://man.archlinux.org/man/passwd.5",
   "group(5)": "https://man.archlinux.org/man/group.5",
   "login.defs(5)": "https://man.archlinux.org/man/login.defs.5",
-  "nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html"
+  "unshare(1)": "https://man.archlinux.org/man/unshare.1.en",
+  "nix-shell(1)": "https://nixos.org/manual/nix/stable/command-ref/nix-shell.html",
+  "mksquashfs(1)": "https://man.archlinux.org/man/extra/squashfs-tools/mksquashfs.1.en"
 }
diff --git a/nixpkgs/doc/packages/darwin-builder.section.md b/nixpkgs/doc/packages/darwin-builder.section.md
index bf6ef906ca5a..3a547de53705 100644
--- a/nixpkgs/doc/packages/darwin-builder.section.md
+++ b/nixpkgs/doc/packages/darwin-builder.section.md
@@ -1,5 +1,12 @@
 # darwin.linux-builder {#sec-darwin-builder}
 
+:::{.warning}
+By default, `darwin.linux-builder` uses a publicly-known private SSH **host key** (this is different from the SSH key used by the user that connects to the builder).
+
+Given the intended use case for it (a Linux builder that runs **on the same machine**), this shouldn't be an issue.
+However, if you plan to deviate from this use case in any way (e.g. by exposing this builder to remote machines), you should understand the security implications of doing so and take any appropriate measures.
+:::
+
 `darwin.linux-builder` provides a way to bootstrap a Linux remote builder on a macOS machine.
 
 This requires macOS version 12.4 or later.
@@ -97,6 +104,7 @@ $ sudo launchctl kickstart -k system/org.nixos.nix-daemon
         { virtualisation = {
             host.pkgs = pkgs;
             darwin-builder.workingDirectory = "/var/lib/darwin-builder";
+            darwin-builder.hostPort = 22;
           };
         }
       ];
@@ -110,7 +118,9 @@ $ sudo launchctl kickstart -k system/org.nixos.nix-daemon
           {
             nix.distributedBuilds = true;
             nix.buildMachines = [{
-              hostName = "ssh://builder@localhost";
+              hostName = "localhost";
+              sshUser = "builder";
+              sshKey = "/etc/nix/builder_ed25519";
               system = linuxSystem;
               maxJobs = 4;
               supportedFeatures = [ "kvm" "benchmark" "big-parallel" ];
diff --git a/nixpkgs/lib/attrsets.nix b/nixpkgs/lib/attrsets.nix
index 0e896a93156d..4f7d795c397f 100644
--- a/nixpkgs/lib/attrsets.nix
+++ b/nixpkgs/lib/attrsets.nix
@@ -2,10 +2,10 @@
 { lib }:
 
 let
-  inherit (builtins) head tail length;
-  inherit (lib.trivial) id mergeAttrs warn;
+  inherit (builtins) head length;
+  inherit (lib.trivial) mergeAttrs warn;
   inherit (lib.strings) concatStringsSep concatMapStringsSep escapeNixIdentifier sanitizeDerivationName;
-  inherit (lib.lists) foldr foldl' concatMap concatLists elemAt all partition groupBy take foldl;
+  inherit (lib.lists) foldr foldl' concatMap elemAt all partition groupBy take foldl;
 in
 
 rec {
@@ -369,7 +369,7 @@ rec {
      Type:
        attrValues :: AttrSet -> [Any]
   */
-  attrValues = builtins.attrValues or (attrs: attrVals (attrNames attrs) attrs);
+  attrValues = builtins.attrValues;
 
 
   /* Given a set of attribute names, return the set of the corresponding
@@ -398,8 +398,7 @@ rec {
      Type:
        catAttrs :: String -> [AttrSet] -> [Any]
   */
-  catAttrs = builtins.catAttrs or
-    (attr: l: concatLists (map (s: if s ? ${attr} then [s.${attr}] else []) l));
+  catAttrs = builtins.catAttrs;
 
 
   /* Filter an attribute set by removing all attributes for which the
@@ -608,9 +607,7 @@ rec {
      Type:
        mapAttrs :: (String -> Any -> Any) -> AttrSet -> AttrSet
   */
-  mapAttrs = builtins.mapAttrs or
-    (f: set:
-      listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)));
+  mapAttrs = builtins.mapAttrs;
 
 
   /* Like `mapAttrs`, but allows the name of each attribute to be
diff --git a/nixpkgs/lib/default.nix b/nixpkgs/lib/default.nix
index a17307be6e07..668c29640f9f 100644
--- a/nixpkgs/lib/default.nix
+++ b/nixpkgs/lib/default.nix
@@ -84,8 +84,8 @@ let
       mapAttrs' mapAttrsToList attrsToList concatMapAttrs mapAttrsRecursive
       mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs
       zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil
-      recursiveUpdate matchAttrs overrideExisting showAttrPath getOutput getBin
-      getLib getDev getMan chooseDevOutputs zipWithNames zip
+      recursiveUpdate matchAttrs mergeAttrsList overrideExisting showAttrPath getOutput
+      getBin getLib getDev getMan chooseDevOutputs zipWithNames zip
       recurseIntoAttrs dontRecurseIntoAttrs cartesianProductOfSets
       updateManyAttrsByPath;
     inherit (self.lists) singleton forEach foldr fold foldl foldl' imap0 imap1
diff --git a/nixpkgs/lib/fileset/default.nix b/nixpkgs/lib/fileset/default.nix
index c007b60def0a..ce9afc796a3f 100644
--- a/nixpkgs/lib/fileset/default.nix
+++ b/nixpkgs/lib/fileset/default.nix
@@ -23,6 +23,10 @@
 
     Add files in file sets to the store to use as derivation sources.
 
+  - [`lib.fileset.toList`](#function-library-lib.fileset.toList):
+
+    The list of files contained in a file set.
+
   Combinators:
   - [`lib.fileset.union`](#function-library-lib.fileset.union)/[`lib.fileset.unions`](#function-library-lib.fileset.unions):
 
@@ -102,6 +106,7 @@ let
     _coerceMany
     _toSourceFilter
     _fromSourceFilter
+    _toList
     _unionMany
     _fileFilter
     _printFileset
@@ -412,6 +417,38 @@ in {
         filter = sourceFilter;
       };
 
+
+  /*
+    The list of file paths contained in the given file set.
+
+    :::{.note}
+    This function is strict in the entire file set.
+    This is in contrast with combinators [`lib.fileset.union`](#function-library-lib.fileset.union),
+    [`lib.fileset.intersection`](#function-library-lib.fileset.intersection) and [`lib.fileset.difference`](#function-library-lib.fileset.difference).
+
+    Thus it is recommended to call `toList` on file sets created using the combinators,
+    instead of doing list processing on the result of `toList`.
+    :::
+
+    The resulting list of files can be turned back into a file set using [`lib.fileset.unions`](#function-library-lib.fileset.unions).
+
+    Type:
+      toList :: FileSet -> [ Path ]
+
+    Example:
+      toList ./.
+      [ ./README.md ./Makefile ./src/main.c ./src/main.h ]
+
+      toList (difference ./. ./src)
+      [ ./README.md ./Makefile ]
+  */
+  toList =
+    # The file set whose file paths to return.
+    # This argument can also be a path,
+    # which gets [implicitly coerced to a file set](#sec-fileset-path-coercion).
+    fileset:
+    _toList (_coerce "lib.fileset.toList: Argument" fileset);
+
   /*
     The file set containing all files that are in either of two given file sets.
     This is the same as [`unions`](#function-library-lib.fileset.unions),
diff --git a/nixpkgs/lib/fileset/internal.nix b/nixpkgs/lib/fileset/internal.nix
index f4fcc83e1012..0d97ef174568 100644
--- a/nixpkgs/lib/fileset/internal.nix
+++ b/nixpkgs/lib/fileset/internal.nix
@@ -18,6 +18,7 @@ let
     attrNames
     attrValues
     mapAttrs
+    mapAttrsToList
     optionalAttrs
     zipAttrsWith
     ;
@@ -29,6 +30,7 @@ let
   inherit (lib.lists)
     all
     commonPrefix
+    concatLists
     elemAt
     filter
     findFirst
@@ -539,6 +541,27 @@ rec {
           ${baseNameOf root} = rootPathType;
         };
 
+  # Turns a file set into the list of file paths it includes.
+  # Type: fileset -> [ Path ]
+  _toList = fileset:
+    let
+      recurse = path: tree:
+        if isAttrs tree then
+          concatLists (mapAttrsToList (name: value:
+            recurse (path + "/${name}") value
+          ) tree)
+        else if tree == "directory" then
+          recurse path (readDir path)
+        else if tree == null then
+          [ ]
+        else
+          [ path ];
+    in
+    if fileset._internalIsEmptyWithoutBase then
+      [ ]
+    else
+      recurse fileset._internalBase fileset._internalTree;
+
   # Transforms the filesetTree of a file set to a shorter base path, e.g.
   # _shortenTreeBase [ "foo" ] (_create /foo/bar null)
   # => { bar = null; }
diff --git a/nixpkgs/lib/fileset/tests.sh b/nixpkgs/lib/fileset/tests.sh
index af8338eb7855..405fa04d8e06 100755
--- a/nixpkgs/lib/fileset/tests.sh
+++ b/nixpkgs/lib/fileset/tests.sh
@@ -275,7 +275,6 @@ createTree() {
 # )
 # checkFileset './a' # Pass the fileset as the argument
 checkFileset() {
-    # New subshell so that we can have a separate trap handler, see `trap` below
     local fileset=$1
 
     # Create the tree
@@ -283,16 +282,20 @@ checkFileset() {
 
     # Process the tree into separate arrays for included paths, excluded paths and excluded files.
     local -a included=()
+    local -a includedFiles=()
     local -a excluded=()
     local -a excludedFiles=()
     for p in "${!tree[@]}"; do
         case "${tree[$p]}" in
             1)
                 included+=("$p")
+                # If keys end with a `/` we treat them as directories, otherwise files
+                if [[ ! "$p" =~ /$ ]]; then
+                    includedFiles+=("$p")
+                fi
                 ;;
             0)
                 excluded+=("$p")
-                # If keys end with a `/` we treat them as directories, otherwise files
                 if [[ ! "$p" =~ /$ ]]; then
                     excludedFiles+=("$p")
                 fi
@@ -302,6 +305,10 @@ checkFileset() {
         esac
     done
 
+    # Test that lib.fileset.toList contains exactly the included files.
+    # The /#/./ part prefixes each element with `./`
+    expectEqual "toList ($fileset)" "sort lessThan [ ${includedFiles[*]/#/./} ]"
+
     expression="toSource { root = ./.; fileset = $fileset; }"
 
     # We don't have lambda's in bash unfortunately,
@@ -338,13 +345,17 @@ checkFileset() {
 
 #### Error messages #####
 
+# We're using [[:blank:]] here instead of \s, because only the former is POSIX
+# (see https://pubs.opengroup.org/onlinepubs/007908799/xbd/re.html#tag_007_003_005).
+# And indeed, Darwin's bash only supports the former
+
 # Absolute paths in strings cannot be passed as `root`
 expectFailure 'toSource { root = "/nix/store/foobar"; fileset = ./.; }' 'lib.fileset.toSource: `root` \(/nix/store/foobar\) is a string-like value, but it should be a path instead.
-\s*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
+[[:blank:]]*Paths in strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
 
 expectFailure 'toSource { root = cleanSourceWith { src = ./.; }; fileset = ./.; }' 'lib.fileset.toSource: `root` is a `lib.sources`-based value, but it should be a path instead.
-\s*To use a `lib.sources`-based value, convert it to a file set using `lib.fileset.fromSource` and pass it as `fileset`.
-\s*Note that this only works for sources created from paths.'
+[[:blank:]]*To use a `lib.sources`-based value, convert it to a file set using `lib.fileset.fromSource` and pass it as `fileset`.
+[[:blank:]]*Note that this only works for sources created from paths.'
 
 # Only paths are accepted as `root`
 expectFailure 'toSource { root = 10; fileset = ./.; }' 'lib.fileset.toSource: `root` is of type int, but it should be a path instead.'
@@ -354,9 +365,9 @@ mkdir -p {foo,bar}/mock-root
 expectFailure 'with ((import <nixpkgs/lib>).extend (import <nixpkgs/lib/fileset/mock-splitRoot.nix>)).fileset;
   toSource { root = ./foo/mock-root; fileset = ./bar/mock-root; }
 ' 'lib.fileset.toSource: Filesystem roots are not the same for `fileset` and `root` \('"$work"'/foo/mock-root\):
-\s*`root`: Filesystem root is "'"$work"'/foo/mock-root"
-\s*`fileset`: Filesystem root is "'"$work"'/bar/mock-root"
-\s*Different filesystem roots are not supported.'
+[[:blank:]]*`root`: Filesystem root is "'"$work"'/foo/mock-root"
+[[:blank:]]*`fileset`: Filesystem root is "'"$work"'/bar/mock-root"
+[[:blank:]]*Different filesystem roots are not supported.'
 rm -rf -- *
 
 # `root` needs to exist
@@ -365,8 +376,8 @@ expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `
 # `root` needs to be a file
 touch a
 expectFailure 'toSource { root = ./a; fileset = ./a; }' 'lib.fileset.toSource: `root` \('"$work"'/a\) is a file, but it should be a directory instead. Potential solutions:
-\s*- If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function.
-\s*- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as '"$work"', and set `fileset` to the file path.'
+[[:blank:]]*- If you want to import the file into the store _without_ a containing directory, use string interpolation or `builtins.path` instead of this function.
+[[:blank:]]*- If you want to import the file into the store _with_ a containing directory, set `root` to the containing directory, such as '"$work"', and set `fileset` to the file path.'
 rm -rf -- *
 
 # The fileset argument should be evaluated, even if the directory is empty
@@ -375,36 +386,36 @@ expectFailure 'toSource { root = ./.; fileset = abort "This should be evaluated"
 # Only paths under `root` should be able to influence the result
 mkdir a
 expectFailure 'toSource { root = ./a; fileset = ./.; }' 'lib.fileset.toSource: `fileset` could contain files in '"$work"', which is not under the `root` \('"$work"'/a\). Potential solutions:
-\s*- Set `root` to '"$work"' or any directory higher up. This changes the layout of the resulting store path.
-\s*- Set `fileset` to a file set that cannot contain files outside the `root` \('"$work"'/a\). This could change the files included in the result.'
+[[:blank:]]*- Set `root` to '"$work"' or any directory higher up. This changes the layout of the resulting store path.
+[[:blank:]]*- Set `fileset` to a file set that cannot contain files outside the `root` \('"$work"'/a\). This could change the files included in the result.'
 rm -rf -- *
 
 # non-regular and non-symlink files cannot be added to the Nix store
 mkfifo a
 expectFailure 'toSource { root = ./.; fileset = ./a; }' 'lib.fileset.toSource: `fileset` contains a file that cannot be added to the store: '"$work"'/a
-\s*This file is neither a regular file nor a symlink, the only file types supported by the Nix store.
-\s*Therefore the file set cannot be added to the Nix store as is. Make sure to not include that file to avoid this error.'
+[[:blank:]]*This file is neither a regular file nor a symlink, the only file types supported by the Nix store.
+[[:blank:]]*Therefore the file set cannot be added to the Nix store as is. Make sure to not include that file to avoid this error.'
 rm -rf -- *
 
 # Path coercion only works for paths
 expectFailure 'toSource { root = ./.; fileset = 10; }' 'lib.fileset.toSource: `fileset` is of type int, but it should be a file set or a path instead.'
 expectFailure 'toSource { root = ./.; fileset = "/some/path"; }' 'lib.fileset.toSource: `fileset` \("/some/path"\) is a string-like value, but it should be a file set or a path instead.
-\s*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
+[[:blank:]]*Paths represented as strings are not supported by `lib.fileset`, use `lib.sources` or derivations instead.'
 expectFailure 'toSource { root = ./.; fileset = cleanSourceWith { src = ./.; }; }' 'lib.fileset.toSource: `fileset` is a `lib.sources`-based value, but it should be a file set or a path instead.
-\s*To convert a `lib.sources`-based value to a file set you can use `lib.fileset.fromSource`.
-\s*Note that this only works for sources created from paths.'
+[[:blank:]]*To convert a `lib.sources`-based value to a file set you can use `lib.fileset.fromSource`.
+[[:blank:]]*Note that this only works for sources created from paths.'
 
 # Path coercion errors for non-existent paths
 expectFailure 'toSource { root = ./.; fileset = ./a; }' 'lib.fileset.toSource: `fileset` \('"$work"'/a\) is a path that does not exist.
-\s*To create a file set from a path that may not exist, use `lib.fileset.maybeMissing`.'
+[[:blank:]]*To create a file set from a path that may not exist, use `lib.fileset.maybeMissing`.'
 
 # File sets cannot be evaluated directly
 expectFailure 'union ./. ./.' 'lib.fileset: Directly evaluating a file set is not supported.
-\s*To turn it into a usable source, use `lib.fileset.toSource`.
-\s*To pretty-print the contents, use `lib.fileset.trace` or `lib.fileset.traceVal`.'
+[[:blank:]]*To turn it into a usable source, use `lib.fileset.toSource`.
+[[:blank:]]*To pretty-print the contents, use `lib.fileset.trace` or `lib.fileset.traceVal`.'
 expectFailure '_emptyWithoutBase' 'lib.fileset: Directly evaluating a file set is not supported.
-\s*To turn it into a usable source, use `lib.fileset.toSource`.
-\s*To pretty-print the contents, use `lib.fileset.trace` or `lib.fileset.traceVal`.'
+[[:blank:]]*To turn it into a usable source, use `lib.fileset.toSource`.
+[[:blank:]]*To pretty-print the contents, use `lib.fileset.trace` or `lib.fileset.traceVal`.'
 
 # Past versions of the internal representation are supported
 expectEqual '_coerce "<tests>: value" { _type = "fileset"; _internalVersion = 0; _internalBase = ./.; }' \
@@ -416,9 +427,9 @@ expectEqual '_coerce "<tests>: value" { _type = "fileset"; _internalVersion = 2;
 
 # Future versions of the internal representation are unsupported
 expectFailure '_coerce "<tests>: value" { _type = "fileset"; _internalVersion = 4; }' '<tests>: value is a file set created from a future version of the file set library with a different internal representation:
-\s*- Internal version of the file set: 4
-\s*- Internal version of the library: 3
-\s*Make sure to update your Nixpkgs to have a newer version of `lib.fileset`.'
+[[:blank:]]*- Internal version of the file set: 4
+[[:blank:]]*- Internal version of the library: 3
+[[:blank:]]*Make sure to update your Nixpkgs to have a newer version of `lib.fileset`.'
 
 # _create followed by _coerce should give the inputs back without any validation
 expectEqual '{
@@ -511,6 +522,19 @@ expectEqual '_toSourceFilter (_create /. { foo = "regular"; }) "/foo" ""' 'true'
 expectEqual '_toSourceFilter (_create /. { foo = null; }) "/foo" ""' 'false'
 
 
+## lib.fileset.toList
+# This function is mainly tested in checkFileset
+
+# The error context for an invalid argument must be correct
+expectFailure 'toList null' 'lib.fileset.toList: Argument is of type null, but it should be a file set or a path instead.'
+
+# Works for the empty fileset
+expectEqual 'toList _emptyWithoutBase' '[ ]'
+
+# Works on empty paths
+expectEqual 'toList ./.' '[ ]'
+
+
 ## lib.fileset.union, lib.fileset.unions
 
 
@@ -519,16 +543,16 @@ mkdir -p {foo,bar}/mock-root
 expectFailure 'with ((import <nixpkgs/lib>).extend (import <nixpkgs/lib/fileset/mock-splitRoot.nix>)).fileset;
   toSource { root = ./.; fileset = union ./foo/mock-root ./bar/mock-root; }
 ' 'lib.fileset.union: Filesystem roots are not the same:
-\s*First argument: Filesystem root is "'"$work"'/foo/mock-root"
-\s*Second argument: Filesystem root is "'"$work"'/bar/mock-root"
-\s*Different filesystem roots are not supported.'
+[[:blank:]]*First argument: Filesystem root is "'"$work"'/foo/mock-root"
+[[:blank:]]*Second argument: Filesystem root is "'"$work"'/bar/mock-root"
+[[:blank:]]*Different filesystem roots are not supported.'
 
 expectFailure 'with ((import <nixpkgs/lib>).extend (import <nixpkgs/lib/fileset/mock-splitRoot.nix>)).fileset;
   toSource { root = ./.; fileset = unions [ ./foo/mock-root ./bar/mock-root ]; }
 ' 'lib.fileset.unions: Filesystem roots are not the same:
-\s*Element 0: Filesystem root is "'"$work"'/foo/mock-root"
-\s*Element 1: Filesystem root is "'"$work"'/bar/mock-root"
-\s*Different filesystem roots are not supported.'
+[[:blank:]]*Element 0: Filesystem root is "'"$work"'/foo/mock-root"
+[[:blank:]]*Element 1: Filesystem root is "'"$work"'/bar/mock-root"
+[[:blank:]]*Different filesystem roots are not supported.'
 rm -rf -- *
 
 # Coercion errors show the correct context
@@ -632,9 +656,9 @@ mkdir -p {foo,bar}/mock-root
 expectFailure 'with ((import <nixpkgs/lib>).extend (import <nixpkgs/lib/fileset/mock-splitRoot.nix>)).fileset;
   toSource { root = ./.; fileset = intersection ./foo/mock-root ./bar/mock-root; }
 ' 'lib.fileset.intersection: Filesystem roots are not the same:
-\s*First argument: Filesystem root is "'"$work"'/foo/mock-root"
-\s*Second argument: Filesystem root is "'"$work"'/bar/mock-root"
-\s*Different filesystem roots are not supported.'
+[[:blank:]]*First argument: Filesystem root is "'"$work"'/foo/mock-root"
+[[:blank:]]*Second argument: Filesystem root is "'"$work"'/bar/mock-root"
+[[:blank:]]*Different filesystem roots are not supported.'
 rm -rf -- *
 
 # Coercion errors show the correct context
@@ -741,8 +765,8 @@ rm -rf -- *
 # Also not the other way around
 mkdir a
 expectFailure 'toSource { root = ./a; fileset = difference ./. ./a; }' 'lib.fileset.toSource: `fileset` could contain files in '"$work"', which is not under the `root` \('"$work"'/a\). Potential solutions:
-\s*- Set `root` to '"$work"' or any directory higher up. This changes the layout of the resulting store path.
-\s*- Set `fileset` to a file set that cannot contain files outside the `root` \('"$work"'/a\). This could change the files included in the result.'
+[[:blank:]]*- Set `root` to '"$work"' or any directory higher up. This changes the layout of the resulting store path.
+[[:blank:]]*- Set `fileset` to a file set that cannot contain files outside the `root` \('"$work"'/a\). This could change the files included in the result.'
 rm -rf -- *
 
 # Difference actually works
@@ -819,7 +843,7 @@ expectFailure 'fileFilter null (abort "this is not needed")' 'lib.fileset.fileFi
 
 # The second argument needs to be an existing path
 expectFailure 'fileFilter (file: abort "this is not needed") _emptyWithoutBase' 'lib.fileset.fileFilter: Second argument is a file set, but it should be a path instead.
-\s*If you need to filter files in a file set, use `intersection fileset \(fileFilter pred \./\.\)` instead.'
+[[:blank:]]*If you need to filter files in a file set, use `intersection fileset \(fileFilter pred \./\.\)` instead.'
 expectFailure 'fileFilter (file: abort "this is not needed") null' 'lib.fileset.fileFilter: Second argument is of type null, but it should be a path instead.'
 expectFailure 'fileFilter (file: abort "this is not needed") ./a' 'lib.fileset.fileFilter: Second argument \('"$work"'/a\) is a path that does not exist.'
 
@@ -1083,7 +1107,7 @@ rm -rf -- *
 
 # String-like values are not supported
 expectFailure 'fromSource (lib.cleanSource "")' 'lib.fileset.fromSource: The source origin of the argument is a string-like value \(""\), but it should be a path instead.
-\s*Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.'
+[[:blank:]]*Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.'
 
 # Wrong type
 expectFailure 'fromSource null' 'lib.fileset.fromSource: The source origin of the argument is of type null, but it should be a path instead.'
@@ -1400,10 +1424,10 @@ expectEqual '(import '"$storePath"' { fs = lib.fileset; }).outPath' \""$storePat
 
 ## But it fails if the path is imported with a fetcher that doesn't remove .git (like just using "${./.}")
 expectFailure 'import "${./.}" { fs = lib.fileset; }' 'lib.fileset.gitTracked: The argument \(.*\) is a store path within a working tree of a Git repository.
-\s*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
-\s*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
-\s*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
-\s*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
+[[:blank:]]*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
+[[:blank:]]*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
+[[:blank:]]*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
+[[:blank:]]*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
 
 ## Even with submodules
 if [[ -n "$fetchGitSupportsSubmodules" ]]; then
@@ -1427,15 +1451,15 @@ if [[ -n "$fetchGitSupportsSubmodules" ]]; then
 
     ## But it fails if the path is imported with a fetcher that doesn't remove .git (like just using "${./.}")
     expectFailure 'import "${./.}" { fs = lib.fileset; }' 'lib.fileset.gitTrackedWith: The second argument \(.*\) is a store path within a working tree of a Git repository.
-    \s*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
-    \s*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
-    \s*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
-    \s*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
+    [[:blank:]]*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
+    [[:blank:]]*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
+    [[:blank:]]*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
+    [[:blank:]]*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
     expectFailure 'import "${./.}/sub" { fs = lib.fileset; }' 'lib.fileset.gitTracked: The argument \(.*/sub\) is a store path within a working tree of a Git repository.
-    \s*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
-    \s*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
-    \s*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
-    \s*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
+    [[:blank:]]*This indicates that a source directory was imported into the store using a method such as `import "\$\{./.\}"` or `path:.`.
+    [[:blank:]]*This function currently does not support such a use case, since it currently relies on `builtins.fetchGit`.
+    [[:blank:]]*You could make this work by using a fetcher such as `fetchGit` instead of copying the whole repository.
+    [[:blank:]]*If you can'\''t avoid copying the repo to the store, see https://github.com/NixOS/nix/issues/9292.'
 fi
 rm -rf -- *
 
diff --git a/nixpkgs/lib/fixed-points.nix b/nixpkgs/lib/fixed-points.nix
index 3370b55a4ab9..3bd18fdd2a5a 100644
--- a/nixpkgs/lib/fixed-points.nix
+++ b/nixpkgs/lib/fixed-points.nix
@@ -145,6 +145,12 @@ rec {
     in fix g
     ```
 
+    :::{.note}
+    The argument to the given fixed-point function after applying an overlay will *not* refer to its own return value, but rather to the value after evaluating the overlay function.
+
+    The given fixed-point function is called with a separate argument than if it was evaluated with `lib.fix`.
+    :::
+
     :::{.example}
 
     # Extend a fixed-point function with an overlay
@@ -230,13 +236,6 @@ rec {
 
       fix (extends (final: prev: { c = final.a + final.b; }) f)
       => { a = 1; b = 3; c = 4; }
-
-    :::{.note}
-    The argument to the given fixed-point function after applying an overlay will *not* refer to its own return value, but rather to the value after evaluating the overlay function.
-
-    The given fixed-point function is called with a separate argument than if it was evaluated with `lib.fix`.
-    The new argument
-    :::
   */
   extends =
     # The overlay to apply to the fixed-point function
diff --git a/nixpkgs/lib/lists.nix b/nixpkgs/lib/lists.nix
index b612bc16697e..05216c1a66eb 100644
--- a/nixpkgs/lib/lists.nix
+++ b/nixpkgs/lib/lists.nix
@@ -4,7 +4,6 @@ let
   inherit (lib.strings) toInt;
   inherit (lib.trivial) compare min id warn;
   inherit (lib.attrsets) mapAttrs;
-  inherit (lib.lists) sort;
 in
 rec {
 
@@ -172,7 +171,7 @@ rec {
        concatMap (x: [x] ++ ["z"]) ["a" "b"]
        => [ "a" "z" "b" "z" ]
   */
-  concatMap = builtins.concatMap or (f: list: concatLists (map f list));
+  concatMap = builtins.concatMap;
 
   /* Flatten the argument into a single list; that is, nested lists are
      spliced into the top-level lists.
@@ -316,7 +315,7 @@ rec {
        any isString [ 1 { } ]
        => false
   */
-  any = builtins.any or (pred: foldr (x: y: if pred x then true else y) false);
+  any = builtins.any;
 
   /* Return true if function `pred` returns true for all elements of
      `list`.
@@ -329,7 +328,7 @@ rec {
        all (x: x < 3) [ 1 2 3 ]
        => false
   */
-  all = builtins.all or (pred: foldr (x: y: if pred x then y else false) true);
+  all = builtins.all;
 
   /* Count how many elements of `list` match the supplied predicate
      function.
@@ -428,12 +427,7 @@ rec {
        partition (x: x > 2) [ 5 1 2 3 4 ]
        => { right = [ 5 3 4 ]; wrong = [ 1 2 ]; }
   */
-  partition = builtins.partition or (pred:
-    foldr (h: t:
-      if pred h
-      then { right = [h] ++ t.right; wrong = t.wrong; }
-      else { right = t.right; wrong = [h] ++ t.wrong; }
-    ) { right = []; wrong = []; });
+  partition = builtins.partition;
 
   /* Splits the elements of a list into many lists, using the return value of a predicate.
      Predicate should return a string which becomes keys of attrset `groupBy` returns.
@@ -602,22 +596,7 @@ rec {
      Type:
        sort :: (a -> a -> Bool) -> [a] -> [a]
   */
-  sort = builtins.sort or (
-    strictLess: list:
-    let
-      len = length list;
-      first = head list;
-      pivot' = n: acc@{ left, right }: let el = elemAt list n; next = pivot' (n + 1); in
-        if n == len
-          then acc
-        else if strictLess first el
-          then next { inherit left; right = [ el ] ++ right; }
-        else
-          next { left = [ el ] ++ left; inherit right; };
-      pivot = pivot' 1 { left = []; right = []; };
-    in
-      if len < 2 then list
-      else (sort strictLess pivot.left) ++  [ first ] ++  (sort strictLess pivot.right));
+  sort = builtins.sort;
 
   /*
     Sort a list based on the default comparison of a derived property `b`.
diff --git a/nixpkgs/lib/meta.nix b/nixpkgs/lib/meta.nix
index 5d5f71d6c3cb..675e1912d4be 100644
--- a/nixpkgs/lib/meta.nix
+++ b/nixpkgs/lib/meta.nix
@@ -87,6 +87,10 @@ rec {
 
      We can inject these into a pattern for the whole of a structured platform,
      and then match that.
+
+     Example:
+      lib.meta.platformMatch { system = "aarch64-darwin"; } "aarch64-darwin"
+      => true
   */
   platformMatch = platform: elem: (
     # Check with simple string comparison if elem was a string.
@@ -112,6 +116,10 @@ rec {
           platform, or `meta.platforms` is not present.
 
        2. None of `meta.badPlatforms` pattern matches the given platform.
+
+     Example:
+       lib.meta.availableOn { system = "aarch64-darwin"; } pkg.zsh
+       => true
   */
   availableOn = platform: pkg:
     ((!pkg?meta.platforms) || any (platformMatch platform) pkg.meta.platforms) &&
diff --git a/nixpkgs/lib/strings.nix b/nixpkgs/lib/strings.nix
index 7083576dd529..47ee095f1b68 100644
--- a/nixpkgs/lib/strings.nix
+++ b/nixpkgs/lib/strings.nix
@@ -95,8 +95,7 @@ rec {
         concatStringsSep "/" ["usr" "local" "bin"]
         => "usr/local/bin"
   */
-  concatStringsSep = builtins.concatStringsSep or (separator: list:
-    lib.foldl' (x: y: x + y) "" (intersperse separator list));
+  concatStringsSep = builtins.concatStringsSep;
 
   /* Maps a function over a list of strings and then concatenates the
      result with the specified separator interspersed between
diff --git a/nixpkgs/lib/tests/release.nix b/nixpkgs/lib/tests/release.nix
index 96d34be8c2d3..5b2a9df1635c 100644
--- a/nixpkgs/lib/tests/release.nix
+++ b/nixpkgs/lib/tests/release.nix
@@ -9,60 +9,7 @@
 let
   lib = import ../.;
   testWithNix = nix:
-    pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" {
-      buildInputs = [
-        (import ./check-eval.nix)
-        (import ./maintainers.nix {
-          inherit pkgs;
-          lib = import ../.;
-        })
-        (import ./teams.nix {
-          inherit pkgs;
-          lib = import ../.;
-        })
-        (import ../path/tests {
-          inherit pkgs;
-        })
-      ];
-      nativeBuildInputs = [
-        nix
-        pkgs.gitMinimal
-      ] ++ lib.optional pkgs.stdenv.isLinux pkgs.inotify-tools;
-      strictDeps = true;
-    } ''
-      datadir="${nix}/share"
-      export TEST_ROOT=$(pwd)/test-tmp
-      export HOME=$(mktemp -d)
-      export NIX_BUILD_HOOK=
-      export NIX_CONF_DIR=$TEST_ROOT/etc
-      export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
-      export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
-      export NIX_STATE_DIR=$TEST_ROOT/var/nix
-      export NIX_STORE_DIR=$TEST_ROOT/store
-      export PAGER=cat
-      cacheDir=$TEST_ROOT/binary-cache
-
-      nix-store --init
-
-      cp -r ${../.} lib
-      echo "Running lib/tests/modules.sh"
-      bash lib/tests/modules.sh
-
-      echo "Running lib/tests/filesystem.sh"
-      TEST_LIB=$PWD/lib bash lib/tests/filesystem.sh
-
-      echo "Running lib/tests/sources.sh"
-      TEST_LIB=$PWD/lib bash lib/tests/sources.sh
-
-      echo "Running lib/fileset/tests.sh"
-      TEST_LIB=$PWD/lib bash lib/fileset/tests.sh
-
-      echo "Running lib/tests/systems.nix"
-      [[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]];
-
-      mkdir $out
-      echo success > $out/${nix.version}
-    '';
+    import ./test-with-nix.nix { inherit lib nix pkgs; };
 
 in
   pkgs.symlinkJoin {
diff --git a/nixpkgs/lib/tests/test-with-nix.nix b/nixpkgs/lib/tests/test-with-nix.nix
new file mode 100644
index 000000000000..fd2e7532e697
--- /dev/null
+++ b/nixpkgs/lib/tests/test-with-nix.nix
@@ -0,0 +1,70 @@
+/**
+ * Instantiate the library tests for a given Nix version.
+ *
+ * IMPORTANT:
+ * This is used by the github.com/NixOS/nix CI.
+ *
+ * Try not to change the interface of this file, or if you need to, ping the
+ * Nix maintainers for help. Thank you!
+ */
+{
+  pkgs,
+  lib,
+  # Only ever use this nix; see comment at top
+  nix,
+}:
+
+pkgs.runCommand "nixpkgs-lib-tests-nix-${nix.version}" {
+  buildInputs = [
+    (import ./check-eval.nix)
+    (import ./maintainers.nix {
+      inherit pkgs;
+      lib = import ../.;
+    })
+    (import ./teams.nix {
+      inherit pkgs;
+      lib = import ../.;
+    })
+    (import ../path/tests {
+      inherit pkgs;
+    })
+  ];
+  nativeBuildInputs = [
+    nix
+    pkgs.gitMinimal
+  ] ++ lib.optional pkgs.stdenv.isLinux pkgs.inotify-tools;
+  strictDeps = true;
+} ''
+  datadir="${nix}/share"
+  export TEST_ROOT=$(pwd)/test-tmp
+  export HOME=$(mktemp -d)
+  export NIX_BUILD_HOOK=
+  export NIX_CONF_DIR=$TEST_ROOT/etc
+  export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
+  export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
+  export NIX_STATE_DIR=$TEST_ROOT/var/nix
+  export NIX_STORE_DIR=$TEST_ROOT/store
+  export PAGER=cat
+  cacheDir=$TEST_ROOT/binary-cache
+
+  nix-store --init
+
+  cp -r ${../.} lib
+  echo "Running lib/tests/modules.sh"
+  bash lib/tests/modules.sh
+
+  echo "Running lib/tests/filesystem.sh"
+  TEST_LIB=$PWD/lib bash lib/tests/filesystem.sh
+
+  echo "Running lib/tests/sources.sh"
+  TEST_LIB=$PWD/lib bash lib/tests/sources.sh
+
+  echo "Running lib/fileset/tests.sh"
+  TEST_LIB=$PWD/lib bash lib/fileset/tests.sh
+
+  echo "Running lib/tests/systems.nix"
+  [[ $(nix-instantiate --eval --strict lib/tests/systems.nix | tee /dev/stderr) == '[ ]' ]];
+
+  mkdir $out
+  echo success > $out/${nix.version}
+''
diff --git a/nixpkgs/lib/trivial.nix b/nixpkgs/lib/trivial.nix
index 58620006de15..fa499cbbf028 100644
--- a/nixpkgs/lib/trivial.nix
+++ b/nixpkgs/lib/trivial.nix
@@ -95,21 +95,6 @@ in {
   /* boolean “and” */
   and = x: y: x && y;
 
-  /* bitwise “and” */
-  bitAnd = builtins.bitAnd
-    or (import ./zip-int-bits.nix
-        (a: b: if a==1 && b==1 then 1 else 0));
-
-  /* bitwise “or” */
-  bitOr = builtins.bitOr
-    or (import ./zip-int-bits.nix
-        (a: b: if a==1 || b==1 then 1 else 0));
-
-  /* bitwise “xor” */
-  bitXor = builtins.bitXor
-    or (import ./zip-int-bits.nix
-        (a: b: if a!=b then 1 else 0));
-
   /* bitwise “not” */
   bitNot = builtins.sub (-1);
 
@@ -165,8 +150,8 @@ in {
   inherit (builtins)
     pathExists readFile isBool
     isInt isFloat add sub lessThan
-    seq deepSeq genericClosure;
-
+    seq deepSeq genericClosure
+    bitAnd bitOr bitXor;
 
   ## nixpkgs version strings
 
diff --git a/nixpkgs/lib/versions.nix b/nixpkgs/lib/versions.nix
index 986e7e5f9b37..720d19e8ca29 100644
--- a/nixpkgs/lib/versions.nix
+++ b/nixpkgs/lib/versions.nix
@@ -9,7 +9,7 @@ rec {
        splitVersion "1.2.3"
        => ["1" "2" "3"]
   */
-  splitVersion = builtins.splitVersion or (lib.splitString ".");
+  splitVersion = builtins.splitVersion;
 
   /* Get the major version string from a string.
 
diff --git a/nixpkgs/lib/zip-int-bits.nix b/nixpkgs/lib/zip-int-bits.nix
deleted file mode 100644
index 53efd2bb0a04..000000000000
--- a/nixpkgs/lib/zip-int-bits.nix
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Helper function to implement a fallback for the bit operators
-   `bitAnd`, `bitOr` and `bitXor` on older nix version.
-   See ./trivial.nix
-*/
-f: x: y:
-  let
-    # (intToBits 6) -> [ 0 1 1 ]
-    intToBits = x:
-      if x == 0 || x == -1 then
-        []
-      else
-        let
-          headbit  = if (x / 2) * 2 != x then 1 else 0;          # x & 1
-          tailbits = if x < 0 then ((x + 1) / 2) - 1 else x / 2; # x >> 1
-        in
-          [headbit] ++ (intToBits tailbits);
-
-    # (bitsToInt [ 0 1 1 ] 0) -> 6
-    # (bitsToInt [ 0 1 0 ] 1) -> -6
-    bitsToInt = l: signum:
-      if l == [] then
-        (if signum == 0 then 0 else -1)
-      else
-        (builtins.head l) + (2 * (bitsToInt (builtins.tail l) signum));
-
-    xsignum = if x < 0 then 1 else 0;
-    ysignum = if y < 0 then 1 else 0;
-    zipListsWith' = fst: snd:
-      if fst==[] && snd==[] then
-        []
-      else if fst==[] then
-        [(f xsignum             (builtins.head snd))] ++ (zipListsWith' []                  (builtins.tail snd))
-      else if snd==[] then
-        [(f (builtins.head fst) ysignum            )] ++ (zipListsWith' (builtins.tail fst) []                 )
-      else
-        [(f (builtins.head fst) (builtins.head snd))] ++ (zipListsWith' (builtins.tail fst) (builtins.tail snd));
-  in
-    assert (builtins.isInt x) && (builtins.isInt y);
-    bitsToInt (zipListsWith' (intToBits x) (intToBits y)) (f xsignum ysignum)
diff --git a/nixpkgs/maintainers/maintainer-list.nix b/nixpkgs/maintainers/maintainer-list.nix
index e89b81ec0e96..e25af81c96a8 100644
--- a/nixpkgs/maintainers/maintainer-list.nix
+++ b/nixpkgs/maintainers/maintainer-list.nix
@@ -203,6 +203,15 @@
       fingerprint = "D292 365E 3C46 A5AA 75EE  B30B 78DB 7EDE 3540 794B";
     }];
   };
+  _6543 = {
+    email = "6543@obermui.de";
+    github = "6543";
+    githubId = 24977596;
+    name = "6543";
+    keys = [{
+      fingerprint = "8722 B61D 7234 1082 553B  201C B8BE 6D61 0E61 C862";
+    }];
+  };
   _6AA4FD = {
     email = "f6442954@gmail.com";
     github = "6AA4FD";
@@ -5805,6 +5814,13 @@
     githubId = 8706;
     name = "Rafael Fernández López";
   };
+  erethon = {
+    email = "dgrig@erethon.com";
+    matrix = "@dgrig:erethon.com";
+    github = "erethon";
+    githubId = 1254842;
+    name = "Dionysis Grigoropoulos";
+  };
   ericbmerritt = {
     email = "eric@afiniate.com";
     github = "ericbmerritt";
@@ -7031,6 +7047,15 @@
     github = "ghostbuster91";
     githubId = 5662622;
   };
+  ghthor = {
+    email = "ghthor@gmail.com";
+    github = "ghthor";
+    githubId = 160298;
+    name = "Will Owens";
+    keys = [{
+      fingerprint = "8E98 BB01 BFF8 AEA4 E303  FC4C 8074 09C9 2CE2 3033";
+    }];
+  };
   ghuntley = {
     email = "ghuntley@ghuntley.com";
     github = "ghuntley";
@@ -7606,6 +7631,12 @@
     githubId = 287769;
     name = "Sergii Paryzhskyi";
   };
+  heijligen = {
+    email = "src@posteo.de";
+    github = "heijligen";
+    githubId = 19170376;
+    name = "Thomas Heijligen";
+  };
   heisfer = {
     email = "heisfer@refract.dev";
     github = "heisfer";
@@ -11023,6 +11054,12 @@
     githubId = 591860;
     name = "Lionello Lunesu";
   };
+  litchipi = {
+    email = "litchi.pi@proton.me";
+    github = "litchipi";
+    githubId = 61109829;
+    name = "Litchi Pi";
+  };
   livnev = {
     email = "lev@liv.nev.org.uk";
     github = "livnev";
@@ -16674,6 +16711,12 @@
     githubId = 6445619;
     name = "Ruben Cano Diaz";
   };
+  RudiOnTheAir = {
+    name = "Rüdiger Schwoon";
+    email = "wolf@schwoon.info";
+    github = "RudiOnTheAir";
+    githubId = 47517341;
+  };
   rudolfvesely = {
     name = "Rudolf Vesely";
     email = "i@rudolfvesely.com";
@@ -17162,6 +17205,12 @@
       fingerprint = "E173 237A C782 296D 98F5  ADAC E13D FD4B 4712 7951";
     }];
   };
+  sdht0 = {
+    email = "nixpkgs@sdht.in";
+    github = "sdht0";
+    githubId = 867424;
+    name = "Siddhartha Sahu";
+  };
   sdier = {
     email = "scott@dier.name";
     matrix = "@sdier:matrix.org";
@@ -17255,6 +17304,12 @@
     githubId = 1286668;
     name = "Thilo Uttendorfer";
   };
+  sentientmonkey = {
+    email = "swindsor@gmail.com";
+    github = "sentientmonkey";
+    githubId = 9032;
+    name = "Scott Windsor";
+  };
   sents = {
     email = "finn@krein.moe";
     github = "sents";
@@ -20243,6 +20298,12 @@
     githubId = 326263;
     name = "Danny Wilson";
   };
+  vizid = {
+    email = "vizid1337@gmail.com";
+    github = "ViZiD";
+    githubId = 7444430;
+    name = "Radik Islamov";
+  };
   vklquevs = {
     email = "vklquevs@gmail.com";
     github = "vklquevs";
diff --git a/nixpkgs/maintainers/scripts/bootstrap-files/README.md b/nixpkgs/maintainers/scripts/bootstrap-files/README.md
index ae385cbd6ce8..b55878f34192 100644
--- a/nixpkgs/maintainers/scripts/bootstrap-files/README.md
+++ b/nixpkgs/maintainers/scripts/bootstrap-files/README.md
@@ -39,7 +39,7 @@ target:
    ```
 
    To validate cross-targets `binfmt` `NixOS` helper can be useful.
-   For `riscv64-unknown-linux-gnu` the `/etc/nixox/configuraqtion.nix`
+   For `riscv64-unknown-linux-gnu` the `/etc/nixos/configuration.nix`
    entry would be `boot.binfmt.emulatedSystems = [ "riscv64-linux" ]`.
 
 3. Propose the commit as a PR to update bootstrap tarballs, tag people
diff --git a/nixpkgs/maintainers/scripts/kde/collect-licenses.sh b/nixpkgs/maintainers/scripts/kde/collect-licenses.sh
new file mode 100755
index 000000000000..87da901c255c
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/collect-licenses.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p gnutar jq reuse
+set -eu
+cd "$(dirname "$(readlink -f "$0")")"/../../..
+
+TMPDIR=$(mktemp -d)
+trap 'rm -rf $TMPDIR' EXIT
+
+echo "# Prebuilding sources..."
+nix-build -A kdePackages.sources --no-link || true
+
+echo "# Evaluating sources..."
+declare -A sources
+eval "$(nix-instantiate --eval -A kdePackages.sources --json --strict | jq 'to_entries[] | "sources[" + .key + "]=" + .value' -r)"
+
+echo "# Collecting licenses..."
+for k in "${!sources[@]}"; do
+    echo "- Processing $k..."
+
+    if [ ! -f "${sources[$k]}" ]; then
+        echo "Not found!"
+        continue
+    fi
+
+    mkdir "$TMPDIR/$k"
+    tar -C "$TMPDIR/$k" -xf "${sources[$k]}"
+
+    (cd "$TMPDIR/$k"; reuse lint --json) | jq --arg name "$k" '{$name: .summary.used_licenses | sort}' -c > "$TMPDIR/$k.json"
+done
+
+jq -s 'add' -S "$TMPDIR"/*.json > pkgs/kde/generated/licenses.json
diff --git a/nixpkgs/maintainers/scripts/kde/collect-logs.nu b/nixpkgs/maintainers/scripts/kde/collect-logs.nu
new file mode 100755
index 000000000000..1d07fa9d2caf
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/collect-logs.nu
@@ -0,0 +1,11 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i nu -p nushell
+cd $"($env.FILE_PWD)/../../.."
+
+mkdir logs
+nix-env -qaP -f . -A kdePackages --json --out-path | from json | values | par-each { |it|
+    echo $"Processing ($it.pname)..."
+    if "outputs" in $it {
+        nix-store --read-log $it.outputs.out | save -f $"logs/($it.pname).log"
+    }
+}
diff --git a/nixpkgs/maintainers/scripts/kde/collect-metadata.py b/nixpkgs/maintainers/scripts/kde/collect-metadata.py
new file mode 100755
index 000000000000..eaa619647136
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/collect-metadata.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.click ps.pyyaml ])"
+import pathlib
+
+import click
+
+import utils
+
+@click.command
+@click.argument(
+    "repo-metadata",
+    type=click.Path(
+        exists=True,
+        file_okay=False,
+        resolve_path=True,
+        path_type=pathlib.Path,
+    ),
+)
+@click.option(
+    "--nixpkgs",
+    type=click.Path(
+        exists=True,
+        file_okay=False,
+        resolve_path=True,
+        writable=True,
+        path_type=pathlib.Path,
+    ),
+    default=pathlib.Path(__file__).parent.parent.parent.parent
+)
+def main(repo_metadata: pathlib.Path, nixpkgs: pathlib.Path):
+    metadata = utils.KDERepoMetadata.from_repo_metadata_checkout(repo_metadata)
+    out_dir = nixpkgs / "pkgs/kde/generated"
+    metadata.write_json(out_dir)
+
+if __name__ == "__main__":
+    main()  # type: ignore
diff --git a/nixpkgs/maintainers/scripts/kde/collect-missing-deps.py b/nixpkgs/maintainers/scripts/kde/collect-missing-deps.py
new file mode 100755
index 000000000000..f3943338b57f
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/collect-missing-deps.py
@@ -0,0 +1,127 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python3 -p python3
+import pathlib
+
+OK_MISSING = {
+    # we don't use precompiled QML
+    'Qt6QuickCompiler',
+    'Qt6QmlCompilerPlusPrivate',
+    # usually used for version numbers
+    'Git',
+    # useless by itself, will warn if something else is not found
+    'PkgConfig',
+    # license verification
+    'ReuseTool',
+    # dev only
+    'ClangFormat',
+    # doesn't exist
+    'Qt6X11Extras',
+}
+
+OK_MISSING_BY_PACKAGE = {
+    "angelfish": {
+        "Qt6Feedback",  # we don't have it
+    },
+    "attica": {
+        "Python3",  # only used for license checks
+    },
+    "discover": {
+        "rpm-ostree-1",  # we don't have rpm-ostree (duh)
+        "Snapd",  # we don't have snaps and probably never will
+    },
+    "elisa": {
+        "UPNPQT",  # upstream says it's broken
+    },
+    "extra-cmake-modules": {
+        "Sphinx",  # only used for docs, bloats closure size
+        "QCollectionGenerator"
+    },
+    "kio-extras-kf5": {
+        "KDSoapWSDiscoveryClient",  # actually vendored on KF5 version
+    },
+    "kitinerary": {
+        "OsmTools",  # used for map data updates, we use prebuilt
+    },
+    "kosmindoormap": {
+        "OsmTools",  # same
+        "Protobuf",
+    },
+    "kpty": {
+        "UTEMPTER",  # we don't have it and it probably wouldn't work anyway
+    },
+    "kpublictransport": {
+        "OsmTools",  # same
+        "PolyClipping",
+        "Protobuf",
+    },
+    "krfb": {
+        "Qt6XkbCommonSupport",  # not real
+    },
+    "kuserfeedback": {
+        "Qt6Svg",  # all used for backend console stuff we don't ship
+        "QmlLint",
+        "Qt6Charts",
+        "FLEX",
+        "BISON",
+        "Php",
+        "PhpUnit",
+    },
+    "kwin": {
+        "display-info",  # newer versions identify as libdisplay-info
+    },
+    "mlt": {
+        "Qt5",  # intentionally disabled
+        "SWIG",
+    },
+    "plasma-desktop": {
+        "scim",  # upstream is dead, not packaged in Nixpkgs
+    },
+    "powerdevil": {
+        "DDCUtil",  # cursed, intentionally disabled
+    },
+    "pulseaudio-qt": {
+        "Qt6Qml",  # tests only
+        "Qt6Quick",
+    },
+    "syntax-highlighting": {
+        "XercesC",  # only used for extra validation at build time
+    }
+}
+
+def main():
+    here = pathlib.Path(__file__).parent.parent.parent.parent
+    logs = (here / "logs").glob("*.log")
+
+    for log in sorted(logs):
+        pname = log.stem
+
+        missing = []
+        is_in_block = False
+        with log.open(errors="replace") as fd:
+            for line in fd:
+                line = line.strip()
+                if line.startswith("--   No package '"):
+                    package = line.removeprefix("--   No package '").removesuffix("' found")
+                    missing.append(package)
+                if line == "-- The following OPTIONAL packages have not been found:" or line == "-- The following RECOMMENDED packages have not been found:":
+                    is_in_block = True
+                elif line.startswith("--") and is_in_block:
+                    is_in_block = False
+                elif line.startswith("*") and is_in_block:
+                    package = line.removeprefix("* ")
+                    missing.append(package)
+
+        missing = {
+            package
+            for package in missing
+            if not any(package.startswith(i) for i in OK_MISSING | OK_MISSING_BY_PACKAGE.get(pname, set()))
+        }
+
+        if missing:
+            print(pname + ":")
+            for line in missing:
+                print("  -", line)
+            print()
+
+if __name__ == '__main__':
+    main()
diff --git a/nixpkgs/maintainers/scripts/kde/generate-sources.py b/nixpkgs/maintainers/scripts/kde/generate-sources.py
new file mode 100755
index 000000000000..e9f8c41ef4d7
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/generate-sources.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python3 -p "python3.withPackages(ps: [ ps.beautifulsoup4 ps.click ps.httpx ps.jinja2 ps.pyyaml ])
+import base64
+import binascii
+import json
+import pathlib
+from urllib.parse import urlparse
+
+import bs4
+import click
+import httpx
+import jinja2
+
+import utils
+
+
+LEAF_TEMPLATE = jinja2.Template('''
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "{{ pname }}";
+}
+'''.strip())
+
+ROOT_TEMPLATE = jinja2.Template('''
+{callPackage}: {
+  {%- for p in packages %}
+  {{ p }} = callPackage ./{{ p }} {};
+  {%- endfor %}
+}
+'''.strip());
+
+def to_sri(hash):
+    raw = binascii.unhexlify(hash)
+    b64 = base64.b64encode(raw).decode()
+    return f"sha256-{b64}"
+
+
+@click.command
+@click.argument(
+    "set",
+    type=click.Choice(["frameworks", "gear", "plasma"]),
+    required=True
+)
+@click.argument(
+    "version",
+    type=str,
+    required=True
+)
+@click.option(
+    "--nixpkgs",
+    type=click.Path(
+        exists=True,
+        file_okay=False,
+        resolve_path=True,
+        writable=True,
+        path_type=pathlib.Path,
+    ),
+    default=pathlib.Path(__file__).parent.parent.parent.parent
+)
+def main(set: str, version: str, nixpkgs: pathlib.Path):
+    root_dir = nixpkgs / "pkgs/kde"
+    set_dir = root_dir / set
+    generated_dir = root_dir / "generated"
+    metadata = utils.KDERepoMetadata.from_json(generated_dir)
+
+    set_url = {
+        "frameworks": "kf",
+        "gear": "releases",
+        "plasma": "plasma",
+    }[set]
+
+    sources = httpx.get(f"https://kde.org/info/sources/source-{set_url}-{version}.html")
+    sources.raise_for_status()
+    bs = bs4.BeautifulSoup(sources.text, features="html.parser")
+
+    results = {}
+    for item in bs.select("tr")[1:]:
+        link = item.select_one("td:nth-child(1) a")
+        assert link
+
+        hash = item.select_one("td:nth-child(3) tt")
+        assert hash
+
+        project_name, version = link.text.rsplit("-", maxsplit=1)
+        if project_name not in metadata.projects_by_name:
+            print(f"Warning: unknown tarball: {project_name}")
+
+        results[project_name] = {
+            "version": version,
+            "url": "mirror://kde" + urlparse(link.attrs["href"]).path,
+            "hash": to_sri(hash.text)
+        }
+
+        pkg_dir = set_dir / project_name
+        pkg_file = pkg_dir / "default.nix"
+        if not pkg_file.exists():
+            print(f"Generated new package: {set}/{project_name}")
+            pkg_dir.mkdir(parents=True, exist_ok=True)
+            with pkg_file.open("w") as fd:
+                fd.write(LEAF_TEMPLATE.render(pname=project_name) + "\n")
+
+    set_dir.mkdir(parents=True, exist_ok=True)
+    with (set_dir / "default.nix").open("w") as fd:
+        fd.write(ROOT_TEMPLATE.render(packages=results.keys()) + "\n")
+
+    sources_dir = generated_dir / "sources"
+    sources_dir.mkdir(parents=True, exist_ok=True)
+    with (sources_dir / f"{set}.json").open("w") as fd:
+        json.dump(results, fd, indent=2)
+
+
+if __name__ == "__main__":
+    main()  # type: ignore
diff --git a/nixpkgs/maintainers/scripts/kde/utils.py b/nixpkgs/maintainers/scripts/kde/utils.py
new file mode 100644
index 000000000000..7a82c4955c6b
--- /dev/null
+++ b/nixpkgs/maintainers/scripts/kde/utils.py
@@ -0,0 +1,185 @@
+import collections
+import dataclasses
+import functools
+import json
+import pathlib
+import subprocess
+
+import yaml
+
+class DataclassEncoder(json.JSONEncoder):
+    def default(self, it):
+        if dataclasses.is_dataclass(it):
+            return dataclasses.asdict(it)
+        return super().default(it)
+
+
+@dataclasses.dataclass
+class Project:
+    name: str
+    description: str | None
+    project_path: str
+    repo_path: str | None
+
+    def __hash__(self) -> int:
+        return hash(self.name)
+
+    @classmethod
+    def from_yaml(cls, path: pathlib.Path):
+        data = yaml.safe_load(path.open())
+        return cls(
+            name=data["identifier"],
+            description=data["description"],
+            project_path=data["projectpath"],
+            repo_path=data["repopath"]
+        )
+
+
+def get_git_commit(path: pathlib.Path):
+    return subprocess.check_output(["git", "-C", path, "rev-parse", "--short", "HEAD"]).decode().strip()
+
+
+def validate_unique(projects: list[Project], attr: str):
+    seen = set()
+    for item in projects:
+        attr_value = getattr(item, attr)
+        if attr_value in seen:
+            raise Exception(f"Duplicate {attr}: {attr_value}")
+        seen.add(attr_value)
+
+
+THIRD_PARTY = {
+    "third-party/appstream": "appstream-qt",
+    "third-party/cmark": "cmark",
+    "third-party/gpgme": "gpgme",
+    "third-party/kdsoap": "kdsoap",
+    "third-party/libaccounts-qt": "accounts-qt",
+    "third-party/libgpg-error": "libgpg-error",
+    "third-party/libquotient": "libquotient",
+    "third-party/packagekit-qt": "packagekit-qt",
+    "third-party/poppler": "poppler",
+    "third-party/qcoro": "qcoro",
+    "third-party/qmltermwidget": "qmltermwidget",
+    "third-party/qtkeychain": "qtkeychain",
+    "third-party/signond": "signond",
+    "third-party/taglib": "taglib",
+    "third-party/wayland-protocols": "wayland-protocols",
+    "third-party/wayland": "wayland",
+    "third-party/zxing-cpp": "zxing-cpp",
+}
+
+IGNORE = {
+    "kdesupport/phonon-directshow",
+    "kdesupport/phonon-mmf",
+    "kdesupport/phonon-mplayer",
+    "kdesupport/phonon-quicktime",
+    "kdesupport/phonon-waveout",
+    "kdesupport/phonon-xine"
+}
+
+WARNED = set()
+
+
+@dataclasses.dataclass
+class KDERepoMetadata:
+    version: str
+    projects: list[Project]
+    dep_graph: dict[Project, set[Project]]
+
+    @functools.cached_property
+    def projects_by_name(self):
+        return {p.name: p for p in self.projects}
+
+    @functools.cached_property
+    def projects_by_path(self):
+        return {p.project_path: p for p in self.projects}
+
+    def try_lookup_package(self, path):
+        if path in IGNORE:
+            return None
+        project = self.projects_by_path.get(path)
+        if project is None and path not in WARNED:
+            WARNED.add(path)
+            print(f"Warning: unknown project {path}")
+        return project
+
+    @classmethod
+    def from_repo_metadata_checkout(cls, repo_metadata: pathlib.Path):
+        projects = [
+            Project.from_yaml(metadata_file)
+            for metadata_file in repo_metadata.glob("projects-invent/**/metadata.yaml")
+        ] + [
+            Project(id, None, project_path, None)
+            for project_path, id in THIRD_PARTY.items()
+        ]
+
+        validate_unique(projects, "name")
+        validate_unique(projects, "project_path")
+
+        self = cls(
+            version=get_git_commit(repo_metadata),
+            projects=projects,
+            dep_graph={},
+        )
+
+        dep_specs = [
+            "dependency-data-common",
+            "dependency-data-kf6-qt6"
+        ]
+        dep_graph = collections.defaultdict(set)
+
+        for spec in dep_specs:
+            spec_path = repo_metadata / "dependencies" / spec
+            for line in spec_path.open():
+                line = line.strip()
+                if line.startswith("#"):
+                    continue
+                if not line:
+                    continue
+
+                dependent, dependency = line.split(": ")
+
+                dependent = self.try_lookup_package(dependent)
+                if dependent is None:
+                    continue
+
+                dependency = self.try_lookup_package(dependency)
+                if dependency is None:
+                    continue
+
+                dep_graph[dependent].add(dependency)
+
+        self.dep_graph = dep_graph
+
+        return self
+
+    def write_json(self, root: pathlib.Path):
+        root.mkdir(parents=True, exist_ok=True)
+
+        with (root / "projects.json").open("w") as fd:
+            json.dump(self.projects_by_name, fd, cls=DataclassEncoder, sort_keys=True, indent=2)
+
+        with (root / "dependencies.json").open("w") as fd:
+            deps = {k.name: sorted(dep.name for dep in v) for k, v in self.dep_graph.items()}
+            json.dump({"version": self.version, "dependencies": deps}, fd, cls=DataclassEncoder, sort_keys=True, indent=2)
+
+    @classmethod
+    def from_json(cls, root: pathlib.Path):
+        projects = [
+            Project(**v) for v in json.load((root / "projects.json").open()).values()
+        ]
+
+        deps = json.load((root / "dependencies.json").open())
+        self = cls(
+            version=deps["version"],
+            projects=projects,
+            dep_graph={},
+        )
+
+        dep_graph = collections.defaultdict(set)
+        for dependent, dependencies in deps["dependencies"].items():
+            for dependency in dependencies:
+                dep_graph[self.projects_by_name[dependent]].add(self.projects_by_name[dependency])
+
+        self.dep_graph = dep_graph
+        return self
diff --git a/nixpkgs/nixos/doc/manual/development/settings-options.section.md b/nixpkgs/nixos/doc/manual/development/settings-options.section.md
index 3a4800742b04..71ec9bbc8892 100644
--- a/nixpkgs/nixos/doc/manual/development/settings-options.section.md
+++ b/nixpkgs/nixos/doc/manual/development/settings-options.section.md
@@ -73,6 +73,34 @@ have a predefined type and string generator already declared under
 
     It returns a set with INI-specific attributes `type` and `generate`
     as specified [below](#pkgs-formats-result).
+    The type of the input is an *attrset* of sections; key-value pairs where
+    the key is the section name and the value is the corresponding content
+    which is also an *attrset* of key-value pairs for the actual key-value
+    mappings of the INI format.
+    The values of the INI atoms are subject to the above parameters (e.g. lists
+    may be transformed into multiple key-value pairs depending on
+    `listToValue`).
+
+`pkgs.formats.iniWithGlobalSection` { *`listsAsDuplicateKeys`* ? false, *`listToValue`* ? null, \.\.\. }
+
+:   A function taking an attribute set with values
+
+    `listsAsDuplicateKeys`
+
+    :   A boolean for controlling whether list values can be used to
+        represent duplicate INI keys
+
+    `listToValue`
+
+    :   A function for turning a list of values into a single value.
+
+    It returns a set with INI-specific attributes `type` and `generate`
+    as specified [below](#pkgs-formats-result).
+    The type of the input is an *attrset* of the structure
+    `{ sections = {}; globalSection = {}; }` where *sections* are several
+    sections as with *pkgs.formats.ini* and *globalSection* being just a single
+    attrset of key-value pairs for a single section, the global section which
+    preceedes the section definitions.
 
 `pkgs.formats.toml` { }
 
diff --git a/nixpkgs/nixos/doc/manual/release-notes/rl-2405.section.md b/nixpkgs/nixos/doc/manual/release-notes/rl-2405.section.md
index b5973c19a2c4..510019b58658 100644
--- a/nixpkgs/nixos/doc/manual/release-notes/rl-2405.section.md
+++ b/nixpkgs/nixos/doc/manual/release-notes/rl-2405.section.md
@@ -16,6 +16,8 @@ In addition to numerous new and upgraded packages, this release has the followin
 
 - `linuxPackages_testing_bcachefs` is now fully deprecated by `linuxPackages_latest`, and is therefore no longer available.
 
+- The default kernel package has been updated from 6.1 to 6.6. All supported kernels remain available.
+
 - NixOS now installs a stub ELF loader that prints an informative error message when users attempt to run binaries not made for NixOS.
    - This can be disabled through the `environment.stub-ld.enable` option.
    - If you use `programs.nix-ld.enable`, no changes are needed. The stub will be disabled automatically.
@@ -50,6 +52,8 @@ In addition to numerous new and upgraded packages, this release has the followin
   }
   ```
 
+- Plasma 6 is now available and can be installed with `services.xserver.desktopManager.plasma6.enable = true;`. Plasma 5 will likely be deprecated in the next release (24.11). Note that Plasma 6 runs as Wayland by default, and the X11 session needs to be explicitly selected if necessary.
+
 ## New Services {#sec-release-24.05-new-services}
 
 <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
@@ -85,8 +89,12 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
 
 - [go-camo](https://github.com/cactus/go-camo), a secure image proxy server. Available as [services.go-camo](#opt-services.go-camo.enable).
 
+- [Monado](https://monado.freedesktop.org/), an open source XR runtime. Available as [services.monado](#opt-services.monado.enable).
+
 - [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
 
+- [armagetronad](https://wiki.armagetronad.org), a mid-2000s 3D lightcycle game widely played at iD Tech Camps. You can define multiple servers using `services.armagetronad.<server>.enable`.
+
 - [TuxClocker](https://github.com/Lurkki14/tuxclocker), a hardware control and monitoring program. Available as [programs.tuxclocker](#opt-programs.tuxclocker.enable).
 
 - [ALVR](https://github.com/alvr-org/alvr), a VR desktop streamer. Available as [programs.alvr](#opt-programs.alvr.enable)
@@ -97,11 +105,13 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
 
 - [systemd-lock-handler](https://git.sr.ht/~whynothugo/systemd-lock-handler/), a bridge between logind D-Bus events and systemd targets. Available as [services.systemd-lock-handler.enable](#opt-services.systemd-lock-handler.enable).
 
+- [Mealie](https://nightly.mealie.io/), a self-hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in NuxtJS for a pleasant user experience for the whole family. Available as [services.mealie](#opt-services.mealie.enable)
+
 ## Backward Incompatibilities {#sec-release-24.05-incompatibilities}
 
 <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
 
-- `himalaya` was updated to v1.0.0-beta, which introduces breaking changes. Check out the [release note](https://github.com/soywod/himalaya/releases/tag/v1.0.0-beta) for details.
+- `himalaya` was updated to `v1.0.0-beta.3`, which introduces breaking changes. Check out the [release note](https://github.com/soywod/himalaya/releases/tag/v1.0.0-beta.3) for details.
 
 - The `power.ups` module now generates `upsd.conf`, `upsd.users` and `upsmon.conf` automatically from a set of new configuration options. This breaks compatibility with existing `power.ups` setups where these files were created manually. Back up these files before upgrading NixOS.
 
@@ -277,6 +287,10 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
 
 - Cinnamon has been updated to 6.0. Please beware that the [Wayland session](https://blog.linuxmint.com/?p=4591) is still experimental in this release.
 
+- New `boot.loader.systemd-boot.xbootldrMountPoint` allows setting up a separate [XBOOTLDR partition](https://uapi-group.org/specifications/specs/boot_loader_specification/) to store boot files. Useful on systems with a small EFI System partition that cannot be easily repartitioned.
+
+- `boot.loader.systemd-boot` will now verify that `efiSysMountPoint` (and `xbootldrMountPoint` if configured) are mounted partitions.
+
 - `services.postgresql.extraPlugins` changed its type from just a list of packages to also a function that returns such a list.
   For example a config line like ``services.postgresql.extraPlugins = with pkgs.postgresql_11.pkgs; [ postgis ];`` is recommended to be changed to ``services.postgresql.extraPlugins = ps: with ps; [ postgis ];``;
 
@@ -378,6 +392,11 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
 
 - The `mpich` package expression now requires `withPm` to be a list, e.g. `"hydra:gforker"` becomes `[ "hydra" "gforker" ]`.
 
+- When merging systemd unit options (of type `unitOption`),
+  if at least one definition is a list, all those which aren't are now lifted into a list,
+  making it possible to accumulate definitions without resorting to `mkForce`,
+  hence to retain the definitions not anticipating that need.
+
 - YouTrack is bumped to 2023.3. The update is not performed automatically, it requires manual interaction. See the YouTrack section in the manual for details.
 
 - QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
diff --git a/nixpkgs/nixos/lib/make-disk-image.nix b/nixpkgs/nixos/lib/make-disk-image.nix
index 047e72e2ac0d..da94ef16654c 100644
--- a/nixpkgs/nixos/lib/make-disk-image.nix
+++ b/nixpkgs/nixos/lib/make-disk-image.nix
@@ -56,6 +56,14 @@ This partition table type uses GPT and:
 - creates an FAT32 ESP partition from 8MiB to specified `bootSize` parameter (256MiB by default), set it bootable ;
 - creates an primary ext4 partition starting after the boot partition and extending to the full disk image
 
+#### `efixbootldr`
+
+This partition table type uses GPT and:
+
+- creates an FAT32 ESP partition from 8MiB to 100MiB, set it bootable ;
+- creates an FAT32 BOOT partition from 100MiB to specified `bootSize` parameter (256MiB by default), set `bls_boot` flag ;
+- creates an primary ext4 partition starting after the boot partition and extending to the full disk image
+
 #### `hybrid`
 
 This partition table type uses GPT and:
@@ -111,19 +119,7 @@ To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$imag
   # When setting one of `user' or `group', the other needs to be set too.
   contents ? []
 
-, # Type of partition table to use; either "legacy", "efi", or "none".
-  # For "efi" images, the GPT partition table is used and a mandatory ESP
-  #   partition of reasonable size is created in addition to the root partition.
-  # For "legacy", the msdos partition table is used and a single large root
-  #   partition is created.
-  # For "legacy+gpt", the GPT partition table is used, a 1MiB no-fs partition for
-  #   use by the bootloader is created, and a single large root partition is
-  #   created.
-  # For "hybrid", the GPT partition table is used and a mandatory ESP
-  #   partition of reasonable size is created in addition to the root partition.
-  #   Also a legacy MBR will be present.
-  # For "none", no partition table is created. Enabling `installBootLoader`
-  #   most likely fails as GRUB will probably refuse to install.
+, # Type of partition table to use; described in the `Image Partitioning` section above.
   partitionTableType ? "legacy"
 
 , # Whether to invoke `switch-to-configuration boot` during image creation
@@ -193,11 +189,11 @@ To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$imag
   additionalPaths ? []
 }:
 
-assert (lib.assertOneOf "partitionTableType" partitionTableType [ "legacy" "legacy+gpt" "efi" "hybrid" "none" ]);
+assert (lib.assertOneOf "partitionTableType" partitionTableType [ "legacy" "legacy+gpt" "efi" "efixbootldr" "hybrid" "none" ]);
 assert (lib.assertMsg (fsType == "ext4" && deterministic -> rootFSUID != null) "In deterministic mode with a ext4 partition, rootFSUID must be non-null, by default, it is equal to rootGPUID.");
   # We use -E offset=X below, which is only supported by e2fsprogs
 assert (lib.assertMsg (partitionTableType != "none" -> fsType == "ext4") "to produce a partition table, we need to use -E offset flag which is support only for fsType = ext4");
-assert (lib.assertMsg (touchEFIVars -> partitionTableType == "hybrid" || partitionTableType == "efi" || partitionTableType == "legacy+gpt") "EFI variables can be used only with a partition table of type: hybrid, efi or legacy+gpt.");
+assert (lib.assertMsg (touchEFIVars -> partitionTableType == "hybrid" || partitionTableType == "efi" || partitionTableType == "efixbootldr" || partitionTableType == "legacy+gpt") "EFI variables can be used only with a partition table of type: hybrid, efi, efixbootldr, or legacy+gpt.");
   # If only Nix store image, then: contents must be empty, configFile must be unset, and we should no install bootloader.
 assert (lib.assertMsg (onlyNixStore -> contents == [] && configFile == null && !installBootLoader) "In a only Nix store image, the contents must be empty, no configuration must be provided and no bootloader should be installed.");
 # Either both or none of {user,group} need to be set
@@ -225,6 +221,7 @@ let format' = format; in let
     legacy = "1";
     "legacy+gpt" = "2";
     efi = "2";
+    efixbootldr = "3";
     hybrid = "3";
   }.${partitionTableType};
 
@@ -266,6 +263,23 @@ let format' = format; in let
           $diskImage
       ''}
     '';
+    efixbootldr = ''
+      parted --script $diskImage -- \
+        mklabel gpt \
+        mkpart ESP fat32 8MiB 100MiB \
+        set 1 boot on \
+        mkpart BOOT fat32 100MiB ${bootSize} \
+        set 2 bls_boot on \
+        mkpart ROOT ext4 ${bootSize} -1
+      ${optionalString deterministic ''
+          sgdisk \
+          --disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C \
+          --partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC  \
+          --partition-guid=2:970C694F-AFD0-4B99-B750-CDB7A329AB6F  \
+          --partition-guid=3:${rootGPUID} \
+          $diskImage
+      ''}
+    '';
     hybrid = ''
       parted --script $diskImage -- \
         mklabel gpt \
@@ -436,7 +450,7 @@ let format' = format; in let
     diskImage=nixos.raw
 
     ${if diskSize == "auto" then ''
-      ${if partitionTableType == "efi" || partitionTableType == "hybrid" then ''
+      ${if partitionTableType == "efi" || partitionTableType == "efixbootldr" || partitionTableType == "hybrid" then ''
         # Add the GPT at the end
         gptSpace=$(( 512 * 34 * 1 ))
         # Normally we'd need to account for alignment and things, if bootSize
@@ -570,6 +584,15 @@ let format' = format; in let
 
         ${optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
       ''}
+      ${optionalString (partitionTableType == "efixbootldr") ''
+        mkdir -p /mnt/{boot,efi}
+        mkfs.vfat -n ESP /dev/vda1
+        mkfs.vfat -n BOOT /dev/vda2
+        mount /dev/vda1 /mnt/efi
+        mount /dev/vda2 /mnt/boot
+
+        ${optionalString touchEFIVars "mount -t efivarfs efivarfs /sys/firmware/efi/efivars"}
+      ''}
 
       # Install a configuration.nix
       mkdir -p /mnt/etc/nixos
diff --git a/nixpkgs/nixos/lib/systemd-lib.nix b/nixpkgs/nixos/lib/systemd-lib.nix
index c9cca619ed70..ef218e674ebf 100644
--- a/nixpkgs/nixos/lib/systemd-lib.nix
+++ b/nixpkgs/nixos/lib/systemd-lib.nix
@@ -378,7 +378,7 @@ in rec {
     '';
 
   targetToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text =
         ''
           [Unit]
@@ -387,7 +387,7 @@ in rec {
     };
 
   serviceToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def (''
         [Service]
       '' + (let env = cfg.globalEnvironment // def.environment;
@@ -408,7 +408,7 @@ in rec {
     };
 
   socketToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Socket]
         ${attrsToSection def.socketConfig}
@@ -418,7 +418,7 @@ in rec {
     };
 
   timerToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Timer]
         ${attrsToSection def.timerConfig}
@@ -426,7 +426,7 @@ in rec {
     };
 
   pathToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Path]
         ${attrsToSection def.pathConfig}
@@ -434,7 +434,7 @@ in rec {
     };
 
   mountToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Mount]
         ${attrsToSection def.mountConfig}
@@ -442,7 +442,7 @@ in rec {
     };
 
   automountToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Automount]
         ${attrsToSection def.automountConfig}
@@ -450,7 +450,7 @@ in rec {
     };
 
   sliceToUnit = name: def:
-    { inherit (def) aliases wantedBy requiredBy enable overrideStrategy;
+    { inherit (def) aliases wantedBy requiredBy upheldBy enable overrideStrategy;
       text = commonUnitText def ''
         [Slice]
         ${attrsToSection def.sliceConfig}
diff --git a/nixpkgs/nixos/lib/systemd-unit-options.nix b/nixpkgs/nixos/lib/systemd-unit-options.nix
index bc7880da9fe0..e4953ba72dd9 100644
--- a/nixpkgs/nixos/lib/systemd-unit-options.nix
+++ b/nixpkgs/nixos/lib/systemd-unit-options.nix
@@ -21,14 +21,8 @@ in rec {
       let
         defs' = filterOverrides defs;
       in
-        if isList (head defs').value
-        then concatMap (def:
-          if builtins.typeOf def.value == "list"
-          then def.value
-          else
-            throw "The definitions for systemd unit options should be either all lists, representing repeatable options, or all non-lists, but for the option ${showOption loc}, the definitions are a mix of list and non-list ${lib.options.showDefs defs'}"
-        ) defs'
-
+        if any (def: isList def.value) defs'
+        then concatMap (def: toList def.value) defs'
         else mergeEqualOption loc defs';
   };
 
diff --git a/nixpkgs/nixos/lib/test-driver/test_driver/driver.py b/nixpkgs/nixos/lib/test-driver/test_driver/driver.py
index 786821b0cc0d..72a33e0b2d57 100644
--- a/nixpkgs/nixos/lib/test-driver/test_driver/driver.py
+++ b/nixpkgs/nixos/lib/test-driver/test_driver/driver.py
@@ -12,6 +12,8 @@ from test_driver.machine import Machine, NixStartScript, retry
 from test_driver.polling_condition import PollingCondition
 from test_driver.vlan import VLan
 
+SENTINEL = object()
+
 
 def get_tmp_dir() -> Path:
     """Returns a temporary directory that is defined by TMPDIR, TEMP, TMP or CWD
@@ -187,23 +189,58 @@ class Driver:
             # to swallow them and prevent itself from terminating.
             os.kill(os.getpid(), signal.SIGTERM)
 
-    def create_machine(self, args: Dict[str, Any]) -> Machine:
+    def create_machine(
+        self,
+        start_command: str | dict,
+        *,
+        name: Optional[str] = None,
+        keep_vm_state: bool = False,
+    ) -> Machine:
+        # Legacy args handling
+        # FIXME: remove after 24.05
+        if isinstance(start_command, dict):
+            if name is not None or keep_vm_state:
+                raise TypeError(
+                    "Dictionary passed to create_machine must be the only argument"
+                )
+
+            args = start_command
+            start_command = args.pop("startCommand", SENTINEL)
+
+            if start_command is SENTINEL:
+                raise TypeError(
+                    "Dictionary passed to create_machine must contain startCommand"
+                )
+
+            if not isinstance(start_command, str):
+                raise TypeError(
+                    f"startCommand must be a string, got: {repr(start_command)}"
+                )
+
+            name = args.pop("name", None)
+            keep_vm_state = args.pop("keep_vm_state", False)
+
+            if args:
+                raise TypeError(
+                    f"Unsupported arguments passed to create_machine: {args}"
+                )
+
+            rootlog.warning(
+                "Using create_machine with a single dictionary argument is deprecated, and will be removed in NixOS 24.11"
+            )
+        # End legacy args handling
+
         tmp_dir = get_tmp_dir()
 
-        if args.get("startCommand"):
-            start_command: str = args.get("startCommand", "")
-            cmd = NixStartScript(start_command)
-            name = args.get("name", cmd.machine_name)
-        else:
-            cmd = Machine.create_startcommand(args)  # type: ignore
-            name = args.get("name", "machine")
+        cmd = NixStartScript(start_command)
+        name = name or cmd.machine_name
 
         return Machine(
             tmp_dir=tmp_dir,
             out_dir=self.out_dir,
             start_command=cmd,
             name=name,
-            keep_vm_state=args.get("keep_vm_state", False),
+            keep_vm_state=keep_vm_state,
         )
 
     def serial_stdout_on(self) -> None:
diff --git a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
index 93411a4a348e..df8628bce956 100644
--- a/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
+++ b/nixpkgs/nixos/lib/test-driver/test_driver/machine.py
@@ -208,7 +208,6 @@ class StartCommand:
             ),
             stdin=subprocess.PIPE,
             stdout=subprocess.PIPE,
-            stderr=subprocess.STDOUT,
             shell=True,
             cwd=state_dir,
             env=self.build_environment(state_dir, shared_dir),
@@ -235,77 +234,6 @@ class NixStartScript(StartCommand):
         return name
 
 
-class LegacyStartCommand(StartCommand):
-    """Used in some places to create an ad-hoc machine instead of
-    using nix test instrumentation + module system for that purpose.
-    Legacy.
-    """
-
-    def __init__(
-        self,
-        netBackendArgs: Optional[str] = None,  # noqa: N803
-        netFrontendArgs: Optional[str] = None,  # noqa: N803
-        hda: Optional[Tuple[Path, str]] = None,
-        cdrom: Optional[str] = None,
-        usb: Optional[str] = None,
-        bios: Optional[str] = None,
-        qemuBinary: Optional[str] = None,  # noqa: N803
-        qemuFlags: Optional[str] = None,  # noqa: N803
-    ):
-        if qemuBinary is not None:
-            self._cmd = qemuBinary
-        else:
-            self._cmd = "qemu-kvm"
-
-        self._cmd += " -m 384"
-
-        # networking
-        net_backend = "-netdev user,id=net0"
-        net_frontend = "-device virtio-net-pci,netdev=net0"
-        if netBackendArgs is not None:
-            net_backend += "," + netBackendArgs
-        if netFrontendArgs is not None:
-            net_frontend += "," + netFrontendArgs
-        self._cmd += f" {net_backend} {net_frontend}"
-
-        # hda
-        hda_cmd = ""
-        if hda is not None:
-            hda_path = hda[0].resolve()
-            hda_interface = hda[1]
-            if hda_interface == "scsi":
-                hda_cmd += (
-                    f" -drive id=hda,file={hda_path},werror=report,if=none"
-                    " -device scsi-hd,drive=hda"
-                )
-            else:
-                hda_cmd += f" -drive file={hda_path},if={hda_interface},werror=report"
-        self._cmd += hda_cmd
-
-        # cdrom
-        if cdrom is not None:
-            self._cmd += f" -cdrom {cdrom}"
-
-        # usb
-        usb_cmd = ""
-        if usb is not None:
-            # https://github.com/qemu/qemu/blob/master/docs/usb2.txt
-            usb_cmd += (
-                " -device usb-ehci"
-                f" -drive id=usbdisk,file={usb},if=none,readonly"
-                " -device usb-storage,drive=usbdisk "
-            )
-        self._cmd += usb_cmd
-
-        # bios
-        if bios is not None:
-            self._cmd += f" -bios {bios}"
-
-        # qemu flags
-        if qemuFlags is not None:
-            self._cmd += f" {qemuFlags}"
-
-
 class Machine:
     """A handle to the machine with this name, that also knows how to manage
     the machine lifecycle with the help of a start script / command."""
@@ -377,29 +305,6 @@ class Machine:
         self.booted = False
         self.connected = False
 
-    @staticmethod
-    def create_startcommand(args: Dict[str, str]) -> StartCommand:
-        rootlog.warning(
-            "Using legacy create_startcommand(), "
-            "please use proper nix test vm instrumentation, instead "
-            "to generate the appropriate nixos test vm qemu startup script"
-        )
-        hda = None
-        if args.get("hda"):
-            hda_arg: str = args.get("hda", "")
-            hda_arg_path: Path = Path(hda_arg)
-            hda = (hda_arg_path, args.get("hdaInterface", ""))
-        return LegacyStartCommand(
-            netBackendArgs=args.get("netBackendArgs"),
-            netFrontendArgs=args.get("netFrontendArgs"),
-            hda=hda,
-            cdrom=args.get("cdrom"),
-            usb=args.get("usb"),
-            bios=args.get("bios"),
-            qemuBinary=args.get("qemuBinary"),
-            qemuFlags=args.get("qemuFlags"),
-        )
-
     def is_up(self) -> bool:
         return self.booted and self.connected
 
diff --git a/nixpkgs/nixos/lib/test-script-prepend.py b/nixpkgs/nixos/lib/test-script-prepend.py
index 15e59ce01047..976992ea0015 100644
--- a/nixpkgs/nixos/lib/test-script-prepend.py
+++ b/nixpkgs/nixos/lib/test-script-prepend.py
@@ -26,6 +26,17 @@ class PollingConditionProtocol(Protocol):
         raise Exception("This is just type information for the Nix test driver")
 
 
+class CreateMachineProtocol(Protocol):
+    def __call__(
+        self,
+        start_command: str | dict,
+        *,
+        name: Optional[str] = None,
+        keep_vm_state: bool = False,
+    ) -> Machine:
+        raise Exception("This is just type information for the Nix test driver")
+
+
 start_all: Callable[[], None]
 subtest: Callable[[str], ContextManager[None]]
 retry: RetryProtocol
@@ -34,7 +45,7 @@ machines: List[Machine]
 vlans: List[VLan]
 driver: Driver
 log: Logger
-create_machine: Callable[[Dict[str, Any]], Machine]
+create_machine: CreateMachineProtocol
 run_tests: Callable[[], None]
 join_all: Callable[[], None]
 serial_stdout_off: Callable[[], None]
diff --git a/nixpkgs/nixos/lib/testing/nixos-test-base.nix b/nixpkgs/nixos/lib/testing/nixos-test-base.nix
index 59e6e3843367..d76a25361f8c 100644
--- a/nixpkgs/nixos/lib/testing/nixos-test-base.nix
+++ b/nixpkgs/nixos/lib/testing/nixos-test-base.nix
@@ -16,7 +16,11 @@ in
       # The human version (e.g. 21.05-pre) is left as is, because it is useful
       # for external modules that test with e.g. testers.nixosTest and rely on that
       # version number.
-      config.system.nixos.revision = mkForce "constant-nixos-revision";
+      config.system.nixos = {
+        revision = mkForce "constant-nixos-revision";
+        versionSuffix = mkForce "test";
+        label = mkForce "test";
+      };
     }
 
   ];
diff --git a/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix
new file mode 100644
index 000000000000..11118db3aae2
--- /dev/null
+++ b/nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix
@@ -0,0 +1,46 @@
+# This module defines a NixOS installation CD that contains Plasma 6.
+
+{ pkgs, ... }:
+
+{
+  imports = [ ./installation-cd-graphical-calamares.nix ];
+
+  isoImage.edition = "plasma6";
+
+  services.xserver = {
+    desktopManager.plasma6.enable = true;
+
+    # Automatically login as nixos.
+    displayManager = {
+      sddm.enable = true;
+      autoLogin = {
+        enable = true;
+        user = "nixos";
+      };
+    };
+  };
+
+  environment.systemPackages = [
+    # FIXME: using Qt5 builds of Maliit as upstream has not ported to Qt6 yet
+    pkgs.maliit-framework
+    pkgs.maliit-keyboard
+  ];
+
+  system.activationScripts.installerDesktop = let
+
+    # Comes from documentation.nix when xserver and nixos.enable are true.
+    manualDesktopFile = "/run/current-system/sw/share/applications/nixos-manual.desktop";
+
+    homeDir = "/home/nixos/";
+    desktopDir = homeDir + "Desktop/";
+
+  in ''
+    mkdir -p ${desktopDir}
+    chown nixos ${homeDir} ${desktopDir}
+
+    ln -sfT ${manualDesktopFile} ${desktopDir + "nixos-manual.desktop"}
+    ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop ${desktopDir + "gparted.desktop"}
+    ln -sfT ${pkgs.calamares-nixos}/share/applications/io.calamares.calamares.desktop ${desktopDir + "io.calamares.calamares.desktop"}
+  '';
+
+}
diff --git a/nixpkgs/nixos/modules/installer/netboot/netboot.nix b/nixpkgs/nixos/modules/installer/netboot/netboot.nix
index a50f22cbe471..028a2d74041e 100644
--- a/nixpkgs/nixos/modules/installer/netboot/netboot.nix
+++ b/nixpkgs/nixos/modules/installer/netboot/netboot.nix
@@ -62,19 +62,12 @@ with lib;
       };
 
     fileSystems."/nix/store" = mkImageMediaOverride
-      { fsType = "overlay";
-        device = "overlay";
-        options = [
-          "lowerdir=/nix/.ro-store"
-          "upperdir=/nix/.rw-store/store"
-          "workdir=/nix/.rw-store/work"
-        ];
-
-        depends = [
-          "/nix/.ro-store"
-          "/nix/.rw-store/store"
-          "/nix/.rw-store/work"
-        ];
+      { overlay = {
+          lowerdir = [ "/nix/.ro-store" ];
+          upperdir = "/nix/.rw-store/store";
+          workdir = "/nix/.rw-store/work";
+        };
+        neededForBoot = true;
       };
 
     boot.initrd.availableKernelModules = [ "squashfs" "overlay" ];
diff --git a/nixpkgs/nixos/modules/module-list.nix b/nixpkgs/nixos/modules/module-list.nix
index 5d82c6de77e2..08144140b830 100644
--- a/nixpkgs/nixos/modules/module-list.nix
+++ b/nixpkgs/nixos/modules/module-list.nix
@@ -512,6 +512,7 @@
   ./services/editors/infinoted.nix
   ./services/finance/odoo.nix
   ./services/games/archisteamfarm.nix
+  ./services/games/armagetronad.nix
   ./services/games/crossfire-server.nix
   ./services/games/deliantra-server.nix
   ./services/games/factorio.nix
@@ -549,6 +550,7 @@
   ./services/hardware/lcd.nix
   ./services/hardware/lirc.nix
   ./services/hardware/nvidia-container-toolkit-cdi-generator
+  ./services/hardware/monado.nix
   ./services/hardware/nvidia-optimus.nix
   ./services/hardware/openrgb.nix
   ./services/hardware/pcscd.nix
@@ -1324,6 +1326,7 @@
   ./services/web-apps/mastodon.nix
   ./services/web-apps/matomo.nix
   ./services/web-apps/mattermost.nix
+  ./services/web-apps/mealie.nix
   ./services/web-apps/mediawiki.nix
   ./services/web-apps/meme-bingo-web.nix
   ./services/web-apps/microbin.nix
diff --git a/nixpkgs/nixos/modules/programs/gnupg.nix b/nixpkgs/nixos/modules/programs/gnupg.nix
index 8f82de033666..179d2de87cc5 100644
--- a/nixpkgs/nixos/modules/programs/gnupg.nix
+++ b/nixpkgs/nixos/modules/programs/gnupg.nix
@@ -15,6 +15,7 @@ let
   defaultPinentryFlavor =
     if xserverCfg.desktopManager.lxqt.enable
     || xserverCfg.desktopManager.plasma5.enable
+    || xserverCfg.desktopManager.plasma6.enable
     || xserverCfg.desktopManager.deepin.enable then
       "qt"
     else if xserverCfg.desktopManager.xfce.enable then
diff --git a/nixpkgs/nixos/modules/programs/wayland/sway.nix b/nixpkgs/nixos/modules/programs/wayland/sway.nix
index 57ee629b2881..ca2503ae5da7 100644
--- a/nixpkgs/nixos/modules/programs/wayland/sway.nix
+++ b/nixpkgs/nixos/modules/programs/wayland/sway.nix
@@ -119,10 +119,10 @@ in {
     extraPackages = mkOption {
       type = with types; listOf package;
       default = with pkgs; [
-        swaylock swayidle foot dmenu
+        swaylock swayidle foot dmenu wmenu
       ];
       defaultText = literalExpression ''
-        with pkgs; [ swaylock swayidle foot dmenu ];
+        with pkgs; [ swaylock swayidle foot dmenu wmenu ];
       '';
       example = literalExpression ''
         with pkgs; [
diff --git a/nixpkgs/nixos/modules/security/pam.nix b/nixpkgs/nixos/modules/security/pam.nix
index ed03254cb5ee..b87e22b23980 100644
--- a/nixpkgs/nixos/modules/security/pam.nix
+++ b/nixpkgs/nixos/modules/security/pam.nix
@@ -96,6 +96,10 @@ let
 
   pamOpts = { config, name, ... }: let cfg = config; in let config = parentConfig; in {
 
+    imports = [
+      (lib.mkRenamedOptionModule [ "enableKwallet" ] [ "kwallet" "enable" ])
+    ];
+
     options = {
 
       name = mkOption {
@@ -462,16 +466,23 @@ let
         '';
       };
 
-      enableKwallet = mkOption {
-        default = false;
-        type = types.bool;
-        description = lib.mdDoc ''
-          If enabled, pam_wallet will attempt to automatically unlock the
-          user's default KDE wallet upon login. If the user has no wallet named
-          "kdewallet", or the login password does not match their wallet
-          password, KDE will prompt separately after login.
-        '';
+      kwallet = {
+        enable = mkOption {
+          default = false;
+          type = types.bool;
+          description = lib.mdDoc ''
+            If enabled, pam_wallet will attempt to automatically unlock the
+            user's default KDE wallet upon login. If the user has no wallet named
+            "kdewallet", or the login password does not match their wallet
+            password, KDE will prompt separately after login.
+          '';
+        };
+
+        package = mkPackageOption pkgs.plasma5Packages "kwallet-pam" {
+          pkgsText = "pkgs.plasma5Packages";
+        };
       };
+
       sssdStrictAccess = mkOption {
         default = false;
         type = types.bool;
@@ -686,7 +697,7 @@ let
             (config.security.pam.enableEcryptfs
               || config.security.pam.enableFscrypt
               || cfg.pamMount
-              || cfg.enableKwallet
+              || cfg.kwallet.enable
               || cfg.enableGnomeKeyring
               || config.services.intune.enable
               || cfg.googleAuthenticator.enable
@@ -711,9 +722,7 @@ let
               { name = "mount"; enable = cfg.pamMount; control = "optional"; modulePath = "${pkgs.pam_mount}/lib/security/pam_mount.so"; settings = {
                 disable_interactive = true;
               }; }
-              { name = "kwallet5"; enable = cfg.enableKwallet; control = "optional"; modulePath = "${pkgs.plasma5Packages.kwallet-pam}/lib/security/pam_kwallet5.so"; settings = {
-                kwalletd = "${pkgs.plasma5Packages.kwallet.bin}/bin/kwalletd5";
-              }; }
+              { name = "kwallet"; enable = cfg.kwallet.enable; control = "optional"; modulePath = "${cfg.kwallet.package}/lib/security/pam_kwallet5.so"; }
               { name = "gnome_keyring"; enable = cfg.enableGnomeKeyring; control = "optional"; modulePath = "${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so"; }
               { name = "intune"; enable = config.services.intune.enable; control = "optional"; modulePath = "${pkgs.intune-portal}/lib/security/pam_intune.so"; }
               { name = "gnupg"; enable = cfg.gnupg.enable; control = "optional"; modulePath = "${pkgs.pam_gnupg}/lib/security/pam_gnupg.so"; settings = {
@@ -848,9 +857,7 @@ let
             order = "user,group,default";
             debug = true;
           }; }
-          { name = "kwallet5"; enable = cfg.enableKwallet; control = "optional"; modulePath = "${pkgs.plasma5Packages.kwallet-pam}/lib/security/pam_kwallet5.so"; settings = {
-            kwalletd = "${pkgs.plasma5Packages.kwallet.bin}/bin/kwalletd5";
-          }; }
+          { name = "kwallet"; enable = cfg.kwallet.enable; control = "optional"; modulePath = "${cfg.kwallet.package}/lib/security/pam_kwallet5.so"; }
           { name = "gnome_keyring"; enable = cfg.enableGnomeKeyring; control = "optional"; modulePath = "${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so"; settings = {
             auto_start = true;
           }; }
diff --git a/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix b/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
index aa24c0842bab..8f3ad78d50ce 100644
--- a/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
+++ b/nixpkgs/nixos/modules/services/desktops/pipewire/pipewire.nix
@@ -293,6 +293,18 @@ in {
         assertion = (cfg.alsa.enable || cfg.pulse.enable) -> cfg.audio.enable;
         message = "Using PipeWire's ALSA/PulseAudio compatibility layers requires running PipeWire as the sound server. Set `services.pipewire.audio.enable` to true.";
       }
+      {
+        assertion = builtins.length
+          (builtins.attrNames
+            (
+              lib.filterAttrs
+                (name: value:
+                  lib.hasPrefix "pipewire/" name || name == "pipewire"
+                )
+                config.environment.etc
+            )) == 1;
+        message = "Using `environment.etc.\"pipewire<...>\"` directly is no longer supported in 24.05. Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` instead.";
+      }
     ];
 
     environment.systemPackages = [ cfg.package ]
diff --git a/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix b/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
index dc4d726d7632..99aea8facb16 100644
--- a/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
+++ b/nixpkgs/nixos/modules/services/desktops/pipewire/wireplumber.nix
@@ -56,13 +56,13 @@ in
         -- PipeWire is not used for audio, so prevent it from grabbing audio devices
         alsa_monitor.enable = function() end
       '';
-      systemwideConfigPkg = pkgs.writeTextDir "wireplumber/main.lua.d/80-systemwide.lua" ''
+      systemwideConfigPkg = pkgs.writeTextDir "share/wireplumber/main.lua.d/80-systemwide.lua" ''
         -- When running system-wide, these settings need to be disabled (they
         -- use functions that aren't available on the system dbus).
         alsa_monitor.properties["alsa.reserve"] = false
         default_access.properties["enable-flatpak-portal"] = false
       '';
-      systemwideBluetoothConfigPkg = pkgs.writeTextDir "wireplumber/bluetooth.lua.d/80-systemwide.lua" ''
+      systemwideBluetoothConfigPkg = pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/80-systemwide.lua" ''
         -- When running system-wide, logind-integration needs to be disabled.
         bluez_monitor.properties["with-logind"] = false
       '';
@@ -98,6 +98,18 @@ in
           assertion = !config.hardware.bluetooth.hsphfpd.enable;
           message = "Using WirePlumber conflicts with hsphfpd, as it provides the same functionality. `hardware.bluetooth.hsphfpd.enable` needs be set to false";
         }
+        {
+          assertion = builtins.length
+            (builtins.attrNames
+              (
+                lib.filterAttrs
+                  (name: value:
+                    lib.hasPrefix "wireplumber/" name || name == "wireplumber"
+                  )
+                  config.environment.etc
+              )) == 1;
+          message = "Using `environment.etc.\"wireplumber<...>\"` directly is no longer supported in 24.05. Use `services.wireplumber.configPackages` instead.";
+        }
       ];
 
       environment.systemPackages = [ cfg.package ];
diff --git a/nixpkgs/nixos/modules/services/games/armagetronad.nix b/nixpkgs/nixos/modules/services/games/armagetronad.nix
new file mode 100644
index 000000000000..f79818e0e53b
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/games/armagetronad.nix
@@ -0,0 +1,268 @@
+{ config, lib, pkgs, ... }:
+let
+  inherit (lib) mkEnableOption mkIf mkOption mkMerge literalExpression;
+  inherit (lib) mapAttrsToList filterAttrs unique recursiveUpdate types;
+
+  mkValueStringArmagetron = with lib; v:
+    if isInt v then toString v
+    else if isFloat v then toString v
+    else if isString v then v
+    else if true == v then "1"
+    else if false == v then "0"
+    else if null == v then ""
+    else throw "unsupported type: ${builtins.typeOf v}: ${(lib.generators.toPretty {} v)}";
+
+  settingsFormat = pkgs.formats.keyValue {
+    mkKeyValue = lib.generators.mkKeyValueDefault
+      {
+        mkValueString = mkValueStringArmagetron;
+      } " ";
+    listsAsDuplicateKeys = true;
+  };
+
+  cfg = config.services.armagetronad;
+  enabledServers = lib.filterAttrs (n: v: v.enable) cfg.servers;
+  nameToId = serverName: "armagetronad-${serverName}";
+  getStateDirectory = serverName: "armagetronad/${serverName}";
+  getServerRoot = serverName: "/var/lib/${getStateDirectory serverName}";
+in
+{
+  options = {
+    services.armagetronad = {
+      servers = mkOption {
+        description = lib.mdDoc "Armagetron server definitions.";
+        default = { };
+        type = types.attrsOf (types.submodule {
+          options = {
+            enable = mkEnableOption (lib.mdDoc "armagetronad");
+
+            package = lib.mkPackageOptionMD pkgs "armagetronad-dedicated" {
+              example = ''
+                pkgs.armagetronad."0.2.9-sty+ct+ap".dedicated
+              '';
+              extraDescription = ''
+                Ensure that you use a derivation which contains the path `bin/armagetronad-dedicated`.
+              '';
+            };
+
+            host = mkOption {
+              type = types.str;
+              default = "0.0.0.0";
+              description = lib.mdDoc "Host to listen on. Used for SERVER_IP.";
+            };
+
+            port = mkOption {
+              type = types.port;
+              default = 4534;
+              description = lib.mdDoc "Port to listen on. Used for SERVER_PORT.";
+            };
+
+            dns = mkOption {
+              type = types.nullOr types.str;
+              default = null;
+              description = lib.mdDoc "DNS address to use for this server. Optional.";
+            };
+
+            openFirewall = mkOption {
+              type = types.bool;
+              default = true;
+              description = lib.mdDoc "Set to true to open the configured UDP port for Armagetron Advanced.";
+            };
+
+            name = mkOption {
+              type = types.str;
+              description = "The name of this server.";
+            };
+
+            settings = mkOption {
+              type = settingsFormat.type;
+              default = { };
+              description = lib.mdDoc ''
+                Armagetron Advanced server rules configuration. Refer to:
+                <https://wiki.armagetronad.org/index.php?title=Console_Commands>
+                or `armagetronad-dedicated --doc` for a list.
+
+                This attrset is used to populate `settings_custom.cfg`; see:
+                <https://wiki.armagetronad.org/index.php/Configuration_Files>
+              '';
+              example = literalExpression ''
+                {
+                  CYCLE_RUBBER = 40;
+                }
+              '';
+            };
+
+            roundSettings = mkOption {
+              type = settingsFormat.type;
+              default = { };
+              description = lib.mdDoc ''
+                Armagetron Advanced server per-round configuration. Refer to:
+                <https://wiki.armagetronad.org/index.php?title=Console_Commands>
+                or `armagetronad-dedicated --doc` for a list.
+
+                This attrset is used to populate `everytime.cfg`; see:
+                <https://wiki.armagetronad.org/index.php/Configuration_Files>
+              '';
+              example = literalExpression ''
+                {
+                  SAY = [
+                    "Hosted on NixOS"
+                    "https://nixos.org"
+                    "iD Tech High Rubber rul3z!! Happy New Year 2008!!1"
+                  ];
+                }
+              '';
+            };
+          };
+        });
+      };
+    };
+  };
+
+  config = mkIf (enabledServers != { }) {
+    systemd.tmpfiles.settings = mkMerge (mapAttrsToList
+      (serverName: serverCfg:
+        let
+          serverId = nameToId serverName;
+          serverRoot = getServerRoot serverName;
+          serverInfo = (
+            {
+              SERVER_IP = serverCfg.host;
+              SERVER_PORT = serverCfg.port;
+              SERVER_NAME = serverCfg.name;
+            } // (lib.optionalAttrs (serverCfg.dns != null) { SERVER_DNS = serverCfg.dns; })
+          );
+          customSettings = serverCfg.settings;
+          everytimeSettings = serverCfg.roundSettings;
+
+          serverInfoCfg = settingsFormat.generate "server_info.${serverName}.cfg" serverInfo;
+          customSettingsCfg = settingsFormat.generate "settings_custom.${serverName}.cfg" customSettings;
+          everytimeSettingsCfg = settingsFormat.generate "everytime.${serverName}.cfg" everytimeSettings;
+        in
+        {
+          "10-armagetronad-${serverId}" = {
+            "${serverRoot}/data" = {
+              d = {
+                group = serverId;
+                user = serverId;
+                mode = "0750";
+              };
+            };
+            "${serverRoot}/settings" = {
+              d = {
+                group = serverId;
+                user = serverId;
+                mode = "0750";
+              };
+            };
+            "${serverRoot}/var" = {
+              d = {
+                group = serverId;
+                user = serverId;
+                mode = "0750";
+              };
+            };
+            "${serverRoot}/resource" = {
+              d = {
+                group = serverId;
+                user = serverId;
+                mode = "0750";
+              };
+            };
+            "${serverRoot}/input" = {
+              "f+" = {
+                group = serverId;
+                user = serverId;
+                mode = "0640";
+              };
+            };
+            "${serverRoot}/settings/server_info.cfg" = {
+              "L+" = {
+                argument = "${serverInfoCfg}";
+              };
+            };
+            "${serverRoot}/settings/settings_custom.cfg" = {
+              "L+" = {
+                argument = "${customSettingsCfg}";
+              };
+            };
+            "${serverRoot}/settings/everytime.cfg" = {
+              "L+" = {
+                argument = "${everytimeSettingsCfg}";
+              };
+            };
+          };
+        }
+      )
+      enabledServers
+    );
+
+    systemd.services = mkMerge (mapAttrsToList
+      (serverName: serverCfg:
+        let
+          serverId = nameToId serverName;
+        in
+        {
+          "armagetronad-${serverName}" = {
+            description = "Armagetron Advanced Dedicated Server for ${serverName}";
+            wants = [ "basic.target" ];
+            after = [ "basic.target" "network.target" "multi-user.target" ];
+            wantedBy = [ "multi-user.target" ];
+            serviceConfig =
+              let
+                serverRoot = getServerRoot serverName;
+              in
+              {
+                Type = "simple";
+                StateDirectory = getStateDirectory serverName;
+                ExecStart = "${lib.getExe serverCfg.package} --daemon --input ${serverRoot}/input --userdatadir ${serverRoot}/data --userconfigdir ${serverRoot}/settings --vardir ${serverRoot}/var --autoresourcedir ${serverRoot}/resource";
+                Restart = "on-failure";
+                CapabilityBoundingSet = "";
+                LockPersonality = true;
+                NoNewPrivileges = true;
+                PrivateDevices = true;
+                PrivateTmp = true;
+                PrivateUsers = true;
+                ProtectClock = true;
+                ProtectControlGroups = true;
+                ProtectHome = true;
+                ProtectHostname = true;
+                ProtectKernelLogs = true;
+                ProtectKernelModules = true;
+                ProtectKernelTunables = true;
+                ProtectProc = "invisible";
+                ProtectSystem = "strict";
+                RestrictNamespaces = true;
+                RestrictSUIDSGID = true;
+                User = serverId;
+                Group = serverId;
+              };
+          };
+        })
+      enabledServers
+    );
+
+    networking.firewall.allowedUDPPorts =
+      unique (mapAttrsToList (serverName: serverCfg: serverCfg.port) (filterAttrs (serverName: serverCfg: serverCfg.openFirewall) enabledServers));
+
+    users.users = mkMerge (mapAttrsToList
+      (serverName: serverCfg:
+        {
+          ${nameToId serverName} = {
+            group = nameToId serverName;
+            description = "Armagetron Advanced dedicated user for server ${serverName}";
+            isSystemUser = true;
+          };
+        })
+      enabledServers
+    );
+
+    users.groups = mkMerge (mapAttrsToList
+      (serverName: serverCfg:
+        {
+          ${nameToId serverName} = { };
+        })
+      enabledServers
+    );
+  };
+}
diff --git a/nixpkgs/nixos/modules/services/hardware/monado.nix b/nixpkgs/nixos/modules/services/hardware/monado.nix
new file mode 100644
index 000000000000..9f9c6c39a0b4
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/hardware/monado.nix
@@ -0,0 +1,102 @@
+{ config
+, lib
+, pkgs
+, ...
+}:
+let
+  inherit (lib) mkDefault mkEnableOption mkIf mkOption mkPackageOption types;
+
+  cfg = config.services.monado;
+
+in
+{
+  options.services.monado = {
+    enable = mkEnableOption "Monado user service";
+
+    package = mkPackageOption pkgs "monado" { };
+
+    defaultRuntime = mkOption {
+      type = types.bool;
+      description = ''
+        Whether to enable Monado as the default OpenXR runtime on the system.
+
+        Note that applications can bypass this option by setting an active
+        runtime in a writable XDG_CONFIG_DIRS location like `~/.config`.
+      '';
+      default = false;
+      example = true;
+    };
+
+    highPriority = mkEnableOption "high priority capability for monado-service"
+      // mkOption { default = true; };
+  };
+
+  config = mkIf cfg.enable {
+    security.wrappers."monado-service" = mkIf cfg.highPriority {
+      setuid = false;
+      owner = "root";
+      group = "root";
+      # cap_sys_nice needed for asynchronous reprojection
+      capabilities = "cap_sys_nice+eip";
+      source = lib.getExe' cfg.package "monado-service";
+    };
+
+    services.udev.packages = with pkgs; [ xr-hardware ];
+
+    systemd.user = {
+      services.monado = {
+        description = "Monado XR runtime service module";
+        requires = [ "monado.socket" ];
+        conflicts = [ "monado-dev.service" ];
+
+        unitConfig.ConditionUser = "!root";
+
+        environment = {
+          # Default options
+          # https://gitlab.freedesktop.org/monado/monado/-/blob/4548e1738591d0904f8db4df8ede652ece889a76/src/xrt/targets/service/monado.in.service#L12
+          XRT_COMPOSITOR_LOG = mkDefault "debug";
+          XRT_PRINT_OPTIONS = mkDefault "on";
+          IPC_EXIT_ON_DISCONNECT = mkDefault "off";
+        };
+
+        serviceConfig = {
+          ExecStart =
+            if cfg.highPriority
+            then "${config.security.wrapperDir}/monado-service"
+            else lib.getExe' cfg.package "monado-service";
+          Restart = "no";
+        };
+
+        restartTriggers = [ cfg.package ];
+      };
+
+      sockets.monado = {
+        description = "Monado XR service module connection socket";
+        conflicts = [ "monado-dev.service" ];
+
+        unitConfig.ConditionUser = "!root";
+
+        socketConfig = {
+          ListenStream = "%t/monado_comp_ipc";
+          RemoveOnStop = true;
+
+          # If Monado crashes while starting up, we want to close incoming OpenXR connections
+          FlushPending = true;
+        };
+
+        restartTriggers = [ cfg.package ];
+
+        wantedBy = [ "sockets.target" ];
+      };
+    };
+
+    environment.systemPackages = [ cfg.package ];
+    environment.pathsToLink = [ "/share/openxr" ];
+
+    environment.etc."xdg/openxr/1/active_runtime.json" = mkIf cfg.defaultRuntime {
+      source = "${cfg.package}/share/openxr/1/openxr_monado.json";
+    };
+  };
+
+  meta.maintainers = with lib.maintainers; [ Scrumplex ];
+}
diff --git a/nixpkgs/nixos/modules/services/misc/ollama.nix b/nixpkgs/nixos/modules/services/misc/ollama.nix
index d9359d2b5cd4..3ac3beb4de07 100644
--- a/nixpkgs/nixos/modules/services/misc/ollama.nix
+++ b/nixpkgs/nixos/modules/services/misc/ollama.nix
@@ -1,27 +1,44 @@
-{ config, lib, pkgs, ... }: let
+{ config, lib, pkgs, ... }:
+let
+  inherit (lib) types;
 
   cfg = config.services.ollama;
-
-in {
-
+  ollamaPackage = cfg.package.override {
+    inherit (cfg) acceleration;
+    linuxPackages = config.boot.kernelPackages // {
+      nvidia_x11 = config.hardware.nvidia.package;
+    };
+  };
+in
+{
   options = {
     services.ollama = {
       enable = lib.mkEnableOption (
         lib.mdDoc "Server for local large language models"
       );
       listenAddress = lib.mkOption {
-        type = lib.types.str;
+        type = types.str;
         default = "127.0.0.1:11434";
         description = lib.mdDoc ''
           Specifies the bind address on which the ollama server HTTP interface listens.
         '';
       };
+      acceleration = lib.mkOption {
+        type = types.nullOr (types.enum [ "rocm" "cuda" ]);
+        default = null;
+        example = "rocm";
+        description = lib.mdDoc ''
+          Specifies the interface to use for hardware acceleration.
+
+          - `rocm`: supported by modern AMD GPUs
+          - `cuda`: supported by modern NVIDIA GPUs
+        '';
+      };
       package = lib.mkPackageOption pkgs "ollama" { };
     };
   };
 
   config = lib.mkIf cfg.enable {
-
     systemd = {
       services.ollama = {
         wantedBy = [ "multi-user.target" ];
@@ -33,7 +50,7 @@ in {
           OLLAMA_HOST = cfg.listenAddress;
         };
         serviceConfig = {
-          ExecStart = "${lib.getExe cfg.package} serve";
+          ExecStart = "${lib.getExe ollamaPackage} serve";
           WorkingDirectory = "/var/lib/ollama";
           StateDirectory = [ "ollama" ];
           DynamicUser = true;
@@ -41,10 +58,8 @@ in {
       };
     };
 
-    environment.systemPackages = [ cfg.package ];
-
+    environment.systemPackages = [ ollamaPackage ];
   };
 
-  meta.maintainers = with lib.maintainers; [ onny ];
-
+  meta.maintainers = with lib.maintainers; [ abysssol onny ];
 }
diff --git a/nixpkgs/nixos/modules/services/misc/paperless.nix b/nixpkgs/nixos/modules/services/misc/paperless.nix
index 1256d8315c8b..ab042e4b6ee2 100644
--- a/nixpkgs/nixos/modules/services/misc/paperless.nix
+++ b/nixpkgs/nixos/modules/services/misc/paperless.nix
@@ -307,6 +307,9 @@ in
         Restart = "on-failure";
       };
       environment = env;
+      # Allow the consumer to access the private /tmp directory of the server.
+      # This is required to support consuming files via a local folder.
+      unitConfig.JoinsNamespaceOf = "paperless-task-queue.service";
     };
 
     systemd.services.paperless-web = {
diff --git a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nut.nix b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nut.nix
index 1c86b48b4509..e58a394456a3 100644
--- a/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nut.nix
+++ b/nixpkgs/nixos/modules/services/monitoring/prometheus/exporters/nut.nix
@@ -36,6 +36,17 @@ in
         provisioned outside of Nix store.
       '';
     };
+    nutVariables = mkOption {
+      type = types.listOf types.str;
+      default = [ ];
+      description = ''
+        List of NUT variable names to monitor.
+
+        If no variables are set, all numeric variables will be exported automatically.
+        See the [upstream docs](https://github.com/DRuggeri/nut_exporter?tab=readme-ov-file#variables-and-information)
+        for more information.
+      '';
+    };
   };
   serviceOpts = {
     script = ''
@@ -44,7 +55,9 @@ in
       ${pkgs.prometheus-nut-exporter}/bin/nut_exporter \
         --nut.server=${cfg.nutServer} \
         --web.listen-address="${cfg.listenAddress}:${toString cfg.port}" \
-        ${optionalString (cfg.nutUser != "") "--nut.username=${cfg.nutUser}"}
+        ${optionalString (cfg.nutUser != "") "--nut.username=${cfg.nutUser}"} \
+        ${optionalString (cfg.nutVariables != []) "--nut.vars_enable=${concatStringsSep "," cfg.nutVariables}"} \
+        ${concatStringsSep " " cfg.extraFlags}
     '';
   };
 }
diff --git a/nixpkgs/nixos/modules/services/networking/dhcpcd.nix b/nixpkgs/nixos/modules/services/networking/dhcpcd.nix
index 266a7ea1435e..8d5ac02ba88b 100644
--- a/nixpkgs/nixos/modules/services/networking/dhcpcd.nix
+++ b/nixpkgs/nixos/modules/services/networking/dhcpcd.nix
@@ -13,6 +13,8 @@ let
   enableDHCP = config.networking.dhcpcd.enable &&
         (config.networking.useDHCP || any (i: i.useDHCP == true) interfaces);
 
+  enableNTPService = (config.services.ntp.enable || config.services.ntpd-rs.enable || config.services.openntpd.enable || config.services.chrony.enable);
+
   # Don't start dhcpcd on explicitly configured interfaces or on
   # interfaces that are part of a bridge, bond or sit device.
   ignoredInterfaces =
@@ -89,20 +91,22 @@ let
       ${cfg.extraConfig}
     '';
 
-  exitHook = pkgs.writeText "dhcpcd.exit-hook"
-    ''
+  exitHook = pkgs.writeText "dhcpcd.exit-hook" ''
+    ${optionalString enableNTPService ''
       if [ "$reason" = BOUND -o "$reason" = REBOOT ]; then
-          # Restart ntpd.  We need to restart it to make sure that it
-          # will actually do something: if ntpd cannot resolve the
-          # server hostnames in its config file, then it will never do
-          # anything ever again ("couldn't resolve ..., giving up on
-          # it"), so we silently lose time synchronisation. This also
-          # applies to openntpd.
-          /run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd.service openntpd.service chronyd.service ntpd-rs.service || true
+        # Restart ntpd. We need to restart it to make sure that it will actually do something:
+        # if ntpd cannot resolve the server hostnames in its config file, then it will never do
+        # anything ever again ("couldn't resolve ..., giving up on it"), so we silently lose
+        # time synchronisation. This also applies to openntpd.
+        ${optionalString config.services.ntp.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd.service || true"}
+        ${optionalString config.services.ntpd-rs.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart ntpd-rs.service || true"}
+        ${optionalString config.services.openntpd.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart openntpd.service || true"}
+        ${optionalString config.services.chrony.enable "/run/current-system/systemd/bin/systemctl try-reload-or-restart chronyd.service || true"}
       fi
+    ''}
 
-      ${cfg.runHook}
-    '';
+    ${cfg.runHook}
+  '';
 
 in
 
@@ -232,7 +236,7 @@ in
         wants = [ "network.target" ];
         before = [ "network-online.target" ];
 
-        restartTriggers = [ exitHook ];
+        restartTriggers = optional (enableNTPService || cfg.runHook != "") [ exitHook ];
 
         # Stopping dhcpcd during a reconfiguration is undesirable
         # because it brings down the network interfaces configured by
@@ -261,7 +265,9 @@ in
 
     environment.systemPackages = [ dhcpcd ];
 
-    environment.etc."dhcpcd.exit-hook".source = exitHook;
+    environment.etc."dhcpcd.exit-hook" = mkIf (enableNTPService || cfg.runHook != "") {
+      source = exitHook;
+    };
 
     powerManagement.resumeCommands = mkIf config.systemd.services.dhcpcd.enable
       ''
diff --git a/nixpkgs/nixos/modules/services/networking/mosquitto.nix b/nixpkgs/nixos/modules/services/networking/mosquitto.nix
index ad9eefb42252..4a08f5ed2370 100644
--- a/nixpkgs/nixos/modules/services/networking/mosquitto.nix
+++ b/nixpkgs/nixos/modules/services/networking/mosquitto.nix
@@ -177,17 +177,6 @@ let
            ''
            ++ hashedLines));
 
-  makeACLFile = idx: users: supplement:
-    pkgs.writeText "mosquitto-acl-${toString idx}.conf"
-      (concatStringsSep
-        "\n"
-        (flatten [
-          supplement
-          (mapAttrsToList
-            (n: u: [ "user ${n}" ] ++ map (t: "topic ${t}") u.acl)
-            users)
-        ]));
-
   authPluginOptions = with types; submodule {
     options = {
       plugin = mkOption {
@@ -342,7 +331,7 @@ let
   formatListener = idx: listener:
     [
       "listener ${toString listener.port} ${toString listener.address}"
-      "acl_file ${makeACLFile idx listener.users listener.acl}"
+      "acl_file /etc/mosquitto/acl-${toString idx}.conf"
     ]
     ++ optional (! listener.omitPasswordAuth) "password_file ${cfg.dataDir}/passwd-${toString idx}"
     ++ formatFreeform {} listener.settings
@@ -698,6 +687,27 @@ in
             cfg.listeners);
     };
 
+    environment.etc = listToAttrs (
+      imap0
+        (idx: listener: {
+          name = "mosquitto/acl-${toString idx}.conf";
+          value = {
+            user = config.users.users.mosquitto.name;
+            group = config.users.users.mosquitto.group;
+            mode = "0400";
+            text = (concatStringsSep
+              "\n"
+              (flatten [
+                listener.acl
+                (mapAttrsToList
+                  (n: u: [ "user ${n}" ] ++ map (t: "topic ${t}") u.acl)
+                  listener.users)
+              ]));
+          };
+        })
+        cfg.listeners
+    );
+
     users.users.mosquitto = {
       description = "Mosquitto MQTT Broker Daemon owner";
       group = "mosquitto";
diff --git a/nixpkgs/nixos/modules/services/networking/searx.nix b/nixpkgs/nixos/modules/services/networking/searx.nix
index 938d585e3179..5bbf875f0d57 100644
--- a/nixpkgs/nixos/modules/services/networking/searx.nix
+++ b/nixpkgs/nixos/modules/services/networking/searx.nix
@@ -213,7 +213,7 @@ in
       serviceConfig = {
         User  = "searx";
         Group = "searx";
-        ExecStart = "${cfg.package}/bin/searx-run";
+        ExecStart = lib.getExe cfg.package;
       } // optionalAttrs (cfg.environmentFile != null)
         { EnvironmentFile = builtins.toPath cfg.environmentFile; };
       environment = {
diff --git a/nixpkgs/nixos/modules/services/networking/unbound.nix b/nixpkgs/nixos/modules/services/networking/unbound.nix
index 616b32f11797..8438e472e11e 100644
--- a/nixpkgs/nixos/modules/services/networking/unbound.nix
+++ b/nixpkgs/nixos/modules/services/networking/unbound.nix
@@ -24,12 +24,24 @@ let
   confNoServer = concatStringsSep "\n" ((mapAttrsToList (toConf "") (builtins.removeAttrs cfg.settings [ "server" ])) ++ [""]);
   confServer = concatStringsSep "\n" (mapAttrsToList (toConf "  ") (builtins.removeAttrs cfg.settings.server [ "define-tag" ]));
 
-  confFile = pkgs.writeText "unbound.conf" ''
+  confFileUnchecked = pkgs.writeText "unbound.conf" ''
     server:
     ${optionalString (cfg.settings.server.define-tag != "") (toOption "  " "define-tag" cfg.settings.server.define-tag)}
     ${confServer}
     ${confNoServer}
   '';
+  confFile = if cfg.checkconf then pkgs.runCommandLocal "unbound-checkconf" { } ''
+    cp ${confFileUnchecked} unbound.conf
+
+    # fake stateDir which is not accesible in the sandbox
+    mkdir -p $PWD/state
+    sed -i unbound.conf \
+      -e '/auto-trust-anchor-file/d' \
+      -e "s|${cfg.stateDir}|$PWD/state|"
+    ${cfg.package}/bin/unbound-checkconf unbound.conf
+
+    cp ${confFileUnchecked} $out
+  '' else confFileUnchecked;
 
   rootTrustAnchorFile = "${cfg.stateDir}/root.key";
 
@@ -62,6 +74,17 @@ in {
         description = lib.mdDoc "Directory holding all state for unbound to run.";
       };
 
+      checkconf = mkOption {
+        type = types.bool;
+        default = !cfg.settings ? include;
+        defaultText = "!config.services.unbound.settings ? include";
+        description = lib.mdDoc ''
+          Wether to check the resulting config file with unbound checkconf for syntax errors.
+
+          If settings.include is used, then this options is disabled, as the import can likely not be resolved at build time.
+        '';
+      };
+
       resolveLocalQueries = mkOption {
         type = types.bool;
         default = true;
diff --git a/nixpkgs/nixos/modules/services/security/kanidm.nix b/nixpkgs/nixos/modules/services/security/kanidm.nix
index c659d93b4087..9d074c3027d0 100644
--- a/nixpkgs/nixos/modules/services/security/kanidm.nix
+++ b/nixpkgs/nixos/modules/services/security/kanidm.nix
@@ -132,6 +132,28 @@ in
             default = "WriteReplica";
             type = lib.types.enum [ "WriteReplica" "WriteReplicaNoUI" "ReadOnlyReplica" ];
           };
+          online_backup = {
+            path = lib.mkOption {
+              description = lib.mdDoc "Path to the output directory for backups.";
+              type = lib.types.path;
+              default = "/var/lib/kanidm/backups";
+            };
+            schedule = lib.mkOption {
+              description = lib.mdDoc "The schedule for backups in cron format.";
+              type = lib.types.str;
+              default = "00 22 * * *";
+            };
+            versions = lib.mkOption {
+              description = lib.mdDoc ''
+                Number of backups to keep.
+
+                The default is set to `0`, in order to disable backups by default.
+              '';
+              type = lib.types.ints.unsigned;
+              default = 0;
+              example = 7;
+            };
+          };
         };
       };
       default = { };
@@ -233,6 +255,14 @@ in
 
     environment.systemPackages = lib.mkIf cfg.enableClient [ cfg.package ];
 
+    systemd.tmpfiles.settings."10-kanidm" = {
+      ${cfg.serverSettings.online_backup.path}.d = {
+        mode = "0700";
+        user = "kanidm";
+        group = "kanidm";
+      };
+    };
+
     systemd.services.kanidm = lib.mkIf cfg.enableServer {
       description = "kanidm identity management daemon";
       wantedBy = [ "multi-user.target" ];
@@ -253,6 +283,8 @@ in
           BindPaths = [
             # To create the socket
             "/run/kanidmd:/run/kanidmd"
+            # To store backups
+            cfg.serverSettings.online_backup.path
           ];
 
           AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
diff --git a/nixpkgs/nixos/modules/services/web-apps/mealie.nix b/nixpkgs/nixos/modules/services/web-apps/mealie.nix
new file mode 100644
index 000000000000..8bb7542c6b56
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/web-apps/mealie.nix
@@ -0,0 +1,79 @@
+{ config, lib, pkgs, ...}:
+let
+  cfg = config.services.mealie;
+  pkg = cfg.package;
+in
+{
+  options.services.mealie = {
+    enable = lib.mkEnableOption "Mealie, a recipe manager and meal planner";
+
+    package = lib.mkPackageOption pkgs "mealie" { };
+
+    listenAddress = lib.mkOption {
+      type = lib.types.str;
+      default = "0.0.0.0";
+      description = "Address on which the service should listen.";
+    };
+
+    port = lib.mkOption {
+      type = lib.types.port;
+      default = 9000;
+      description = "Port on which to serve the Mealie service.";
+    };
+
+    settings = lib.mkOption {
+      type = with lib.types; attrsOf anything;
+      default = {};
+      description = lib.mdDoc ''
+        Configuration of the Mealie service.
+
+        See [the mealie documentation](https://nightly.mealie.io/documentation/getting-started/installation/backend-config/) for available options and default values.
+
+        In addition to the official documentation, you can set {env}`MEALIE_LOG_FILE`.
+      '';
+      example = {
+        ALLOW_SIGNUP = "false";
+      };
+    };
+
+    credentialsFile = lib.mkOption {
+      type = with lib.types; nullOr path;
+      default = null;
+      example = "/run/secrets/mealie-credentials.env";
+      description = ''
+        File containing credentials used in mealie such as {env}`POSTGRES_PASSWORD`
+        or sensitive LDAP options.
+
+        Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`.
+      '';
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    systemd.services.mealie = {
+      description = "Mealie, a self hosted recipe manager and meal planner";
+
+      after = [ "network-online.target" ];
+      wants = [ "network-online.target" ];
+      wantedBy = [ "multi-user.target" ];
+
+      environment = {
+        PRODUCTION = "true";
+        ALEMBIC_CONFIG_FILE="${pkg}/config/alembic.ini";
+        API_PORT = toString cfg.port;
+        DATA_DIR = "/var/lib/mealie";
+        CRF_MODEL_PATH = "/var/lib/mealie/model.crfmodel";
+      } // (builtins.mapAttrs (_: val: toString val) cfg.settings);
+
+      serviceConfig = {
+        DynamicUser = true;
+        User = "mealie";
+        ExecStartPre = "${pkg}/libexec/init_db";
+        ExecStart = "${lib.getExe pkg} -b ${cfg.listenAddress}:${builtins.toString cfg.port}";
+        EnvironmentFile = lib.mkIf (cfg.credentialsFile != null) cfg.credentialsFile;
+        StateDirectory = "mealie";
+        StandardOutput="journal";
+      };
+    };
+  };
+}
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
index 66cb4ee29c0a..ecb8d1e91bde 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/default.nix
@@ -18,7 +18,7 @@ in
   # determines the default: later modules (if enabled) are preferred.
   # E.g., if Plasma 5 is enabled, it supersedes xterm.
   imports = [
-    ./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./lumina.nix
+    ./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./plasma6.nix ./lumina.nix
     ./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
     ./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
     ./cinnamon.nix ./budgie.nix ./deepin.nix
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
index 0eb492ce4684..7645b3070369 100644
--- a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma5.nix
@@ -362,7 +362,7 @@ in
 
       security.pam.services.kde = { allowNullPassword = true; };
 
-      security.pam.services.login.enableKwallet = true;
+      security.pam.services.login.kwallet.enable = true;
 
       systemd.user.services = {
         plasma-early-setup = mkIf cfg.runUsingSystemd {
diff --git a/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix
new file mode 100644
index 000000000000..bc246b1af278
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/x11/desktop-managers/plasma6.nix
@@ -0,0 +1,276 @@
+{
+  config,
+  lib,
+  pkgs,
+  utils,
+  ...
+}: let
+  xcfg = config.services.xserver;
+  cfg = xcfg.desktopManager.plasma6;
+
+  inherit (pkgs) kdePackages;
+  inherit (lib) literalExpression mkDefault mkIf mkOption mkPackageOptionMD types;
+in {
+  options = {
+    services.xserver.desktopManager.plasma6 = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = lib.mdDoc "Enable the Plasma 6 (KDE 6) desktop environment.";
+      };
+
+      enableQt5Integration = mkOption {
+        type = types.bool;
+        default = true;
+        description = lib.mdDoc "Enable Qt 5 integration (theming, etc). Disable for a pure Qt 6 system.";
+      };
+
+      notoPackage = mkPackageOptionMD pkgs "Noto fonts - used for UI by default" {
+        default = ["noto-fonts"];
+        example = "noto-fonts-lgc-plus";
+      };
+    };
+
+    environment.plasma6.excludePackages = mkOption {
+      description = lib.mdDoc "List of default packages to exclude from the configuration";
+      type = types.listOf types.package;
+      default = [];
+      example = literalExpression "[ pkgs.kdePackages.elisa ]";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    assertions = [
+      {
+        assertion = cfg.enable -> !config.services.xserver.desktopManager.plasma5.enable;
+        message = "Cannot enable plasma5 and plasma6 at the same time!";
+      }
+    ];
+
+    qt.enable = true;
+    environment.systemPackages = with kdePackages; let
+      requiredPackages = [
+        # Hack? To make everything run on Wayland
+        qtwayland
+        # Needed to render SVG icons
+        qtsvg
+
+        # Frameworks with globally loadable bits
+        frameworkintegration # provides Qt plugin
+        kauth # provides helper service
+        kcoreaddons # provides extra mime type info
+        kded # provides helper service
+        kfilemetadata # provides Qt plugins
+        kguiaddons # provides geo URL handlers
+        kiconthemes # provides Qt plugins
+        kimageformats # provides Qt plugins
+        kio # provides helper service + a bunch of other stuff
+        kpackage # provides kpackagetool tool
+        kservice # provides kbuildsycoca6 tool
+        kwallet # provides helper service
+        kwallet-pam # provides helper service
+        kwalletmanager # provides KCMs and stuff
+        plasma-activities # provides plasma-activities-cli tool
+        solid # provides solid-hardware6 tool
+        phonon-vlc # provides Phonon plugin
+
+        # Core Plasma parts
+        kwin
+        pkgs.xwayland
+
+        kscreen
+        libkscreen
+
+        kscreenlocker
+
+        kactivitymanagerd
+        kde-cli-tools
+        kglobalacceld
+        kwrited # wall message proxy, not to be confused with kwrite
+
+        milou
+        polkit-kde-agent-1
+
+        plasma-desktop
+        plasma-workspace
+
+        # Crash handler
+        drkonqi
+
+        # Application integration
+        libplasma # provides Kirigami platform theme
+        plasma-integration # provides Qt platform theme
+        kde-gtk-config
+
+        # Artwork + themes
+        breeze
+        breeze-icons
+        breeze-gtk
+        ocean-sound-theme
+        plasma-workspace-wallpapers
+        pkgs.hicolor-icon-theme # fallback icons
+        qqc2-breeze-style
+        qqc2-desktop-style
+
+        # misc Plasma extras
+        kdeplasma-addons
+
+        pkgs.xdg-user-dirs # recommended upstream
+
+        # Plasma utilities
+        kmenuedit
+
+        kinfocenter
+        plasma-systemmonitor
+        ksystemstats
+        libksysguard
+
+        spectacle
+        systemsettings
+
+        # Gear
+        baloo
+        dolphin
+        dolphin-plugins
+        ffmpegthumbs
+        kdegraphics-thumbnailers
+        kde-inotify-survey
+        kio-admin
+        kio-extras
+        kio-fuse
+      ];
+      optionalPackages = [
+        plasma-browser-integration
+        konsole
+        (lib.getBin qttools) # Expose qdbus in PATH
+
+        ark
+        elisa
+        gwenview
+        okular
+        kate
+        khelpcenter
+        print-manager
+      ];
+    in
+      requiredPackages
+      ++ utils.removePackagesByName optionalPackages config.environment.plasma6.excludePackages
+      ++ lib.optionals config.services.xserver.desktopManager.plasma6.enableQt5Integration [
+        breeze.qt5
+        plasma-integration.qt5
+        pkgs.plasma5Packages.kwayland-integration
+        kio-extras-kf5
+      ]
+      # Optional hardware support features
+      ++ lib.optionals config.hardware.bluetooth.enable [bluedevil bluez-qt pkgs.openobex pkgs.obexftp]
+      ++ lib.optional config.networking.networkmanager.enable plasma-nm
+      ++ lib.optional config.hardware.pulseaudio.enable plasma-pa
+      ++ lib.optional config.services.pipewire.pulse.enable plasma-pa
+      ++ lib.optional config.powerManagement.enable powerdevil
+      ++ lib.optional config.services.colord.enable colord-kde
+      ++ lib.optional config.services.hardware.bolt.enable plasma-thunderbolt
+      ++ lib.optionals config.services.samba.enable [kdenetwork-filesharing pkgs.samba]
+      ++ lib.optional config.services.xserver.wacom.enable wacomtablet
+      ++ lib.optional config.services.flatpak.enable flatpak-kcm;
+
+    environment.pathsToLink = [
+      # FIXME: modules should link subdirs of `/share` rather than relying on this
+      "/share"
+      "/libexec" # for drkonqi
+    ];
+
+    environment.etc."X11/xkb".source = xcfg.xkb.dir;
+
+    # Add ~/.config/kdedefaults to XDG_CONFIG_DIRS for shells, since Plasma sets that.
+    # FIXME: maybe we should append to XDG_CONFIG_DIRS in /etc/set-environment instead?
+    environment.sessionVariables.XDG_CONFIG_DIRS = ["$HOME/.config/kdedefaults"];
+
+    # Needed for things that depend on other store.kde.org packages to install correctly,
+    # notably Plasma look-and-feel packages (a.k.a. Global Themes)
+    #
+    # FIXME: this is annoyingly impure and should really be fixed at source level somehow,
+    # but kpackage is a library so we can't just wrap the one thing invoking it and be done.
+    # This also means things won't work for people not on Plasma, but at least this way it
+    # works for SOME people.
+    environment.sessionVariables.KPACKAGE_DEP_RESOLVERS_PATH = "${kdePackages.frameworkintegration.out}/libexec/kf6/kpackagehandlers";
+
+    # Enable GTK applications to load SVG icons
+    services.xserver.gdk-pixbuf.modulePackages = [pkgs.librsvg];
+
+    fonts.packages = [cfg.notoPackage pkgs.hack-font];
+    fonts.fontconfig.defaultFonts = {
+      monospace = ["Hack" "Noto Sans Mono"];
+      sansSerif = ["Noto Sans"];
+      serif = ["Noto Serif"];
+    };
+
+    programs.ssh.askPassword = mkDefault "${kdePackages.ksshaskpass.out}/bin/ksshaskpass";
+
+    # Enable helpful DBus services.
+    services.accounts-daemon.enable = true;
+    # when changing an account picture the accounts-daemon reads a temporary file containing the image which systemsettings5 may place under /tmp
+    systemd.services.accounts-daemon.serviceConfig.PrivateTmp = false;
+
+    services.power-profiles-daemon.enable = mkDefault true;
+    services.system-config-printer.enable = mkIf config.services.printing.enable (mkDefault true);
+    services.udisks2.enable = true;
+    services.upower.enable = config.powerManagement.enable;
+    services.xserver.libinput.enable = mkDefault true;
+
+    # Extra UDEV rules used by Solid
+    services.udev.packages = [
+      # libmtp has "bin", "dev", "out" outputs. UDEV rules file is in "out".
+      pkgs.libmtp.out
+      pkgs.media-player-info
+    ];
+
+    # Set up Dr. Konqi as crash handler
+    systemd.packages = [kdePackages.drkonqi];
+    systemd.services."drkonqi-coredump-processor@".wantedBy = ["systemd-coredump@.service"];
+
+    xdg.portal.enable = true;
+    xdg.portal.extraPortals = [kdePackages.xdg-desktop-portal-kde];
+    xdg.portal.configPackages = mkDefault [kdePackages.xdg-desktop-portal-kde];
+    services.pipewire.enable = mkDefault true;
+
+    services.xserver.displayManager = {
+      sessionPackages = [kdePackages.plasma-workspace];
+      defaultSession = mkDefault "plasma";
+    };
+    services.xserver.displayManager.sddm = {
+      package = kdePackages.sddm;
+      theme = mkDefault "breeze";
+      extraPackages = with kdePackages; [
+        breeze-icons
+        kirigami
+        plasma5support
+        qtsvg
+        qtvirtualkeyboard
+      ];
+    };
+
+    security.pam.services = {
+      login.kwallet = {
+        enable = true;
+        package = kdePackages.kwallet-pam;
+      };
+      kde.kwallet = {
+        enable = true;
+        package = kdePackages.kwallet-pam;
+      };
+      kde-fingerprint = lib.mkIf config.services.fprintd.enable { fprintAuth = true; };
+      kde-smartcard = lib.mkIf config.security.pam.p11.enable { p11Auth = true; };
+    };
+
+    programs.dconf.enable = true;
+
+    programs.firefox.nativeMessagingHosts.packages = [kdePackages.plasma-browser-integration];
+
+    programs.chromium = {
+      enablePlasmaBrowserIntegration = true;
+      plasmaBrowserIntegrationPackage = pkgs.kdePackages.plasma-browser-integration;
+    };
+
+    programs.kdeconnect.package = kdePackages.kdeconnect-kde;
+  };
+}
diff --git a/nixpkgs/nixos/modules/services/x11/display-managers/sddm.nix b/nixpkgs/nixos/modules/services/x11/display-managers/sddm.nix
index 0576619cc8d2..5b7f4bc58d80 100644
--- a/nixpkgs/nixos/modules/services/x11/display-managers/sddm.nix
+++ b/nixpkgs/nixos/modules/services/x11/display-managers/sddm.nix
@@ -7,7 +7,10 @@ let
   cfg = dmcfg.sddm;
   xEnv = config.systemd.services.display-manager.environment;
 
-  sddm = cfg.package;
+  sddm = cfg.package.override(old: {
+    withWayland = cfg.wayland.enable;
+    extraPackages = old.extraPackages or [] ++ cfg.extraPackages;
+  });
 
   iniFmt = pkgs.formats.ini { };
 
@@ -140,6 +143,15 @@ in
         '';
       };
 
+      extraPackages = mkOption {
+        type = types.listOf types.package;
+        default = [];
+        defaultText = "[]";
+        description = lib.mdDoc ''
+          Extra Qt plugins / QML libraries to add to the environment.
+        '';
+      };
+
       autoNumlock = mkOption {
         type = types.bool;
         default = false;
@@ -211,7 +223,7 @@ in
                 keymap_variant = xcfg.xkb.variant;
                 keymap_options = xcfg.xkb.options;
               };
-            }; in "${pkgs.weston}/bin/weston --shell=fullscreen-shell.so -c ${westonIni}";
+            }; in "${pkgs.weston}/bin/weston --shell=kiosk -c ${westonIni}";
           description = lib.mdDoc "Command used to start the selected compositor";
         };
       };
@@ -235,15 +247,7 @@ in
       }
     ];
 
-    services.xserver.displayManager.job = {
-      environment = {
-        # Load themes from system environment
-        QT_PLUGIN_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtPluginPrefix;
-        QML2_IMPORT_PATH = "/run/current-system/sw/" + pkgs.qt5.qtbase.qtQmlPrefix;
-      };
-
-      execCmd = "exec /run/current-system/sw/bin/sddm";
-    };
+    services.xserver.displayManager.job.execCmd = "exec /run/current-system/sw/bin/sddm";
 
     security.pam.services = {
       sddm.text = ''
diff --git a/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py b/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
index a9978d7adf80..258cf622a894 100644
--- a/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
+++ b/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot-builder.py
@@ -17,6 +17,9 @@ from dataclasses import dataclass
 
 # These values will be replaced with actual values during the package build
 EFI_SYS_MOUNT_POINT = "@efiSysMountPoint@"
+BOOT_MOUNT_POINT = "@bootMountPoint@"
+LOADER_CONF = f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf"  # Always stored on the ESP
+NIXOS_DIR = "@nixosDir@"
 TIMEOUT = "@timeout@"
 EDITOR = "@editor@" == "1"
 CONSOLE_MODE = "@consoleMode@"
@@ -28,6 +31,7 @@ CONFIGURATION_LIMIT = int("@configurationLimit@")
 CAN_TOUCH_EFI_VARIABLES = "@canTouchEfiVariables@"
 GRACEFUL = "@graceful@"
 COPY_EXTRA_FILES = "@copyExtraFiles@"
+CHECK_MOUNTPOINTS = "@checkMountpoints@"
 
 @dataclass
 class BootSpec:
@@ -87,7 +91,7 @@ def generation_conf_filename(profile: str | None, generation: int, specialisatio
 
 
 def write_loader_conf(profile: str | None, generation: int, specialisation: str | None) -> None:
-    with open(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf.tmp", 'w') as f:
+    with open(f"{LOADER_CONF}.tmp", 'w') as f:
         if TIMEOUT != "":
             f.write(f"timeout {TIMEOUT}\n")
         f.write("default %s\n" % generation_conf_filename(profile, generation, specialisation))
@@ -96,7 +100,7 @@ def write_loader_conf(profile: str | None, generation: int, specialisation: str
         f.write(f"console-mode {CONSOLE_MODE}\n")
         f.flush()
         os.fsync(f.fileno())
-    os.rename(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf.tmp", f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf")
+    os.rename(f"{LOADER_CONF}.tmp", LOADER_CONF)
 
 
 def get_bootspec(profile: str | None, generation: int) -> BootSpec:
@@ -126,9 +130,9 @@ def copy_from_file(file: str, dry_run: bool = False) -> str:
     store_file_path = os.path.realpath(file)
     suffix = os.path.basename(store_file_path)
     store_dir = os.path.basename(os.path.dirname(store_file_path))
-    efi_file_path = "/efi/nixos/%s-%s.efi" % (store_dir, suffix)
+    efi_file_path = f"{NIXOS_DIR}/{store_dir}-{suffix}.efi"
     if not dry_run:
-        copy_if_not_exists(store_file_path, f"{EFI_SYS_MOUNT_POINT}%s" % (efi_file_path))
+        copy_if_not_exists(store_file_path, f"{BOOT_MOUNT_POINT}{efi_file_path}")
     return efi_file_path
 
 def write_entry(profile: str | None, generation: int, specialisation: str | None,
@@ -145,7 +149,7 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
 
     try:
         if bootspec.initrdSecrets is not None:
-            subprocess.check_call([bootspec.initrdSecrets, f"{EFI_SYS_MOUNT_POINT}%s" % (initrd)])
+            subprocess.check_call([bootspec.initrdSecrets, f"{BOOT_MOUNT_POINT}%s" % (initrd)])
     except subprocess.CalledProcessError:
         if current:
             print("failed to create initrd secrets!", file=sys.stderr)
@@ -155,7 +159,7 @@ def write_entry(profile: str | None, generation: int, specialisation: str | None
                   f'for "{title} - Configuration {generation}", an older generation', file=sys.stderr)
             print("note: this is normal after having removed "
                   "or renamed a file in `boot.initrd.secrets`", file=sys.stderr)
-    entry_file = f"{EFI_SYS_MOUNT_POINT}/loader/entries/%s" % (
+    entry_file = f"{BOOT_MOUNT_POINT}/loader/entries/%s" % (
         generation_conf_filename(profile, generation, specialisation))
     tmp_path = "%s.tmp" % (entry_file)
     kernel_params = "init=%s " % bootspec.init
@@ -202,14 +206,14 @@ def get_generations(profile: str | None = None) -> list[SystemIdentifier]:
 
 
 def remove_old_entries(gens: list[SystemIdentifier]) -> None:
-    rex_profile = re.compile(r"^" + re.escape(EFI_SYS_MOUNT_POINT) + "/loader/entries/nixos-(.*)-generation-.*\.conf$")
-    rex_generation = re.compile(r"^" + re.escape(EFI_SYS_MOUNT_POINT) + "/loader/entries/nixos.*-generation-([0-9]+)(-specialisation-.*)?\.conf$")
+    rex_profile = re.compile(r"^" + re.escape(BOOT_MOUNT_POINT) + "/loader/entries/nixos-(.*)-generation-.*\.conf$")
+    rex_generation = re.compile(r"^" + re.escape(BOOT_MOUNT_POINT) + "/loader/entries/nixos.*-generation-([0-9]+)(-specialisation-.*)?\.conf$")
     known_paths = []
     for gen in gens:
         bootspec = get_bootspec(gen.profile, gen.generation)
         known_paths.append(copy_from_file(bootspec.kernel, True))
         known_paths.append(copy_from_file(bootspec.initrd, True))
-    for path in glob.iglob(f"{EFI_SYS_MOUNT_POINT}/loader/entries/nixos*-generation-[1-9]*.conf"):
+    for path in glob.iglob(f"{BOOT_MOUNT_POINT}/loader/entries/nixos*-generation-[1-9]*.conf"):
         if rex_profile.match(path):
             prof = rex_profile.sub(r"\1", path)
         else:
@@ -220,11 +224,18 @@ def remove_old_entries(gens: list[SystemIdentifier]) -> None:
             continue
         if not (prof, gen_number, None) in gens:
             os.unlink(path)
-    for path in glob.iglob(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/*"):
+    for path in glob.iglob(f"{BOOT_MOUNT_POINT}/{NIXOS_DIR}/*"):
         if not path in known_paths and not os.path.isdir(path):
             os.unlink(path)
 
 
+def cleanup_esp() -> None:
+    for path in glob.iglob(f"{EFI_SYS_MOUNT_POINT}/loader/entries/nixos*"):
+        os.unlink(path)
+    if os.path.isdir(f"{EFI_SYS_MOUNT_POINT}/{NIXOS_DIR}"):
+        shutil.rmtree(f"{EFI_SYS_MOUNT_POINT}/{NIXOS_DIR}")
+
+
 def get_profiles() -> list[str]:
     if os.path.isdir("/nix/var/nix/profiles/system-profiles/"):
         return [x
@@ -255,6 +266,9 @@ def install_bootloader(args: argparse.Namespace) -> None:
     # flags to pass to bootctl install/update
     bootctl_flags = []
 
+    if BOOT_MOUNT_POINT != EFI_SYS_MOUNT_POINT:
+        bootctl_flags.append(f"--boot-path={BOOT_MOUNT_POINT}")
+
     if CAN_TOUCH_EFI_VARIABLES != "1":
         bootctl_flags.append("--no-variables")
 
@@ -263,8 +277,8 @@ def install_bootloader(args: argparse.Namespace) -> None:
 
     if os.getenv("NIXOS_INSTALL_BOOTLOADER") == "1":
         # bootctl uses fopen() with modes "wxe" and fails if the file exists.
-        if os.path.exists(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf"):
-            os.unlink(f"{EFI_SYS_MOUNT_POINT}/loader/loader.conf")
+        if os.path.exists(LOADER_CONF):
+            os.unlink(LOADER_CONF)
 
         subprocess.check_call([f"{SYSTEMD}/bin/bootctl", f"--esp-path={EFI_SYS_MOUNT_POINT}"] + bootctl_flags + ["install"])
     else:
@@ -291,13 +305,15 @@ def install_bootloader(args: argparse.Namespace) -> None:
             print("updating systemd-boot from %s to %s" % (installed_version, available_version))
             subprocess.check_call([f"{SYSTEMD}/bin/bootctl", f"--esp-path={EFI_SYS_MOUNT_POINT}"] + bootctl_flags + ["update"])
 
-    os.makedirs(f"{EFI_SYS_MOUNT_POINT}/efi/nixos", exist_ok=True)
-    os.makedirs(f"{EFI_SYS_MOUNT_POINT}/loader/entries", exist_ok=True)
+    os.makedirs(f"{BOOT_MOUNT_POINT}/{NIXOS_DIR}", exist_ok=True)
+    os.makedirs(f"{BOOT_MOUNT_POINT}/loader/entries", exist_ok=True)
 
     gens = get_generations()
     for profile in get_profiles():
         gens += get_generations(profile)
+
     remove_old_entries(gens)
+
     for gen in gens:
         try:
             bootspec = get_bootspec(gen.profile, gen.generation)
@@ -315,9 +331,15 @@ def install_bootloader(args: argparse.Namespace) -> None:
             else:
                 raise e
 
-    for root, _, files in os.walk(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files", topdown=False):
-        relative_root = root.removeprefix(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files").removeprefix("/")
-        actual_root = os.path.join(f"{EFI_SYS_MOUNT_POINT}", relative_root)
+    if BOOT_MOUNT_POINT != EFI_SYS_MOUNT_POINT:
+        # Cleanup any entries in ESP if xbootldrMountPoint is set.
+        # If the user later unsets xbootldrMountPoint, entries in XBOOTLDR will not be cleaned up
+        # automatically, as we don't have information about the mount point anymore.
+        cleanup_esp()
+
+    for root, _, files in os.walk(f"{BOOT_MOUNT_POINT}/{NIXOS_DIR}/.extra-files", topdown=False):
+        relative_root = root.removeprefix(f"{BOOT_MOUNT_POINT}/{NIXOS_DIR}/.extra-files").removeprefix("/")
+        actual_root = os.path.join(f"{BOOT_MOUNT_POINT}", relative_root)
 
         for file in files:
             actual_file = os.path.join(actual_root, file)
@@ -330,7 +352,7 @@ def install_bootloader(args: argparse.Namespace) -> None:
             os.rmdir(actual_root)
         os.rmdir(root)
 
-    os.makedirs(f"{EFI_SYS_MOUNT_POINT}/efi/nixos/.extra-files", exist_ok=True)
+    os.makedirs(f"{BOOT_MOUNT_POINT}/{NIXOS_DIR}/.extra-files", exist_ok=True)
 
     subprocess.check_call(COPY_EXTRA_FILES)
 
@@ -340,6 +362,8 @@ def main() -> None:
     parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help=f"The default {DISTRO_NAME} config to boot")
     args = parser.parse_args()
 
+    subprocess.check_call(CHECK_MOUNTPOINTS)
+
     try:
         install_bootloader(args)
     finally:
@@ -347,9 +371,14 @@ def main() -> None:
         # it can leave the system in an unbootable state, when a crash/outage
         # happens shortly after an update. To decrease the likelihood of this
         # event sync the efi filesystem after each update.
-        rc = libc.syncfs(os.open(f"{EFI_SYS_MOUNT_POINT}", os.O_RDONLY))
+        rc = libc.syncfs(os.open(f"{BOOT_MOUNT_POINT}", os.O_RDONLY))
         if rc != 0:
-            print(f"could not sync {EFI_SYS_MOUNT_POINT}: {os.strerror(rc)}", file=sys.stderr)
+            print(f"could not sync {BOOT_MOUNT_POINT}: {os.strerror(rc)}", file=sys.stderr)
+
+        if BOOT_MOUNT_POINT != EFI_SYS_MOUNT_POINT:
+            rc = libc.syncfs(os.open(EFI_SYS_MOUNT_POINT, os.O_RDONLY))
+            if rc != 0:
+                print(f"could not sync {EFI_SYS_MOUNT_POINT}: {os.strerror(rc)}", file=sys.stderr)
 
 
 if __name__ == '__main__':
diff --git a/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix b/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix
index ea4553b8208f..645b764760da 100644
--- a/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix
+++ b/nixpkgs/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix
@@ -7,7 +7,7 @@ let
 
   efi = config.boot.loader.efi;
 
-  systemdBootBuilder = pkgs.substituteAll {
+  systemdBootBuilder = pkgs.substituteAll rec {
     src = ./systemd-boot-builder.py;
 
     isExecutable = true;
@@ -28,33 +28,48 @@ let
 
     inherit (efi) efiSysMountPoint canTouchEfiVariables;
 
+    bootMountPoint = if cfg.xbootldrMountPoint != null
+      then cfg.xbootldrMountPoint
+      else efi.efiSysMountPoint;
+
+    nixosDir = "/EFI/nixos";
+
     inherit (config.system.nixos) distroName;
 
     memtest86 = optionalString cfg.memtest86.enable pkgs.memtest86plus;
 
     netbootxyz = optionalString cfg.netbootxyz.enable pkgs.netbootxyz-efi;
 
+    checkMountpoints = pkgs.writeShellScript "check-mountpoints" ''
+      fail() {
+        echo "$1 = '$2' is not a mounted partition. Is the path configured correctly?" >&2
+        exit 1
+      }
+      ${pkgs.util-linuxMinimal}/bin/findmnt ${efiSysMountPoint} > /dev/null || fail efiSysMountPoint ${efiSysMountPoint}
+      ${lib.optionalString
+        (cfg.xbootldrMountPoint != null)
+        "${pkgs.util-linuxMinimal}/bin/findmnt ${cfg.xbootldrMountPoint} > /dev/null || fail xbootldrMountPoint ${cfg.xbootldrMountPoint}"}
+    '';
+
     copyExtraFiles = pkgs.writeShellScript "copy-extra-files" ''
       empty_file=$(${pkgs.coreutils}/bin/mktemp)
 
       ${concatStrings (mapAttrsToList (n: v: ''
-        ${pkgs.coreutils}/bin/install -Dp "${v}" "${efi.efiSysMountPoint}/"${escapeShellArg n}
-        ${pkgs.coreutils}/bin/install -D $empty_file "${efi.efiSysMountPoint}/efi/nixos/.extra-files/"${escapeShellArg n}
+        ${pkgs.coreutils}/bin/install -Dp "${v}" "${bootMountPoint}/"${escapeShellArg n}
+        ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/"${escapeShellArg n}
       '') cfg.extraFiles)}
 
       ${concatStrings (mapAttrsToList (n: v: ''
-        ${pkgs.coreutils}/bin/install -Dp "${pkgs.writeText n v}" "${efi.efiSysMountPoint}/loader/entries/"${escapeShellArg n}
-        ${pkgs.coreutils}/bin/install -D $empty_file "${efi.efiSysMountPoint}/efi/nixos/.extra-files/loader/entries/"${escapeShellArg n}
+        ${pkgs.coreutils}/bin/install -Dp "${pkgs.writeText n v}" "${bootMountPoint}/loader/entries/"${escapeShellArg n}
+        ${pkgs.coreutils}/bin/install -D $empty_file "${bootMountPoint}/${nixosDir}/.extra-files/loader/entries/"${escapeShellArg n}
       '') cfg.extraEntries)}
     '';
   };
 
-  checkedSystemdBootBuilder = pkgs.runCommand "systemd-boot" {
-    nativeBuildInputs = [ pkgs.mypy ];
-  } ''
+  checkedSystemdBootBuilder = pkgs.runCommand "systemd-boot" { } ''
     mkdir -p $out/bin
     install -m755 ${systemdBootBuilder} $out/bin/systemd-boot-builder
-    mypy \
+    ${lib.getExe pkgs.buildPackages.mypy} \
       --no-implicit-optional \
       --disallow-untyped-calls \
       --disallow-untyped-defs \
@@ -101,6 +116,18 @@ in {
       '';
     };
 
+    xbootldrMountPoint = mkOption {
+      default = null;
+      type = types.nullOr types.str;
+      description = lib.mdDoc ''
+        Where the XBOOTLDR partition is mounted.
+
+        If set, this partition will be used as $BOOT to store boot loader entries and extra files
+        instead of the EFI partition. As per the bootloader specification, it is recommended that
+        the EFI and XBOOTLDR partitions be mounted at `/efi` and `/boot`, respectively.
+      '';
+    };
+
     configurationLimit = mkOption {
       default = null;
       example = 120;
@@ -110,7 +137,7 @@ in {
         Useful to prevent boot partition running out of disk space.
 
         `null` means no limit i.e. all generations
-        that were not garbage collected yet.
+        that have not been garbage collected yet.
       '';
     };
 
@@ -202,7 +229,7 @@ in {
       '';
       description = lib.mdDoc ''
         Any additional entries you want added to the `systemd-boot` menu.
-        These entries will be copied to {file}`/boot/loader/entries`.
+        These entries will be copied to {file}`$BOOT/loader/entries`.
         Each attribute name denotes the destination file name,
         and the corresponding attribute value is the contents of the entry.
 
@@ -219,9 +246,9 @@ in {
         { "efi/memtest86/memtest.efi" = "''${pkgs.memtest86plus}/memtest.efi"; }
       '';
       description = lib.mdDoc ''
-        A set of files to be copied to {file}`/boot`.
+        A set of files to be copied to {file}`$BOOT`.
         Each attribute name denotes the destination file name in
-        {file}`/boot`, while the corresponding
+        {file}`$BOOT`, while the corresponding
         attribute value specifies the source file.
       '';
     };
@@ -246,6 +273,18 @@ in {
   config = mkIf cfg.enable {
     assertions = [
       {
+        assertion = (hasPrefix "/" efi.efiSysMountPoint);
+        message = "The ESP mount point '${efi.efiSysMountPoint}' must be an absolute path";
+      }
+      {
+        assertion = cfg.xbootldrMountPoint == null || (hasPrefix "/" cfg.xbootldrMountPoint);
+        message = "The XBOOTLDR mount point '${cfg.xbootldrMountPoint}' must be an absolute path";
+      }
+      {
+        assertion = cfg.xbootldrMountPoint != efi.efiSysMountPoint;
+        message = "The XBOOTLDR mount point '${cfg.xbootldrMountPoint}' cannot be the same as the ESP mount point '${efi.efiSysMountPoint}'";
+      }
+      {
         assertion = (config.boot.kernelPackages.kernel.features or { efiBootStub = true; }) ? efiBootStub;
         message = "This kernel does not support the EFI boot stub";
       }
diff --git a/nixpkgs/nixos/modules/system/boot/networkd.nix b/nixpkgs/nixos/modules/system/boot/networkd.nix
index a7399bd55e77..88d6a2ded873 100644
--- a/nixpkgs/nixos/modules/system/boot/networkd.nix
+++ b/nixpkgs/nixos/modules/system/boot/networkd.nix
@@ -647,9 +647,9 @@ let
           "BatmanAdvanced"
         ])
         # Note: For DHCP the values both, none, v4, v6 are deprecated
-        (assertValueOneOf "DHCP" ["yes" "no" "ipv4" "ipv6"])
+        (assertValueOneOf "DHCP" (boolValues ++ ["ipv4" "ipv6"]))
         (assertValueOneOf "DHCPServer" boolValues)
-        (assertValueOneOf "LinkLocalAddressing" ["yes" "no" "ipv4" "ipv6" "fallback" "ipv4-fallback"])
+        (assertValueOneOf "LinkLocalAddressing" (boolValues ++ ["ipv4" "ipv6" "fallback" "ipv4-fallback"]))
         (assertValueOneOf "IPv6LinkLocalAddressGenerationMode" ["eui64" "none" "stable-privacy" "random"])
         (assertValueOneOf "IPv4LLRoute" boolValues)
         (assertValueOneOf "DefaultRouteOnDevice" boolValues)
diff --git a/nixpkgs/nixos/modules/system/boot/plymouth.nix b/nixpkgs/nixos/modules/system/boot/plymouth.nix
index b041b8951fa3..16bca40993ae 100644
--- a/nixpkgs/nixos/modules/system/boot/plymouth.nix
+++ b/nixpkgs/nixos/modules/system/boot/plymouth.nix
@@ -186,6 +186,8 @@ in
           # module might come from a theme
           cp ${themesEnv}/lib/plymouth/*.so $out
           cp ${plymouth}/lib/plymouth/renderers/*.so $out/renderers
+          # useless in the initrd, and adds several megabytes to the closure
+          rm $out/renderers/x11.so
         '';
         "/etc/plymouth/themes".source = pkgs.runCommand "plymouth-initrd-themes" {} ''
           # Check if the actual requested theme is here
@@ -271,6 +273,8 @@ in
       # module might come from a theme
       cp ${themesEnv}/lib/plymouth/*.so $out/lib/plymouth
       cp ${plymouth}/lib/plymouth/renderers/*.so $out/lib/plymouth/renderers
+      # useless in the initrd, and adds several megabytes to the closure
+      rm $out/lib/plymouth/renderers/x11.so
 
       mkdir -p $out/share/plymouth/themes
       cp ${plymouth}/share/plymouth/plymouthd.defaults $out/share/plymouth
diff --git a/nixpkgs/nixos/modules/system/boot/systemd/coredump.nix b/nixpkgs/nixos/modules/system/boot/systemd/coredump.nix
index 03ef00e5683c..271d8f86d0e6 100644
--- a/nixpkgs/nixos/modules/system/boot/systemd/coredump.nix
+++ b/nixpkgs/nixos/modules/system/boot/systemd/coredump.nix
@@ -52,7 +52,7 @@ in {
           # See: https://github.com/NixOS/nixpkgs/issues/213408
           pkgs.substitute {
             src = "${systemd}/example/sysctl.d/50-coredump.conf";
-            replacements = [
+            substitutions = [
               "--replace"
               "${systemd}"
               "${pkgs.symlinkJoin { name = "systemd"; paths = [ systemd ]; }}"
diff --git a/nixpkgs/nixos/modules/system/boot/systemd/repart.nix b/nixpkgs/nixos/modules/system/boot/systemd/repart.nix
index 3be744acd0b3..6cc387cb6f43 100644
--- a/nixpkgs/nixos/modules/system/boot/systemd/repart.nix
+++ b/nixpkgs/nixos/modules/system/boot/systemd/repart.nix
@@ -10,6 +10,20 @@ let
     "repart.d"
     format
     (lib.mapAttrs (_n: v: { Partition = v; }) cfg.partitions);
+
+  partitionAssertions = lib.mapAttrsToList (fileName: definition:
+    let
+      maxLabelLength = 36; # GPT_LABEL_MAX defined in systemd's gpt.h
+      labelLength = builtins.stringLength definition.Label;
+    in
+    {
+      assertion = definition ? Label -> maxLabelLength >= labelLength;
+      message = ''
+        The partition label '${definition.Label}' defined for '${fileName}' is ${toString labelLength}
+        characters long, but the maximum label length supported by systemd is ${toString maxLabelLength}.
+      '';
+    }
+  ) cfg.partitions;
 in
 {
   options = {
@@ -81,7 +95,7 @@ in
           'boot.initrd.systemd.repart.enable' requires 'boot.initrd.systemd.enable' to be enabled.
         '';
       }
-    ];
+    ] ++ partitionAssertions;
 
     # systemd-repart uses loopback devices for partition creation
     boot.initrd.availableKernelModules = lib.optional initrdCfg.enable "loop";
diff --git a/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix b/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
index 98df6a40e8a1..58aca3fdbd4f 100644
--- a/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixpkgs/nixos/modules/tasks/filesystems/zfs.nix
@@ -347,24 +347,12 @@ in
       removeLinuxDRM = lib.mkOption {
         type = types.bool;
         default = false;
-        description = lib.mdDoc ''
-          Linux 6.2 dropped some kernel symbols required on aarch64 required by zfs.
-          Enabling this option will bring them back to allow this kernel version.
-          Note that in some jurisdictions this may be illegal as it might be considered
-          removing copyright protection from the code.
-          See https://www.ifross.org/?q=en/artikel/ongoing-dispute-over-value-exportsymbolgpl-function for further information.
-
-          If configure your kernel package with `zfs.latestCompatibleLinuxPackages`, you will need to also pass removeLinuxDRM to that package like this:
+        description = ''
+          Patch the kernel to change symbols needed by ZFS from
+          EXPORT_SYMBOL_GPL to EXPORT_SYMBOL.
 
-          ```
-          { pkgs, ... }: {
-            boot.kernelPackages = (pkgs.zfs.override {
-              removeLinuxDRM = pkgs.hostPlatform.isAarch64;
-            }).latestCompatibleLinuxPackages;
-
-            boot.zfs.removeLinuxDRM = true;
-          }
-          ```
+          Currently has no effect, but may again in future if a kernel
+          update breaks ZFS due to symbols being newly changed to GPL.
         '';
       };
     };
@@ -588,7 +576,7 @@ in
         kernelParams = lib.optionals (!config.boot.zfs.allowHibernation) [ "nohibernate" ];
 
         extraModulePackages = [
-          (cfgZfs.modulePackage.override { inherit (cfgZfs) removeLinuxDRM; })
+          cfgZfs.modulePackage
         ];
       };
 
@@ -725,21 +713,6 @@ in
       services.udev.packages = [ cfgZfs.package ]; # to hook zvol naming, etc.
       systemd.packages = [ cfgZfs.package ];
 
-      # Export kernel_neon_* symbols again.
-      # This change is necessary until ZFS figures out a solution
-      # with upstream or in their build system to fill the gap for
-      # this symbol.
-      # In the meantime, we restore what was once a working piece of code
-      # in the kernel.
-      boot.kernelPatches = lib.optional (cfgZfs.removeLinuxDRM && pkgs.stdenv.hostPlatform.system == "aarch64-linux") {
-        name = "export-neon-symbols-as-gpl";
-        patch = pkgs.fetchpatch {
-          url = "https://github.com/torvalds/linux/commit/aaeca98456431a8d9382ecf48ac4843e252c07b3.patch";
-          hash = "sha256-L2g4G1tlWPIi/QRckMuHDcdWBcKpObSWSRTvbHRIwIk=";
-          revert = true;
-        };
-      };
-
       systemd.services = let
         createImportService' = pool: createImportService {
           inherit pool;
diff --git a/nixpkgs/nixos/modules/virtualisation/podman/default.nix b/nixpkgs/nixos/modules/virtualisation/podman/default.nix
index 5a99dc8a1bb9..a97739054216 100644
--- a/nixpkgs/nixos/modules/virtualisation/podman/default.nix
+++ b/nixpkgs/nixos/modules/virtualisation/podman/default.nix
@@ -216,9 +216,11 @@ in
         requires = [ "podman.service" ];
       };
 
+      systemd.services.podman.environment = config.networking.proxy.envVars;
       systemd.sockets.podman.wantedBy = [ "sockets.target" ];
       systemd.sockets.podman.socketConfig.SocketGroup = "podman";
 
+      systemd.user.services.podman.environment = config.networking.proxy.envVars;
       systemd.user.sockets.podman.wantedBy = [ "sockets.target" ];
 
       systemd.timers.podman-prune.timerConfig = lib.mkIf cfg.autoPrune.enable {
diff --git a/nixpkgs/nixos/release-combined.nix b/nixpkgs/nixos/release-combined.nix
index 7700441b1d6b..459700514ffc 100644
--- a/nixpkgs/nixos/release-combined.nix
+++ b/nixpkgs/nixos/release-combined.nix
@@ -142,7 +142,6 @@ in rec {
         (onFullSupported "nixos.tests.networking.networkd.virtual")
         (onFullSupported "nixos.tests.networking.networkd.vlan")
         (onFullSupported "nixos.tests.systemd-networkd-ipv6-prefix-delegation")
-        (onFullSupported "nixos.tests.nfs3.simple")
         (onFullSupported "nixos.tests.nfs4.simple")
         (onSystems ["x86_64-linux"] "nixos.tests.oci-containers.podman")
         (onFullSupported "nixos.tests.openssh")
diff --git a/nixpkgs/nixos/release-small.nix b/nixpkgs/nixos/release-small.nix
index 6204dc731ad9..cac20b63925f 100644
--- a/nixpkgs/nixos/release-small.nix
+++ b/nixpkgs/nixos/release-small.nix
@@ -43,7 +43,7 @@ in rec {
         login
         misc
         nat
-        nfs3
+        nfs4
         openssh
         php
         predictable-interface-names
@@ -125,7 +125,7 @@ in rec {
         "nixos.tests.misc"
         "nixos.tests.nat.firewall"
         "nixos.tests.nat.standalone"
-        "nixos.tests.nfs3.simple"
+        "nixos.tests.nfs4.simple"
         "nixos.tests.openssh"
         "nixos.tests.php.fpm"
         "nixos.tests.php.pcre"
diff --git a/nixpkgs/nixos/release.nix b/nixpkgs/nixos/release.nix
index 2acc5ade7848..ff60b0b79f6d 100644
--- a/nixpkgs/nixos/release.nix
+++ b/nixpkgs/nixos/release.nix
@@ -177,6 +177,12 @@ in rec {
     inherit system;
   });
 
+  iso_plasma6 = forMatchingSystems supportedSystems (system: makeIso {
+    module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-plasma6.nix;
+    type = "plasma6";
+    inherit system;
+  });
+
   iso_gnome = forMatchingSystems supportedSystems (system: makeIso {
     module = ./modules/installer/cd-dvd/installation-cd-graphical-calamares-gnome.nix;
     type = "gnome";
diff --git a/nixpkgs/nixos/tests/all-tests.nix b/nixpkgs/nixos/tests/all-tests.nix
index 1144a5611dcf..231767ca2b97 100644
--- a/nixpkgs/nixos/tests/all-tests.nix
+++ b/nixpkgs/nixos/tests/all-tests.nix
@@ -128,6 +128,7 @@ in {
   appliance-repart-image = runTest ./appliance-repart-image.nix;
   apparmor = handleTest ./apparmor.nix {};
   archi = handleTest ./archi.nix {};
+  armagetronad = handleTest ./armagetronad.nix {};
   atd = handleTest ./atd.nix {};
   atop = handleTest ./atop.nix {};
   atuin = handleTest ./atuin.nix {};
@@ -497,6 +498,7 @@ in {
   lxd = pkgs.recurseIntoAttrs (handleTest ./lxd { inherit handleTestOn; });
   lxd-image-server = handleTest ./lxd-image-server.nix {};
   #logstash = handleTest ./logstash.nix {};
+  lomiri-system-settings = handleTest ./lomiri-system-settings.nix {};
   lorri = handleTest ./lorri/default.nix {};
   maddy = discoverTests (import ./maddy { inherit handleTest; });
   maestral = handleTest ./maestral.nix {};
@@ -516,6 +518,7 @@ in {
   matrix-synapse = handleTest ./matrix/synapse.nix {};
   matrix-synapse-workers = handleTest ./matrix/synapse-workers.nix {};
   mattermost = handleTest ./mattermost.nix {};
+  mealie = handleTest ./mealie.nix {};
   mediamtx = handleTest ./mediamtx.nix {};
   mediatomb = handleTest ./mediatomb.nix {};
   mediawiki = handleTest ./mediawiki.nix {};
@@ -535,6 +538,7 @@ in {
   mobilizon = handleTest ./mobilizon.nix {};
   mod_perl = handleTest ./mod_perl.nix {};
   molly-brown = handleTest ./molly-brown.nix {};
+  monado = handleTest ./monado.nix {};
   monica = handleTest ./web-apps/monica.nix {};
   mongodb = handleTest ./mongodb.nix {};
   moodle = handleTest ./moodle.nix {};
@@ -692,6 +696,7 @@ in {
   plantuml-server = handleTest ./plantuml-server.nix {};
   plasma-bigscreen = handleTest ./plasma-bigscreen.nix {};
   plasma5 = handleTest ./plasma5.nix {};
+  plasma6 = handleTest ./plasma6.nix {};
   plasma5-systemd-start = handleTest ./plasma5-systemd-start.nix {};
   plausible = handleTest ./plausible.nix {};
   please = handleTest ./please.nix {};
diff --git a/nixpkgs/nixos/tests/armagetronad.nix b/nixpkgs/nixos/tests/armagetronad.nix
new file mode 100644
index 000000000000..ff2841dedd21
--- /dev/null
+++ b/nixpkgs/nixos/tests/armagetronad.nix
@@ -0,0 +1,272 @@
+import ./make-test-python.nix ({ pkgs, ...} :
+
+let
+  user = "alice";
+
+  client =
+    { pkgs, ... }:
+
+    { imports = [ ./common/user-account.nix ./common/x11.nix ];
+      hardware.opengl.driSupport = true;
+      virtualisation.memorySize = 256;
+      environment = {
+        systemPackages = [ pkgs.armagetronad ];
+        variables.XAUTHORITY = "/home/${user}/.Xauthority";
+      };
+      test-support.displayManager.auto.user = user;
+    };
+
+in {
+  name = "armagetronad";
+  meta = with pkgs.lib.maintainers; {
+    maintainers = [ numinit ];
+  };
+
+  enableOCR = true;
+
+  nodes =
+    {
+      server = {
+        services.armagetronad.servers = {
+          high-rubber = {
+            enable = true;
+            name = "Smoke Test High Rubber Server";
+            port = 4534;
+            settings = {
+              SERVER_OPTIONS = "High Rubber server made to run smoke tests.";
+              CYCLE_RUBBER = 40;
+              SIZE_FACTOR = 0.5;
+            };
+            roundSettings = {
+              SAY = [
+                "NixOS Smoke Test Server"
+                "https://nixos.org"
+              ];
+            };
+          };
+          sty = {
+            enable = true;
+            name = "Smoke Test sty+ct+ap Server";
+            package = pkgs.armagetronad."0.2.9-sty+ct+ap".dedicated;
+            port = 4535;
+            settings = {
+              SERVER_OPTIONS = "sty+ct+ap server made to run smoke tests.";
+              CYCLE_RUBBER = 20;
+              SIZE_FACTOR = 0.5;
+            };
+            roundSettings = {
+              SAY = [
+                "NixOS Smoke Test sty+ct+ap Server"
+                "https://nixos.org"
+              ];
+            };
+          };
+          trunk = {
+            enable = true;
+            name = "Smoke Test trunk Server";
+            package = pkgs.armagetronad."0.4".dedicated;
+            port = 4536;
+            settings = {
+              SERVER_OPTIONS = "0.4 server made to run smoke tests.";
+              CYCLE_RUBBER = 20;
+              SIZE_FACTOR = 0.5;
+            };
+            roundSettings = {
+              SAY = [
+                "NixOS Smoke Test 0.4 Server"
+                "https://nixos.org"
+              ];
+            };
+          };
+        };
+      };
+
+      client1 = client;
+      client2 = client;
+    };
+
+  testScript = let
+    xdo = name: text: let
+      xdoScript = pkgs.writeText "${name}.xdo" text;
+    in "${pkgs.xdotool}/bin/xdotool ${xdoScript}";
+  in
+    ''
+      import shlex
+      import threading
+      from collections import namedtuple
+
+      class Client(namedtuple('Client', ('node', 'name'))):
+        def send(self, *keys):
+          for key in keys:
+            self.node.send_key(key)
+
+        def send_on(self, text, *keys):
+          self.node.wait_for_text(text)
+          self.send(*keys)
+
+      Server = namedtuple('Server', ('node', 'name', 'address', 'port', 'welcome', 'attacker', 'victim', 'coredump_delay'))
+
+      # Clients and their in-game names
+      clients = (
+        Client(client1, 'Arduino'),
+        Client(client2, 'SmOoThIcE')
+      )
+
+      # Server configs.
+      servers = (
+        Server(server, 'high-rubber', 'server', 4534, 'NixOS Smoke Test Server', 'SmOoThIcE', 'Arduino', 8),
+        Server(server, 'sty', 'server', 4535, 'NixOS Smoke Test sty+ct+ap Server', 'Arduino', 'SmOoThIcE', 8),
+        Server(server, 'trunk', 'server', 4536, 'NixOS Smoke Test 0.4 Server', 'Arduino', 'SmOoThIcE', 8)
+      )
+
+      """
+      Runs a command as the client user.
+      """
+      def run(cmd):
+        return "su - ${user} -c " + shlex.quote(cmd)
+
+      screenshot_idx = 1
+
+      """
+      Takes screenshots on all clients.
+      """
+      def take_screenshots(screenshot_idx):
+        for client in clients:
+          client.node.screenshot(f"screen_{client.name}_{screenshot_idx}")
+        return screenshot_idx + 1
+
+      # Wait for the servers to come up.
+      start_all()
+      for srv in servers:
+        srv.node.wait_for_unit(f"armagetronad-{srv.name}")
+        srv.node.wait_until_succeeds(f"ss --numeric --udp --listening | grep -q {srv.port}")
+
+      # Make sure console commands work through the named pipe we created.
+      for srv in servers:
+        srv.node.succeed(
+          f"echo 'say Testing!' >> /var/lib/armagetronad/{srv.name}/input"
+        )
+        srv.node.succeed(
+          f"echo 'say Testing again!' >> /var/lib/armagetronad/{srv.name}/input"
+        )
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing!'"
+        )
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing again!'"
+        )
+
+      """
+      Sets up a client, waiting for the given barrier on completion.
+      """
+      def client_setup(client, servers, barrier):
+        client.node.wait_for_x()
+
+        # Configure Armagetron.
+        client.node.succeed(
+          run("mkdir -p ~/.armagetronad/var"),
+          run(f"echo 'PLAYER_1 {client.name}' >> ~/.armagetronad/var/autoexec.cfg")
+        )
+        for idx, srv in enumerate(servers):
+          client.node.succeed(
+            run(f"echo 'BOOKMARK_{idx+1}_ADDRESS {srv.address}' >> ~/.armagetronad/var/autoexec.cfg"),
+            run(f"echo 'BOOKMARK_{idx+1}_NAME {srv.name}' >> ~/.armagetronad/var/autoexec.cfg"),
+            run(f"echo 'BOOKMARK_{idx+1}_PORT {srv.port}' >> ~/.armagetronad/var/autoexec.cfg")
+          )
+
+        # Start Armagetron.
+        client.node.succeed(run("ulimit -c unlimited; armagetronad >&2 & disown"))
+        client.node.wait_until_succeeds(
+          run(
+            "${xdo "create_new_win-select_main_window" ''
+              search --onlyvisible --name "Armagetron Advanced"
+              windowfocus --sync
+              windowactivate --sync
+            ''}"
+          )
+        )
+
+        # Get through the tutorial.
+        client.send_on('Language Settings', 'ret')
+        client.send_on('First Setup', 'ret')
+        client.send_on('Welcome to Armagetron Advanced', 'ret')
+        client.send_on('round 1', 'esc')
+        client.send_on('Menu', 'up', 'up', 'ret')
+        client.send_on('We hope you', 'ret')
+        client.send_on('Armagetron Advanced', 'ret')
+        client.send_on('Play Game', 'ret')
+
+        # Online > LAN > Network Setup > Mates > Server Bookmarks
+        client.send_on('Multiplayer', 'down', 'down', 'down', 'down', 'ret')
+
+        barrier.wait()
+
+      # Get to the Server Bookmarks screen on both clients. This takes a while so do it asynchronously.
+      barrier = threading.Barrier(3, timeout=120)
+      for client in clients:
+        threading.Thread(target=client_setup, args=(client, servers, barrier)).start()
+      barrier.wait()
+
+      # Main testing loop. Iterates through each server bookmark and connects to them in sequence.
+      # Assumes that the game is currently on the Server Bookmarks screen.
+      for srv in servers:
+        screenshot_idx = take_screenshots(screenshot_idx)
+
+        # Connect both clients at once, one second apart.
+        for client in clients:
+          client.send('ret')
+          client.node.sleep(1)
+
+        # Wait for clients to connect
+        for client in clients:
+          srv.node.wait_until_succeeds(
+            f"journalctl -u armagetronad-{srv.name} -e | grep -q '{client.name}.*entered the game'"
+          )
+
+        # Wait for the match to start
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: {srv.welcome}'"
+        )
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: https://nixos.org'"
+        )
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Go (round 1 of 10)'"
+        )
+
+        # Wait a bit
+        srv.node.sleep(srv.coredump_delay)
+
+        # Turn the attacker player's lightcycle left
+        attacker = next(client for client in clients if client.name == srv.attacker)
+        victim = next(client for client in clients if client.name == srv.victim)
+        attacker.send('left')
+        screenshot_idx = take_screenshots(screenshot_idx)
+
+        # Wait for coredump.
+        srv.node.wait_until_succeeds(
+          f"journalctl -u armagetronad-{srv.name} -e | grep -q '{attacker.name} core dumped {victim.name}'"
+        )
+        screenshot_idx = take_screenshots(screenshot_idx)
+
+        # Disconnect both clients from the server
+        for client in clients:
+          client.send('esc')
+          client.send_on('Menu', 'up', 'up', 'ret')
+          srv.node.wait_until_succeeds(
+            f"journalctl -u armagetronad-{srv.name} -e | grep -q '{client.name}.*left the game'"
+          )
+
+        # Next server.
+        for client in clients:
+          client.send_on('Server Bookmarks', 'down')
+
+      # Stop the servers
+      for srv in servers:
+        srv.node.succeed(
+          f"systemctl stop armagetronad-{srv.name}"
+        )
+        srv.node.wait_until_fails(f"ss --numeric --udp --listening | grep -q {srv.port}")
+    '';
+
+})
diff --git a/nixpkgs/nixos/tests/boot.nix b/nixpkgs/nixos/tests/boot.nix
index ec2a9f6527c9..56f72dddf526 100644
--- a/nixpkgs/nixos/tests/boot.nix
+++ b/nixpkgs/nixos/tests/boot.nix
@@ -4,10 +4,41 @@
 }:
 
 with import ../lib/testing-python.nix { inherit system pkgs; };
-with pkgs.lib;
 
 let
-  qemu-common = import ../lib/qemu-common.nix { inherit (pkgs) lib pkgs; };
+  lib = pkgs.lib;
+  qemu-common = import ../lib/qemu-common.nix { inherit lib pkgs; };
+
+  mkStartCommand = {
+    memory ? 2048,
+    cdrom ? null,
+    usb ? null,
+    pxe ? null,
+    uboot ? false,
+    uefi ? false,
+    extraFlags ? [],
+  }: let
+    qemu = qemu-common.qemuBinary pkgs.qemu_test;
+
+    flags = [
+      "-m" (toString memory)
+      "-netdev" ("user,id=net0" + (lib.optionalString (pxe != null) ",tftp=${pxe},bootfile=netboot.ipxe"))
+      "-device" ("virtio-net-pci,netdev=net0" + (lib.optionalString (pxe != null && uefi) ",romfile=${pkgs.ipxe}/ipxe.efirom"))
+    ] ++ lib.optionals (cdrom != null) [
+      "-cdrom" cdrom
+    ] ++ lib.optionals (usb != null) [
+      "-device" "usb-ehci"
+      "-drive" "id=usbdisk,file=${usb},if=none,readonly"
+      "-device" "usb-storage,drive=usbdisk"
+    ] ++ lib.optionals (pxe != null) [
+      "-boot" "order=n"
+    ] ++ lib.optionals uefi [
+      "-drive" "if=pflash,format=raw,unit=0,readonly=on,file=${pkgs.OVMF.firmware}"
+      "-drive" "if=pflash,format=raw,unit=1,readonly=on,file=${pkgs.OVMF.variables}"
+    ] ++ extraFlags;
+
+    flagsStr = lib.concatStringsSep " " flags;
+  in "${qemu} ${flagsStr}";
 
   iso =
     (import ../lib/eval-config.nix {
@@ -28,21 +59,16 @@ let
       ];
     }).config.system.build.sdImage;
 
-  pythonDict = params: "\n    {\n        ${concatStringsSep ",\n        " (mapAttrsToList (name: param: "\"${name}\": \"${param}\"") params)},\n    }\n";
-
-  makeBootTest = name: extraConfig:
+  makeBootTest = name: config:
     let
-      machineConfig = pythonDict ({
-        qemuBinary = qemu-common.qemuBinary pkgs.qemu_test;
-        qemuFlags = "-m 768";
-      } // extraConfig);
+      startCommand = mkStartCommand config;
     in
       makeTest {
         name = "boot-" + name;
         nodes = { };
         testScript =
           ''
-            machine = create_machine(${machineConfig})
+            machine = create_machine("${startCommand}")
             machine.start()
             machine.wait_for_unit("multi-user.target")
             machine.succeed("nix store verify --no-trust -r --option experimental-features nix-command /run/current-system")
@@ -73,43 +99,35 @@ let
           config.system.build.netbootIpxeScript
         ];
       };
-      machineConfig = pythonDict ({
-        qemuBinary = qemu-common.qemuBinary pkgs.qemu_test;
-        qemuFlags = "-boot order=n -m 2000";
-        netBackendArgs = "tftp=${ipxeBootDir},bootfile=netboot.ipxe";
+      startCommand = mkStartCommand ({
+        pxe = ipxeBootDir;
       } // extraConfig);
     in
       makeTest {
         name = "boot-netboot-" + name;
         nodes = { };
         testScript = ''
-            machine = create_machine(${machineConfig})
+            machine = create_machine("${startCommand}")
             machine.start()
             machine.wait_for_unit("multi-user.target")
             machine.shutdown()
           '';
       };
-  uefiBinary = {
-    x86_64-linux = "${pkgs.OVMF.fd}/FV/OVMF.fd";
-    aarch64-linux = "${pkgs.OVMF.fd}/FV/QEMU_EFI.fd";
-  }.${pkgs.stdenv.hostPlatform.system};
 in {
     uefiCdrom = makeBootTest "uefi-cdrom" {
+      uefi = true;
       cdrom = "${iso}/iso/${iso.isoName}";
-      bios = uefiBinary;
     };
 
     uefiUsb = makeBootTest "uefi-usb" {
+      uefi = true;
       usb = "${iso}/iso/${iso.isoName}";
-      bios = uefiBinary;
     };
 
     uefiNetboot = makeNetbootTest "uefi" {
-      bios = uefiBinary;
-      # Custom ROM is needed for EFI PXE boot. I failed to understand exactly why, because QEMU should still use iPXE for EFI.
-      netFrontendArgs = "romfile=${pkgs.ipxe}/ipxe.efirom";
+      uefi = true;
     };
-} // optionalAttrs (pkgs.stdenv.hostPlatform.system == "x86_64-linux") {
+} // lib.optionalAttrs (pkgs.stdenv.hostPlatform.system == "x86_64-linux") {
     biosCdrom = makeBootTest "bios-cdrom" {
       cdrom = "${iso}/iso/${iso.isoName}";
     };
@@ -124,9 +142,12 @@ in {
       sdImage = "${sd}/sd-image/${sd.imageName}";
       mutableImage = "/tmp/linked-image.qcow2";
 
-      machineConfig = pythonDict {
-        bios = "${pkgs.ubootQemuX86}/u-boot.rom";
-        qemuFlags = "-m 768 -machine type=pc,accel=tcg -drive file=${mutableImage},if=ide,format=qcow2";
+      startCommand = mkStartCommand {
+        extraFlags = [
+          "-bios" "${pkgs.ubootQemuX86}/u-boot.rom"
+          "-machine" "type=pc,accel=tcg"
+          "-drive" "file=${mutableImage},if=virtio"
+        ];
       };
     in makeTest {
       name = "boot-uboot-extlinux";
@@ -138,11 +159,14 @@ in {
         if os.system("qemu-img create -f qcow2 -F raw -b ${sdImage} ${mutableImage}") != 0:
             raise RuntimeError("Could not create mutable linked image")
 
-        machine = create_machine(${machineConfig})
+        machine = create_machine("${startCommand}")
         machine.start()
         machine.wait_for_unit("multi-user.target")
         machine.succeed("nix store verify -r --no-trust --option experimental-features nix-command /run/current-system")
         machine.shutdown()
       '';
+
+      # kernel can't find rootfs after boot - investigate?
+      meta.broken = true;
     };
 }
diff --git a/nixpkgs/nixos/tests/common/ec2.nix b/nixpkgs/nixos/tests/common/ec2.nix
index 1a64c464039b..82922102f07b 100644
--- a/nixpkgs/nixos/tests/common/ec2.nix
+++ b/nixpkgs/nixos/tests/common/ec2.nix
@@ -61,7 +61,7 @@ with pkgs.lib;
             + " $QEMU_OPTS"
         )
 
-        machine = create_machine({"startCommand": start_command})
+        machine = create_machine(start_command)
         try:
       '' + indentLines script + ''
         finally:
diff --git a/nixpkgs/nixos/tests/consul.nix b/nixpkgs/nixos/tests/consul.nix
index 6233234ff083..c819312068dc 100644
--- a/nixpkgs/nixos/tests/consul.nix
+++ b/nixpkgs/nixos/tests/consul.nix
@@ -42,6 +42,8 @@ let
         ];
         networking.firewall = firewallSettings;
 
+        nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "consul" ];
+
         services.consul = {
           enable = true;
           inherit webUi;
@@ -65,6 +67,8 @@ let
         ];
         networking.firewall = firewallSettings;
 
+        nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "consul" ];
+
         services.consul =
           assert builtins.elem thisConsensusServerHost allConsensusServerHosts;
           {
diff --git a/nixpkgs/nixos/tests/docker-tools.nix b/nixpkgs/nixos/tests/docker-tools.nix
index f252eb9ff61e..7d91076600f9 100644
--- a/nixpkgs/nixos/tests/docker-tools.nix
+++ b/nixpkgs/nixos/tests/docker-tools.nix
@@ -58,6 +58,20 @@ let
       '';
       config.Cmd = [ "${pkgs.coreutils}/bin/stat" "-c" "%u:%g" "/testfile" ];
     };
+
+  nonRootTestImage =
+    pkgs.dockerTools.streamLayeredImage rec {
+      name = "non-root-test";
+      tag = "latest";
+      uid = 1000;
+      gid = 1000;
+      uname = "user";
+      gname = "user";
+      config = {
+        User = "user";
+        Cmd = [ "${pkgs.coreutils}/bin/stat" "-c" "%u:%g" "${pkgs.coreutils}/bin/stat" ];
+      };
+    };
 in {
   name = "docker-tools";
   meta = with pkgs.lib.maintainers; {
@@ -181,7 +195,7 @@ in {
     ):
         docker.succeed(
             "docker load --input='${examples.bashLayeredWithUser}'",
-            "docker run -u somebody --rm ${examples.bashLayeredWithUser.imageName} ${pkgs.bash}/bin/bash -c 'test 555 == $(stat --format=%a /nix) && test 555 == $(stat --format=%a /nix/store)'",
+            "docker run -u somebody --rm ${examples.bashLayeredWithUser.imageName} ${pkgs.bash}/bin/bash -c 'test 755 == $(stat --format=%a /nix) && test 755 == $(stat --format=%a /nix/store)'",
             "docker rmi ${examples.bashLayeredWithUser.imageName}",
         )
 
@@ -604,5 +618,11 @@ in {
             "${chownTestImage} | docker load",
             "docker run --rm ${chownTestImage.imageName} | diff /dev/stdin <(echo 12345:12345)"
         )
+
+    with subtest("streamLayeredImage: with non-root user"):
+        docker.succeed(
+            "${nonRootTestImage} | docker load",
+            "docker run --rm ${chownTestImage.imageName} | diff /dev/stdin <(echo 12345:12345)"
+        )
   '';
 })
diff --git a/nixpkgs/nixos/tests/incus/container.nix b/nixpkgs/nixos/tests/incus/container.nix
index 0f42d16f133d..eb00429e53fe 100644
--- a/nixpkgs/nixos/tests/incus/container.nix
+++ b/nixpkgs/nixos/tests/incus/container.nix
@@ -5,6 +5,8 @@ let
     configuration = {
       # Building documentation makes the test unnecessarily take a longer time:
       documentation.enable = lib.mkForce false;
+
+      boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
     } // extra;
   };
 
@@ -40,6 +42,12 @@ in
         with machine.nested("Waiting for instance to start and be usable"):
           retry(instance_is_up)
 
+    def check_sysctl(instance):
+        with subtest("systemd sysctl settings are applied"):
+            machine.succeed(f"incus exec {instance} -- systemctl status systemd-sysctl")
+            sysctl = machine.succeed(f"incus exec {instance} -- sysctl net.ipv4.ip_forward").strip().split(" ")[-1]
+            assert "1" == sysctl, f"systemd-sysctl configuration not correctly applied, {sysctl} != 1"
+
     machine.wait_for_unit("incus.service")
 
     # no preseed should mean no service
@@ -83,6 +91,7 @@ in
     with subtest("lxc-container generator configures plain container"):
         # reuse the existing container to save some time
         machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
+        check_sysctl("container")
 
     with subtest("lxc-container generator configures nested container"):
         machine.execute("incus delete --force container")
@@ -94,6 +103,8 @@ in
         target = machine.succeed("incus exec container readlink -- -f /run/systemd/system/systemd-binfmt.service").strip()
         assert target == "/dev/null", "lxc generator did not correctly mask /run/systemd/system/systemd-binfmt.service"
 
+        check_sysctl("container")
+
     with subtest("lxc-container generator configures privileged container"):
         machine.execute("incus delete --force container")
         machine.succeed("incus launch nixos container --config security.privileged=true")
@@ -101,5 +112,7 @@ in
           retry(instance_is_up)
 
         machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
+
+        check_sysctl("container")
   '';
 })
diff --git a/nixpkgs/nixos/tests/installer.nix b/nixpkgs/nixos/tests/installer.nix
index b6cb6a0c6d45..97bb7f8def59 100644
--- a/nixpkgs/nixos/tests/installer.nix
+++ b/nixpkgs/nixos/tests/installer.nix
@@ -83,46 +83,34 @@ let
                   , postInstallCommands, preBootCommands, postBootCommands, extraConfig
                   , testSpecialisationConfig, testFlakeSwitch, clevisTest, clevisFallbackTest
                   }:
-    let iface = "virtio";
-        isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
-        bios  = if pkgs.stdenv.isAarch64 then "QEMU_EFI.fd" else "OVMF.fd";
+    let
+      qemu-common = import ../lib/qemu-common.nix { inherit (pkgs) lib pkgs; };
+      isEfi = bootLoader == "systemd-boot" || (bootLoader == "grub" && grubUseEfi);
+      qemu = qemu-common.qemuBinary pkgs.qemu_test;
     in if !isEfi && !pkgs.stdenv.hostPlatform.isx86 then ''
       machine.succeed("true")
     '' else ''
+      import os
       import subprocess
-      tpm_folder = os.environ['NIX_BUILD_TOP']
-      def assemble_qemu_flags():
-          flags = "-cpu max"
-          ${if (system == "x86_64-linux" || system == "i686-linux")
-            then ''flags += " -m 1024"''
-            else ''flags += " -m 768 -enable-kvm -machine virt,gic-version=host"''
-          }
-          ${optionalString clevisTest ''flags += f" -chardev socket,id=chrtpm,path={tpm_folder}/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"''}
-          ${optionalString clevisTest ''flags += " -device virtio-net-pci,netdev=vlan1,mac=52:54:00:12:11:02 -netdev vde,id=vlan1,sock=\"$QEMU_VDE_SOCKET_1\""''}
-          return flags
 
+      tpm_folder = os.environ['NIX_BUILD_TOP']
 
-      qemu_flags = {"qemuFlags": assemble_qemu_flags()}
+      startcommand = "${qemu} -m 2048"
 
-      import os
+      ${optionalString clevisTest ''
+        startcommand += f" -chardev socket,id=chrtpm,path={tpm_folder}/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"
+        startcommand += " -device virtio-net-pci,netdev=vlan1,mac=52:54:00:12:11:02 -netdev vde,id=vlan1,sock=\"$QEMU_VDE_SOCKET_1\""
+      ''}
+      ${optionalString isEfi ''
+        startcommand +=" -drive if=pflash,format=raw,unit=0,readonly=on,file=${pkgs.OVMF.firmware} -drive if=pflash,format=raw,unit=1,readonly=on,file=${pkgs.OVMF.variables}"
+      ''}
 
       image_dir = machine.state_dir
       disk_image = os.path.join(image_dir, "machine.qcow2")
-
-      hd_flags = {
-          "hdaInterface": "${iface}",
-          "hda": disk_image,
-      }
-      ${optionalString isEfi ''
-        hd_flags.update(
-            bios="${pkgs.OVMF.fd}/FV/${bios}"
-        )''
-      }
-      default_flags = {**hd_flags, **qemu_flags}
-
+      startcommand += f" -drive file={disk_image},if=virtio,werror=report"
 
       def create_machine_named(name):
-          return create_machine({**default_flags, "name": name})
+          return create_machine(startcommand, name=name)
 
       class Tpm:
             def __init__(self):
@@ -471,7 +459,7 @@ let
           # builds stuff in the VM, needs more juice
           virtualisation.diskSize = 8 * 1024;
           virtualisation.cores = 8;
-          virtualisation.memorySize = 1536;
+          virtualisation.memorySize = 2048;
 
           boot.initrd.systemd.enable = systemdStage1;
 
diff --git a/nixpkgs/nixos/tests/k3s/default.nix b/nixpkgs/nixos/tests/k3s/default.nix
index e168f8233c76..512dc06ee77e 100644
--- a/nixpkgs/nixos/tests/k3s/default.nix
+++ b/nixpkgs/nixos/tests/k3s/default.nix
@@ -6,6 +6,11 @@ let
   allK3s = lib.filterAttrs (n: _: lib.strings.hasPrefix "k3s_" n) pkgs;
 in
 {
+  # Testing K3s with Etcd backend
+  etcd = lib.mapAttrs (_: k3s: import ./etcd.nix {
+    inherit system pkgs k3s;
+    inherit (pkgs) etcd;
+  }) allK3s;
   # Run a single node k3s cluster and verify a pod can run
   single-node = lib.mapAttrs (_: k3s: import ./single-node.nix { inherit system pkgs k3s; }) allK3s;
   # Run a multi-node k3s cluster and verify pod networking works across nodes
diff --git a/nixpkgs/nixos/tests/k3s/etcd.nix b/nixpkgs/nixos/tests/k3s/etcd.nix
new file mode 100644
index 000000000000..d6e9a294adb1
--- /dev/null
+++ b/nixpkgs/nixos/tests/k3s/etcd.nix
@@ -0,0 +1,100 @@
+import ../make-test-python.nix ({ pkgs, lib, k3s, etcd, ... }:
+
+{
+  name = "${k3s.name}-etcd";
+
+  nodes = {
+
+    etcd = { ... }: {
+      services.etcd = {
+        enable = true;
+        openFirewall = true;
+        listenClientUrls = [ "http://192.168.1.1:2379" "http://127.0.0.1:2379" ];
+        listenPeerUrls = [ "http://192.168.1.1:2380" ];
+        initialAdvertisePeerUrls = [ "http://192.168.1.1:2380" ];
+        initialCluster = [ "etcd=http://192.168.1.1:2380" ];
+      };
+      networking = {
+        useDHCP = false;
+        defaultGateway = "192.168.1.1";
+        interfaces.eth1.ipv4.addresses = pkgs.lib.mkForce [
+          { address = "192.168.1.1"; prefixLength = 24; }
+        ];
+      };
+    };
+
+    k3s = { pkgs, ... }: {
+      environment.systemPackages = with pkgs; [ jq ];
+      # k3s uses enough resources the default vm fails.
+      virtualisation.memorySize = 1536;
+      virtualisation.diskSize = 4096;
+
+      services.k3s = {
+        enable = true;
+        role = "server";
+        extraFlags = builtins.toString [
+          "--datastore-endpoint=\"http://192.168.1.1:2379\""
+          "--disable" "coredns"
+          "--disable" "local-storage"
+          "--disable" "metrics-server"
+          "--disable" "servicelb"
+          "--disable" "traefik"
+          "--node-ip" "192.168.1.2"
+        ];
+      };
+
+      networking = {
+        firewall = {
+          allowedTCPPorts = [ 2379 2380 6443 ];
+          allowedUDPPorts = [ 8472 ];
+        };
+        useDHCP = false;
+        defaultGateway = "192.168.1.2";
+        interfaces.eth1.ipv4.addresses = pkgs.lib.mkForce [
+          { address = "192.168.1.2"; prefixLength = 24; }
+        ];
+      };
+    };
+
+  };
+
+  testScript = ''
+    with subtest("should start etcd"):
+        etcd.start()
+        etcd.wait_for_unit("etcd.service")
+
+    with subtest("should wait for etcdctl endpoint status to succeed"):
+        etcd.wait_until_succeeds("etcdctl endpoint status")
+
+    with subtest("should start k3s"):
+        k3s.start()
+        k3s.wait_for_unit("k3s")
+
+    with subtest("should test if kubectl works"):
+        k3s.wait_until_succeeds("k3s kubectl get node")
+
+    with subtest("should wait for service account to show up; takes a sec"):
+        k3s.wait_until_succeeds("k3s kubectl get serviceaccount default")
+
+    with subtest("should create a sample secret object"):
+        k3s.succeed("k3s kubectl create secret generic nixossecret --from-literal thesecret=abacadabra")
+
+    with subtest("should check if secret is correct"):
+        k3s.wait_until_succeeds("[[ $(kubectl get secrets nixossecret -o json | jq -r .data.thesecret | base64 -d) == abacadabra ]]")
+
+    with subtest("should have a secret in database"):
+        etcd.wait_until_succeeds("[[ $(etcdctl get /registry/secrets/default/nixossecret | head -c1 | wc -c) -ne 0 ]]")
+
+    with subtest("should delete the secret"):
+        k3s.succeed("k3s kubectl delete secret nixossecret")
+
+    with subtest("should not have a secret in database"):
+        etcd.wait_until_fails("[[ $(etcdctl get /registry/secrets/default/nixossecret | head -c1 | wc -c) -ne 0 ]]")
+
+    with subtest("should shutdown k3s and etcd"):
+        k3s.shutdown()
+        etcd.shutdown()
+  '';
+
+  meta.maintainers = etcd.meta.maintainers ++ k3s.meta.maintainers;
+})
diff --git a/nixpkgs/nixos/tests/kernel-generic.nix b/nixpkgs/nixos/tests/kernel-generic.nix
index 0dcab39f3fad..9714a94382ee 100644
--- a/nixpkgs/nixos/tests/kernel-generic.nix
+++ b/nixpkgs/nixos/tests/kernel-generic.nix
@@ -30,7 +30,6 @@ let
       linux_5_10_hardened
       linux_5_15_hardened
       linux_6_1_hardened
-      linux_6_5_hardened
       linux_6_6_hardened
       linux_6_7_hardened
       linux_rt_5_4
diff --git a/nixpkgs/nixos/tests/lomiri-system-settings.nix b/nixpkgs/nixos/tests/lomiri-system-settings.nix
new file mode 100644
index 000000000000..867fc14797e7
--- /dev/null
+++ b/nixpkgs/nixos/tests/lomiri-system-settings.nix
@@ -0,0 +1,99 @@
+import ./make-test-python.nix ({ pkgs, lib, ... }: {
+  name = "lomiri-system-settings-standalone";
+  meta.maintainers = lib.teams.lomiri.members;
+
+  nodes.machine = { config, pkgs, ... }: {
+    imports = [
+      ./common/x11.nix
+    ];
+
+    services.xserver.enable = true;
+
+    environment = {
+      systemPackages = with pkgs.lomiri; [
+        suru-icon-theme
+        lomiri-system-settings
+      ];
+      variables = {
+        UITK_ICON_THEME = "suru";
+      };
+    };
+
+    i18n.supportedLocales = [ "all" ];
+
+    fonts.packages = with pkgs; [
+      # Intended font & helps with OCR
+      ubuntu_font_family
+    ];
+
+    services.upower.enable = true;
+  };
+
+  enableOCR = true;
+
+  testScript = let
+    settingsPages = [
+      # Base pages
+      { name = "wifi"; type = "internal"; element = "networks"; }
+      { name = "bluetooth"; type = "internal"; element = "discoverable|None detected"; }
+      # only text we can really look for with VPN is on a button, OCR on CI struggles with it
+      { name = "vpn"; type = "internal"; element = "Add|Manual|Configuration"; skipOCR = true; }
+      { name = "appearance"; type = "internal"; element = "Background image|blur effects"; }
+      { name = "desktop"; type = "internal"; element = "workspaces|Icon size"; }
+      { name = "sound"; type = "internal"; element = "Silent Mode|Message sound"; }
+      { name = "language"; type = "internal"; element = "Display language|External keyboard"; }
+      { name = "notification"; type = "internal"; element = "Apps that notify"; }
+      { name = "gestures"; type = "internal"; element = "Edge drag"; }
+      { name = "mouse"; type = "internal"; element = "Cursor speed|Wheel scrolling speed"; }
+      { name = "timedate"; type = "internal"; element = "Time zone|Set the time and date"; }
+
+      # External plugins
+      { name = "security-privacy"; type = "external"; element = "Locking|unlocking|permissions"; elementLocalised = "Sperren|Entsperren|Berechtigungen"; }
+    ];
+  in
+  ''
+    machine.wait_for_x()
+
+    with subtest("lomiri system settings launches"):
+        machine.execute("lomiri-system-settings >&2 &")
+        machine.wait_for_text("System Settings")
+        machine.screenshot("lss_open")
+
+    # Move focus to start of plugins list for following list of tests
+    machine.send_key("tab")
+    machine.send_key("tab")
+    machine.screenshot("lss_focus")
+
+    # tab through & open all sub-menus, to make sure none of them fail
+  '' + (lib.strings.concatMapStringsSep "\n" (page: ''
+    machine.send_key("tab")
+    machine.send_key("kp_enter")
+  ''
+  + lib.optionalString (!(page.skipOCR or false)) ''
+    with subtest("lomiri system settings ${page.name} works"):
+        machine.wait_for_text(r"(${page.element})")
+        machine.screenshot("lss_page_${page.name}")
+  '') settingsPages) + ''
+
+    machine.execute("pkill -f lomiri-system-settings")
+
+    with subtest("lomiri system settings localisation works"):
+        machine.execute("env LANG=de_DE.UTF-8 lomiri-system-settings >&2 &")
+        machine.wait_for_text("Systemeinstellungen")
+        machine.screenshot("lss_localised_open")
+
+    # Move focus to start of plugins list for following list of tests
+    machine.send_key("tab")
+    machine.send_key("tab")
+    machine.screenshot("lss_focus_localised")
+
+  '' + (lib.strings.concatMapStringsSep "\n" (page: ''
+    machine.send_key("tab")
+    machine.send_key("kp_enter")
+  '' + lib.optionalString (page.type == "external") ''
+    with subtest("lomiri system settings ${page.name} localisation works"):
+        machine.wait_for_text(r"(${page.elementLocalised})")
+        machine.screenshot("lss_localised_page_${page.name}")
+  '') settingsPages) + ''
+  '';
+})
diff --git a/nixpkgs/nixos/tests/mealie.nix b/nixpkgs/nixos/tests/mealie.nix
new file mode 100644
index 000000000000..88f749c71294
--- /dev/null
+++ b/nixpkgs/nixos/tests/mealie.nix
@@ -0,0 +1,24 @@
+import ./make-test-python.nix ({ pkgs, ...} :
+
+{
+  name = "mealie";
+  meta = with pkgs.lib.maintainers; {
+    maintainers = [ litchipi ];
+  };
+
+  nodes = {
+    server = {
+      services.mealie = {
+        enable = true;
+        port = 9001;
+      };
+    };
+  };
+
+  testScript = ''
+    start_all()
+    server.wait_for_unit("mealie.service")
+    server.wait_for_open_port(9001)
+    server.succeed("curl --fail http://localhost:9001")
+  '';
+})
diff --git a/nixpkgs/nixos/tests/monado.nix b/nixpkgs/nixos/tests/monado.nix
new file mode 100644
index 000000000000..8368950951e7
--- /dev/null
+++ b/nixpkgs/nixos/tests/monado.nix
@@ -0,0 +1,39 @@
+import ./make-test-python.nix ({ pkgs, ... }: {
+  name = "monado";
+
+  nodes.machine =
+    { pkgs, ... }:
+
+    {
+      hardware.opengl.enable = true;
+      users.users.alice = {
+        isNormalUser = true;
+        uid = 1000;
+      };
+
+      services.monado = {
+        enable = true;
+        defaultRuntime = true;
+      };
+      # Stop Monado from probing for any hardware
+      systemd.user.services.monado.environment.SIMULATED_ENABLE = "1";
+
+      environment.systemPackages = with pkgs; [ openxr-loader ];
+    };
+
+  testScript = { nodes, ... }:
+    let
+      userId = toString nodes.machine.users.users.alice.uid;
+      runtimePath = "/run/user/${userId}";
+    in
+    ''
+      machine.succeed("loginctl enable-linger alice")
+      machine.wait_for_unit("user@${userId}.service")
+
+      machine.wait_for_unit("monado.socket", "alice")
+      machine.systemctl("start monado.service", "alice")
+      machine.wait_for_unit("monado.service", "alice")
+
+      machine.succeed("su -- alice -c env XDG_RUNTIME_DIR=${runtimePath} openxr_runtime_list")
+    '';
+})
diff --git a/nixpkgs/nixos/tests/plasma6.nix b/nixpkgs/nixos/tests/plasma6.nix
new file mode 100644
index 000000000000..ec5b3f24ef74
--- /dev/null
+++ b/nixpkgs/nixos/tests/plasma6.nix
@@ -0,0 +1,64 @@
+import ./make-test-python.nix ({ pkgs, ...} :
+
+{
+  name = "plasma6";
+  meta = with pkgs.lib.maintainers; {
+    maintainers = [ k900 ];
+  };
+
+  nodes.machine = { ... }:
+
+  {
+    imports = [ ./common/user-account.nix ];
+    services.xserver.enable = true;
+    services.xserver.displayManager.sddm.enable = true;
+    # FIXME: this should be testing Wayland
+    services.xserver.displayManager.defaultSession = "plasmax11";
+    services.xserver.desktopManager.plasma6.enable = true;
+    environment.plasma6.excludePackages = [ pkgs.kdePackages.elisa ];
+    services.xserver.displayManager.autoLogin = {
+      enable = true;
+      user = "alice";
+    };
+  };
+
+  testScript = { nodes, ... }: let
+    user = nodes.machine.users.users.alice;
+    xdo = "${pkgs.xdotool}/bin/xdotool";
+  in ''
+    with subtest("Wait for login"):
+        start_all()
+        machine.wait_for_file("/tmp/xauth_*")
+        machine.succeed("xauth merge /tmp/xauth_*")
+
+    with subtest("Check plasmashell started"):
+        machine.wait_until_succeeds("pgrep plasmashell")
+        machine.wait_for_window("^Desktop ")
+
+    with subtest("Check that KDED is running"):
+        machine.succeed("pgrep kded6")
+
+    with subtest("Ensure Elisa is not installed"):
+        machine.fail("which elisa")
+
+    machine.succeed("su - ${user.name} -c 'xauth merge /tmp/xauth_*'")
+
+    with subtest("Run Dolphin"):
+        machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 dolphin >&2 &'")
+        machine.wait_for_window(" Dolphin")
+
+    with subtest("Run Konsole"):
+        machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 konsole >&2 &'")
+        machine.wait_for_window("Konsole")
+
+    with subtest("Run systemsettings"):
+        machine.execute("su - ${user.name} -c 'DISPLAY=:0.0 systemsettings >&2 &'")
+        machine.wait_for_window("Settings")
+
+    with subtest("Wait to get a screenshot"):
+        machine.execute(
+            "${xdo} key Alt+F1 sleep 10"
+        )
+        machine.screenshot("screen")
+  '';
+})
diff --git a/nixpkgs/nixos/tests/searx.nix b/nixpkgs/nixos/tests/searx.nix
index 2f808cb65266..02a88f690db7 100644
--- a/nixpkgs/nixos/tests/searx.nix
+++ b/nixpkgs/nixos/tests/searx.nix
@@ -36,7 +36,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
   };
 
   # fancy setup: run in uWSGI and use nginx as proxy
-  nodes.fancy = { ... }: {
+  nodes.fancy = { config, ... }: {
     imports = [ ../modules/profiles/minimal.nix ];
 
     services.searx = {
@@ -65,7 +65,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
           include ${pkgs.nginx}/conf/uwsgi_params;
           uwsgi_pass unix:/run/searx/uwsgi.sock;
         '';
-      locations."/searx/static/".alias = "${pkgs.searx}/share/static/";
+      locations."/searx/static/".alias = "${config.services.searx.package}/share/static/";
     };
 
     # allow nginx access to the searx socket
@@ -108,7 +108,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
               "${pkgs.curl}/bin/curl --fail http://localhost/searx >&2"
           )
           fancy.succeed(
-              "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/oscar/js/bootstrap.min.js >&2"
+              "${pkgs.curl}/bin/curl --fail http://localhost/searx/static/themes/simple/js/leaflet.js >&2"
           )
     '';
 })
diff --git a/nixpkgs/nixos/tests/systemd-boot.nix b/nixpkgs/nixos/tests/systemd-boot.nix
index ce3245f3d862..1b7e83253e59 100644
--- a/nixpkgs/nixos/tests/systemd-boot.nix
+++ b/nixpkgs/nixos/tests/systemd-boot.nix
@@ -14,6 +14,72 @@ let
     boot.loader.efi.canTouchEfiVariables = true;
     environment.systemPackages = [ pkgs.efibootmgr ];
   };
+
+  commonXbootldr = { config, lib, pkgs, ... }:
+    let
+      diskImage = import ../lib/make-disk-image.nix {
+        inherit config lib pkgs;
+        label = "nixos";
+        format = "qcow2";
+        partitionTableType = "efixbootldr";
+        touchEFIVars = true;
+        installBootLoader = true;
+      };
+    in
+    {
+      imports = [ common ];
+      virtualisation.useBootLoader = lib.mkForce false; # Only way to tell qemu-vm not to create the default system image
+      virtualisation.directBoot.enable = false; # But don't direct boot either because we're testing systemd-boot
+
+      system.build.diskImage = diskImage; # Use custom disk image with an XBOOTLDR partition
+      virtualisation.efi.variables = "${diskImage}/efi-vars.fd";
+
+      virtualisation.useDefaultFilesystems = false; # Needs custom setup for `diskImage`
+      virtualisation.bootPartition = null;
+      virtualisation.fileSystems = {
+        "/" = {
+          device = "/dev/vda3";
+          fsType = "ext4";
+        };
+        "/boot" = {
+          device = "/dev/vda2";
+          fsType = "vfat";
+          noCheck = true;
+        };
+        "/efi" = {
+          device = "/dev/vda1";
+          fsType = "vfat";
+          noCheck = true;
+        };
+      };
+
+      boot.loader.systemd-boot.enable = true;
+      boot.loader.efi.efiSysMountPoint = "/efi";
+      boot.loader.systemd-boot.xbootldrMountPoint = "/boot";
+    };
+
+  customDiskImage = nodes: ''
+    import os
+    import subprocess
+    import tempfile
+
+    tmp_disk_image = tempfile.NamedTemporaryFile()
+
+    subprocess.run([
+      "${nodes.machine.virtualisation.qemu.package}/bin/qemu-img",
+      "create",
+      "-f",
+      "qcow2",
+      "-b",
+      "${nodes.machine.system.build.diskImage}/nixos.qcow2",
+      "-F",
+      "qcow2",
+      tmp_disk_image.name,
+    ])
+
+    # Set NIX_DISK_IMAGE so that the qemu script finds the right disk image.
+    os.environ['NIX_DISK_IMAGE'] = tmp_disk_image.name
+  '';
 in
 {
   basic = makeTest {
@@ -65,6 +131,32 @@ in
     '';
   };
 
+  basicXbootldr = makeTest {
+    name = "systemd-boot-xbootldr";
+    meta.maintainers = with pkgs.lib.maintainers; [ sdht0 ];
+
+    nodes.machine = commonXbootldr;
+
+    testScript = { nodes, ... }: ''
+      ${customDiskImage nodes}
+
+      machine.start()
+      machine.wait_for_unit("multi-user.target")
+
+      machine.succeed("test -e /efi/EFI/systemd/systemd-bootx64.efi")
+      machine.succeed("test -e /boot/loader/entries/nixos-generation-1.conf")
+
+      # Ensure we actually booted using systemd-boot
+      # Magic number is the vendor UUID used by systemd-boot.
+      machine.succeed(
+          "test -e /sys/firmware/efi/efivars/LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f"
+      )
+
+      # "bootctl install" should have created an EFI entry
+      machine.succeed('efibootmgr | grep "Linux Boot Manager"')
+    '';
+  };
+
   # Check that specialisations create corresponding boot entries.
   specialisation = makeTest {
     name = "systemd-boot-specialisation";
@@ -184,6 +276,29 @@ in
     '';
   };
 
+  entryFilenameXbootldr = makeTest {
+    name = "systemd-boot-entry-filename-xbootldr";
+    meta.maintainers = with pkgs.lib.maintainers; [ sdht0 ];
+
+    nodes.machine = { pkgs, lib, ... }: {
+      imports = [ commonXbootldr ];
+      boot.loader.systemd-boot.memtest86.enable = true;
+      boot.loader.systemd-boot.memtest86.entryFilename = "apple.conf";
+    };
+
+    testScript = { nodes, ... }: ''
+      ${customDiskImage nodes}
+
+      machine.start()
+      machine.wait_for_unit("multi-user.target")
+
+      machine.succeed("test -e /efi/EFI/systemd/systemd-bootx64.efi")
+      machine.fail("test -e /boot/loader/entries/memtest86.conf")
+      machine.succeed("test -e /boot/loader/entries/apple.conf")
+      machine.succeed("test -e /boot/EFI/memtest86/memtest.efi")
+    '';
+  };
+
   extraEntries = makeTest {
     name = "systemd-boot-extra-entries";
     meta.maintainers = with pkgs.lib.maintainers; [ Enzime julienmalka ];
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/muse.nix b/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
index 1de73bc2ae88..9721c5bcc1cc 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/muse.nix
@@ -2,12 +2,12 @@
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-muse";
-  version = "0.0.30";
+  version = "0.0.33";
 
   src = fetchPypi {
     inherit version;
     pname = "Mopidy-Muse";
-    sha256 = "sha256-uFptv2niq8LVvEmMEteEN+RzghDiPC7z5EsAmxifDmw=";
+    sha256 = "sha256-CEPAPWtMrD+HljyqBB6EAyGVeOjzkvVoEywlE4XEJGs=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
index 474088572883..58b5f852a4c9 100644
--- a/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
+++ b/nixpkgs/pkgs/applications/audio/mopidy/spotify.nix
@@ -2,13 +2,13 @@
 
 pythonPackages.buildPythonApplication rec {
   pname = "mopidy-spotify";
-  version = "unstable-2024-02-11";
+  version = "unstable-2024-02-27";
 
   src = fetchFromGitHub {
     owner = "mopidy";
     repo = "mopidy-spotify";
-    rev = "fc6ffb3bbbae9224316e2a888db08ef56608966a";
-    hash = "sha256-V1SW8OyuBKLbUoQ4O5iiS4mq3MOXidcVKpiw125vxjQ=";
+    rev = "112d4abbb3f5b6477dab796f2824fa42196bfa0a";
+    hash = "sha256-RkXDzAbOOll3uCNZ2mFRnjqMkT/NkXOGjywLRTC9i60=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/audio/pyradio/default.nix b/nixpkgs/pkgs/applications/audio/pyradio/default.nix
index 2fc911222da9..e9ef64260f46 100644
--- a/nixpkgs/pkgs/applications/audio/pyradio/default.nix
+++ b/nixpkgs/pkgs/applications/audio/pyradio/default.nix
@@ -6,13 +6,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pyradio";
-  version = "0.9.1";
+  version = "0.9.2.25";
 
   src = fetchFromGitHub {
     owner = "coderholic";
-    repo = pname;
+    repo = "pyradio";
     rev = "refs/tags/${version}";
-    hash = "sha256-tu/qlrbTcUCIRF15x9ATKHH+LDy1OsGJpo5x+CerTKg=";
+    hash = "sha256-GkOp0iK84HDvVH8RmtmIKJ5EtQIECgZS5g8pmaIhUcc=";
   };
 
   nativeBuildInputs = [
@@ -20,9 +20,12 @@ python3Packages.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3Packages; [
-    requests
-    psutil
     dnspython
+    netifaces
+    psutil
+    python-dateutil
+    requests
+    rich
   ];
 
   checkPhase = ''
diff --git a/nixpkgs/pkgs/applications/audio/spotify/linux.nix b/nixpkgs/pkgs/applications/audio/spotify/linux.nix
index a73c00a8fb9d..202f8b4ceeec 100644
--- a/nixpkgs/pkgs/applications/audio/spotify/linux.nix
+++ b/nixpkgs/pkgs/applications/audio/spotify/linux.nix
@@ -14,14 +14,14 @@ let
   # If an update breaks things, one of those might have valuable info:
   # https://aur.archlinux.org/packages/spotify/
   # https://community.spotify.com/t5/Desktop-Linux
-  version = "1.2.26.1187.g36b715a1";
+  version = "1.2.31.1205.g4d59ad7c";
   # To get the latest stable revision:
   # curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
   # To get general information:
   # curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
   # More examples of api usage:
   # https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
-  rev = "74";
+  rev = "75";
 
   deps = [
     alsa-lib
@@ -87,7 +87,7 @@ stdenv.mkDerivation {
   # https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
   src = fetchurl {
     url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
-    hash = "sha512-Muurn4ih54oVTvLGuRfTPCgGSRImE8O0S5k7gZ4Utgrz3TKgVrthY9AXldP8v+qLcfIrrYwixJy2WGuur9E0jg==";
+    hash = "sha512-o4iLcbNqbsxo9YJMy0SXO7Udv4CMhhBcsf53UuqWKFFWY/jKVN+Lb+dB7Jf9+UowpmbrP44w97Oi+dnbfFXYjQ==";
   };
 
   nativeBuildInputs = [ wrapGAppsHook makeShellWrapper squashfsTools ];
diff --git a/nixpkgs/pkgs/applications/audio/squeezelite/default.nix b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
index 58261e4a9fcc..3fd633506b2d 100644
--- a/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
+++ b/nixpkgs/pkgs/applications/audio/squeezelite/default.nix
@@ -45,13 +45,13 @@ stdenv.mkDerivation {
   pname = binName;
   # versions are specified in `squeezelite.h`
   # see https://github.com/ralph-irving/squeezelite/issues/29
-  version = "2.0.0.1465";
+  version = "2.0.0.1468";
 
   src = fetchFromGitHub {
     owner = "ralph-irving";
     repo = "squeezelite";
-    rev = "6de9e229aa4cc7c3131ff855f3ead39581127090";
-    hash = "sha256-qSRmiX1+hbsWQsU9cRQ7QRkdXs5Q6aE7n7lxZsx8+Hs=";
+    rev = "fd89d67b1b9a17a6dd212be0c91d0417b440f60a";
+    hash = "sha256-wYVRlv+Y1jvdAGlj2zXKUhQBwWX9pGgNX6U71PsfySg=";
   };
 
   buildInputs = [ flac libmad libvorbis mpg123 ]
diff --git a/nixpkgs/pkgs/applications/backup/unifi-protect-backup/default.nix b/nixpkgs/pkgs/applications/backup/unifi-protect-backup/default.nix
index ee8ca7e486d7..4bd8546e8ad1 100644
--- a/nixpkgs/pkgs/applications/backup/unifi-protect-backup/default.nix
+++ b/nixpkgs/pkgs/applications/backup/unifi-protect-backup/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "unifi-protect-backup";
-  version = "0.10.4";
+  version = "0.10.5";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "ep1cman";
     repo = "unifi-protect-backup";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KT2saPpkAS/6X491i0Y8+jr8JPD51iQx+YGT5zRTtcU=";
+    hash = "sha256-la/YLodfAnVuM5On6u4dyDDUvaCotmDZtHdxgNnD31A=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/applications/blockchains/clightning/default.nix b/nixpkgs/pkgs/applications/blockchains/clightning/default.nix
index 9b0e069bef58..823c0a158d6d 100644
--- a/nixpkgs/pkgs/applications/blockchains/clightning/default.nix
+++ b/nixpkgs/pkgs/applications/blockchains/clightning/default.nix
@@ -22,11 +22,11 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "clightning";
-  version = "23.11.2";
+  version = "24.02";
 
   src = fetchurl {
     url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
-    sha256 = "sha256-n1+9Q493N/N5sr7sVpzhObtbKpEejsNUUhhbYPukveg=";
+    sha256 = "sha256-hud6NU2apAJNf2epNk+3nwTUmRy5DfNOYiGp402H4ik=";
   };
 
   # when building on darwin we need dawin.cctools to provide the correct libtool
diff --git a/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix b/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix
index 54b2a629bafd..d2e9094afa61 100644
--- a/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix
+++ b/nixpkgs/pkgs/applications/blockchains/ledger-live-desktop/default.nix
@@ -2,11 +2,11 @@
 
 let
   pname = "ledger-live-desktop";
-  version = "2.77.1";
+  version = "2.77.2";
 
   src = fetchurl {
     url = "https://download.live.ledger.com/${pname}-${version}-linux-x86_64.AppImage";
-    hash = "sha256-oXSgh2Vuq8SPdLagKz2gAwgg+GFhBRhd/8FnY7hxxJc=";
+    hash = "sha256-orIyfRs6TJgqGGLpl2tvoUtejsB0ni8xRK0SboP2LHw=";
   };
 
   appimageContents = appimageTools.extractType2 {
diff --git a/nixpkgs/pkgs/applications/blockchains/optimism/default.nix b/nixpkgs/pkgs/applications/blockchains/optimism/default.nix
index d95565d919de..f65ff172ab05 100644
--- a/nixpkgs/pkgs/applications/blockchains/optimism/default.nix
+++ b/nixpkgs/pkgs/applications/blockchains/optimism/default.nix
@@ -6,19 +6,19 @@
 
 buildGoModule rec {
   pname = "optimism";
-  version = "1.6.1";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "ethereum-optimism";
     repo = "optimism";
     rev = "op-node/v${version}";
-    hash = "sha256-ic5OHGxU/crq6IqqUnzAC+99KpCXUKFagnAKD4FtYBI=";
+    hash = "sha256-ru6/PDgsQOpOjKSolk3US6dV/NMH/lWEuJf5lmuR4SI=";
     fetchSubmodules = true;
   };
 
   subPackages = [ "op-node/cmd" "op-proposer/cmd" "op-batcher/cmd" ];
 
-  vendorHash = "sha256-zuATJ5FBdil9bHgkMf32WuTW6/99GIsGCzI5srP21m8=";
+  vendorHash = "sha256-BrlF8uwnD1hlrrpvc2JEsaPY4/+bGR1cXwjkkYANyiE=";
 
   buildInputs = [
     libpcap
diff --git a/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix b/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix
index 1a949c4dc0a3..4ceeeb9f6b5d 100644
--- a/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix
+++ b/nixpkgs/pkgs/applications/display-managers/lightdm/gtk-greeter.nix
@@ -16,12 +16,12 @@
 
 stdenv.mkDerivation rec {
   pname = "lightdm-gtk-greeter";
-  version = "2.0.8";
+  version = "2.0.9";
 
   src = fetchurl {
     # Release tarball differs from source tarball.
     url = "https://github.com/Xubuntu/lightdm-gtk-greeter/releases/download/lightdm-gtk-greeter-${version}/lightdm-gtk-greeter-${version}.tar.gz";
-    sha256 = "vvuzAMezT/IYZf28iBIB9zD8fFYOngHRfomelHcVBhM=";
+    hash = "sha256-yP3xmKqaP50NrQtI3+I8Ine3kQfo/PxillKQ8QgfZF0=";
   };
 
   nativeBuildInputs = [
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
 
   postInstall = ''
     substituteInPlace "$out/share/xgreeters/lightdm-gtk-greeter.desktop" \
-      --replace "Exec=lightdm-gtk-greeter" "Exec=$out/bin/lightdm-gtk-greeter"
+      --replace-fail "Exec=lightdm-gtk-greeter" "Exec=$out/bin/lightdm-gtk-greeter"
   '';
 
   passthru.xgreeters = linkFarm "lightdm-gtk-greeter-xgreeters" [{
diff --git a/nixpkgs/pkgs/applications/display-managers/sddm/default.nix b/nixpkgs/pkgs/applications/display-managers/sddm/default.nix
index 8c7e1745bcd3..2708ff060814 100644
--- a/nixpkgs/pkgs/applications/display-managers/sddm/default.nix
+++ b/nixpkgs/pkgs/applications/display-managers/sddm/default.nix
@@ -1,82 +1,37 @@
-{ stdenv, lib, fetchFromGitHub
-, cmake, pkg-config, qttools
-, libxcb, libXau, pam, qtbase, wrapQtAppsHook, qtdeclarative
-, qtquickcontrols2 ? null, systemd, xkeyboardconfig
+{
+  lib,
+  callPackage,
+  runCommand,
+  qtwayland,
+  wrapQtAppsHook,
+  unwrapped ? callPackage ./unwrapped.nix {},
+  withWayland ? false,
+  extraPackages ? [],
 }:
-let
-  isQt6 = lib.versions.major qtbase.version == "6";
-in stdenv.mkDerivation {
-  pname = "sddm";
-  version = "0.20.0-unstable-2023-12-29";
+runCommand "sddm-wrapped" {
+  inherit (unwrapped) version;
 
-  src = fetchFromGitHub {
-    owner = "sddm";
-    repo = "sddm";
-    rev = "501129294be1487f753482c29949fc1c19ef340e";
-    hash = "sha256-mLm987Ah0X9s0tBK2a45iERwYoh5JzWb3TFlSoxi8CA=";
-  };
-
-  patches = [
-    ./sddm-ignore-config-mtime.patch
-    ./sddm-default-session.patch
-  ];
-
-  postPatch = ''
-    substituteInPlace src/greeter/waylandkeyboardbackend.cpp \
-      --replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
-  '';
-
-  nativeBuildInputs = [ wrapQtAppsHook cmake pkg-config qttools ];
+  buildInputs = unwrapped.buildInputs ++ extraPackages ++ lib.optional withWayland qtwayland;
+  nativeBuildInputs = [ wrapQtAppsHook ];
 
-  buildInputs = [
-    libxcb
-    libXau
-    pam
-    qtbase
-    qtdeclarative
-    qtquickcontrols2
-    systemd
-  ];
-
-  cmakeFlags = [
-    (lib.cmakeBool "BUILD_WITH_QT6" isQt6)
-    "-DCONFIG_FILE=/etc/sddm.conf"
-    "-DCONFIG_DIR=/etc/sddm.conf.d"
-
-    # Set UID_MIN and UID_MAX so that the build script won't try
-    # to read them from /etc/login.defs (fails in chroot).
-    # The values come from NixOS; they may not be appropriate
-    # for running SDDM outside NixOS, but that configuration is
-    # not supported anyway.
-    "-DUID_MIN=1000"
-    "-DUID_MAX=29999"
+  passthru = {
+    inherit unwrapped;
+  };
 
-    # we still want to run the DM on VT 7 for the time being, as 1-6 are
-    # occupied by getties by default
-    "-DSDDM_INITIAL_VT=7"
+  meta = unwrapped.meta;
+} ''
+  mkdir -p $out/bin
 
-    "-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
-    "-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
-    "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
-    "-DSYSTEMD_SYSUSERS_DIR=${placeholder "out"}/lib/sysusers.d"
-    "-DSYSTEMD_TMPFILES_DIR=${placeholder "out"}/lib/tmpfiles.d"
-    "-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
-  ];
+  cd ${unwrapped}
 
-  postInstall = ''
-    # remove empty scripts
-    rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop"
-    for f in $out/share/sddm/themes/**/theme.conf ; do
-      substituteInPlace $f \
-        --replace 'background=' "background=$(dirname $f)/"
-    done
-  '';
+  for i in *; do
+    if [ "$i" == "bin" ]; then
+      continue
+    fi
+    ln -s ${unwrapped}/$i $out/$i
+  done
 
-  meta = with lib; {
-    description = "QML based X11 display manager";
-    homepage    = "https://github.com/sddm/sddm";
-    maintainers = with maintainers; [ abbradar ttuegel ];
-    platforms   = platforms.linux;
-    license     = licenses.gpl2Plus;
-  };
-}
+  for i in bin/*; do
+    makeQtWrapper ${unwrapped}/$i $out/$i --set SDDM_GREETER_DIR $out/bin
+  done
+''
diff --git a/nixpkgs/pkgs/applications/display-managers/sddm/greeter-path.patch b/nixpkgs/pkgs/applications/display-managers/sddm/greeter-path.patch
new file mode 100644
index 000000000000..b314108952a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/sddm/greeter-path.patch
@@ -0,0 +1,14 @@
+diff --git a/src/daemon/Greeter.cpp b/src/daemon/Greeter.cpp
+index 07fccde..dd22a07 100644
+--- a/src/daemon/Greeter.cpp
++++ b/src/daemon/Greeter.cpp
+@@ -83,7 +83,8 @@ namespace SDDM {
+     QString Greeter::greeterPathForQt(int qtVersion)
+     {
+         const QString suffix = qtVersion == 5 ? QString() : QStringLiteral("-qt%1").arg(qtVersion);
+-        return QStringLiteral(BIN_INSTALL_DIR "/sddm-greeter%1").arg(suffix);
++        const QString greeterDir = qEnvironmentVariable("SDDM_GREETER_DIR", QStringLiteral(BIN_INSTALL_DIR));
++        return QStringLiteral("%1/sddm-greeter%2").arg(greeterDir).arg(suffix);
+     }
+ 
+     bool Greeter::start() {
diff --git a/nixpkgs/pkgs/applications/display-managers/sddm/unwrapped.nix b/nixpkgs/pkgs/applications/display-managers/sddm/unwrapped.nix
new file mode 100644
index 000000000000..430e62a5ef4a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/display-managers/sddm/unwrapped.nix
@@ -0,0 +1,86 @@
+{ stdenv, lib, fetchFromGitHub
+, cmake, pkg-config, qttools
+, libxcb, libXau, pam, qtbase, qtdeclarative
+, qtquickcontrols2 ? null, systemd, xkeyboardconfig
+}:
+let
+  isQt6 = lib.versions.major qtbase.version == "6";
+in stdenv.mkDerivation(finalAttrs: {
+  pname = "sddm-unwrapped";
+  version = "0.21.0";
+
+  src = fetchFromGitHub {
+    owner = "sddm";
+    repo = "sddm";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-r5mnEWham2WnoEqRh5tBj/6rn5mN62ENOCmsLv2Ht+w=";
+  };
+
+  patches = [
+    ./greeter-path.patch
+    ./sddm-ignore-config-mtime.patch
+    ./sddm-default-session.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace src/greeter/waylandkeyboardbackend.cpp \
+      --replace "/usr/share/X11/xkb/rules/evdev.xml" "${xkeyboardconfig}/share/X11/xkb/rules/evdev.xml"
+  '';
+
+  nativeBuildInputs = [ cmake pkg-config qttools ];
+
+  buildInputs = [
+    libxcb
+    libXau
+    pam
+    qtbase
+    qtdeclarative
+    qtquickcontrols2
+    systemd
+  ];
+
+  # We will wrap manually later
+  dontWrapQtApps = true;
+
+  cmakeFlags = [
+    (lib.cmakeBool "BUILD_WITH_QT6" isQt6)
+    "-DCONFIG_FILE=/etc/sddm.conf"
+    "-DCONFIG_DIR=/etc/sddm.conf.d"
+
+    # Set UID_MIN and UID_MAX so that the build script won't try
+    # to read them from /etc/login.defs (fails in chroot).
+    # The values come from NixOS; they may not be appropriate
+    # for running SDDM outside NixOS, but that configuration is
+    # not supported anyway.
+    "-DUID_MIN=1000"
+    "-DUID_MAX=29999"
+
+    # we still want to run the DM on VT 7 for the time being, as 1-6 are
+    # occupied by getties by default
+    "-DSDDM_INITIAL_VT=7"
+
+    "-DQT_IMPORTS_DIR=${placeholder "out"}/${qtbase.qtQmlPrefix}"
+    "-DCMAKE_INSTALL_SYSCONFDIR=${placeholder "out"}/etc"
+    "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system"
+    "-DSYSTEMD_SYSUSERS_DIR=${placeholder "out"}/lib/sysusers.d"
+    "-DSYSTEMD_TMPFILES_DIR=${placeholder "out"}/lib/tmpfiles.d"
+    "-DDBUS_CONFIG_DIR=${placeholder "out"}/share/dbus-1/system.d"
+  ];
+
+  postInstall = ''
+    # remove empty scripts
+    rm "$out/share/sddm/scripts/Xsetup" "$out/share/sddm/scripts/Xstop"
+    for f in $out/share/sddm/themes/**/theme.conf ; do
+      substituteInPlace $f \
+        --replace 'background=' "background=$(dirname $f)/"
+    done
+  '';
+
+  meta = with lib; {
+    description = "QML based X11 display manager";
+    homepage    = "https://github.com/sddm/sddm";
+    maintainers = with maintainers; [ abbradar ttuegel k900 ];
+    platforms   = platforms.linux;
+    license     = licenses.gpl2Plus;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
index 1c698809791b..9a908039b8f5 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
+++ b/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages.nix
@@ -5,6 +5,8 @@ let
   inherit (self) callPackage;
 in
 {
+  inherit (pkgs) emacspeak;
+
   acm = callPackage ./manual-packages/acm { };
 
   acm-terminal = callPackage ./manual-packages/acm-terminal { };
@@ -31,8 +33,6 @@ in
 
   elisp-ffi = callPackage ./manual-packages/elisp-ffi { };
 
-  emacspeak = callPackage ./manual-packages/emacspeak { };
-
   ess-R-object-popup = callPackage ./manual-packages/ess-R-object-popup { };
 
   evil-markdown = callPackage ./manual-packages/evil-markdown { };
diff --git a/nixpkgs/pkgs/applications/editors/orbiton/default.nix b/nixpkgs/pkgs/applications/editors/orbiton/default.nix
index 413af1ab5c54..1e64c5950798 100644
--- a/nixpkgs/pkgs/applications/editors/orbiton/default.nix
+++ b/nixpkgs/pkgs/applications/editors/orbiton/default.nix
@@ -4,13 +4,13 @@
 
 buildGoModule rec {
   pname = "orbiton";
-  version = "2.65.10";
+  version = "2.65.11";
 
   src = fetchFromGitHub {
     owner = "xyproto";
     repo = "orbiton";
     rev = "v${version}";
-    hash = "sha256-z81Xled6OFs9tKVJgUnws81C86Vle5XR85f3z96N2Gw=";
+    hash = "sha256-eb7Ku1hgvYdmRgemXcEZMl53oNXYcomh4wYHpRzLTUc=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/applications/editors/rednotebook/default.nix b/nixpkgs/pkgs/applications/editors/rednotebook/default.nix
index 24126bf87701..d4657208004a 100644
--- a/nixpkgs/pkgs/applications/editors/rednotebook/default.nix
+++ b/nixpkgs/pkgs/applications/editors/rednotebook/default.nix
@@ -5,13 +5,13 @@
 
 buildPythonApplication rec {
   pname = "rednotebook";
-  version = "2.31";
+  version = "2.32";
 
   src = fetchFromGitHub {
     owner = "jendrikseipp";
     repo = "rednotebook";
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-TggbHXJqgQ4vFSCLncgzrqJLRT9zQs6YsTQ3/Z4Mixg=";
+    sha256 = "sha256-sYgiJ4Sc/5Ns3DSlwT03gt54UdzdcvMx1+c27amhulQ=";
   };
 
   # We have not packaged tests.
diff --git a/nixpkgs/pkgs/applications/editors/vim/plugins/generated.nix b/nixpkgs/pkgs/applications/editors/vim/plugins/generated.nix
index d89ca909fa59..20a4184580ff 100644
--- a/nixpkgs/pkgs/applications/editors/vim/plugins/generated.nix
+++ b/nixpkgs/pkgs/applications/editors/vim/plugins/generated.nix
@@ -65,12 +65,12 @@ final: prev:
 
   Coqtail = buildVimPlugin {
     pname = "Coqtail";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "whonore";
       repo = "Coqtail";
-      rev = "e52c456d44e2e3c580428e54182a59d82009c3e2";
-      sha256 = "025l8y4i5a0zlvm1f0nqliqvqwn1cf2xas3ikiyf6cn749ar7pjw";
+      rev = "70fcabba2ecb776406bedc4b7c968ea7a876de85";
+      sha256 = "1vdqygp8v0j0msyhvc7239fkfvb1m71b3m0fpan9ay2h4x9q0q6i";
     };
     meta.homepage = "https://github.com/whonore/Coqtail/";
   };
@@ -173,12 +173,12 @@ final: prev:
 
   LazyVim = buildVimPlugin {
     pname = "LazyVim";
-    version = "2024-01-23";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "LazyVim";
       repo = "LazyVim";
-      rev = "a50f92f7550fb6e9f21c0852e6cb190e6fcd50f5";
-      sha256 = "01ag75gdn6yfifv5rgk8j72dly511alilqy7z97s7m3fm1zp73mv";
+      rev = "91126b9896bebcea9a21bce43be4e613e7607164";
+      sha256 = "0cp56d4vy8mwdf3gl64cnw25fizqw0p1nfwnn470b3mwk9851i7g";
     };
     meta.homepage = "https://github.com/LazyVim/LazyVim/";
   };
@@ -305,12 +305,12 @@ final: prev:
 
   SchemaStore-nvim = buildVimPlugin {
     pname = "SchemaStore.nvim";
-    version = "2024-02-16";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "b0o";
       repo = "SchemaStore.nvim";
-      rev = "844081710a935b4bd95bb8a3cf2742ffb9630993";
-      sha256 = "0dijcbygl5z4jw8gcfjvld09yijlz0fl10b0c6giizy9r09ij7av";
+      rev = "0358c7e159e5502361bf3971d89bf5133bcc2893";
+      sha256 = "0klr8r0kz0qnyd4g18mrdl3xvjdhsz7vbdppgrkmaa02iq1bi8i9";
     };
     meta.homepage = "https://github.com/b0o/SchemaStore.nvim/";
   };
@@ -377,12 +377,12 @@ final: prev:
 
   SpaceVim = buildVimPlugin {
     pname = "SpaceVim";
-    version = "2023-09-23";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "SpaceVim";
       repo = "SpaceVim";
-      rev = "f7151f55a9e9b96e332d7cc1e0febdcae6198356";
-      sha256 = "155d7b0vgqcsdayry8gz7sz2l3wlabh1pp6jksanjbfcq3gydvxn";
+      rev = "f393801c5f82a1cdc96fcd70ba9ae6d17eecedee";
+      sha256 = "1yvkgzb786v35h6pw6shw61zibg50npw59f0qyq0f0w7afccschc";
     };
     meta.homepage = "https://github.com/SpaceVim/SpaceVim/";
   };
@@ -449,12 +449,12 @@ final: prev:
 
   YouCompleteMe = buildVimPlugin {
     pname = "YouCompleteMe";
-    version = "2024-02-14";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "ycm-core";
       repo = "YouCompleteMe";
-      rev = "f0789244449468b0dad591ec5a87db6504788cfa";
-      sha256 = "0vs201i5aqa157ld9ii0pl9cd9xxfcrkxx69ibk8rzn3ardnllm4";
+      rev = "c3c03323c4e4bd84b8fc6173a6c95bbd6c922b11";
+      sha256 = "1977s7082pvml4yi6km3i0k81n5vp0ym25ybxgl28ym66xrxcl28";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/ycm-core/YouCompleteMe/";
@@ -583,12 +583,12 @@ final: prev:
 
   ale = buildVimPlugin {
     pname = "ale";
-    version = "2024-02-06";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "dense-analysis";
       repo = "ale";
-      rev = "6fd9f3c54f80cec8be364594246daf9ac41cbe3e";
-      sha256 = "16wa96aymgx4jfw9cxryikvfa1628csblhc4y2d33khbpy8mg81d";
+      rev = "9cc8383fe930e0d6f21b17c9ebb2fdb55331b183";
+      sha256 = "1mfbc89p0kk6n5gk2a51fcn7rl86whz0dm3mcikbxhfnscncnsq6";
     };
     meta.homepage = "https://github.com/dense-analysis/ale/";
   };
@@ -691,12 +691,12 @@ final: prev:
 
   astrotheme = buildVimPlugin {
     pname = "astrotheme";
-    version = "2024-01-27";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "AstroNvim";
       repo = "astrotheme";
-      rev = "415d0030a86dc52371925483a823eb04d483447b";
-      sha256 = "16brpfp5kdgdlpij72kl02gzql04cyhswsaw93qm2svfvr9q2v9x";
+      rev = "d96b532d2f629e0d9b55368a38debc776c3a9d32";
+      sha256 = "1fxjhqgd1akd5qy0llrclmc05jqxl38dwyxij1yk31vg359vrl0j";
     };
     meta.homepage = "https://github.com/AstroNvim/astrotheme/";
   };
@@ -799,12 +799,12 @@ final: prev:
 
   asyncrun-vim = buildVimPlugin {
     pname = "asyncrun.vim";
-    version = "2024-02-16";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "skywind3000";
       repo = "asyncrun.vim";
-      rev = "99b5025131c50c6ef638faefe1f872eea5454785";
-      sha256 = "1cbc1silg0hf3rj7saw4ifxcn5nmvs1fyilnfxskg38bk9pag5ds";
+      rev = "915e36a2ed84b73741e13d2df3edc8e01ca56f5b";
+      sha256 = "0rw3wnxsk9gx4kvw2x5h1pbmpls7fvlim3ihlhw37zf2irsfph5w";
     };
     meta.homepage = "https://github.com/skywind3000/asyncrun.vim/";
   };
@@ -907,16 +907,28 @@ final: prev:
 
   autoclose-nvim = buildVimPlugin {
     pname = "autoclose.nvim";
-    version = "2023-09-16";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "m4xshen";
       repo = "autoclose.nvim";
-      rev = "37e11589aac55b0e8810dc5865f898f9cb36fef6";
-      sha256 = "15l5c9r8wa2i7amdl3b88gj9qhw81wxicm4zglvzcl1yb9ga0pwd";
+      rev = "dc42806540dcf448ecb2bad6b67204410cfbe629";
+      sha256 = "03l4az5xccx941sbw2qx7s8aziydiad2pc75jki1mlbgs7sdbhwi";
     };
     meta.homepage = "https://github.com/m4xshen/autoclose.nvim/";
   };
 
+  autolist-nvim = buildVimPlugin {
+    pname = "autolist.nvim";
+    version = "2023-07-07";
+    src = fetchFromGitHub {
+      owner = "gaoDean";
+      repo = "autolist.nvim";
+      rev = "5f70a5f99e96c8fe3069de042abd2a8ed2deb855";
+      sha256 = "0vdr9mf761qc2rp9xc8ypgdis68khblkwn7c1kc6cxk265nw7awm";
+    };
+    meta.homepage = "https://github.com/gaoDean/autolist.nvim/";
+  };
+
   autoload_cscope-vim = buildVimPlugin {
     pname = "autoload_cscope.vim";
     version = "2011-01-28";
@@ -1003,12 +1015,12 @@ final: prev:
 
   bamboo-nvim = buildVimPlugin {
     pname = "bamboo.nvim";
-    version = "2024-01-30";
+    version = "2024-02-13";
     src = fetchFromGitHub {
       owner = "ribru17";
       repo = "bamboo.nvim";
-      rev = "b79d540b251a2085d439f5a7c0fe12b9ed54bab6";
-      sha256 = "1qs0fw9f17x7xyqgx0911q3szrnqfrn77q2ja5pcf8vhq1hk4f1y";
+      rev = "2c5a7442f8db3dcc3f5175f0bed73675e26e3931";
+      sha256 = "0ana0pad4lcqg6mcava4mvvi0c9bwkcgfql1xgmcxmz1svgrqkqg";
     };
     meta.homepage = "https://github.com/ribru17/bamboo.nvim/";
   };
@@ -1171,12 +1183,12 @@ final: prev:
 
   bluloco-nvim = buildVimPlugin {
     pname = "bluloco.nvim";
-    version = "2024-01-22";
+    version = "2024-02-13";
     src = fetchFromGitHub {
       owner = "uloco";
       repo = "bluloco.nvim";
-      rev = "e97a9d61fad847a8d98c280181dde1c228be422b";
-      sha256 = "04qbp7chz009kma6lv2zvqkj9z5hv3c45h0zzyc0w145450isqv7";
+      rev = "c585fa3b1b892453b1f68df4c52b4f684a7ed7fe";
+      sha256 = "17q3dwkhdx74xrxzl3069ia4fl0fj2n8k57s56k59v7f1v1l753i";
     };
     meta.homepage = "https://github.com/uloco/bluloco.nvim/";
   };
@@ -1339,24 +1351,24 @@ final: prev:
 
   ccc-nvim = buildVimPlugin {
     pname = "ccc.nvim";
-    version = "2023-12-16";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "uga-rosa";
       repo = "ccc.nvim";
-      rev = "ec6e23fd2c0bf4ffcf71c1271acdcee6e2c6f49c";
-      sha256 = "1y3ns91ysx684ryxv1zjaw8ghrm2ry4rswhm87im4rwghnwvnrwx";
+      rev = "392ef0640b96684e88b3965f32f3bc42530f66c3";
+      sha256 = "124chgrnznl75wmkk6slrjld3mc0q7ycpcb507iimyyw70vc3gm3";
     };
     meta.homepage = "https://github.com/uga-rosa/ccc.nvim/";
   };
 
   chadtree = buildVimPlugin {
     pname = "chadtree";
-    version = "2024-02-16";
+    version = "2024-02-20";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "chadtree";
-      rev = "326830f797f38edefa9691cb9de35833b9571b95";
-      sha256 = "14s3lcp0pyd9dqi5jhnlv0rd51qia4p5sg7p6hxrdzi86mmkz1b6";
+      rev = "9212d5469aba3f0c7a9021640d4535be8fa90af7";
+      sha256 = "1y52b8b2yz6wphqgh2gy9fddrha0xxi2nv04gyksr84riiwrpm12";
     };
     meta.homepage = "https://github.com/ms-jpq/chadtree/";
   };
@@ -1411,12 +1423,12 @@ final: prev:
 
   citruszest-nvim = buildVimPlugin {
     pname = "citruszest.nvim";
-    version = "2024-01-30";
+    version = "2024-02-13";
     src = fetchFromGitHub {
       owner = "zootedb0t";
       repo = "citruszest.nvim";
-      rev = "6c090d537c4fcc5d187632e7e47943e41a218ba8";
-      sha256 = "0x09gz17436fmybr40l69ph0r8k6abxi5jaksn058gh0s6wiq8ic";
+      rev = "60e6cec400cd857ffd69d582794c3ce5571c0049";
+      sha256 = "0mbs4v35v6xwi44dh8isgp66n6x10q6jkvj3ygvpqanwff6bp89s";
     };
     meta.homepage = "https://github.com/zootedb0t/citruszest.nvim/";
   };
@@ -2443,12 +2455,12 @@ final: prev:
 
   conform-nvim = buildVimPlugin {
     pname = "conform.nvim";
-    version = "2024-02-13";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "stevearc";
       repo = "conform.nvim";
-      rev = "61cff430c9f15770d0c5e68c1b08067223bd94ab";
-      sha256 = "0b6syg14d1bs57nbikiwmragj2ac8nnjk1ns46nbvhc82ixsbr09";
+      rev = "192a6d2ddace343f1840a8f72efe2315bd392243";
+      sha256 = "0lcg301wkf9whm1gaybi6q7vw0yc7pkh32fj5zs95v2jm0glnkpb";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/stevearc/conform.nvim/";
@@ -2516,24 +2528,24 @@ final: prev:
 
   copilot-vim = buildVimPlugin {
     pname = "copilot.vim";
-    version = "2024-02-17";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "github";
       repo = "copilot.vim";
-      rev = "79e1a892ca9b4fa6234fd25f2930dba5201700bd";
-      sha256 = "11awdp6gmbiy9vp2bpd05x1aj7z5c3x6gkbbx4kjgk613589x7kg";
+      rev = "4d32b064fedbdbf8f3fa83afa1b19ebafd3a035c";
+      sha256 = "1rh246zdczrcdgicq5a848wd1sc71409qkpaj4w205czvxa21f6n";
     };
     meta.homepage = "https://github.com/github/copilot.vim/";
   };
 
   coq-artifacts = buildVimPlugin {
     pname = "coq.artifacts";
-    version = "2024-02-16";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "coq.artifacts";
-      rev = "de9d71b7fbf29ec8dc06adadb18621c55556a59b";
-      sha256 = "16vwf4rvbv00xg12spi8p48ciwkk1w4rlf70vnapl955r08mfwqh";
+      rev = "1b7915035e1cc6b40d27c69051fd81e8fe6b62db";
+      sha256 = "076n62rnr9gahw1n8j94xgrab5q1d09sf98p4nhh32gc1z4w2hd1";
     };
     meta.homepage = "https://github.com/ms-jpq/coq.artifacts/";
   };
@@ -2564,12 +2576,12 @@ final: prev:
 
   coq_nvim = buildVimPlugin {
     pname = "coq_nvim";
-    version = "2024-02-16";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "ms-jpq";
       repo = "coq_nvim";
-      rev = "cddbe83386efbce2a33373df1f98b3bd0b9c10a8";
-      sha256 = "0v7lib5mb1washicqqzl1m3gm4wd6bi3ivygfd5j0j7kxvv6f0hw";
+      rev = "6ce3cf79d66a47f368d173a2806fe107ac28f877";
+      sha256 = "1pvrkckfzwsbbmrd8b08kr4jbl3fcbspg6kjnzqy9hc7yxvq90kh";
     };
     meta.homepage = "https://github.com/ms-jpq/coq_nvim/";
   };
@@ -2696,12 +2708,12 @@ final: prev:
 
   cyberdream-nvim = buildVimPlugin {
     pname = "cyberdream.nvim";
-    version = "2024-01-16";
+    version = "2024-02-15";
     src = fetchFromGitHub {
       owner = "scottmckendry";
       repo = "cyberdream.nvim";
-      rev = "5eacf2e0a36c6c44645d66ab7950a126af15dfc2";
-      sha256 = "0a4v1xakcq6sc3kshl45r6iy0y881fv8zc2nyylqgy9xh5p37vzl";
+      rev = "7b83422a9318e036ac21df6a63c0ab1ca745e54f";
+      sha256 = "0dhp2726drdvx63vqcm3kmlk6bi7mwjr40fgwz9zspj8jg8gj40n";
     };
     meta.homepage = "https://github.com/scottmckendry/cyberdream.nvim/";
   };
@@ -2744,12 +2756,12 @@ final: prev:
 
   debugprint-nvim = buildVimPlugin {
     pname = "debugprint.nvim";
-    version = "2024-01-21";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "andrewferrier";
       repo = "debugprint.nvim";
-      rev = "0c81cd2bab372bba99815f505eb1fe759d38dd88";
-      sha256 = "1vyn98y3mnhdpa1yvlarqrs4wzfkgn1g70n5s0x3h1kvs1256g8c";
+      rev = "4432f917be7e0c95a21af17b31b216fba60fb131";
+      sha256 = "0q21kdch8ksb7i94160w5fmja30yvz6rpxkpls0g3ijaafxyk6w3";
     };
     meta.homepage = "https://github.com/andrewferrier/debugprint.nvim/";
   };
@@ -2852,12 +2864,12 @@ final: prev:
 
   denops-vim = buildVimPlugin {
     pname = "denops.vim";
-    version = "2024-02-06";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "vim-denops";
       repo = "denops.vim";
-      rev = "ebda886f724fa2eb8aaa51d569903d5c359f0887";
-      sha256 = "01ln1yp9ymryc5fps1w91a99fn8bdm2gc56k9cmb07mc868p20ll";
+      rev = "113c492120e5549aec8c271be2c977024544e4ce";
+      sha256 = "0vp7cb7pppd0zb0c60h5h5v4bhg4c7h0gn50p072rf8bs5yb1qv7";
     };
     meta.homepage = "https://github.com/vim-denops/denops.vim/";
   };
@@ -3214,12 +3226,12 @@ final: prev:
 
   doom-one-nvim = buildVimPlugin {
     pname = "doom-one.nvim";
-    version = "2022-12-24";
+    version = "2024-02-14";
     src = fetchFromGitHub {
       owner = "NTBBloodbath";
       repo = "doom-one.nvim";
-      rev = "a43528cbd7908ccec7af4587ec8e18be149095bd";
-      sha256 = "0zv40jrr9d65kny43bxcfx6hclrsnhirsb9cz87z08qbz9jkbywm";
+      rev = "6d05890f8677d6074037ad4e7faac3f2c892a66e";
+      sha256 = "05c0sjfbi72i54cwc5q57w5aggb8jgws4cjxqsibk20r5yn4wny7";
     };
     meta.homepage = "https://github.com/NTBBloodbath/doom-one.nvim/";
   };
@@ -3250,12 +3262,12 @@ final: prev:
 
   dropbar-nvim = buildVimPlugin {
     pname = "dropbar.nvim";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "Bekaboo";
       repo = "dropbar.nvim";
-      rev = "da63ca9b24f18b814ac75881b1e36199a7676047";
-      sha256 = "125caxl299svj1lnfr718ahcsg2d2aia9mhm3jx4753piha07bsw";
+      rev = "a133a7deed7431496d8e87e8e4cc9c09a9d78945";
+      sha256 = "1ai1fhwlrvr0p8brqapfrdd7rlkarwf78f6plannydd58zlc4j7p";
     };
     meta.homepage = "https://github.com/Bekaboo/dropbar.nvim/";
   };
@@ -3564,12 +3576,12 @@ final: prev:
 
   fidget-nvim = buildNeovimPlugin {
     pname = "fidget.nvim";
-    version = "2024-02-14";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "j-hui";
       repo = "fidget.nvim";
-      rev = "4e854f3299e21d1c18279add340428a97520fc44";
-      sha256 = "1519w7hb5xh1cgpcgi323if1wiq6n0vyfilza1wqpbbk6801rlfy";
+      rev = "60404ba67044c6ab01894dd5bf77bd64ea5e09aa";
+      sha256 = "16wf6jk18r5grg0l0pqmq45nkchj5jdbdqil5v1jrvwpf7d37yki";
     };
     meta.homepage = "https://github.com/j-hui/fidget.nvim/";
   };
@@ -3661,12 +3673,12 @@ final: prev:
 
   flit-nvim = buildVimPlugin {
     pname = "flit.nvim";
-    version = "2024-01-13";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "ggandor";
       repo = "flit.nvim";
-      rev = "39e3399ed2cbc328778258ac0d497ece9ed8fe32";
-      sha256 = "0pmaymd1n8k829h2pb392xbnm9qgbsxxnzgjzv84ylmrvr6r83sq";
+      rev = "94419242ba07170b0009514d745e617b120964f4";
+      sha256 = "17zzabbn5f7sk0sq0j4df15jmy3q30j851gxzwf2ahrwbzh2v36z";
     };
     meta.homepage = "https://github.com/ggandor/flit.nvim/";
   };
@@ -3721,12 +3733,12 @@ final: prev:
 
   flutter-tools-nvim = buildVimPlugin {
     pname = "flutter-tools.nvim";
-    version = "2024-02-14";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "akinsho";
       repo = "flutter-tools.nvim";
-      rev = "28482c71537bb748ccede91facc93a2ea2803a8c";
-      sha256 = "16qa5hlj1a1aff89hfmg1my3k60rvxdibhx3ian3vrh5zmmf4762";
+      rev = "01d72d9c1bdf2d454a60c5ba450f83e5ea783f6a";
+      sha256 = "13xw7vh9ad6ipldxk7q48fd8gwfr88i1n0j3ny18mz3cwg1mldzk";
     };
     meta.homepage = "https://github.com/akinsho/flutter-tools.nvim/";
   };
@@ -3877,12 +3889,12 @@ final: prev:
 
   fzf-lua = buildVimPlugin {
     pname = "fzf-lua";
-    version = "2024-02-11";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "ibhagwan";
       repo = "fzf-lua";
-      rev = "91ec17b4fd0d810599f054eef08db967a0457fbf";
-      sha256 = "1i3qb43mfkn32lkqkql9vrka68ljxc99slns4wp2mvc2x6xamdj7";
+      rev = "3b3cc17c7bb91f6bbef7166c0756f89a189c4db4";
+      sha256 = "0214vy5sid8kw8c65cr795039wchnvayhnij0vryj905m40d9f2c";
     };
     meta.homepage = "https://github.com/ibhagwan/fzf-lua/";
   };
@@ -4081,12 +4093,12 @@ final: prev:
 
   gleam-vim = buildVimPlugin {
     pname = "gleam.vim";
-    version = "2020-06-24";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "gleam-lang";
       repo = "gleam.vim";
-      rev = "847a5ef57c2faef2774242c87f711d1131b89fe6";
-      sha256 = "17kjby64zdnmhyia1cx9jnk4mss0gca1jz1m4hff9rl63i56bql1";
+      rev = "d2f6d0b0399ab6d76b4a17b77ffec590fb2ec1c2";
+      sha256 = "1pimv8cj4a1avxhnv687a9dlf0lvpny9q588lk8xr2dx1fxkcm2a";
     };
     meta.homepage = "https://github.com/gleam-lang/gleam.vim/";
   };
@@ -4380,12 +4392,12 @@ final: prev:
 
   haskell-tools-nvim = buildNeovimPlugin {
     pname = "haskell-tools.nvim";
-    version = "2024-02-11";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "MrcJkb";
       repo = "haskell-tools.nvim";
-      rev = "48bd9e6581ff9442f1ca81995df2f1c3acba24a0";
-      sha256 = "1bknval844d889vbsivd1ydz2bm60hmqhbh2xlb8rqbr1w8g1sz4";
+      rev = "217cb7958ebbebf360f7c43efd5129e66d748042";
+      sha256 = "14nk6jyq2y4q93ij56bdjy17h3jlmjwsspw3l6ahvjsl6yg1lv75";
     };
     meta.homepage = "https://github.com/MrcJkb/haskell-tools.nvim/";
   };
@@ -4559,12 +4571,12 @@ final: prev:
 
   hotpot-nvim = buildVimPlugin {
     pname = "hotpot.nvim";
-    version = "2024-01-25";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "rktjmp";
       repo = "hotpot.nvim";
-      rev = "4deb08235bfccfbba8b0c031b1cfc8189883cdb4";
-      sha256 = "0p3q671s1wca9qnyssbigafh7ylbf6yg2rxn1s9gxgmksvmj0d1a";
+      rev = "b18d3d82e8545d9f765870c1d8f0da041bd61097";
+      sha256 = "1jb2wbkrx4cdncwz991lxhgvfsqkx6zq004ig7jpw8hbkxd6db3z";
     };
     meta.homepage = "https://github.com/rktjmp/hotpot.nvim/";
   };
@@ -4655,12 +4667,12 @@ final: prev:
 
   image-nvim = buildNeovimPlugin {
     pname = "image.nvim";
-    version = "2024-02-13";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "3rd";
       repo = "image.nvim";
-      rev = "4c6cb5ad93ee93d8d7b7c84e1eb291cee99f0a0e";
-      sha256 = "0z3c7l12rjabb70rrlagj2j6cilvmqhws2dn0fp8s2mnapgcj7cs";
+      rev = "b0e24e6f4b2c8a7a5656e8418bbfd2200cabc9b9";
+      sha256 = "1wnhl0lkl6vzwvkas13bp5pi1j3zdyhfqclm248czxp9kxi4y1zl";
     };
     meta.homepage = "https://github.com/3rd/image.nvim/";
   };
@@ -5004,12 +5016,12 @@ final: prev:
 
   knap = buildVimPlugin {
     pname = "knap";
-    version = "2023-07-25";
+    version = "2024-02-20";
     src = fetchFromGitHub {
       owner = "frabjous";
       repo = "knap";
-      rev = "503010f541696e99ed5c62f658620e546cebf8b0";
-      sha256 = "1aqfy1c4h95p94npdvyd7dhkr19f4qbnmr05sg1wbvqd9lfkslym";
+      rev = "cf478b707eea4eaa775b2977b816a5d567c0209e";
+      sha256 = "0pz0kdx62msjhdfmy52hg6sdh6kn1p79khisggnj7ljjp73dmcbb";
     };
     meta.homepage = "https://github.com/frabjous/knap/";
   };
@@ -5100,24 +5112,24 @@ final: prev:
 
   lazygit-nvim = buildVimPlugin {
     pname = "lazygit.nvim";
-    version = "2023-12-15";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "kdheepak";
       repo = "lazygit.nvim";
-      rev = "1e08e3f5ac1152339690140e61a4a32b3bdc7de5";
-      sha256 = "1rs3sva578j28hy6881w2wjxixl7g7rirard0fljxz460wfnr0vx";
+      rev = "10a5f30536dc2d4abe36d410d83149272ea457fa";
+      sha256 = "16cf52l4di8pi8b8h7fqnq75spsxv3xvhcqhrq8arcl9zz2pwcbf";
     };
     meta.homepage = "https://github.com/kdheepak/lazygit.nvim/";
   };
 
   lean-nvim = buildVimPlugin {
     pname = "lean.nvim";
-    version = "2024-02-04";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "Julian";
       repo = "lean.nvim";
-      rev = "1a2a2dfbc7e6775e9ec8b84e5eadaf31fde1894e";
-      sha256 = "1lnwsiam4wkqjaamkdb34y1mgy5pir38kssm41v3w83n4gnn8g6f";
+      rev = "dd37e1d2e320fb8a0948bf6ca3f7703c98b80ecb";
+      sha256 = "1n9477lfd12x76vah2p25q36djjf9vmxlqimzdjfl6xs2c3vbcsr";
     };
     meta.homepage = "https://github.com/Julian/lean.nvim/";
   };
@@ -5148,12 +5160,12 @@ final: prev:
 
   leap-nvim = buildVimPlugin {
     pname = "leap.nvim";
-    version = "2024-02-16";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "ggandor";
       repo = "leap.nvim";
-      rev = "52f7ce4fcc1764caac77cf4d43c2c4f5fb42d517";
-      sha256 = "1dpgj7pmq76mc0vg1ahxnh3scl3zdydyfvrhb8gjmdhh32lzwi13";
+      rev = "b41f48643b483bb0881c0f7804f6f0be7bb95155";
+      sha256 = "07jf66bwq5n2xjgkf05983k7y08g547xry6114wcsvjkn98qrxj3";
     };
     meta.homepage = "https://github.com/ggandor/leap.nvim/";
   };
@@ -5232,12 +5244,12 @@ final: prev:
 
   lh-vim-lib = buildVimPlugin {
     pname = "lh-vim-lib";
-    version = "2023-12-27";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "LucHermitte";
       repo = "lh-vim-lib";
-      rev = "ec13cd3f042d35c87bddba6c727f5d98091ffe95";
-      sha256 = "0c41cj9f2wc13sh3blby8mpmvqrq7qaz3kq1araxm2p1np4spql1";
+      rev = "8f01365d045f46900c506b99ea1a401f45482619";
+      sha256 = "1pkx161bkpdbb9kj8nz510zb7yf6axnsqsh9wsqylp8s5j3grrxs";
     };
     meta.homepage = "https://github.com/LucHermitte/lh-vim-lib/";
   };
@@ -5724,12 +5736,12 @@ final: prev:
 
   mason-lspconfig-nvim = buildVimPlugin {
     pname = "mason-lspconfig.nvim";
-    version = "2024-02-14";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "williamboman";
       repo = "mason-lspconfig.nvim";
-      rev = "fe4cce44dec93c69be17dad79b21de867dde118a";
-      sha256 = "0p788r8k6dj8w5kxkhg8jwzrgyspvlbwd48lhday1gvqxbgfrcb8";
+      rev = "21d33d69a81f6351e5a5f49078b2e4f0075c8e73";
+      sha256 = "1dxx7b5aadhws58dzxh7am0rcnzzzhfxbsnkcl5hp9d221wkvi3q";
     };
     meta.homepage = "https://github.com/williamboman/mason-lspconfig.nvim/";
   };
@@ -5844,12 +5856,12 @@ final: prev:
 
   midnight-nvim = buildVimPlugin {
     pname = "midnight.nvim";
-    version = "2024-01-30";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "dasupradyumna";
       repo = "midnight.nvim";
-      rev = "13d812355db1e535ba5c790186d301e1fe9e7e1b";
-      sha256 = "1ynwivjw4kn4zz4ahpinvdyd5ndcss308nbqap5pnqzza2k8a7qh";
+      rev = "b5a1dd02a3c2ddc56de8466da45895b19981584a";
+      sha256 = "1ajpkw12ff7xhzl3axl5y3q13zsrjm24mydwr166x3lba6ccqif2";
     };
     meta.homepage = "https://github.com/dasupradyumna/midnight.nvim/";
   };
@@ -5858,22 +5870,22 @@ final: prev:
     pname = "mind.nvim";
     version = "2023-03-22";
     src = fetchFromGitHub {
-      owner = "phaazon";
+      owner = "hadronized";
       repo = "mind.nvim";
       rev = "002137dd7cf97865ebd01b6a260209d2daf2da66";
       sha256 = "1p7gb8p1jrb2wx3x67lv7am3k1a14kvwsq89fdpb8b060s2l1214";
     };
-    meta.homepage = "https://github.com/phaazon/mind.nvim/";
+    meta.homepage = "https://github.com/hadronized/mind.nvim/";
   };
 
   mini-nvim = buildVimPlugin {
     pname = "mini.nvim";
-    version = "2024-02-16";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "echasnovski";
       repo = "mini.nvim";
-      rev = "1d49300d50a2c8ee7faecceb151084f207ff65ba";
-      sha256 = "1md4wbydbnwmyw72pj1w67a0ljcgx4qam2a41ka3bxcr2hr2n5nw";
+      rev = "b7403ad0c2a4dab777244171ca1b7e8c89696584";
+      sha256 = "0xxli77cs0q2mk3ykvirvfs10dk8ydx9j9fprmgvvis98d4ir14j";
     };
     meta.homepage = "https://github.com/echasnovski/mini.nvim/";
   };
@@ -5964,12 +5976,12 @@ final: prev:
 
   molten-nvim = buildVimPlugin {
     pname = "molten-nvim";
-    version = "2024-01-26";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "benlubas";
       repo = "molten-nvim";
-      rev = "21d766c2d60e5f6e03f507e7f3e382a2a927ad41";
-      sha256 = "15bnp062hxjh477pr5rqs4w9wpqy6rf2h64l9hsaijamrk19qd4y";
+      rev = "8346bba69e0de96278dad2038e9be74605908b7d";
+      sha256 = "08f3zxzka43f87fks56594476h57yq01x7a1zdsn4acc278xg1nb";
     };
     meta.homepage = "https://github.com/benlubas/molten-nvim/";
   };
@@ -6012,12 +6024,12 @@ final: prev:
 
   multicursors-nvim = buildVimPlugin {
     pname = "multicursors.nvim";
-    version = "2023-11-27";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "smoka7";
       repo = "multicursors.nvim";
-      rev = "8e876fe9db46c1b76c151202b418df21eca07bad";
-      sha256 = "0jva5l38ikzgy0nw2il6yfpm9z7ibi99ijfqnwcy7zq9kryysnmy";
+      rev = "8b3e14682eed06a532b155c7eae33e174846b3fd";
+      sha256 = "02ar7m9g92lg7rhz7l1vm2sn8c353wk1rvl32wdbqsbi70ac8pi7";
     };
     meta.homepage = "https://github.com/smoka7/multicursors.nvim/";
   };
@@ -6276,12 +6288,12 @@ final: prev:
 
   neo-tree-nvim = buildVimPlugin {
     pname = "neo-tree.nvim";
-    version = "2024-02-16";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "nvim-neo-tree";
       repo = "neo-tree.nvim";
-      rev = "db178f4a49c19f8e4ed5a01dafa9d79e76f0081e";
-      sha256 = "1kzbz3163mw70cbxwf0kpb5dhz3qh68ywx23n7m4mzrg4anwlhkb";
+      rev = "7d3b02073e59ed9ef271795787de76d0de8f5294";
+      sha256 = "0xqy1lxs450w21688a8190jsda8az9745pxyb5l6lbl60r9m9fkh";
     };
     meta.homepage = "https://github.com/nvim-neo-tree/neo-tree.nvim/";
   };
@@ -6300,12 +6312,12 @@ final: prev:
 
   neoconf-nvim = buildVimPlugin {
     pname = "neoconf.nvim";
-    version = "2024-02-17";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "neoconf.nvim";
-      rev = "4ef6c6c5882e7e16209173fb8c47414202843384";
-      sha256 = "0shaipc3nnm3gr19ivxcyqydihlryr07axs1sqvhy0x0x02y37jp";
+      rev = "faab415b0ba57f0a15a82210f346f662e6551e1a";
+      sha256 = "0malbx94g0rf4r068yl3whlwcxyy41i1z1j2pgajxbrg7w03bymy";
     };
     meta.homepage = "https://github.com/folke/neoconf.nvim/";
   };
@@ -6336,12 +6348,12 @@ final: prev:
 
   neodev-nvim = buildVimPlugin {
     pname = "neodev.nvim";
-    version = "2024-02-16";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "folke";
       repo = "neodev.nvim";
-      rev = "de3685b8c1cd439dd96b7958793f6f381f98652d";
-      sha256 = "184v1zxbcrndkzbqa9v9mc82vy0mjjwkww62n6nqqvf316dklzwf";
+      rev = "f7f249b361e9fb245eea24cbcd9f5502e796c6ea";
+      sha256 = "1ajya6chj85mzn4k94y2ihbnq4z6fwpa61k04rlz45n9diaczai6";
     };
     meta.homepage = "https://github.com/folke/neodev.nvim/";
   };
@@ -6372,12 +6384,12 @@ final: prev:
 
   neogit = buildVimPlugin {
     pname = "neogit";
-    version = "2024-02-12";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "NeogitOrg";
       repo = "neogit";
-      rev = "1c0369a39587054ff473179c1c04e793fb3d6378";
-      sha256 = "12viin5g409ac5d6p62hz9kyvzrjiyg0l04m28i1hxh5qn719k3q";
+      rev = "0d0879b0045fb213c328126969a3317c0963d34a";
+      sha256 = "1nflx2kk2q0kwwxafbvdfa92pn4vzvynr4jqd5jni9h7n5xvg9dl";
     };
     meta.homepage = "https://github.com/NeogitOrg/neogit/";
   };
@@ -6444,12 +6456,12 @@ final: prev:
 
   neorg = buildVimPlugin {
     pname = "neorg";
-    version = "2024-02-15";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "nvim-neorg";
       repo = "neorg";
-      rev = "7b3e794aa8722826418501608c8a3ffe4e19ea30";
-      sha256 = "1cr8hxwyzcca5kwajadvsmi0v1hzr8lfi3gcyhilxjnmaiiqaing";
+      rev = "a157ab3ee86a125a6f83ea9fa6e1f8f1c7ac6da2";
+      sha256 = "02j77kdjaqlhbfcp00q4yl4fr7k2c5773s25kdwnwkkv81pvpnrh";
     };
     meta.homepage = "https://github.com/nvim-neorg/neorg/";
   };
@@ -6552,12 +6564,12 @@ final: prev:
 
   neotest-dotnet = buildVimPlugin {
     pname = "neotest-dotnet";
-    version = "2024-02-07";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "Issafalcon";
       repo = "neotest-dotnet";
-      rev = "cc387cbd39fd7455ea0a3e0348ccd0da35aa3443";
-      sha256 = "0fndhlgwngvm5dnxxkpv8cbrf1qk5pla2ys9pmgabf3q7js7lq0f";
+      rev = "c19df2a139d88c5b4130b830d2cbe63a2c6c6c0c";
+      sha256 = "1bb9dv6g7x793hgbg20lf8igjym2ixcxk8ymrrhlcn0489sx79rb";
     };
     meta.homepage = "https://github.com/Issafalcon/neotest-dotnet/";
   };
@@ -6577,12 +6589,12 @@ final: prev:
 
   neotest-go = buildVimPlugin {
     pname = "neotest-go";
-    version = "2024-02-12";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-neotest";
       repo = "neotest-go";
-      rev = "ba5d536304ed6971f00d16b48ec26997622ffb43";
-      sha256 = "0adbz26anv3qnwjw018bkxcf3syjxjdkv71zw3lnal34k5xp6x27";
+      rev = "6a2f996d89fe4631942e035b1c114544ee045043";
+      sha256 = "1jnsgkmsm2jmjd5zhkf3dhrbc04ysz3n0n28frsbvh839n3cdm7f";
     };
     meta.homepage = "https://github.com/nvim-neotest/neotest-go/";
   };
@@ -6601,12 +6613,12 @@ final: prev:
 
   neotest-jest = buildVimPlugin {
     pname = "neotest-jest";
-    version = "2024-02-12";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "nvim-neotest";
       repo = "neotest-jest";
-      rev = "c2118446d770fedb360a91b1d91a7025db86d4f1";
-      sha256 = "0wzgwx4mdwhrj77bf0wv6rv4qjii118hayavdamwsszpm1ddyvaz";
+      rev = "959d45b133de938c79e3f064db188680eaf69055";
+      sha256 = "12mkqbz5qg59nc3lqn5sl7dyi5631xpish8i4c5xaaxn3k5b9pss";
     };
     meta.homepage = "https://github.com/nvim-neotest/neotest-jest/";
   };
@@ -6625,12 +6637,12 @@ final: prev:
 
   neotest-phpunit = buildVimPlugin {
     pname = "neotest-phpunit";
-    version = "2023-12-28";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "olimorris";
       repo = "neotest-phpunit";
-      rev = "c0f398a239b24a5960ab6f76094bd535866451da";
-      sha256 = "0f97fr27yvvykyzvpv07azsaa1ik5aci5vn6xk48xzy74ha1njr1";
+      rev = "2f01e83eedbcf6f0257934b32b5d4fda404a9f11";
+      sha256 = "0yqi7n6ljr3drgng9yj7im6x35fjb9ap5p0svv1n7lwcbnnbywai";
     };
     meta.homepage = "https://github.com/olimorris/neotest-phpunit/";
   };
@@ -6661,12 +6673,12 @@ final: prev:
 
   neotest-rspec = buildVimPlugin {
     pname = "neotest-rspec";
-    version = "2023-11-02";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "olimorris";
       repo = "neotest-rspec";
-      rev = "8630acad9e84b8267646bc8712a4365af7a12f2b";
-      sha256 = "13s3im555wz66z1hmmn8zlpy6vsry0xi87yxfm7hjpfcb56lqncc";
+      rev = "3f08e43dade616dc271963af94ce5ddd13b61159";
+      sha256 = "12jb71d760z4myd78w3i2cccbbabbyiq8m1s3yfpvz1cvbqwfwqg";
     };
     meta.homepage = "https://github.com/olimorris/neotest-rspec/";
   };
@@ -6709,12 +6721,12 @@ final: prev:
 
   neotest-vitest = buildVimPlugin {
     pname = "neotest-vitest";
-    version = "2024-02-09";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "marilari88";
       repo = "neotest-vitest";
-      rev = "75bb96b8b18adcf5152fdb8a9342373a20a463ce";
-      sha256 = "1k459x2dyw2gr3i9ayqwldbad6zwbr6sp7js1bz9i4ily8wn5y7y";
+      rev = "c0ea475596483eb02fa8e92c6be65c0536d55630";
+      sha256 = "0ksja6zr6l9jcww33sy72g4s82gbkvryh0wm98jfbdsiybjffb50";
     };
     meta.homepage = "https://github.com/marilari88/neotest-vitest/";
   };
@@ -6805,12 +6817,12 @@ final: prev:
 
   netman-nvim = buildVimPlugin {
     pname = "netman.nvim";
-    version = "2024-01-05";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "miversen33";
       repo = "netman.nvim";
-      rev = "6f1e2687d6e534e588d8281b987f33c3f0870e8a";
-      sha256 = "0grdfvd222b4992c3g6wj86jpy73v29ihbz4k8qs23wqgmz7x9r2";
+      rev = "d0ec9d4ca195b2c87bf46ab050130a2c806310c4";
+      sha256 = "0043r66vr10qwdd305q4ckizk8lkm0xy4wazm0yfhq37jwrbhh7d";
     };
     meta.homepage = "https://github.com/miversen33/netman.nvim/";
   };
@@ -6841,12 +6853,12 @@ final: prev:
 
   nfnl = buildVimPlugin {
     pname = "nfnl";
-    version = "2024-01-21";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "Olical";
       repo = "nfnl";
-      rev = "7ef3da23c5b7f9e08ca7e1f9807c1a5a93e2f33f";
-      sha256 = "0p0cfds0z409c5ydn8j7ycsh9jmaz0a7izakgkmg8lpqihvw6dc2";
+      rev = "92f03c01405477fc61e410bb75d4387781a493dc";
+      sha256 = "02ih6pjapws1j62mxa02dljjzm82bzms4ccjldsz5l02ks0k8vcr";
     };
     meta.homepage = "https://github.com/Olical/nfnl/";
   };
@@ -6949,12 +6961,12 @@ final: prev:
 
   no-clown-fiesta-nvim = buildVimPlugin {
     pname = "no-clown-fiesta.nvim";
-    version = "2024-01-30";
+    version = "2024-02-20";
     src = fetchFromGitHub {
       owner = "aktersnurra";
       repo = "no-clown-fiesta.nvim";
-      rev = "dae9bbb61223218d0043baffb3ede4cee9568872";
-      sha256 = "0dg6pk8p7gc18nf17yxbs0c4pv1ng44n41jppi71dgv6xb481mbz";
+      rev = "667d51fd990d52f7ba80d9f76baa217dd79c6b11";
+      sha256 = "17kg08fx15fn94073ppnmga3npr8ba9qjxnmhfccph49i90q7d95";
     };
     meta.homepage = "https://github.com/aktersnurra/no-clown-fiesta.nvim/";
   };
@@ -6997,12 +7009,12 @@ final: prev:
 
   none-ls-nvim = buildVimPlugin {
     pname = "none-ls.nvim";
-    version = "2024-02-13";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvimtools";
       repo = "none-ls.nvim";
-      rev = "34b1311bd07bd3741e60e06b34d0709d6e5a9f0f";
-      sha256 = "07bxv7xcjgyzvmh4lpdqn2350awi2ah5bjrimqvcm0hrak7b204x";
+      rev = "0f7e1094d06c9d0fa31f545db7f00a0c518397ef";
+      sha256 = "0c970nk32grmc3syw6rqf9szfkxnkjpj1jjajh3c02rjlid56w7y";
     };
     meta.homepage = "https://github.com/nvimtools/none-ls.nvim/";
   };
@@ -7141,12 +7153,12 @@ final: prev:
 
   nvim-autopairs = buildVimPlugin {
     pname = "nvim-autopairs";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "windwp";
       repo = "nvim-autopairs";
-      rev = "2e8a10c5fc0dcaf8296a5f1a7077efcd37065cc8";
-      sha256 = "1d02klx0fhacg1ighmz84176rrm0a28dv19fnryhd0086b8ykrr9";
+      rev = "1efb4f2e754d282762a1413ea0528d9a45143cdd";
+      sha256 = "11mxb1xj5m24hgc52cdns2cndnn1m3m5gsv7yzd2zy4iqdjf9y1g";
     };
     meta.homepage = "https://github.com/windwp/nvim-autopairs/";
   };
@@ -7177,12 +7189,12 @@ final: prev:
 
   nvim-bqf = buildVimPlugin {
     pname = "nvim-bqf";
-    version = "2023-12-06";
+    version = "2024-02-20";
     src = fetchFromGitHub {
       owner = "kevinhwang91";
       repo = "nvim-bqf";
-      rev = "bdc2a4e5bb670b3c0e33ada9c0eec636d93a0748";
-      sha256 = "1kla734nj2q6bin9d1gzm4kml0bl89q2hfr0l9ly2lw3s506nynb";
+      rev = "654c904d5ad9dc4846445056086168e25bd8ba2d";
+      sha256 = "03gy2qnx7r6h0kk6h1x4pshwh08q5zaw5pxdpwnyfi9fkgdidcyc";
     };
     meta.homepage = "https://github.com/kevinhwang91/nvim-bqf/";
   };
@@ -7345,24 +7357,24 @@ final: prev:
 
   nvim-dap-go = buildVimPlugin {
     pname = "nvim-dap-go";
-    version = "2023-10-07";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "leoluz";
       repo = "nvim-dap-go";
-      rev = "a5cc8dcad43f0732585d4793deb02a25c4afb766";
-      sha256 = "00nm95dpbmjnndvh8kapbgmrbfjqg3dd8hhrwgd3rmk30d777zxq";
+      rev = "64f73400761e2d19459e664a52ea478f3a4420e7";
+      sha256 = "1r6cqvz6kfmkfq6a5vv9kqqqs8sfwhmr26wilrd18sgya58hbdvn";
     };
     meta.homepage = "https://github.com/leoluz/nvim-dap-go/";
   };
 
   nvim-dap-python = buildVimPlugin {
     pname = "nvim-dap-python";
-    version = "2024-02-01";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "mfussenegger";
       repo = "nvim-dap-python";
-      rev = "f5b6f3a90aae0284b61fb3565e575267c19a16e6";
-      sha256 = "0drz7gmlg5kyz8a3xhczwlg2bc7lpdwph4q3acjm9skv67cp5bfj";
+      rev = "66560f0ebddf96604f7037e1efad3ba6942761e6";
+      sha256 = "0yc96r53iy0iim2nkl3rz5fza148fs6wk9y9k19k90ilzhh2ay3k";
     };
     meta.homepage = "https://github.com/mfussenegger/nvim-dap-python/";
   };
@@ -7465,24 +7477,24 @@ final: prev:
 
   nvim-highlight-colors = buildVimPlugin {
     pname = "nvim-highlight-colors";
-    version = "2024-01-25";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "brenoprata10";
       repo = "nvim-highlight-colors";
-      rev = "cb3bdad6501d6314fe0ed00eee883b98fc0ec8db";
-      sha256 = "0hh6cccs32g7b1ashz7kjmrcgfdjrd5dw3as0b3d5v04shm0vd17";
+      rev = "6ec3af16ba9110a95513ab0527053410663b10c0";
+      sha256 = "1jgifrzmzv4f3vaw60xmjwjzihpc2qz90qidqzls02swmh84vada";
     };
     meta.homepage = "https://github.com/brenoprata10/nvim-highlight-colors/";
   };
 
   nvim-highlite = buildVimPlugin {
     pname = "nvim-highlite";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "Iron-E";
       repo = "nvim-highlite";
-      rev = "6c177613d5de2962c4d5b79d96894d77b7b55c31";
-      sha256 = "1563bbwz2szy0gc7i17dii5y1bq0s78dh8k9z5xbb2a415s3qr1s";
+      rev = "44525161735e6e5726c9e3eb0a504b2c975b7a64";
+      sha256 = "0z95473fx8ys4yd5j6nhn5v24bj8sfzv8rb9hl581a7zp2fmwxif";
     };
     meta.homepage = "https://github.com/Iron-E/nvim-highlite/";
   };
@@ -7513,12 +7525,12 @@ final: prev:
 
   nvim-jdtls = buildVimPlugin {
     pname = "nvim-jdtls";
-    version = "2024-02-17";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "mfussenegger";
       repo = "nvim-jdtls";
-      rev = "01b57f75b00e71541aa328398d5e10ba5ca3ea18";
-      sha256 = "0mfaim31n99j7jd9q1i67ri5a8jkkfkndyhqvl6dcybziyj86l8w";
+      rev = "382b9f625861f47d95876bcfb4c261f3b96077cb";
+      sha256 = "1c65a12w1lmh16f6rwpq5nf5xqr3sna7arbwywh0bnxg6i3lhbgf";
     };
     meta.homepage = "https://github.com/mfussenegger/nvim-jdtls/";
   };
@@ -7596,12 +7608,12 @@ final: prev:
 
   nvim-lint = buildVimPlugin {
     pname = "nvim-lint";
-    version = "2024-02-16";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "mfussenegger";
       repo = "nvim-lint";
-      rev = "31be66c27214174a28fc092ffcf4bb3e8f6cfd43";
-      sha256 = "0n1rkxddmz4q7isf49cigr0viyny758ds8bj3g1rcgd7qd7x4s3m";
+      rev = "85fe14d080d902dcc566461f0205495d0c153372";
+      sha256 = "1xs45spp4j65hxmja1jpcqsmw4sr32vxmhhqwaza7b54z9pb82qy";
     };
     meta.homepage = "https://github.com/mfussenegger/nvim-lint/";
   };
@@ -7632,12 +7644,12 @@ final: prev:
 
   nvim-lspconfig = buildVimPlugin {
     pname = "nvim-lspconfig";
-    version = "2024-02-16";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "neovim";
       repo = "nvim-lspconfig";
-      rev = "d1bab4cf4b69e49d6058028fd933d8ef5e74e680";
-      sha256 = "10sfqf97v2cr9l6fb1i9zvv5srlc0hzm3k74ivb9vwvj6d3c2kfn";
+      rev = "b8751ff9ac9fd6ce253e0653d898de02e54040d5";
+      sha256 = "1ak2fdsp2rbv69swzxw8x8ki5c03alzzamkdz1m3jpjd5x1x62hn";
     };
     meta.homepage = "https://github.com/neovim/nvim-lspconfig/";
   };
@@ -7692,12 +7704,12 @@ final: prev:
 
   nvim-metals = buildVimPlugin {
     pname = "nvim-metals";
-    version = "2024-02-14";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "scalameta";
       repo = "nvim-metals";
-      rev = "94c8d4d3b13bbf51594cfb940454af33e1149f8b";
-      sha256 = "1p6rpap752y0y42xhl5jkmv08fx1aggjnqyb9adsm11p351yqm1r";
+      rev = "9f498a5f74771cedaa05871a79df91aa09ad6bd9";
+      sha256 = "1ll7nihbwl8rk0l9zrl55rapnc7h1hwcgmvgm6595zjba30sjazn";
     };
     meta.homepage = "https://github.com/scalameta/nvim-metals/";
   };
@@ -7860,12 +7872,12 @@ final: prev:
 
   nvim-scrollview = buildVimPlugin {
     pname = "nvim-scrollview";
-    version = "2024-02-13";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "dstein64";
       repo = "nvim-scrollview";
-      rev = "1852d8927e3e4c53df8c675a8a271175483c6ede";
-      sha256 = "0cq9q2q7lmbcq0xcrr9wxvkhb36vsbjg9bm84rqga740db1az1da";
+      rev = "7ef112edde3355cb50c3b7bf1e8909c8d2bc3186";
+      sha256 = "146ljp5gh7vypr7hj6xxkzhlsg7dja4f0b1651clsi0sarxd59s9";
     };
     meta.homepage = "https://github.com/dstein64/nvim-scrollview/";
   };
@@ -7884,12 +7896,12 @@ final: prev:
 
   nvim-snippy = buildVimPlugin {
     pname = "nvim-snippy";
-    version = "2024-01-14";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "dcampos";
       repo = "nvim-snippy";
-      rev = "8e4e39a4bf5f8939fcf4898d1fba48d1d1f72303";
-      sha256 = "0ib8vlh2v3s93b15iv49yzx68bz4rhcgbapdp9cjxdlnvqzyf27y";
+      rev = "6295b6cb30725c343a8986096c9f04b0e7646c52";
+      sha256 = "1rplgghm6xr803xhgshrnbs4qvda4331znywsfwycxqyl7zvynsf";
     };
     meta.homepage = "https://github.com/dcampos/nvim-snippy/";
   };
@@ -7908,12 +7920,12 @@ final: prev:
 
   nvim-spectre = buildVimPlugin {
     pname = "nvim-spectre";
-    version = "2024-02-07";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "nvim-pack";
       repo = "nvim-spectre";
-      rev = "6a0785ef64c839d935a2f92e20988e962fb6537e";
-      sha256 = "1qn1w0n209fhi160mr2jknvly53zj2njcy34cszw0v7sal3achlw";
+      rev = "3712ff0cdf4f9f877d9ca708d835a877d9a0abaf";
+      sha256 = "1112r1qz44mgvqda98a1ch4w262n5hs9ylgp9fdvgz62nhgxgl5m";
     };
     meta.homepage = "https://github.com/nvim-pack/nvim-spectre/";
   };
@@ -7980,36 +7992,36 @@ final: prev:
 
   nvim-tree-lua = buildVimPlugin {
     pname = "nvim-tree.lua";
-    version = "2024-02-20";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-tree";
       repo = "nvim-tree.lua";
-      rev = "030defdb6522f5f716d8201d20ca1a2baa57ca66";
-      sha256 = "sha256-eWqm1Vk3KQspImy/k2aMXFmsXkVQkMjrVidUVmEJzek=";
+      rev = "d52fdeb0a300ac42b9cfa65ae0600a299f8e8677";
+      sha256 = "0dngnviq36z9jsm1p6w4b3xg31k6fj05xdk6qn0cxjjharrskazi";
     };
     meta.homepage = "https://github.com/nvim-tree/nvim-tree.lua/";
   };
 
   nvim-treesitter = buildVimPlugin {
     pname = "nvim-treesitter";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter";
-      rev = "17d68ac13c902f55253b7facb47df4c0ae532575";
-      sha256 = "1m77s8va6h6g2xvjfjw3adigyg09z0qnrwbfkbymksa36y4jgc11";
+      rev = "9896ef5f701cc8258c4f04c6944b77e7cfa244e3";
+      sha256 = "0qgvxhhkamkj55nxy7hhyykjpw8jb1gphay5pxnlkayj05rjklih";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
   };
 
   nvim-treesitter-context = buildVimPlugin {
     pname = "nvim-treesitter-context";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-treesitter";
       repo = "nvim-treesitter-context";
-      rev = "23b699ac40091d8c729f024b3f1400bc7e26e0c5";
-      sha256 = "0mrc0ilamj956wmymr2cc6zjjfxcrzp32iwhy1gmj9hxwacllvw4";
+      rev = "e4a259f05032983c8611ca150ac25f1df62c0871";
+      sha256 = "1f4fv4ip7p4db416cijfx6li7k3pvpc9y0gbkad3q2i2ax5cyw8c";
     };
     meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter-context/";
   };
@@ -8124,12 +8136,12 @@ final: prev:
 
   nvim-web-devicons = buildVimPlugin {
     pname = "nvim-web-devicons";
-    version = "2024-02-10";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "nvim-tree";
       repo = "nvim-web-devicons";
-      rev = "7f30f2da3c3641841ceb0e2c150281f624445e8f";
-      sha256 = "1srssx18fgipznnl6b3lk17jkv0acsx6cw86m6x788nawl6qhsv7";
+      rev = "14ac5887110b06b89a96881d534230dac3ed134d";
+      sha256 = "1l02wpzxac4ykghficsdhgn7ix2896qhaisxm4f7xbl72jl77h44";
     };
     meta.homepage = "https://github.com/nvim-tree/nvim-web-devicons/";
   };
@@ -8208,12 +8220,12 @@ final: prev:
 
   obsidian-nvim = buildVimPlugin {
     pname = "obsidian.nvim";
-    version = "2024-02-14";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "epwalsh";
       repo = "obsidian.nvim";
-      rev = "0a6739d2229c8eb30396db550f3818e092088c27";
-      sha256 = "1d1xihqkb1fcaqbkdx4pr7xa35g66v9z4bqdv2pk89pa1jm3k1sl";
+      rev = "a53ed63a493b54e4ed90281a2d69aa1d2dd896f3";
+      sha256 = "010a9sxzam788nswma1ln88h08a9i8lskdvzgq7zcqhv9lcawzhf";
     };
     meta.homepage = "https://github.com/epwalsh/obsidian.nvim/";
   };
@@ -8256,12 +8268,12 @@ final: prev:
 
   oil-nvim = buildVimPlugin {
     pname = "oil.nvim";
-    version = "2024-01-22";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "stevearc";
       repo = "oil.nvim";
-      rev = "bf753c3e3f8736939ad5597f92329dfe7b1df4f5";
-      sha256 = "02wjsfhhq8lrai18m3khv7sln070cmwgr7jqp537dwl47v4pq4z3";
+      rev = "132b4ea0740c417b9d717411cab4cf187e1fd095";
+      sha256 = "085n2mfsv0gmz4f31wpzld804033h73mm7zfhni6xa8ffd7vvldj";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/stevearc/oil.nvim/";
@@ -8353,12 +8365,12 @@ final: prev:
 
   onedarkpro-nvim = buildVimPlugin {
     pname = "onedarkpro.nvim";
-    version = "2024-02-13";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "olimorris";
       repo = "onedarkpro.nvim";
-      rev = "bbe613372548ef8fa1a1f67d50f55795727ac432";
-      sha256 = "0dd2wrr25cj7k6zp0zdhqks3xdg9kivh3m5z4wnkdxv8mwssm31n";
+      rev = "3fbb6e8c35589e6373fcb8d49b6318f794740343";
+      sha256 = "07iz851rczafvi44bdbcijbahcwjwljsypl80g5zdc0q9i9s313y";
     };
     meta.homepage = "https://github.com/olimorris/onedarkpro.nvim/";
   };
@@ -8437,12 +8449,12 @@ final: prev:
 
   orgmode = buildVimPlugin {
     pname = "orgmode";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-orgmode";
       repo = "orgmode";
-      rev = "5a238a2880bc57c156cb23c12ff4af0a0c8181c7";
-      sha256 = "02b7zm570b394ynzr47jik3q3basfm8rz4vm99d8xvrjq7vkjjil";
+      rev = "80314dfa195da5bb52bf92b749ba669b45eda04b";
+      sha256 = "13c15nr0pxq6vizrcvransb770zrjfdqbv0w913kjhvggwc3r679";
     };
     meta.homepage = "https://github.com/nvim-orgmode/orgmode/";
   };
@@ -8461,24 +8473,24 @@ final: prev:
 
   otter-nvim = buildVimPlugin {
     pname = "otter.nvim";
-    version = "2024-02-12";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "jmbuhr";
       repo = "otter.nvim";
-      rev = "05cc5ee31fb20e3dd5b4a3a150b0aabf20c86826";
-      sha256 = "1vnc1p7949jx53070zl15lpdn3gid4s3c7510ncs1npbwhyh9p4d";
+      rev = "216b927dcf6e6b798f7cc5abc9ccd130adb02b04";
+      sha256 = "1r7w8r9f01jl07651s3lbqzx5d202g9vz2bvk8zcwfd2lzsj6n8r";
     };
     meta.homepage = "https://github.com/jmbuhr/otter.nvim/";
   };
 
   overseer-nvim = buildVimPlugin {
     pname = "overseer.nvim";
-    version = "2024-02-13";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "stevearc";
       repo = "overseer.nvim";
-      rev = "792aeb6d834a11585ea5d667e3e3f05bc6aa4ecc";
-      sha256 = "1s34jqg8p0crrbsv037m9b6gjv0vlvfhrp1acvacwxx9fqbmciik";
+      rev = "4855aefcf335bbac71eea9c6a888958fb1ed1e1a";
+      sha256 = "1p5cr628qcla3ad1nfnpk9vmaxxspvfjiimyw5n81giywlf136sg";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/stevearc/overseer.nvim/";
@@ -8498,12 +8510,12 @@ final: prev:
 
   package-info-nvim = buildVimPlugin {
     pname = "package-info.nvim";
-    version = "2023-11-12";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "vuki656";
       repo = "package-info.nvim";
-      rev = "18f8126dd8e65b2e21804c9107785af4abbb5bfc";
-      sha256 = "0b9s9a3nz0449sl8zzf55xk12hrkksvnrnbc38i1la234xhrfpsw";
+      rev = "45acce5b12ce824332d8000cc2c91805b6710446";
+      sha256 = "19aaswkjx7q85c091p80zypx6az0m5z2jccapng5clvh2j4qw7qf";
     };
     meta.homepage = "https://github.com/vuki656/package-info.nvim/";
   };
@@ -8666,12 +8678,12 @@ final: prev:
 
   plantuml-syntax = buildVimPlugin {
     pname = "plantuml-syntax";
-    version = "2022-08-26";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "aklt";
       repo = "plantuml-syntax";
-      rev = "845abb56dcd3f12afa6eb47684ef5ba3055802b8";
-      sha256 = "0d2frv6knkj4bjavq2c2kx8qdnmcq0d8l04a5z7bpqwkmrrhd31f";
+      rev = "309c15c77794433f276fb09eb4e3b8f381003cfd";
+      sha256 = "0g7yprik607gy01lamql1kpk25sdl54ckfrc9p11rrimal7rms38";
     };
     meta.homepage = "https://github.com/aklt/plantuml-syntax/";
   };
@@ -8896,12 +8908,12 @@ final: prev:
 
   quarto-nvim = buildVimPlugin {
     pname = "quarto-nvim";
-    version = "2024-02-10";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "quarto-dev";
       repo = "quarto-nvim";
-      rev = "e70a207ede642ccb910540ee36480dcefb67ad6c";
-      sha256 = "1j5yxfmxzc2zimp508r769vgcr4hhn671r4fmwi3nnsrjgp9rq55";
+      rev = "a6e7452de5944f7f38a4b12f1d50e460c1dccd95";
+      sha256 = "0l2qgz51yh4pvx494k8p34xrda4mg38m9dwhy9sdxw01qy910xp8";
     };
     meta.homepage = "https://github.com/quarto-dev/quarto-nvim/";
   };
@@ -8968,11 +8980,11 @@ final: prev:
 
   rainbow-delimiters-nvim = buildVimPlugin {
     pname = "rainbow-delimiters.nvim";
-    version = "2024-02-12";
+    version = "2024-02-22";
     src = fetchgit {
       url = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim";
-      rev = "586f44d21ef687a4d41b5b24c1566d686ae84250";
-      sha256 = "0bvnypwlp688024iaswd9p5d6viyf7p65q09fjlkip28rq50a4cy";
+      rev = "161eb67a82ee269d1037df64c6d5a05bd5860d32";
+      sha256 = "1fg45g6dlnxv9684q3na2kfr5w1m6cbrsjraiap4q7dmndsjxbbr";
     };
     meta.homepage = "https://gitlab.com/HiPhish/rainbow-delimiters.nvim";
   };
@@ -9051,12 +9063,12 @@ final: prev:
 
   refactoring-nvim = buildVimPlugin {
     pname = "refactoring.nvim";
-    version = "2024-02-05";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "theprimeagen";
       repo = "refactoring.nvim";
-      rev = "fb4990a0546c59136930ea624b8640d07957f281";
-      sha256 = "14d33lc0a7r5k7i8x2nzy86xgy6p003cjxv9nc827q1g9jv55r7z";
+      rev = "1b593e7203b31c7bde3fa638e6869144698df3b6";
+      sha256 = "0q0xbn5xxh4fyjm5v2c2pvai9djyk67xk2brqn209sx3qq8drs5n";
     };
     meta.homepage = "https://github.com/theprimeagen/refactoring.nvim/";
   };
@@ -9111,12 +9123,12 @@ final: prev:
 
   rest-nvim = buildNeovimPlugin {
     pname = "rest.nvim";
-    version = "2024-02-12";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "rest-nvim";
       repo = "rest.nvim";
-      rev = "9741f827bd88b588e5136d67c7963e1904f8f1f7";
-      sha256 = "0k16kxz31cxgvsq1341r4gwlyjnavizib3hw2c43x7nw7yxj5mr2";
+      rev = "c27a0bcb84ab5534d89065d638119ed2dbbae189";
+      sha256 = "078w4zr4h302i3d5vd31qypxr2yxhnz0yxkpgvam2z0l3mp07qz0";
     };
     meta.homepage = "https://github.com/rest-nvim/rest.nvim/";
   };
@@ -9231,12 +9243,12 @@ final: prev:
 
   rustaceanvim = buildNeovimPlugin {
     pname = "rustaceanvim";
-    version = "2024-02-15";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "mrcjkb";
       repo = "rustaceanvim";
-      rev = "ec3288d52ed581ee63a10e41a226297801fa6ee8";
-      sha256 = "1nxdyxz416srz4fgpkrnw65kxg6am9ak0yd824667ygsilbcqi2s";
+      rev = "9dbc65d890820ca56fff1ea3e0ecef64f2158140";
+      sha256 = "0r0j4gp1dks77k8b2644xf3v27qmniam5rk8hgklwcab6wf14r9y";
     };
     meta.homepage = "https://github.com/mrcjkb/rustaceanvim/";
   };
@@ -9472,12 +9484,12 @@ final: prev:
 
   smart-splits-nvim = buildVimPlugin {
     pname = "smart-splits.nvim";
-    version = "2024-02-17";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "mrjones2014";
       repo = "smart-splits.nvim";
-      rev = "33c85072ac7901b0f4a68dec7f7d6175f4182377";
-      sha256 = "182i7ak4m4bbxgaipc2kqca5i57qw1p244hgra8sv6xgd3qqjhj0";
+      rev = "e1e1e6ca3754bd8ef971fb69673cc17965eb9e37";
+      sha256 = "12wa0a6igw7hmnmgaspcf2h09vvmcmw49wif77i39bl2asfdblkr";
     };
     meta.homepage = "https://github.com/mrjones2014/smart-splits.nvim/";
   };
@@ -9688,12 +9700,12 @@ final: prev:
 
   splitjoin-vim = buildVimPlugin {
     pname = "splitjoin.vim";
-    version = "2024-02-15";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "AndrewRadev";
       repo = "splitjoin.vim";
-      rev = "3e60a0b460b5bff086b880727392c71276c2c286";
-      sha256 = "063lbb56h9slryp5pk6f5s66dzaiyaq3znp3jxc2qrw0h82657dw";
+      rev = "1aa617d15a9904107a68f95ebf5036b7d4abf64d";
+      sha256 = "1yjygjjiiv5572ccqn00wk7dc7q30r6jnvxv85qrz5bnvvfymvvs";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/AndrewRadev/splitjoin.vim/";
@@ -9701,24 +9713,24 @@ final: prev:
 
   sqlite-lua = buildVimPlugin {
     pname = "sqlite.lua";
-    version = "2023-04-19";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "kkharji";
       repo = "sqlite.lua";
-      rev = "b7e28c8463254c46a8e61c52d27d6a2040492fc3";
-      sha256 = "0dx4d29zfp7psp2x42lpag0midadk51fcjiyw4hq570sd0j44jaw";
+      rev = "40701b6151f8883980c1548647116de39b763540";
+      sha256 = "106j1zzsr97jr0pk6ri2jxdpvqc2ci7g8rlsbb5s30lsqr4ix0ah";
     };
     meta.homepage = "https://github.com/kkharji/sqlite.lua/";
   };
 
   srcery-vim = buildVimPlugin {
     pname = "srcery-vim";
-    version = "2024-02-08";
+    version = "2024-02-17";
     src = fetchFromGitHub {
       owner = "srcery-colors";
       repo = "srcery-vim";
-      rev = "2e9b1d46bf28cf390950c586d5d1c688a009c8ec";
-      sha256 = "0wiz6q8fw9af825knpv5rbmk8qdq9p2b42hcybmj0m9jic288qwd";
+      rev = "289c6a1499b074c15e30cf437364837dd4966f83";
+      sha256 = "1k14nwndx7z3hy7d81zghrrl641bfgpq61n5j0nsrd0kk2xiym61";
     };
     meta.homepage = "https://github.com/srcery-colors/srcery-vim/";
   };
@@ -9821,12 +9833,12 @@ final: prev:
 
   statuscol-nvim = buildVimPlugin {
     pname = "statuscol.nvim";
-    version = "2024-02-15";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "luukvbaal";
       repo = "statuscol.nvim";
-      rev = "eca428c8df8549fe7a480dd0da0ccc1634f16a4b";
-      sha256 = "1p6h5mmz2lz13ghdyva5as1wqh5ysd5d1zgpyvark7w1a10pp616";
+      rev = "d954893262a57a92e46edd87de67e2b3fe72305e";
+      sha256 = "1i8nvhbrcsinydd1ppnrw6lr3izh1dwp860hr7axyfjgqxgx39f8";
     };
     meta.homepage = "https://github.com/luukvbaal/statuscol.nvim/";
   };
@@ -10051,12 +10063,12 @@ final: prev:
 
   tabout-nvim = buildVimPlugin {
     pname = "tabout.nvim";
-    version = "2023-03-29";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "abecodes";
       repo = "tabout.nvim";
-      rev = "0d275c8d25f32457e67b5c66d6ae43f26a61bce5";
-      sha256 = "11zly7bfdz110a7ififylzgizin06ia0i3jipzp12n2n2paarp1f";
+      rev = "6a8f4e67a9bfc9bfc9989cc45253180598cc4339";
+      sha256 = "0j4n6f8k2054v77pm458q0qf36ipyk31lplm2m4fszxq0sq0kmwp";
     };
     meta.homepage = "https://github.com/abecodes/tabout.nvim/";
   };
@@ -10171,12 +10183,12 @@ final: prev:
 
   telekasten-nvim = buildVimPlugin {
     pname = "telekasten.nvim";
-    version = "2023-12-11";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "renerocksai";
       repo = "telekasten.nvim";
-      rev = "8c2b3889eb31009ae510a43384d1957b37654176";
-      sha256 = "1isbz68lbdm50x9mid0l1jid8q11msfsaayw8ravac0z5ybdb8k3";
+      rev = "872b83f619ddfe4312acdc658d129b6828e1f418";
+      sha256 = "0zcsfzw4gk8jn656l7q850v98r255kcfrbs982ncf2mj7rwrpywy";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/renerocksai/telekasten.nvim/";
@@ -10329,12 +10341,12 @@ final: prev:
 
   telescope-manix = buildNeovimPlugin {
     pname = "telescope-manix";
-    version = "2024-02-11";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "MrcJkb";
       repo = "telescope-manix";
-      rev = "47d8bf6c447db33dc059577bd7715665220e79e8";
-      sha256 = "0xxvhi1jp3hfaa06f4jzzqxgk79alkvi2vli59j2j7vj0zvkpm53";
+      rev = "d8f10c235fa153e3de17bf32e886806c3ed382c4";
+      sha256 = "0xrgxgyidz0y7i513vl8ryhsyf3nf9r8408fhhk97ahwdg4kid39";
     };
     meta.homepage = "https://github.com/MrcJkb/telescope-manix/";
   };
@@ -10474,12 +10486,12 @@ final: prev:
 
   telescope-nvim = buildNeovimPlugin {
     pname = "telescope.nvim";
-    version = "2024-02-17";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "nvim-telescope";
       repo = "telescope.nvim";
-      rev = "b744cf59752aaa01561afb4223006de26f3836fd";
-      sha256 = "1fnzr97xkrg9j713pwi9093nw772xabxs9cxdaa61jy4qlxsnkfz";
+      rev = "2e1e382df42467029b493c143c2e727028140214";
+      sha256 = "1f4paibs644zwbz7xi0v0h83w6g2rdxqlf4qajcy8lgh1ig1d59y";
     };
     meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
   };
@@ -10582,12 +10594,12 @@ final: prev:
 
   text-case-nvim = buildVimPlugin {
     pname = "text-case.nvim";
-    version = "2024-02-11";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "johmsalas";
       repo = "text-case.nvim";
-      rev = "5d85b7495c3cf8e842e4d2528edc68e6fe7c92c8";
-      sha256 = "1ri4vp260mvjqkldw9qyp5l31qnks716gz9z2l9vf01wwmxxk76i";
+      rev = "d62c63a4e9a996c7321885937ab89920fca2c1c8";
+      sha256 = "027cgrh0xwnfgakzibzxj3wh8n8q0x5yqjsvhjgcg53pq0yfdss4";
     };
     meta.homepage = "https://github.com/johmsalas/text-case.nvim/";
   };
@@ -10907,12 +10919,12 @@ final: prev:
 
   ultimate-autopair-nvim = buildVimPlugin {
     pname = "ultimate-autopair.nvim";
-    version = "2024-02-07";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "altermo";
       repo = "ultimate-autopair.nvim";
-      rev = "07c9da3e7722107163b68ecc5e0141fdd825449d";
-      sha256 = "16aizsf86cg5l131y2lszlfkdz1b998js89fja8yk25mwa79lsaf";
+      rev = "6ecf7461d44513af89f8257f057fcc99e9297612";
+      sha256 = "01dj9fdzaliwpxh358dql0ndvnykqn8v9w20b7pkn09p1airq937";
     };
     meta.homepage = "https://github.com/altermo/ultimate-autopair.nvim/";
   };
@@ -10955,12 +10967,12 @@ final: prev:
 
   unison = buildVimPlugin {
     pname = "unison";
-    version = "2024-02-13";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "unisonweb";
       repo = "unison";
-      rev = "9d1c75a443fd94efdfa36ec4aa106e0894e03bd1";
-      sha256 = "0g99a224v6brxm15r88chffx1cd009yiix3352h0xd9cl3sf88pv";
+      rev = "5e51fab2004ecfed1fa03adc24faa29b2cb813c2";
+      sha256 = "0y2gkrj026w7kaf3sm62x5fy172gvmkmfg3nlsiwzgm4mlhgsxh8";
     };
     meta.homepage = "https://github.com/unisonweb/unison/";
   };
@@ -11399,12 +11411,12 @@ final: prev:
 
   vim-airline = buildVimPlugin {
     pname = "vim-airline";
-    version = "2024-02-10";
+    version = "2024-02-17";
     src = fetchFromGitHub {
       owner = "vim-airline";
       repo = "vim-airline";
-      rev = "20a49bd494a87a40b815289693c8b7505f0074c0";
-      sha256 = "1nyjgsjs5n0wkw4419fa1p1dpgrbcxpvxgjg7w0zmkm9s4bifyl4";
+      rev = "d9f42cb46710e31962a9609939ddfeb0685dd779";
+      sha256 = "1a4pcyzvqsmsvz7fxf2h5b4v3xlsqv15qyr35xniji44196aaajc";
     };
     meta.homepage = "https://github.com/vim-airline/vim-airline/";
   };
@@ -12215,12 +12227,12 @@ final: prev:
 
   vim-dirvish = buildVimPlugin {
     pname = "vim-dirvish";
-    version = "2024-01-24";
+    version = "2024-02-20";
     src = fetchFromGitHub {
       owner = "justinmk";
       repo = "vim-dirvish";
-      rev = "0966b866580ec5cc8fbc26ee396a516d72600db5";
-      sha256 = "0jmpjrx4kl11hgdaiw5wxfznmn5apl38ykih0mm01hcg49gzirsw";
+      rev = "b660af1fa07fe1d44d4eb3ea5242334f6c2766ca";
+      sha256 = "1h0ypp7fp47dk8sj1xgrm9113cgsvdczmfilbrix5rmm9b0jph2i";
     };
     meta.homepage = "https://github.com/justinmk/vim-dirvish/";
   };
@@ -12239,12 +12251,12 @@ final: prev:
 
   vim-dispatch = buildVimPlugin {
     pname = "vim-dispatch";
-    version = "2024-02-11";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-dispatch";
-      rev = "b84d00f11567abfcfec82a6838c7d41dfa49a447";
-      sha256 = "1gfvlki411i090rjww2nx3jn6z609g6d64xrn2hryjxyqykfnr9s";
+      rev = "4c695bc052cad2ae6b980aebbe48d046466e27ae";
+      sha256 = "13c63n7gylny2s84k05cpl4cjn070d3qk6yagxny23yanz29hc15";
     };
     meta.homepage = "https://github.com/tpope/vim-dispatch/";
   };
@@ -12671,12 +12683,12 @@ final: prev:
 
   vim-fugitive = buildVimPlugin {
     pname = "vim-fugitive";
-    version = "2024-02-12";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "tpope";
       repo = "vim-fugitive";
-      rev = "011cf4fcb93a9649ffc6dcdff56ef948f5d0f7cc";
-      sha256 = "0dmfy7dzfv201fm0l1x18pg8rbjqflg1js6g8f36nlaqn5fvr3bl";
+      rev = "4bc9d989930e37989b038540cc49e63728d3f220";
+      sha256 = "11xskz5qkld0fqgp7a4rrsrzwphf0jzil0vx7j6yy91adhvqbzqr";
     };
     meta.homepage = "https://github.com/tpope/vim-fugitive/";
   };
@@ -12707,12 +12719,12 @@ final: prev:
 
   vim-gh-line = buildVimPlugin {
     pname = "vim-gh-line";
-    version = "2022-11-25";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "ruanyl";
       repo = "vim-gh-line";
-      rev = "fbf368bdfad7e5478009a6dc62559e6b2c72d603";
-      sha256 = "0phxvn08z5bwdq0hkan9l1rl94ylsjc2hhv1ahzqvda0rk8lqxj9";
+      rev = "731751fdfa4f64a061dbc7088cb7b2f12e0828ad";
+      sha256 = "06malyx56zswpzf399y7bsxw45fx2ys9ravdqqxgssvgsslq87fb";
     };
     meta.homepage = "https://github.com/ruanyl/vim-gh-line/";
   };
@@ -13802,12 +13814,12 @@ final: prev:
 
   vim-matchup = buildVimPlugin {
     pname = "vim-matchup";
-    version = "2024-02-02";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "andymass";
       repo = "vim-matchup";
-      rev = "7f81ae12542b2a35819f0324895df9bd8626c8ba";
-      sha256 = "10bbp2hshxghimzlvg6avfqi503skfnjlvxv3aar8rclznxd628z";
+      rev = "2d660e4aa7c566014c667af2cda0458043527902";
+      sha256 = "0a5527gmwf0chdn91s2s8pa7iny3qa5a88c413g4vwch12mn2vrj";
     };
     meta.homepage = "https://github.com/andymass/vim-matchup/";
   };
@@ -14054,12 +14066,12 @@ final: prev:
 
   vim-nix = buildVimPlugin {
     pname = "vim-nix";
-    version = "2024-01-09";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "LnL7";
       repo = "vim-nix";
-      rev = "048c71f1ed2c679cd55acd2c807c2c96aea82e65";
-      sha256 = "1s75divbphd7qgkljj2bl32gb1q7a23r4g023x6v83qzkfxwl8i3";
+      rev = "e25cd0f2e5922f1f4d3cd969f92e35a9a327ffb0";
+      sha256 = "15k08hl1xls2zxa9sgsjygb6j8643pc0s0fpi05bfldf9z4mxzyv";
     };
     meta.homepage = "https://github.com/LnL7/vim-nix/";
   };
@@ -14426,12 +14438,12 @@ final: prev:
 
   vim-plug = buildVimPlugin {
     pname = "vim-plug";
-    version = "2024-02-15";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "junegunn";
       repo = "vim-plug";
-      rev = "eee20c7e795c9268ce36cb30adb66711af868941";
-      sha256 = "01szxcbdvlh2ki6drmpp3yh8m1a7290w5p997gam63s4y8qvbx8r";
+      rev = "2f8f04cf79f424aab8c2372d8e0b89099e3dba65";
+      sha256 = "03jvf9fcz5894g990jbmn7mr9afl07fkglph2lz3b5015i6ywy08";
     };
     meta.homepage = "https://github.com/junegunn/vim-plug/";
   };
@@ -15074,12 +15086,12 @@ final: prev:
 
   vim-sneak = buildVimPlugin {
     pname = "vim-sneak";
-    version = "2024-02-16";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "justinmk";
       repo = "vim-sneak";
-      rev = "1f8702bdee0d19e9354ce26735e5d87865b55dc0";
-      sha256 = "1qkyd43kxc5i8bxmfipf2jkb1wah9jfskdnwvwbkn2bpw8cblf94";
+      rev = "c13d0497139b8796ff9c44ddb9bc0dc9770ad2dd";
+      sha256 = "06dlfp0bdnbb75didd52f03r9y8r7g6wh5bc10m2g00zbnfs3mcx";
     };
     meta.homepage = "https://github.com/justinmk/vim-sneak/";
   };
@@ -15098,12 +15110,12 @@ final: prev:
 
   vim-snippets = buildVimPlugin {
     pname = "vim-snippets";
-    version = "2024-01-24";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "honza";
       repo = "vim-snippets";
-      rev = "9bd88e07865bd4fa982d46356c227b07de66412a";
-      sha256 = "0xy0arqhcndasd4gmh7qbr8aw0ssxgaqy261nzib7f0gd21ig6j4";
+      rev = "393d980157b8149b3ff65a48bc4aae24dca9c846";
+      sha256 = "0fkygzr5srgyyv59glawi9a2j47b57sp20ak9q4qa3izf0z8pk94";
     };
     meta.homepage = "https://github.com/honza/vim-snippets/";
   };
@@ -15555,12 +15567,12 @@ final: prev:
 
   vim-tpipeline = buildVimPlugin {
     pname = "vim-tpipeline";
-    version = "2024-01-27";
+    version = "2024-02-18";
     src = fetchFromGitHub {
       owner = "vimpostor";
       repo = "vim-tpipeline";
-      rev = "86be2d4d7719db34d651df4690ab5f49274c646a";
-      sha256 = "1lh8dvh8din5qnm0icmrvsph4aa4nfh91zf1nf8l5kf5yfr3zy68";
+      rev = "649f079a0bee19565978b82b672d831c6641d952";
+      sha256 = "16lyavpy8qh06l03jqs7klyja3nqs3ynjfy7y8xjmlqa4mgfcffn";
     };
     meta.homepage = "https://github.com/vimpostor/vim-tpipeline/";
   };
@@ -15699,12 +15711,12 @@ final: prev:
 
   vim-visual-multi = buildVimPlugin {
     pname = "vim-visual-multi";
-    version = "2024-02-16";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "mg979";
       repo = "vim-visual-multi";
-      rev = "cff14071098de5279743b009c496303995fe4df9";
-      sha256 = "0v5fzdkihlbwmplfs44mjm08j2qvkq2h6zx0dxn628v7dzqfxcy3";
+      rev = "fe1ec7e430013b83c8c2dee85ae496251b71e253";
+      sha256 = "0mvirqq1gmp2270bm92fk3c4d96r2jlkl2s36pm1d00b7vd3vpll";
     };
     meta.homepage = "https://github.com/mg979/vim-visual-multi/";
   };
@@ -15795,12 +15807,12 @@ final: prev:
 
   vim-wakatime = buildVimPlugin {
     pname = "vim-wakatime";
-    version = "2024-02-07";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "wakatime";
       repo = "vim-wakatime";
-      rev = "a4c66faea1eca47dce7c7c3586332f75cfbe9edf";
-      sha256 = "0ji718y9dkpvqz5r5zkvirksgc4nan5xng53flzjnwdiyfzgz5j2";
+      rev = "285c2e4e48fb0c63ced233c00fb10a2edb3b6c94";
+      sha256 = "1f7jqmsr7b9103g9fif3p8fglrqlgk5nf3ckhkjpwfy6355vk41h";
     };
     meta.homepage = "https://github.com/wakatime/vim-wakatime/";
   };
@@ -16107,12 +16119,12 @@ final: prev:
 
   vimspector = buildVimPlugin {
     pname = "vimspector";
-    version = "2024-02-16";
+    version = "2024-02-17";
     src = fetchFromGitHub {
       owner = "puremourning";
       repo = "vimspector";
-      rev = "da7fc248dc699bf423378bd6e48eaa446f674ca7";
-      sha256 = "0r241p9h48c7hdiwfx382dpfnmjz78phw2vx0cmbc3mvsjqi71pk";
+      rev = "def092693ea33eb2055fb2cfbcabb8e56ea77963";
+      sha256 = "0b4md13a4mdf2knmb0p3c83k3v04hl5y4z2sa2kci3shq41v694x";
       fetchSubmodules = true;
     };
     meta.homepage = "https://github.com/puremourning/vimspector/";
@@ -16120,24 +16132,24 @@ final: prev:
 
   vimtex = buildVimPlugin {
     pname = "vimtex";
-    version = "2024-02-11";
+    version = "2024-02-22";
     src = fetchFromGitHub {
       owner = "lervag";
       repo = "vimtex";
-      rev = "9df79e15bf035d1cfb32c11fffed38dd7b6a0501";
-      sha256 = "06k407g6bs3msvvq8715bk21pj80ybgdhhl84zwf9gxrdrl7yapd";
+      rev = "01c4c167338b74dc0c30621841bc548b52e96330";
+      sha256 = "0gf3ifnyw2207s1r4a0zasx9qdgyymja6nj0dhnys6k3rvax0spp";
     };
     meta.homepage = "https://github.com/lervag/vimtex/";
   };
 
   vimux = buildVimPlugin {
     pname = "vimux";
-    version = "2022-09-26";
+    version = "2024-02-19";
     src = fetchFromGitHub {
       owner = "preservim";
       repo = "vimux";
-      rev = "616fcb4799674a7a809b14ca2dc155bb6ba25788";
-      sha256 = "00lxrajyvg6vl6d87r85wn8swhxq1q2754vs0hnrgxqx6gw4rfga";
+      rev = "f7c41607d9246ec4b6cc28587cce84d75d106e3e";
+      sha256 = "0df041kccvdgn82qqxbwzamc3g1zs5agyyg2xfkqz4ibayq7z5d7";
     };
     meta.homepage = "https://github.com/preservim/vimux/";
   };
@@ -16192,24 +16204,24 @@ final: prev:
 
   vista-vim = buildVimPlugin {
     pname = "vista.vim";
-    version = "2023-11-24";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "liuchengxu";
       repo = "vista.vim";
-      rev = "290b815cd5a5ff1fb65a48936633d93e2bf14dbd";
-      sha256 = "1hqnczyyg21lsv4j3kvp0w84xm0fxzvdmgakwx2q1wg3x1g4ybcf";
+      rev = "f76cecc430003968e6174cae899c2cb2953219b7";
+      sha256 = "0hq41f91f97885vx1rcl981vhwariiwbz2hs0dzryka2ycy5lvy4";
     };
     meta.homepage = "https://github.com/liuchengxu/vista.vim/";
   };
 
   vscode-nvim = buildVimPlugin {
     pname = "vscode.nvim";
-    version = "2024-02-01";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "Mofiqul";
       repo = "vscode.nvim";
-      rev = "380c1068612b1bfbe35d70a4f2e58be5030a0707";
-      sha256 = "1lq1j6wlh8xxzikpab2gciw6gg88hya92bswz0kk75l6fphp41kl";
+      rev = "e4eb84baf3a2b0b761780bc54b726461d23d4d3e";
+      sha256 = "1w85w68xsjzi9cp78f24wl3p9pq9wcaf7mxczxc7mgnyzpfm7az3";
     };
     meta.homepage = "https://github.com/Mofiqul/vscode.nvim/";
   };
@@ -16613,12 +16625,12 @@ final: prev:
 
   catppuccin-nvim = buildVimPlugin {
     pname = "catppuccin-nvim";
-    version = "2024-02-16";
+    version = "2024-02-24";
     src = fetchFromGitHub {
       owner = "catppuccin";
       repo = "nvim";
-      rev = "9703f227bfab20d04bcee62d2f08f1795723b4ae";
-      sha256 = "1sgz7m8gdaam87dw5k609jbihyad9hqmlxplv9xwkp76z7nja6kj";
+      rev = "c0de3b46811fe1ce3912e2245a9dfbea6b41c300";
+      sha256 = "12m5jzp2xyv0hyndscnj7708b8rczsmqqr0kd4ng7kh5ll0xr8br";
     };
     meta.homepage = "https://github.com/catppuccin/nvim/";
   };
@@ -16637,12 +16649,12 @@ final: prev:
 
   dracula-vim = buildVimPlugin {
     pname = "dracula-vim";
-    version = "2023-10-29";
+    version = "2024-02-23";
     src = fetchFromGitHub {
       owner = "dracula";
       repo = "vim";
-      rev = "6495b4ff40479ec7705addb4ea800ec308026648";
-      sha256 = "116gnd891v3rqaxk2dki1ril6j2y7f6vcdh421i0xwnvbj91pfc6";
+      rev = "9fa89296884e47bbadc49ad959e37b9d1c24cafb";
+      sha256 = "0911akib9ys9vyxnalbmyip7m1ahpnsn89km2hrgj0fc9s5m75ky";
     };
     meta.homepage = "https://github.com/dracula/vim/";
   };
@@ -16661,12 +16673,12 @@ final: prev:
 
   gbprod-nord = buildVimPlugin {
     pname = "gbprod-nord";
-    version = "2024-01-28";
+    version = "2024-02-01";
     src = fetchFromGitHub {
       owner = "gbprod";
       repo = "nord.nvim";
-      rev = "fb40d5b19205bc821964f795637250911a9fde0a";
-      sha256 = "10sswfgcl05wpj98m9qlqdbx16ypvmszpipkqhm1n59j43441m0v";
+      rev = "4ae9eb96e9ee65493d4ade102dec7e4b4d4b8b21";
+      sha256 = "1pipplqpmif0wmb9w782bq89dlqidjpi0l8dn1fddr3r7zn7xj48";
     };
     meta.homepage = "https://github.com/gbprod/nord.nvim/";
   };
@@ -16733,24 +16745,24 @@ final: prev:
 
   nvchad-ui = buildVimPlugin {
     pname = "nvchad-ui";
-    version = "2024-02-16";
+    version = "2024-02-21";
     src = fetchFromGitHub {
       owner = "nvchad";
       repo = "ui";
-      rev = "a0d3fd0adc5fd81dc5128ca3b33949196eb1fee8";
-      sha256 = "1kkrffjhr9w8f7qjvzyr82ndqy42w4m542brjvngqd3ykg8ihsgs";
+      rev = "7b3225264af17a9e0aff0b4fd2a0fac90b73db53";
+      sha256 = "00frh2f0vgz9h3ajbig2df6a6jj1sarbwxnxzr232vi25azysy2z";
     };
     meta.homepage = "https://github.com/nvchad/ui/";
   };
 
   phha-zenburn = buildVimPlugin {
     pname = "phha-zenburn";
-    version = "2024-01-07";
+    version = "2024-01-31";
     src = fetchFromGitHub {
       owner = "phha";
       repo = "zenburn.nvim";
-      rev = "512d5192214000a1ddb430d31df2e2a80c88fa8a";
-      sha256 = "1bx0c1xssmvr4ly01gs67241f9wb30k9z8ykwyqicbid2abx2jga";
+      rev = "f5ee12b30119499c7fa7f95719cd7c5aab9f9f29";
+      sha256 = "10wn4b1awk4bzb7isfqbp3pqzi2ifnmcs7zyrwhna1dpwwdpgvbr";
     };
     meta.homepage = "https://github.com/phha/zenburn.nvim/";
   };
@@ -16839,5 +16851,16 @@ final: prev:
     meta.homepage = "https://github.com/jhradilek/vim-snippets/";
   };
 
+  vim-tabby = buildVimPlugin {
+    pname = "vim-tabby";
+    version = "2024-02-01";
+    src = fetchFromGitHub {
+      owner = "TabbyML";
+      repo = "vim-tabby";
+      rev = "0b62bc2ed5c7d930c7435c3504d5c18ea6379b28";
+      sha256 = "06crxhvwz04s6sfj0q22kkp3g5zvip13088m95qwznw9bv2gpx3s";
+    };
+    meta.homepage = "https://github.com/TabbyML/vim-tabby/";
+  };
 
 }
diff --git a/nixpkgs/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix b/nixpkgs/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
index 0ccbc9564e74..7b4653ebf02e 100644
--- a/nixpkgs/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
+++ b/nixpkgs/pkgs/applications/editors/vim/plugins/nvim-treesitter/generated.nix
@@ -50,12 +50,12 @@
   };
   arduino = buildGrammar {
     language = "arduino";
-    version = "0.0.0+rev=2372f16";
+    version = "0.0.0+rev=a282270";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-arduino";
-      rev = "2372f163b8416eeea674686fe0222e39fa06bad5";
-      hash = "sha256-nX0JXEP+fAADlKqMA1rrhKlUS4JMrOtFTQ/wxoOxcIY=";
+      rev = "a282270857b7be447b8be91411468349a31d73b7";
+      hash = "sha256-NAE/E3glGz509nOKO5xsJIwe1Q2OSh6Aj5krUOVhqvw=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-arduino";
   };
@@ -116,14 +116,14 @@
   };
   bass = buildGrammar {
     language = "bass";
-    version = "0.0.0+rev=27f110d";
+    version = "0.0.0+rev=c9ba456";
     src = fetchFromGitHub {
-      owner = "amaanq";
+      owner = "vito";
       repo = "tree-sitter-bass";
-      rev = "27f110dfe79620993f5493ffa0d0f2fe12d250ed";
-      hash = "sha256-OmYtp2TAsAjw2fgdSezHUrP46b/QXgCbDeJa4ANrtvY=";
+      rev = "c9ba4568af24cd3403029730687c0a43d1350a43";
+      hash = "sha256-F131TkIt2mW2n8Da3zI1/B0yoT9Ezo2hWoptpsdMrb4=";
     };
-    meta.homepage = "https://github.com/amaanq/tree-sitter-bass";
+    meta.homepage = "https://github.com/vito/tree-sitter-bass";
   };
   beancount = buildGrammar {
     language = "beancount";
@@ -182,12 +182,12 @@
   };
   c = buildGrammar {
     language = "c";
-    version = "0.0.0+rev=72a60ea";
+    version = "0.0.0+rev=652433f";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-c";
-      rev = "72a60ea888fb59a8e143883661f021139c905b74";
-      hash = "sha256-huEi/PEzjG9mtwL30mJ2oVy+D64d8I9Z/LZc856qlbw=";
+      rev = "652433fce487d8c3943207da38e3e65e4550e288";
+      hash = "sha256-Ld8ufwdOVqRYb9YpOa6z6fWoA+gj0w0nlq3dqhFCap8=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
   };
@@ -226,12 +226,12 @@
   };
   chatito = buildGrammar {
     language = "chatito";
-    version = "0.0.0+rev=308b591";
+    version = "0.0.0+rev=7162ec1";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-chatito";
-      rev = "308b5913fd2ae6b527183ba1b3a490f90da32012";
-      hash = "sha256-oD49Rc1J/CkIAqEFI87efdzGLYl73se0ekpQll/Mpxs=";
+      rev = "7162ec1e8e9154fb334e84aa7637a4af051dfe42";
+      hash = "sha256-phvENW6wEqhKQakeXxsTclhSmFWFgfK9ztCszOGuaYY=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-chatito";
   };
@@ -248,12 +248,12 @@
   };
   cmake = buildGrammar {
     language = "cmake";
-    version = "0.0.0+rev=73ab4b8";
+    version = "0.0.0+rev=f8de25f";
     src = fetchFromGitHub {
       owner = "uyha";
       repo = "tree-sitter-cmake";
-      rev = "73ab4b8e9522f014a67f87f585e820d36fa47408";
-      hash = "sha256-5X4ho6tqPZFQWqoQ6WBsfuA+RbxTX5XzX7xzyFSTifw=";
+      rev = "f8de25f30757a2def006a7c144354710fe63dcf3";
+      hash = "sha256-J8Ro3J9kkH7k/v+nwekCotoS/l28yInhk9p/xaSbegc=";
     };
     meta.homepage = "https://github.com/uyha/tree-sitter-cmake";
   };
@@ -314,12 +314,12 @@
   };
   cpp = buildGrammar {
     language = "cpp";
-    version = "0.0.0+rev=3d98832";
+    version = "0.0.0+rev=e0c1678";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-cpp";
-      rev = "3d988327a1cfd724c0d195b37a1056174fae99bc";
-      hash = "sha256-s7+dRY3OWE7iz9nlqHEOyLlrWaDPF0buDSIjsRYPc7s=";
+      rev = "e0c1678a78731e78655b7d953efb4daecf58be46";
+      hash = "sha256-CdNCVDMAmeJrHgPb2JLxFHj/tHnUYC8flmxj+UaVXTo=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
   };
@@ -348,12 +348,12 @@
   };
   cuda = buildGrammar {
     language = "cuda";
-    version = "0.0.0+rev=2c6e806";
+    version = "0.0.0+rev=221179d";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-cuda";
-      rev = "2c6e806949197e7898910c78f514a3b7ff679068";
-      hash = "sha256-JAShJo+jDv4kzFCPID0C3EokmeiWxMVcJoEsVOzKBEw=";
+      rev = "221179d4287a2c24c08e4c67ff383ef67dc32156";
+      hash = "sha256-e01PTB+SduikiiDvOW411v0pBXCqOFBWlu3HgmM6jFg=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
   };
@@ -370,12 +370,12 @@
   };
   d = buildGrammar {
     language = "d";
-    version = "0.0.0+rev=d9a1a2e";
+    version = "0.0.0+rev=a33d400";
     src = fetchFromGitHub {
       owner = "gdamore";
       repo = "tree-sitter-d";
-      rev = "d9a1a2ed77017c23f715643f4739433a5ea7ab6f";
-      hash = "sha256-GgecDpsZMBTEqHjSbNyUUA6HzGuYEgtqZ9AB+6+fsDo=";
+      rev = "a33d400f025d6bbd37b4c681c93054976f579890";
+      hash = "sha256-LUb+1dTj1IP5ZtWaWBT8UWnGEqb0DJodgbkwnT7xywk=";
     };
     meta.homepage = "https://github.com/gdamore/tree-sitter-d";
   };
@@ -469,12 +469,12 @@
   };
   dtd = buildGrammar {
     language = "dtd";
-    version = "0.0.0+rev=2743ff8";
+    version = "0.0.0+rev=52b3783";
     src = fetchFromGitHub {
       owner = "tree-sitter-grammars";
       repo = "tree-sitter-xml";
-      rev = "2743ff864eac85cec830ff400f2e0024b9ca588b";
-      hash = "sha256-wuj3Q+LAtAS99pwJUD+3BzndVeNhzvQlaugzTHRvUjI=";
+      rev = "52b3783d0c89a69ec64b2d49eee95f44a7fdcd2a";
+      hash = "sha256-DVx/JwQXFEgY3XXo2rOVIWBRHdqprNgja9lAashkh5g=";
     };
     location = "dtd";
     meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml";
@@ -526,12 +526,12 @@
   };
   elm = buildGrammar {
     language = "elm";
-    version = "0.0.0+rev=c26afd7";
+    version = "0.0.0+rev=09dbf22";
     src = fetchFromGitHub {
       owner = "elm-tooling";
       repo = "tree-sitter-elm";
-      rev = "c26afd7f2316f689410a1622f1780eff054994b1";
-      hash = "sha256-vYN1E49IpsvTUmxuzRyydCmhYZYGndcZPMBYgSMudrE=";
+      rev = "09dbf221d7491dc8d8839616b27c21b9c025c457";
+      hash = "sha256-Bq2oWtqEAsKyV0iHNKC+hXW4fh4yUwbfUhPtZWg5pug=";
     };
     meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
   };
@@ -592,25 +592,36 @@
   };
   faust = buildGrammar {
     language = "faust";
-    version = "0.0.0+rev=9e514af";
+    version = "0.0.0+rev=f3b9274";
     src = fetchFromGitHub {
       owner = "khiner";
       repo = "tree-sitter-faust";
-      rev = "9e514af33bfe061d0ccf1999dbcc93fca91f133c";
-      hash = "sha256-FZ5wl6Pl2Y86dNpaRMTh8Q7TEx/s0YoV9/H1J+qwlwo=";
+      rev = "f3b9274514b5f9bf6b0dd4a01c30f9cc15c58bc4";
+      hash = "sha256-JwR8LCEptgQmEG/ruK5ukIGCNtvKJw5bobZ0WXF1ulY=";
     };
     meta.homepage = "https://github.com/khiner/tree-sitter-faust";
   };
   fennel = buildGrammar {
     language = "fennel";
-    version = "0.0.0+rev=15e4f8c";
+    version = "0.0.0+rev=215e391";
     src = fetchFromGitHub {
-      owner = "travonted";
+      owner = "alexmozaidze";
       repo = "tree-sitter-fennel";
-      rev = "15e4f8c417281768db17080c4447297f8ff5343a";
-      hash = "sha256-BdhgDS+yJ/DUYJknVksLSNHvei+MOkqVW7gp6AffKhU=";
+      rev = "215e3913524abc119daa9db7cf6ad2f2f5620189";
+      hash = "sha256-myh0+ZNDzdUZFAdsw8uVGyo0VYh0wKNZ11vlJKTSZnA=";
+    };
+    meta.homepage = "https://github.com/alexmozaidze/tree-sitter-fennel";
+  };
+  fidl = buildGrammar {
+    language = "fidl";
+    version = "0.0.0+rev=bdbb635";
+    src = fetchFromGitHub {
+      owner = "google";
+      repo = "tree-sitter-fidl";
+      rev = "bdbb635a7f5035e424f6173f2f11b9cd79703f8d";
+      hash = "sha256-+s9AC7kAfPumREnc7xCSsYiaDwLp3uirLntwd2wK6Wo=";
     };
-    meta.homepage = "https://github.com/travonted/tree-sitter-fennel";
+    meta.homepage = "https://github.com/google/tree-sitter-fidl";
   };
   firrtl = buildGrammar {
     language = "firrtl";
@@ -702,12 +713,12 @@
   };
   gdscript = buildGrammar {
     language = "gdscript";
-    version = "0.0.0+rev=03f20b9";
+    version = "0.0.0+rev=b5dea4d";
     src = fetchFromGitHub {
       owner = "PrestonKnopp";
       repo = "tree-sitter-gdscript";
-      rev = "03f20b94707a21bed90bb95101684bc4036139ce";
-      hash = "sha256-im87Rws9PPcBWNN0M8PNqnthJZlWKzn3iPLMGR+jtGo=";
+      rev = "b5dea4d852db65f0872d849c24533eb121e03c76";
+      hash = "sha256-/fmg7DfVX62F3sEovFaMs4dTA4rvPexOdQop3257op4=";
     };
     meta.homepage = "https://github.com/PrestonKnopp/tree-sitter-gdscript";
   };
@@ -735,12 +746,12 @@
   };
   gitattributes = buildGrammar {
     language = "gitattributes";
-    version = "0.0.0+rev=3d03b37";
+    version = "0.0.0+rev=0750b59";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-gitattributes";
-      rev = "3d03b37395f5707b6a2bfb43f62957fe0e669c0c";
-      hash = "sha256-+DvxhL+m3Nagv0GXWWWYsIIDuWNzlK1vNVLOO0qBl2E=";
+      rev = "0750b5904f37d6b2f47f6e4655001c2c35a172ec";
+      hash = "sha256-BXsF++uut1WWxe67E+CUh3e6VWrezNJaPfYJhXB0VlY=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-gitattributes";
   };
@@ -999,23 +1010,23 @@
   };
   hlsl = buildGrammar {
     language = "hlsl";
-    version = "0.0.0+rev=840fd07";
+    version = "0.0.0+rev=f820ee8";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-hlsl";
-      rev = "840fd07f09304bca415b93a15483e9ab1e44bc3f";
-      hash = "sha256-GPY6udz0YZawmQ6WcItXchUeag9EO+eMMGoYSaRsdrY=";
+      rev = "f820ee8417451f69020791cf691904ec1b63f20d";
+      hash = "sha256-d80vNrZGaPWlST5tgvf25CliuzS+zSZ60f49cRuucZ4=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
   };
   hlsplaylist = buildGrammar {
     language = "hlsplaylist";
-    version = "0.0.0+rev=ff121d3";
+    version = "0.0.0+rev=5be34b0";
     src = fetchFromGitHub {
       owner = "Freed-Wu";
       repo = "tree-sitter-hlsplaylist";
-      rev = "ff121d397cf7cc709e3bbc928107fc25529e11e0";
-      hash = "sha256-FItkJbxWfpRne27OPRq5fCHUCX35fxmiT6k1eX8UkhI=";
+      rev = "5be34b0f6ea01b24f017c2c715729a3a919f57fd";
+      hash = "sha256-3ZFaIc4BrfR7dLxftbSLuFdErjYrJgi0Cd8jp9PB19U=";
     };
     meta.homepage = "https://github.com/Freed-Wu/tree-sitter-hlsplaylist";
   };
@@ -1043,12 +1054,12 @@
   };
   html = buildGrammar {
     language = "html";
-    version = "0.0.0+rev=438d694";
+    version = "0.0.0+rev=b5d9758";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-html";
-      rev = "438d694a1f51e1704cb779ad4fec2517523b1d7f";
-      hash = "sha256-NL1tOr7V3QVsVu2OfzLzFpe/FpYVD6MCgdSV0I6AkRY=";
+      rev = "b5d9758e22b4d3d25704b72526670759a9e4d195";
+      hash = "sha256-v3BD36OKkzJ1xqQV87HAyQpnQzi/4+PuyEAM1HfkW3U=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-html";
   };
@@ -1175,12 +1186,12 @@
   };
   json = buildGrammar {
     language = "json";
-    version = "0.0.0+rev=ac6ddfa";
+    version = "0.0.0+rev=3b12920";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-json";
-      rev = "ac6ddfa7775795a3d8f5edab4a71e3a49f932b6a";
-      hash = "sha256-T/y1xfHv3G3cTD2xw43tMiW8agKwE5CV/uwThSHkd84=";
+      rev = "3b129203f4b72d532f58e72c5310c0a7db3b8e6d";
+      hash = "sha256-dVErHgsUDEN42wc/Gd68vQfVc8+/r/8No9KZk2GFzmY=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-json";
   };
@@ -1351,12 +1362,12 @@
   };
   lua = buildGrammar {
     language = "lua";
-    version = "0.0.0+rev=9668709";
+    version = "0.0.0+rev=04c9579";
     src = fetchFromGitHub {
       owner = "MunifTanjim";
       repo = "tree-sitter-lua";
-      rev = "9668709211b2e683f27f414454a8b51bf0a6bda1";
-      hash = "sha256-5t5w8KqbefInNbA12/jpNzmky/uOUhsLjKdEqpl1GEc=";
+      rev = "04c9579dcb917255b2e5f8199df4ae7f587d472f";
+      hash = "sha256-kzyn6XF4/PN8civ/0UV+ancCMkh7DF2B7WUYxix6aaM=";
     };
     meta.homepage = "https://github.com/MunifTanjim/tree-sitter-lua";
   };
@@ -1417,24 +1428,24 @@
   };
   markdown = buildGrammar {
     language = "markdown";
-    version = "0.0.0+rev=23d9cb2";
+    version = "0.0.0+rev=2821521";
     src = fetchFromGitHub {
       owner = "MDeiml";
       repo = "tree-sitter-markdown";
-      rev = "23d9cb2ce2f4d0914e7609b500c5fc8dfae0176f";
-      hash = "sha256-Z42w7gSUV9/9Q1jtCrd03cjlMUjHC5Vjie1x8m8K5uw=";
+      rev = "2821521a4e6eab37b63dff6a8e169cd88554047d";
+      hash = "sha256-JoZ/CKIMHVowwqTMFdys+Qu1CHMsP+8Wr2LJo5h30B4=";
     };
     location = "tree-sitter-markdown";
     meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
   };
   markdown_inline = buildGrammar {
     language = "markdown_inline";
-    version = "0.0.0+rev=23d9cb2";
+    version = "0.0.0+rev=2821521";
     src = fetchFromGitHub {
       owner = "MDeiml";
       repo = "tree-sitter-markdown";
-      rev = "23d9cb2ce2f4d0914e7609b500c5fc8dfae0176f";
-      hash = "sha256-Z42w7gSUV9/9Q1jtCrd03cjlMUjHC5Vjie1x8m8K5uw=";
+      rev = "2821521a4e6eab37b63dff6a8e169cd88554047d";
+      hash = "sha256-JoZ/CKIMHVowwqTMFdys+Qu1CHMsP+8Wr2LJo5h30B4=";
     };
     location = "tree-sitter-markdown-inline";
     meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
@@ -1474,35 +1485,35 @@
   };
   meson = buildGrammar {
     language = "meson";
-    version = "0.0.0+rev=3d6dfbd";
+    version = "0.0.0+rev=d6ec8ce";
     src = fetchFromGitHub {
       owner = "Decodetalkers";
       repo = "tree-sitter-meson";
-      rev = "3d6dfbdb2432603bc84ca7dc009bb39ed9a8a7b1";
-      hash = "sha256-NRiecSr5UjISlFtmtvy3SYaWSmXMf0bKCKQVA83Jx+Y=";
+      rev = "d6ec8ce0963c3c8180161391f15d8f7d415f650d";
+      hash = "sha256-SwcBhg6luPAOtaL5dhvLxCpJcwlGhZxhvVmn5pa6ecA=";
     };
     meta.homepage = "https://github.com/Decodetalkers/tree-sitter-meson";
   };
   mlir = buildGrammar {
     language = "mlir";
-    version = "0.0.0+rev=650a8fb";
+    version = "0.0.0+rev=117cbbc";
     src = fetchFromGitHub {
       owner = "artagnon";
       repo = "tree-sitter-mlir";
-      rev = "650a8fb72013ba8d169bdb458e480d640fc545c9";
-      hash = "sha256-Xmn5WaOgvAVyr1Bgzr+QG9G/kymtl4CUvLL5SPZdikU=";
+      rev = "117cbbc46bbf82ae30b24f8939573655017226da";
+      hash = "sha256-c0+Pvhe++fHmRL9Ptri+vsdRN3MCb2Z/7EqWmFaK/CE=";
     };
     generate = true;
     meta.homepage = "https://github.com/artagnon/tree-sitter-mlir";
   };
   muttrc = buildGrammar {
     language = "muttrc";
-    version = "0.0.0+rev=0af0e0d";
+    version = "0.0.0+rev=67d9e23";
     src = fetchFromGitHub {
       owner = "neomutt";
       repo = "tree-sitter-muttrc";
-      rev = "0af0e0d8c8cf59dc21cfe565489da0c247374b9f";
-      hash = "sha256-AB8c2mV2sTNwN8sZkv3RbRKdxZW467P6epX+Z4LWqbU=";
+      rev = "67d9e23ca7aa22d9bce9d16c53d2c927dff5159a";
+      hash = "sha256-B3/VoPq8h7TiwOP0nhsuPmFtkLsucpDm9RnUNXkfKpo=";
     };
     meta.homepage = "https://github.com/neomutt/tree-sitter-muttrc";
   };
@@ -1519,23 +1530,23 @@
   };
   nickel = buildGrammar {
     language = "nickel";
-    version = "0.0.0+rev=091b5dc";
+    version = "0.0.0+rev=19fb551";
     src = fetchFromGitHub {
       owner = "nickel-lang";
       repo = "tree-sitter-nickel";
-      rev = "091b5dcc7d138901bcc162da9409c0bb626c0d27";
-      hash = "sha256-HyHdameEgET5UXKMgw7EJvZsJxToc9Qz26XHvc5qmU0=";
+      rev = "19fb551196d18b75160631f5e3a8a006b3875276";
+      hash = "sha256-NXyagRPUT3h8G6R+eE4YrTnWtfB3AT/piXeun5ETU6s=";
     };
     meta.homepage = "https://github.com/nickel-lang/tree-sitter-nickel";
   };
   nim = buildGrammar {
     language = "nim";
-    version = "0.0.0+rev=70ceee8";
+    version = "0.0.0+rev=c5f0ce3";
     src = fetchFromGitHub {
       owner = "alaviss";
       repo = "tree-sitter-nim";
-      rev = "70ceee835e033acbc7092cd7f4f6a251789af121";
-      hash = "sha256-9+ADYNrtdva/DkkjPwavyU0cL6eunqq4TX9IUQi9eKw=";
+      rev = "c5f0ce3b65222f5dbb1a12f9fe894524881ad590";
+      hash = "sha256-KzAZf5vgrdp33esrgle71i0m52MvRJ3z/sMwzb+CueU=";
     };
     meta.homepage = "https://github.com/alaviss/tree-sitter-nim";
   };
@@ -1698,46 +1709,46 @@
   };
   pem = buildGrammar {
     language = "pem";
-    version = "0.0.0+rev=7905a16";
+    version = "0.0.0+rev=db307bb";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-pem";
-      rev = "7905a168036e23605160a0d32a142f58ab5eaa06";
-      hash = "sha256-6gEOrpJ/5UDMMVqKh0XQX+K3JOPiOk5H6CWZgB59h00=";
+      rev = "db307bbb7dc4f721bf2f5ba7fcedaf58feeb59e0";
+      hash = "sha256-uBZo16QtZtbYc4jHdFt1w/zMx9F+WKBB+ANre8IURHA=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-pem";
   };
   perl = buildGrammar {
     language = "perl";
-    version = "0.0.0+rev=a30394f";
+    version = "0.0.0+rev=fd8b951";
     src = fetchFromGitHub {
       owner = "tree-sitter-perl";
       repo = "tree-sitter-perl";
-      rev = "a30394f61b607f48c841c6e085d5219f23872816";
-      hash = "sha256-3aWBh5jKXUYXxOv+RKyEpwJVOoP7QuaRQZHw0yOy6tQ=";
+      rev = "fd8b951cf6f72d48dfd07679de8cf0260836b231";
+      hash = "sha256-ejbpska3Ar0cjqDGZXXjRkpDLNsnDUJD0TBsb2cZfY4=";
     };
     meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl";
   };
   php = buildGrammar {
     language = "php";
-    version = "0.0.0+rev=caf4d67";
+    version = "0.0.0+rev=710754c";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-php";
-      rev = "caf4d67d55386d3e4f85d29450b8d9cacbb02d19";
-      hash = "sha256-L0M9v/T3W3v+pES2AytZ6V4jHfnSklFBRGPW3/oB2Aw=";
+      rev = "710754c879435178b7643e525c84cd53f32c510c";
+      hash = "sha256-vOvuctPCcKs5iQ88Tv3Euxk7fDg06o1leRWUic4qzLQ=";
     };
     location = "php";
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
   };
   php_only = buildGrammar {
     language = "php_only";
-    version = "0.0.0+rev=caf4d67";
+    version = "0.0.0+rev=710754c";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-php";
-      rev = "caf4d67d55386d3e4f85d29450b8d9cacbb02d19";
-      hash = "sha256-L0M9v/T3W3v+pES2AytZ6V4jHfnSklFBRGPW3/oB2Aw=";
+      rev = "710754c879435178b7643e525c84cd53f32c510c";
+      hash = "sha256-vOvuctPCcKs5iQ88Tv3Euxk7fDg06o1leRWUic4qzLQ=";
     };
     location = "php_only";
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
@@ -1788,12 +1799,12 @@
   };
   poe_filter = buildGrammar {
     language = "poe_filter";
-    version = "0.0.0+rev=99ce487";
+    version = "0.0.0+rev=bf912df";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-poe-filter";
-      rev = "99ce487804eab781e1e1cb39de82aea236346c96";
-      hash = "sha256-kMk0gCb2/FExKyGPeRDCd6rW/R3eH1iuE7udnFoI5UY=";
+      rev = "bf912df70f60b356c70631d9cbb317b41c1ea319";
+      hash = "sha256-EHftq35YJzElvYiJxiu7iIcugoXME7CXuQSo1ktG584=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-poe-filter";
   };
@@ -1810,12 +1821,12 @@
   };
   printf = buildGrammar {
     language = "printf";
-    version = "0.0.0+rev=ddff4ce";
+    version = "0.0.0+rev=0e0acea";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-printf";
-      rev = "ddff4ce4d630d1f1a3b591d77b2618a4169b36b9";
-      hash = "sha256-MIj4tP2+zb43pcnSBSVjPpKxjbxKFJTcz8AJphEvh6k=";
+      rev = "0e0aceabbf607ea09e03562f5d8a56f048ddea3d";
+      hash = "sha256-y/7CDnHpT3D6hL0f+52mReCphn+lvElfQQKJwY4fr9c=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-printf";
   };
@@ -1843,14 +1854,14 @@
   };
   properties = buildGrammar {
     language = "properties";
-    version = "0.0.0+rev=74e5d3c";
+    version = "0.0.0+rev=189b3cc";
     src = fetchFromGitHub {
-      owner = "ObserverOfTime";
+      owner = "tree-sitter-grammars";
       repo = "tree-sitter-properties";
-      rev = "74e5d3c63d0da17c0800b3cf9090b24637ef6b59";
-      hash = "sha256-oB5TA8dZtuFop7Urggv2ZWWi8s6wDsIL+ZG5+sCQgq8=";
+      rev = "189b3cc18d36871c27ebb0adcf0cddd123b0cbba";
+      hash = "sha256-5cA2DDMiP8axu8Jl1M+CoxHoB+Jc/VMy3vXME+yxH9o=";
     };
-    meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-properties";
+    meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-properties";
   };
   proto = buildGrammar {
     language = "proto";
@@ -1899,12 +1910,12 @@
   };
   puppet = buildGrammar {
     language = "puppet";
-    version = "0.0.0+rev=9ce9a5f";
+    version = "0.0.0+rev=3641b9e";
     src = fetchFromGitHub {
       owner = "amaanq";
       repo = "tree-sitter-puppet";
-      rev = "9ce9a5f7d64528572aaa8d59459ba869e634086b";
-      hash = "sha256-YEjjy9WLwITERYqoeSVrRYnwVBIAwdc4o0lvAK9wizw=";
+      rev = "3641b9e854ac9c84c7576e71c4c9a357bcfd9550";
+      hash = "sha256-J1DBjQRdV4R85NTyg/qmwbjm1bryKe3UOdp4XyH6BQc=";
     };
     meta.homepage = "https://github.com/amaanq/tree-sitter-puppet";
   };
@@ -2042,12 +2053,12 @@
   };
   readline = buildGrammar {
     language = "readline";
-    version = "0.0.0+rev=f2f98d4";
+    version = "0.0.0+rev=e436eae";
     src = fetchFromGitHub {
       owner = "ribru17";
       repo = "tree-sitter-readline";
-      rev = "f2f98d4263949d696e69a425f65326c59d1ceedc";
-      hash = "sha256-+T4HS2QqoXFRgBfY61NHK4EyQ/HF26eeMt9KV2Ud0Ug=";
+      rev = "e436eaef452266a3d00c195f0eb757d6502c767a";
+      hash = "sha256-y38TDQ+7wBzEKol/UQ5Xk6f15wUW7hJxByDuhx9d0hQ=";
     };
     meta.homepage = "https://github.com/ribru17/tree-sitter-readline";
   };
@@ -2141,12 +2152,12 @@
   };
   rust = buildGrammar {
     language = "rust";
-    version = "0.0.0+rev=a70daac";
+    version = "0.0.0+rev=85a21c9";
     src = fetchFromGitHub {
       owner = "tree-sitter";
       repo = "tree-sitter-rust";
-      rev = "a70daac064145c84e9d51767c2575bb68d51df58";
-      hash = "sha256-2Y7sQ5bhKEpbDAHd5zJMGAlDWH32tJXxAgFOYY8S7o8=";
+      rev = "85a21c96d31b2a5c4369e5836a7f4ab059268fea";
+      hash = "sha256-uxOjdB65+HjNuOybbYb2N9R0I+bt909bIBOzmh9vfVc=";
     };
     meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust";
   };
@@ -2197,23 +2208,23 @@
   };
   slang = buildGrammar {
     language = "slang";
-    version = "0.0.0+rev=130b2f5";
+    version = "0.0.0+rev=0cdfb17";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-slang";
-      rev = "130b2f5c7a1d5c24645c3518db4bc2b22dd90718";
-      hash = "sha256-gDN8nyQjxE7Hko3MJJj2Le0Ey0pd3GlG5QWkDf8c7Q0=";
+      rev = "0cdfb1741323f38e9a33798674145c22cfc0092b";
+      hash = "sha256-1xSnb3n9u45B2gEBApZpZlb1VvbJOrmgQwrPL2OuGro=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-slang";
   };
   slint = buildGrammar {
     language = "slint";
-    version = "0.0.0+rev=68405a4";
+    version = "0.0.0+rev=3c82235";
     src = fetchFromGitHub {
       owner = "slint-ui";
       repo = "tree-sitter-slint";
-      rev = "68405a45f7a5311cd1f77e40ba84199573303f52";
-      hash = "sha256-zmmxXU7w5N8XjKn2Uu/nAc/FjCAprdKyJ0c75CGUgpk=";
+      rev = "3c82235f41b63f35a01ae3888206e93585cbb84a";
+      hash = "sha256-D3X2YwvxvseIGnKzaSocr3Ak7qoASZhxyRS+rtpir0g=";
     };
     meta.homepage = "https://github.com/slint-ui/tree-sitter-slint";
   };
@@ -2287,12 +2298,12 @@
   };
   sourcepawn = buildGrammar {
     language = "sourcepawn";
-    version = "0.0.0+rev=846ec64";
+    version = "0.0.0+rev=39ce73a";
     src = fetchFromGitHub {
       owner = "nilshelmig";
       repo = "tree-sitter-sourcepawn";
-      rev = "846ec647109a1f3dfab17c025c80ecdf6fd56581";
-      hash = "sha256-3yRBrzuzjWKKpLO+58P/JdNvjPj2o1HuBZOKkFh2RCs=";
+      rev = "39ce73ad42b2c4f52848d16093c24feddaa7d226";
+      hash = "sha256-CyCUGGycWpgQl/BGDjRHwYoa9Mess49jUf9WUkRaliE=";
     };
     meta.homepage = "https://github.com/nilshelmig/tree-sitter-sourcepawn";
   };
@@ -2397,23 +2408,23 @@
   };
   svelte = buildGrammar {
     language = "svelte";
-    version = "0.0.0+rev=bd60db7";
+    version = "0.0.0+rev=04a126d";
     src = fetchFromGitHub {
-      owner = "Himujjal";
+      owner = "tree-sitter-grammars";
       repo = "tree-sitter-svelte";
-      rev = "bd60db7d3d06f89b6ec3b287c9a6e9190b5564bd";
-      hash = "sha256-FZuzbTOP9LokPb77DSUwIXCFvMmDQPyyLKt7vNtEuAY=";
+      rev = "04a126d9210def99f06d9ab84a255110b862d47c";
+      hash = "sha256-F6AC72IHMKs1jTwshwNkAXFfiBGEbBn7m83xedCoDsA=";
     };
-    meta.homepage = "https://github.com/Himujjal/tree-sitter-svelte";
+    meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-svelte";
   };
   swift = buildGrammar {
     language = "swift";
-    version = "0.0.0+rev=dabbcf9";
+    version = "0.0.0+rev=e1ac0c3";
     src = fetchFromGitHub {
       owner = "alex-pinkus";
       repo = "tree-sitter-swift";
-      rev = "dabbcf9a2311e08c1b020e1258849b8359e9de1a";
-      hash = "sha256-U4r2uEDqBXeDC0NkOvSwkKreJnFSStxJisNPLJ4CTZs=";
+      rev = "e1ac0c3b48f4c42c40f92f400f14c6561369d4dd";
+      hash = "sha256-7MXH3ZDMH3Im/t5FPMGw6MGKMS+hKaHKUvTXXCrvgtI=";
     };
     generate = true;
     meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift";
@@ -2552,6 +2563,17 @@
     };
     meta.homepage = "https://github.com/tlaplus-community/tree-sitter-tlaplus";
   };
+  tmux = buildGrammar {
+    language = "tmux";
+    version = "0.0.0+rev=10737f5";
+    src = fetchFromGitHub {
+      owner = "Freed-Wu";
+      repo = "tree-sitter-tmux";
+      rev = "10737f5dc4d8e68c9667f11a6996688a1185755f";
+      hash = "sha256-7MQYyWu1Rw3Vwmp3nbuorn9rD0xcEU5nRXPuTVpOqkM=";
+    };
+    meta.homepage = "https://github.com/Freed-Wu/tree-sitter-tmux";
+  };
   todotxt = buildGrammar {
     language = "todotxt";
     version = "0.0.0+rev=3937c5c";
@@ -2643,6 +2665,17 @@
     };
     meta.homepage = "https://github.com/Teddytrombone/tree-sitter-typoscript";
   };
+  typst = buildGrammar {
+    language = "typst";
+    version = "0.0.0+rev=c757be0";
+    src = fetchFromGitHub {
+      owner = "uben0";
+      repo = "tree-sitter-typst";
+      rev = "c757be0898e2a58f4e9761aa164dc413bf5beaf8";
+      hash = "sha256-z0x47Qrr8mYroDtXapRmzOMHOxlYmQmonN0P7VSCBu0=";
+    };
+    meta.homepage = "https://github.com/uben0/tree-sitter-typst";
+  };
   udev = buildGrammar {
     language = "udev";
     version = "0.0.0+rev=15d89be";
@@ -2746,23 +2779,23 @@
   };
   vim = buildGrammar {
     language = "vim";
-    version = "0.0.0+rev=32c76f1";
+    version = "0.0.0+rev=bc1364d";
     src = fetchFromGitHub {
       owner = "neovim";
       repo = "tree-sitter-vim";
-      rev = "32c76f150347c1cd044e90b8e2bc73c00677fa55";
-      hash = "sha256-14lkrGZ5JpbPvb5Pm2UzLodhO1IEz5rBETTU0RZDFc4=";
+      rev = "bc1364d922952138957a62105171ed68e73fbb6c";
+      hash = "sha256-5h1GYjyYMJd5GS0zXh0LP1wBs60fYohpFv89gcdZ4vU=";
     };
     meta.homepage = "https://github.com/neovim/tree-sitter-vim";
   };
   vimdoc = buildGrammar {
     language = "vimdoc";
-    version = "0.0.0+rev=ed8695a";
+    version = "0.0.0+rev=40fcd50";
     src = fetchFromGitHub {
       owner = "neovim";
       repo = "tree-sitter-vimdoc";
-      rev = "ed8695ad8de39c3f073da130156f00b1148e2891";
-      hash = "sha256-q5Ln8WPFrtKBfZnaAAlMh3Q/eczEt6wCMZAtx+ISCKg=";
+      rev = "40fcd50a2c7b5a3ef98294795116773b24fb61ab";
+      hash = "sha256-i/O8vIjiyOoFECS1nmKfL/8hofzSvwg5cJo7JooJGOY=";
     };
     meta.homepage = "https://github.com/neovim/tree-sitter-vimdoc";
   };
@@ -2790,23 +2823,23 @@
   };
   wgsl_bevy = buildGrammar {
     language = "wgsl_bevy";
-    version = "0.0.0+rev=a041228";
+    version = "0.0.0+rev=cbd58ee";
     src = fetchFromGitHub {
       owner = "theHamsta";
       repo = "tree-sitter-wgsl-bevy";
-      rev = "a041228ae64632f59b9bd37346a0dbcb7817f36b";
-      hash = "sha256-bBGunOcFPrHWLsP1ISgdFBNDIBbB0uhwxKAwmQZg7/k=";
+      rev = "cbd58ee33e24f46d16b9882b001eefb25a958ee2";
+      hash = "sha256-EPpI4UJ/5GB2iDQGoSziUOcP1TVf7VU4FMTKvrujcAY=";
     };
     meta.homepage = "https://github.com/theHamsta/tree-sitter-wgsl-bevy";
   };
   wing = buildGrammar {
     language = "wing";
-    version = "0.0.0+rev=f7965a9";
+    version = "0.0.0+rev=52ef462";
     src = fetchFromGitHub {
       owner = "winglang";
       repo = "wing";
-      rev = "f7965a947d2eaa8b5b9bba1c42a0e1891f1a0b2a";
-      hash = "sha256-qQ74aj7pccc3gvmeNoa0BBTMdNTmcc0h8aWNcLvpMRY=";
+      rev = "52ef462f76e199845a5df4834b838339e0a6efdb";
+      hash = "sha256-eZEyk285EyfduzrVH3Ojbwu8mbRFfZY6lrQQQT1kWM8=";
     };
     location = "libs/tree-sitter-wing";
     generate = true;
@@ -2814,23 +2847,23 @@
   };
   xcompose = buildGrammar {
     language = "xcompose";
-    version = "0.0.0+rev=8898238";
+    version = "0.0.0+rev=7fd1494";
     src = fetchFromGitHub {
       owner = "ObserverOfTime";
       repo = "tree-sitter-xcompose";
-      rev = "8898238fca7e143760386448093392b87e58002e";
-      hash = "sha256-1U3FFO6j4jdynDTRQlD8kfTYTiKvC7ZjxSECMW9NYGY=";
+      rev = "7fd14940e0478fce79ea195067ed14a2c42c654a";
+      hash = "sha256-elnm1HjE4hLFMR/XhCPhOcGjqS9FbCULPRb/IntpQ3U=";
     };
     meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-xcompose";
   };
   xml = buildGrammar {
     language = "xml";
-    version = "0.0.0+rev=2743ff8";
+    version = "0.0.0+rev=52b3783";
     src = fetchFromGitHub {
       owner = "tree-sitter-grammars";
       repo = "tree-sitter-xml";
-      rev = "2743ff864eac85cec830ff400f2e0024b9ca588b";
-      hash = "sha256-wuj3Q+LAtAS99pwJUD+3BzndVeNhzvQlaugzTHRvUjI=";
+      rev = "52b3783d0c89a69ec64b2d49eee95f44a7fdcd2a";
+      hash = "sha256-DVx/JwQXFEgY3XXo2rOVIWBRHdqprNgja9lAashkh5g=";
     };
     location = "xml";
     meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-xml";
@@ -2870,12 +2903,12 @@
   };
   zathurarc = buildGrammar {
     language = "zathurarc";
-    version = "0.0.0+rev=fe37e85";
+    version = "0.0.0+rev=353bdf2";
     src = fetchFromGitHub {
       owner = "Freed-Wu";
       repo = "tree-sitter-zathurarc";
-      rev = "fe37e85db355c737573315f278672534c40fe140";
-      hash = "sha256-lQFCJhyJTCa+zdsobMutgbQqJ9mhehaIbRLbds0riEo=";
+      rev = "353bdf25e7af9c2830e254977fd3fb57ccaa8203";
+      hash = "sha256-vFDz4X0ujqM9GbrpGt3dRjvo0SR07E2qXrT/ppTegBQ=";
     };
     meta.homepage = "https://github.com/Freed-Wu/tree-sitter-zathurarc";
   };
diff --git a/nixpkgs/pkgs/applications/editors/vim/plugins/overrides.nix b/nixpkgs/pkgs/applications/editors/vim/plugins/overrides.nix
index 68ce88387fa9..ab4d9a594867 100644
--- a/nixpkgs/pkgs/applications/editors/vim/plugins/overrides.nix
+++ b/nixpkgs/pkgs/applications/editors/vim/plugins/overrides.nix
@@ -998,7 +998,7 @@
         inherit (old) version src;
         sourceRoot = "source/spectre_oxi";
 
-        cargoHash = "sha256-822+3s6FJVqBRYJAL/89bJfGv8fNhSN3nQelB29mXvQ=";
+        cargoHash = "sha256-gCGuD5kipgfR0Le8npNmyBxNsUq0PavXvKkxkiPx13E=";
 
 
         preCheck = ''
@@ -1671,6 +1671,14 @@
     dependencies = with self; [ vim-repeat ];
   };
 
+  vim-tabby = super.vim-tabby.overrideAttrs {
+    postPatch = ''
+      substituteInPlace autoload/tabby/globals.vim --replace-fail \
+        "let g:tabby_node_binary = get(g:, 'tabby_node_binary', 'node')" \
+        "let g:tabby_node_binary = get(g:, 'tabby_node_binary', '${nodejs}/bin/node')"
+    '';
+  };
+
   vim-textobj-entire = super.vim-textobj-entire.overrideAttrs {
     dependencies = with self; [ vim-textobj-user ];
     meta.maintainers = with lib.maintainers; [ farlion ];
diff --git a/nixpkgs/pkgs/applications/editors/vim/plugins/vim-plugin-names b/nixpkgs/pkgs/applications/editors/vim/plugins/vim-plugin-names
index 4565ca91925a..8c0814d5616a 100644
--- a/nixpkgs/pkgs/applications/editors/vim/plugins/vim-plugin-names
+++ b/nixpkgs/pkgs/applications/editors/vim/plugins/vim-plugin-names
@@ -75,6 +75,7 @@ https://github.com/jiangmiao/auto-pairs/,,
 https://github.com/pocco81/auto-save.nvim/,HEAD,
 https://github.com/rmagatti/auto-session/,,
 https://github.com/m4xshen/autoclose.nvim/,HEAD,
+https://github.com/gaoDean/autolist.nvim/,,
 https://github.com/vim-scripts/autoload_cscope.vim/,,
 https://github.com/nullishamy/autosave.nvim/,HEAD,
 https://github.com/rafi/awesome-vim-colorschemes/,,
@@ -1400,3 +1401,4 @@ https://github.com/ziglang/zig.vim/,,
 https://github.com/mickael-menu/zk-nvim/,HEAD,
 https://github.com/troydm/zoomwintab.vim/,,
 https://github.com/nanotee/zoxide.vim/,,
+https://github.com/TabbyML/vim-tabby/,HEAD,
diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
index 678bd8ea4df9..a1eeb57d9a4c 100644
--- a/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
+++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/default.nix
@@ -1522,22 +1522,7 @@ let
         };
       };
 
-      equinusocio.vsc-material-theme = buildVscodeMarketplaceExtension {
-        mktplcRef = {
-          name = "vsc-material-theme";
-          publisher = "Equinusocio";
-          version = "33.8.0";
-          sha256 = "sha256-+I4AUwsrElT62XNvmuAC2iBfHfjNYY0bmAqzQvfwUYM=";
-        };
-        meta = {
-          changelog = "https://marketplace.visualstudio.com/items/Equinusocio.vsc-material-theme/changelog";
-          description = "The most epic theme now for Visual Studio Code";
-          downloadPage = "https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme";
-          homepage = "https://github.com/material-theme/vsc-material-theme";
-          license = lib.licenses.asl20;
-          maintainers = [ lib.maintainers.stunkymonkey ];
-        };
-      };
+      equinusocio.vsc-material-theme = callPackage ./equinusocio.vsc-material-theme { };
 
       esbenp.prettier-vscode = buildVscodeMarketplaceExtension {
         mktplcRef = {
@@ -3943,8 +3928,8 @@ let
         mktplcRef = {
           name = "uiua-vscode";
           publisher = "uiua-lang";
-          version = "0.0.27";
-          sha256 = "sha256-wEY1FZjgiQJ7VrJGZX0SgZqz/14v//jxgrqdafLjIfM=";
+          version = "0.0.39";
+          sha256 = "sha256-B+p5bIwVhzWAdKQPCGPlImQihYCeTtYFTlkZIkgWayk=";
         };
         meta = {
           description = "VSCode language extension for Uiua";
diff --git a/nixpkgs/pkgs/applications/editors/vscode/extensions/equinusocio.vsc-material-theme/default.nix b/nixpkgs/pkgs/applications/editors/vscode/extensions/equinusocio.vsc-material-theme/default.nix
new file mode 100644
index 000000000000..8f2784c3704d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/editors/vscode/extensions/equinusocio.vsc-material-theme/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, vscode-utils
+}:
+
+vscode-utils.buildVscodeMarketplaceExtension {
+  mktplcRef = {
+    name = "vsc-material-theme";
+    publisher = "Equinusocio";
+    version = "34.3.1";
+    sha256 = "sha256-3yxFTMtjJR1b4EzBDfm55HF9chrya5OUF5wN+KHEduE=";
+  };
+
+  # extensions wants to write at the /nix/store path, so we patch it to use the globalStorageUri instead.
+  prePatch = ''
+    substituteInPlace ./build/core/extension-manager.js \
+      --replace-fail "path_1.posix.join(extensionFolderUri.path, env_1.USER_CONFIG_FILE_NAME)" "path_1.posix.join(ExtensionContext.globalStorageUri.fsPath, env_1.USER_CONFIG_FILE_NAME)"
+  '';
+
+  meta = with lib; {
+    changelog = "https://marketplace.visualstudio.com/items/Equinusocio.vsc-material-theme/changelog";
+    description = "The most epic theme now for Visual Studio Code";
+    downloadPage = "https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme";
+    homepage = "https://github.com/material-theme/vsc-material-theme";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ stunkymonkey ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix b/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix
index a1da2f5d1b8b..22f4ec88118c 100644
--- a/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix
+++ b/nixpkgs/pkgs/applications/editors/vscode/vscodium.nix
@@ -15,11 +15,11 @@ let
   archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
 
   sha256 = {
-    x86_64-linux = "0mnblhg4mfj2231v344h7m9gm3pd7v79jarifcpskxh23gry3scy";
-    x86_64-darwin = "0iv5hgf60nmfli0w4h3as41bhmsmp8kiynnsjrxp915v6im3jxxj";
-    aarch64-linux = "01w3x7syi0m1hk2xm80h3vz4grz462c0fqmgvbflcgdib88wlmj7";
-    aarch64-darwin = "0gzha0rp4mdkk23065a17pqjbz3i4p98i4cmfwz476sqssax8sha";
-    armv7l-linux = "05i6x23h6mmaxx2gchb9p928l6mcs69pwxg5mqvi8aq719gr7kd4";
+    x86_64-linux = "0pz2dn245jzjw2n79mm9angvdlwlwxb4lwdq8za1i99g2m4il1bz";
+    x86_64-darwin = "0d0ivs672zh7w60pxy95awq7c8gxhs7d8wv5cf25289gnzcd6qff";
+    aarch64-linux = "1srir5gr0bdvnxyqrfq00p34ligg0pppr22g9zrdm8jasvrz6fb0";
+    aarch64-darwin = "046kcsanz5msf5xd94b1lxcwclsp3dcwxgzrcxycbsykxslz9gpq";
+    armv7l-linux = "0h576q3jbdy48bvg4h9swd2w7cynxmnm2klj6p719myigx7h2jzg";
   }.${system} or throwSystem;
 
   sourceRoot = lib.optionalString (!stdenv.isDarwin) ".";
@@ -29,7 +29,7 @@ in
 
     # Please backport all compatible updates to the stable release.
     # This is important for the extension ecosystem.
-    version = "1.86.2.24054";
+    version = "1.86.2.24057";
     pname = "vscodium";
 
     executableName = "codium";
diff --git a/nixpkgs/pkgs/applications/emulators/86box/default.nix b/nixpkgs/pkgs/applications/emulators/86box/default.nix
index 3083f2dccbe1..93b95b4c2b7c 100644
--- a/nixpkgs/pkgs/applications/emulators/86box/default.nix
+++ b/nixpkgs/pkgs/applications/emulators/86box/default.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation rec {
   pname = "86Box";
-  version = "4.0.1";
+  version = "4.1";
 
   src = fetchFromGitHub {
     owner = "86Box";
     repo = "86Box";
     rev = "v${version}";
-    hash = "sha256-1005Czm4CftL96G0+sKV1wx/ogXTKS0vQAzZHtIMlKA=";
+    hash = "sha256-JYOJFXiUTLRs6AEMYNx88PwcVw13ChQzV1ZE5OtX6Ds=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/emulators/mame/default.nix b/nixpkgs/pkgs/applications/emulators/mame/default.nix
index c12135370d6c..e2ed7e5f9c70 100644
--- a/nixpkgs/pkgs/applications/emulators/mame/default.nix
+++ b/nixpkgs/pkgs/applications/emulators/mame/default.nix
@@ -38,14 +38,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mame";
-  version = "0.262";
+  version = "0.263";
   srcVersion = builtins.replaceStrings [ "." ] [ "" ] version;
 
   src = fetchFromGitHub {
     owner = "mamedev";
     repo = "mame";
     rev = "mame${srcVersion}";
-    hash = "sha256-avVHtnmKPUq+mMtxyaqSaGyrdsi5LXF1YS8JAb2QvBo=";
+    hash = "sha256-6MH4dMGOekiiq4yE68dIAiWWfvQvFcvqKtT/Z1SQ1aY=";
   };
 
   outputs = [ "out" "tools" ];
diff --git a/nixpkgs/pkgs/applications/emulators/retroarch/hashes.json b/nixpkgs/pkgs/applications/emulators/retroarch/hashes.json
index 8c562d47f644..cc7a717f1477 100644
--- a/nixpkgs/pkgs/applications/emulators/retroarch/hashes.json
+++ b/nixpkgs/pkgs/applications/emulators/retroarch/hashes.json
@@ -65,10 +65,10 @@
         "src": {
             "owner": "libretro",
             "repo": "beetle-pce-fast-libretro",
-            "rev": "d97d9558fe218ea04821788cee1f2c03556e818a",
-            "hash": "sha256-RKKx7Vf5d+VBYe0HVMsSchRtga7LbLiLchM4a80Lfns="
+            "rev": "ad9ad7e7e3b89d322e9f9492f5b04738641ffbe8",
+            "hash": "sha256-UUej94plV/UDsvfh7CPjP6zv99zNw4JT+ZDOl0AKzmc="
         },
-        "version": "unstable-2024-02-16"
+        "version": "unstable-2024-02-23"
     },
     "beetle-pcfx": {
         "fetcher": "fetchFromGitHub",
@@ -85,20 +85,20 @@
         "src": {
             "owner": "libretro",
             "repo": "beetle-psx-libretro",
-            "rev": "43cf1df705a29e8afe17b8a6a462c489c9616d03",
-            "hash": "sha256-pfyabw/8uLcwIMfM/2SROVNOZrGxEc1lcLd9ezl18Cw="
+            "rev": "4a006dca366af88d491e232892fe93aabe094b14",
+            "hash": "sha256-tdD2Ilkzph425RC4pVcS7kpvIxA+DF/rWYM9BhcWGyY="
         },
-        "version": "unstable-2024-02-16"
+        "version": "unstable-2024-02-27"
     },
     "beetle-saturn": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "beetle-saturn-libretro",
-            "rev": "cd395e9e3ee407608450ebc565e871b24e7ffed6",
-            "hash": "sha256-EIZRv1EydfLWFoBb8TzvAY3kkL9Qr2OrwrljOnnM92A="
+            "rev": "8192ecca34d44f8f85175fa7b7fab6ec2ffb31c2",
+            "hash": "sha256-2YDfyIEoCj9dM+d3+UOTFVNA56OnBNO5HgJAjoV7Xik="
         },
-        "version": "unstable-2023-05-28"
+        "version": "unstable-2024-02-25"
     },
     "beetle-supafaust": {
         "fetcher": "fetchFromGitHub",
@@ -287,20 +287,20 @@
         "src": {
             "owner": "libretro",
             "repo": "fbneo",
-            "rev": "484962863ab84189dca218b02197575cd266a537",
-            "hash": "sha256-e1JAEiPISc4Q06HHPox6AVbK/Frrbc7pLNvNmuWojVw="
+            "rev": "226123d45854f23a93f5030471bf82d068f018ad",
+            "hash": "sha256-GTkUgLhnP2KFR6Lo354577qYS5CXjGZ7k7PZ9sTE0Cg="
         },
-        "version": "unstable-2024-02-18"
+        "version": "unstable-2024-02-22"
     },
     "fceumm": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "libretro",
             "repo": "libretro-fceumm",
-            "rev": "63643ba02c8eaea15dbe167ef907f3da7a3e6fd7",
-            "hash": "sha256-xy8hzZ7nt2hHjRJmsty/w/cPzEtdlSkmNAsog3+h5YU="
+            "rev": "1deea6c93cdcf5158b032683f426a06dd1bfa8d5",
+            "hash": "sha256-e0AxHw9sRufk5cc6q66/cmdkD+FbVRY+OUkRjZA8j1U="
         },
-        "version": "unstable-2024-01-25"
+        "version": "unstable-2024-02-27"
     },
     "flycast": {
         "fetcher": "fetchFromGitHub",
@@ -438,10 +438,10 @@
         "src": {
             "owner": "libretro",
             "repo": "mame2003-plus-libretro",
-            "rev": "1a5b4b75e1e178a338f8f3dee3dfd940c8c9a3f2",
-            "hash": "sha256-6r30iB3LQvtHQh5nv+ZL/hag1j/l/uEpVzkzieLaK80="
+            "rev": "d3bc97daafcd0ff8498c4e1acd8996accb668ad3",
+            "hash": "sha256-Ua/uP9vXKiij+VyEOf7lAD352LGpoqH3nuHAjDTaYus="
         },
-        "version": "unstable-2024-02-21"
+        "version": "unstable-2024-02-26"
     },
     "mame2010": {
         "fetcher": "fetchFromGitHub",
@@ -528,11 +528,11 @@
         "src": {
             "owner": "Javanaise",
             "repo": "mrboom-libretro",
-            "rev": "1c07bbec56b6bf5eb04c70e183804ab8d5e3520c",
-            "hash": "sha256-1gJK/Q2CZkDgMXrvJ5pxw1nvgH8Sk/UByWQKfJ6Pwfg=",
+            "rev": "3d5a840e424df30beaf2746c98f538ea1b44bd31",
+            "hash": "sha256-emNX2U4y2CO6biJ6vwY15otRs44WbPJTGmgP+uCSUfM=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-02-17"
+        "version": "unstable-2024-02-26"
     },
     "mupen64plus": {
         "fetcher": "fetchFromGitHub",
@@ -651,22 +651,22 @@
         "src": {
             "owner": "jpd002",
             "repo": "Play-",
-            "rev": "1c42b05083a5c9254a8479ea78cc04369beaaa00",
-            "hash": "sha256-GM4VymoZpJvQTHmJvzSTxl6ALLeGdP5OtQE+efPvYpw=",
+            "rev": "a9a404632d3c6457e103314edb5f0985729ed0f1",
+            "hash": "sha256-PpRQXSK3TujmNL3Tmfva2oV6mWANGqz81ffiC99vuzQ=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-02-19"
+        "version": "unstable-2024-02-23"
     },
     "ppsspp": {
         "fetcher": "fetchFromGitHub",
         "src": {
             "owner": "hrydgard",
             "repo": "ppsspp",
-            "rev": "d5cfcccbeab6c6b6dc7e851724b9ccd8252b2592",
-            "hash": "sha256-lBzOIQpv0H0/DTCyWpf3tX3d/N9M49djoIwGgDW+S9A=",
+            "rev": "bc18fb145bda05735b92dde1869426c3380d35e5",
+            "hash": "sha256-sofvjkrKDTCHyYWIqlaAR6kN3JdBOjh67pNCvw5IXi8=",
             "fetchSubmodules": true
         },
-        "version": "unstable-2024-02-23"
+        "version": "unstable-2024-02-27"
     },
     "prboom": {
         "fetcher": "fetchFromGitHub",
diff --git a/nixpkgs/pkgs/applications/emulators/wine/sources.nix b/nixpkgs/pkgs/applications/emulators/wine/sources.nix
index a0195eadd090..9d2189c23063 100644
--- a/nixpkgs/pkgs/applications/emulators/wine/sources.nix
+++ b/nixpkgs/pkgs/applications/emulators/wine/sources.nix
@@ -69,9 +69,9 @@ in rec {
 
   unstable = fetchurl rec {
     # NOTE: Don't forget to change the hash for staging as well.
-    version = "9.2";
+    version = "9.3";
     url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
-    hash = "sha256-goHFoILMR6w8LJHOqt5fFzllU7Oa3LMudBJThltlgWI=";
+    hash = "sha256-FIsuNBR9H6FIQVY3xyPJn0N26SyE6QzB0OAK1O07F5M=";
     inherit (stable) patches;
 
     ## see http://wiki.winehq.org/Gecko
@@ -117,7 +117,7 @@ in rec {
   staging = fetchFromGitLab rec {
     # https://gitlab.winehq.org/wine/wine-staging
     inherit (unstable) version;
-    hash = "sha256-VQ4j4PuXRoXbCUZ16snVO+jRvuKD4Rjn14R7bhwdAco=";
+    hash = "sha256-1k7HHcsosce5MX86IMiFrfjg0li4DuP0utjyal1Iwkc=";
     domain = "gitlab.winehq.org";
     owner = "wine";
     repo = "wine-staging";
diff --git a/nixpkgs/pkgs/applications/emulators/yuzu/compat-list.nix b/nixpkgs/pkgs/applications/emulators/yuzu/compat-list.nix
index 30ff4aded401..79b56948aeab 100644
--- a/nixpkgs/pkgs/applications/emulators/yuzu/compat-list.nix
+++ b/nixpkgs/pkgs/applications/emulators/yuzu/compat-list.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchFromGitHub, unstableGitUpdater }:
 stdenv.mkDerivation {
   pname = "yuzu-compatibility-list";
-  version = "unstable-2024-02-14";
+  version = "unstable-2024-02-26";
 
   src = fetchFromGitHub {
     owner = "flathub";
     repo = "org.yuzu_emu.yuzu";
-    rev = "8ef2f834b7437101d855f49f719474613c6fdfda";
-    hash = "sha256-RGEx7xediERrBW7vFwmecE3tLCo81zhOIVMnWG+XVd8=";
+    rev = "9c2032a3c7e64772a8112b77ed8b660242172068";
+    hash = "sha256-ITh/W4vfC9w9t+TJnPeTZwWifnhTNKX54JSSdpgaoBk=";
   };
 
   buildCommand = ''
diff --git a/nixpkgs/pkgs/applications/emulators/yuzu/early-access/sources.nix b/nixpkgs/pkgs/applications/emulators/yuzu/early-access/sources.nix
index 9e057a44baf5..c7653444a2e5 100644
--- a/nixpkgs/pkgs/applications/emulators/yuzu/early-access/sources.nix
+++ b/nixpkgs/pkgs/applications/emulators/yuzu/early-access/sources.nix
@@ -1,7 +1,7 @@
 # Generated by ./update.sh - do not update manually!
-# Last updated: 2024-02-15
+# Last updated: 2024-02-27
 {
-  version = "4141";
-  distHash = "sha256:0iy2q12fsnkl485ml6s6lh9j5qvwa7v3y2iy2vlps7rygdiaqxc2";
-  fullHash = "sha256:0980s2sxwqblyq936j0s7xz49xkfq1zzk50l5qlm5md5x64amf6r";
+  version = "4174";
+  distHash = "sha256:1hzwfsm4m2q29a2ihipk0ij0qakn4730283d6gwbrgr8lzmj8q49";
+  fullHash = "sha256:1ayn7y595iz4smbxq10jjgip04ss35v4vrn8pa1mpnrmyikv79l9";
 }
diff --git a/nixpkgs/pkgs/applications/emulators/yuzu/mainline.nix b/nixpkgs/pkgs/applications/emulators/yuzu/mainline.nix
index b2fe6edb41aa..3d89e86340c1 100644
--- a/nixpkgs/pkgs/applications/emulators/yuzu/mainline.nix
+++ b/nixpkgs/pkgs/applications/emulators/yuzu/mainline.nix
@@ -36,13 +36,13 @@
 }:
 stdenv.mkDerivation(finalAttrs: {
   pname = "yuzu";
-  version = "1715";
+  version = "1727";
 
   src = fetchFromGitHub {
     owner = "yuzu-emu";
     repo = "yuzu-mainline";
     rev = "mainline-0-${finalAttrs.version}";
-    hash = "sha256-ctmySxBLI/1/0ekvqOq+FsWq73iHa/awARtCgZ/ztXs=";
+    hash = "sha256-DKIVXy3OGUfdw/mZtPzom40KU51CvXaV+KqRjQseDyk=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/file-managers/projectable/default.nix b/nixpkgs/pkgs/applications/file-managers/projectable/default.nix
index 8f2a131ce7c9..c5b6009bf22f 100644
--- a/nixpkgs/pkgs/applications/file-managers/projectable/default.nix
+++ b/nixpkgs/pkgs/applications/file-managers/projectable/default.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-, libgit2_1_5
+, libgit2
 , openssl
 , zlib
 , stdenv
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_5
+    libgit2
     openssl
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   env = {
+    LIBGIT2_NO_VENDOR = 1;
     OPENSSL_NO_VENDOR = true;
   };
 
diff --git a/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix b/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix
index 261df37e9aa9..8fe391173d66 100644
--- a/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix
+++ b/nixpkgs/pkgs/applications/graphics/ImageMagick/default.nix
@@ -49,13 +49,13 @@ in
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "imagemagick";
-  version = "7.1.1-28";
+  version = "7.1.1-29";
 
   src = fetchFromGitHub {
     owner = "ImageMagick";
     repo = "ImageMagick";
     rev = finalAttrs.version;
-    hash = "sha256-WT058DZzMrNKn9E56dH476iCgeOi7QQ3jNBxKAqT6h4=";
+    hash = "sha256-W9WbHzmTa0dA9+mOxXu88qmN1mO9ORaH0Nj6r2s1Q+E=";
   };
 
   outputs = [ "out" "dev" "doc" ]; # bin/ isn't really big
diff --git a/nixpkgs/pkgs/applications/graphics/gthumb/default.nix b/nixpkgs/pkgs/applications/graphics/gthumb/default.nix
index c284774bd362..44a86c6447dc 100644
--- a/nixpkgs/pkgs/applications/graphics/gthumb/default.nix
+++ b/nixpkgs/pkgs/applications/graphics/gthumb/default.nix
@@ -35,11 +35,11 @@
 
 stdenv.mkDerivation rec {
   pname = "gthumb";
-  version = "3.12.4";
+  version = "3.12.5";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-rdaTrArrmjDYKboDoGIIKJ0/aGjcOwJXNUnogZDHlOg=";
+    sha256 = "sha256-9jhd9F/oxyYuw0nhP4FRLpDpl5jdI3eTLkKR1jNZ86s=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/graphics/monado/default.nix b/nixpkgs/pkgs/applications/graphics/monado/default.nix
index 40e5f916f3f3..7442f192fe24 100644
--- a/nixpkgs/pkgs/applications/graphics/monado/default.nix
+++ b/nixpkgs/pkgs/applications/graphics/monado/default.nix
@@ -41,6 +41,7 @@
 , wayland-scanner
 , libdrm
 , zlib
+, nixosTests
 # Set as 'false' to build monado without service support, i.e. allow VR
 # applications linking against libopenxr_monado.so to use OpenXR standalone
 # instead of via the monado-service program. For more information see:
@@ -137,6 +138,10 @@ stdenv.mkDerivation {
     ./force-enable-steamvr_lh.patch
   ];
 
+  passthru.tests = {
+    basic-service = nixosTests.monado;
+  };
+
   meta = with lib; {
     description = "Open source XR runtime";
     homepage = "https://monado.freedesktop.org/";
diff --git a/nixpkgs/pkgs/applications/graphics/oculante/default.nix b/nixpkgs/pkgs/applications/graphics/oculante/default.nix
index 52374eb65c0c..76ac8abc8b21 100644
--- a/nixpkgs/pkgs/applications/graphics/oculante/default.nix
+++ b/nixpkgs/pkgs/applications/graphics/oculante/default.nix
@@ -22,16 +22,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "oculante";
-  version = "0.8.9";
+  version = "0.8.11";
 
   src = fetchFromGitHub {
     owner = "woelper";
     repo = "oculante";
     rev = version;
-    hash = "sha256-BkvY7ASTEbOs6y6ehWEIGmfLGJVg/4q0e4PKFEzjmWU=";
+    hash = "sha256-5nOXt2c7byO+JdVXADu2TyO4vtLyg8UBWerPFMGHcso=";
   };
 
-  cargoHash = "sha256-MLsqLcz7nxOZeLWwB6Qr4ycgKO4rTIDkJZjI+2cY9HU=";
+  cargoHash = "sha256-l1JYZxwvNnaff1PYPXniHmfNMG2Um5aPKTYuh/LCHoE=";
 
   nativeBuildInputs = [
     cmake
diff --git a/nixpkgs/pkgs/applications/graphics/upscayl/default.nix b/nixpkgs/pkgs/applications/graphics/upscayl/default.nix
index 40b156551a86..6541aefd7092 100644
--- a/nixpkgs/pkgs/applications/graphics/upscayl/default.nix
+++ b/nixpkgs/pkgs/applications/graphics/upscayl/default.nix
@@ -8,7 +8,7 @@
 
   src = fetchurl {
     url = "https://github.com/upscayl/upscayl/releases/download/v${version}/upscayl-${version}-linux.AppImage";
-    hash = "sha256-33jJRMvRQxL7rPJ6VigEKcDhge46CAA0jJUOhzEyWzA=";
+    hash = "sha256-EoTFvlLsXQYZldXfEHhP3/bHygm+NdeDsf+p138mM8w";
   };
 
   appimageContents = appimageTools.extractType2 {
diff --git a/nixpkgs/pkgs/applications/kde/arianna.nix b/nixpkgs/pkgs/applications/kde/arianna.nix
index e1a099800380..fe3038789a23 100644
--- a/nixpkgs/pkgs/applications/kde/arianna.nix
+++ b/nixpkgs/pkgs/applications/kde/arianna.nix
@@ -16,6 +16,7 @@
 , kfilemetadata
 , ki18n
 , kirigami-addons
+, kitemmodels
 , kquickcharts
 , kwindowsystem
 , qqc2-desktop-style
@@ -44,6 +45,7 @@ mkDerivation {
     kfilemetadata
     ki18n
     kirigami-addons
+    kitemmodels
     kquickcharts
     kwindowsystem
     qqc2-desktop-style
diff --git a/nixpkgs/pkgs/applications/kde/default.nix b/nixpkgs/pkgs/applications/kde/default.nix
index 3fd389471975..8e04700b83fd 100644
--- a/nixpkgs/pkgs/applications/kde/default.nix
+++ b/nixpkgs/pkgs/applications/kde/default.nix
@@ -13,7 +13,7 @@ IF YOUR PACKAGE IS NOT LISTED IN `./srcs.nix`, IT DOES NOT GO HERE.
 Many of the packages released upstream are not yet built in Nixpkgs due to lack
 of demand. To add a Nixpkgs build for an upstream package, copy one of the
 existing packages here and modify it as necessary. A simple example package that
-still shows most of the available features is in `./gwenview.nix`.
+still shows most of the available features is in `./gwenview`.
 
 # Updates
 
@@ -92,7 +92,7 @@ let
       ghostwriter = callPackage ./ghostwriter.nix {};
       granatier = callPackage ./granatier.nix {};
       grantleetheme = callPackage ./grantleetheme {};
-      gwenview = callPackage ./gwenview.nix {};
+      gwenview = callPackage ./gwenview {};
       incidenceeditor = callPackage ./incidenceeditor.nix {};
       itinerary = callPackage ./itinerary.nix {};
       juk = callPackage ./juk.nix {};
diff --git a/nixpkgs/pkgs/applications/kde/gwenview.nix b/nixpkgs/pkgs/applications/kde/gwenview/default.nix
index 2913f7a46455..d697778f4726 100644
--- a/nixpkgs/pkgs/applications/kde/gwenview.nix
+++ b/nixpkgs/pkgs/applications/kde/gwenview/default.nix
@@ -16,6 +16,10 @@ mkDerivation {
     maintainers = [ lib.maintainers.ttuegel ];
     mainProgram = "gwenview";
   };
+
+  # Fix build with versioned kImageAnnotator
+  patches = [./kimageannotator.patch];
+
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   buildInputs = [
     baloo kactivities kio kitemmodels kparts libkdcraw libkipi phonon
diff --git a/nixpkgs/pkgs/applications/kde/gwenview/kimageannotator.patch b/nixpkgs/pkgs/applications/kde/gwenview/kimageannotator.patch
new file mode 100644
index 000000000000..83cba93e49c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/kde/gwenview/kimageannotator.patch
@@ -0,0 +1,56 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 01db0fb1..06319c54 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -166,12 +166,12 @@ if(NOT WITHOUT_X11)
+ endif()
+ 
+ if (QT_MAJOR_VERSION STREQUAL "5")
+-    find_package(kImageAnnotator)
+-    set_package_properties(kImageAnnotator PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED)
+-    if(kImageAnnotator_FOUND)
++    find_package(kImageAnnotator-Qt5)
++    set_package_properties(kImageAnnotator-Qt5 PROPERTIES URL "https://github.com/ksnip/kImageAnnotator" DESCRIPTION "The kImageAnnotator library provides tools to annotate" TYPE REQUIRED)
++    if(kImageAnnotator-Qt5_FOUND)
+         set(KIMAGEANNOTATOR_FOUND 1)
+-        find_package(kColorPicker REQUIRED)
+-        if(NOT kImageAnnotator_VERSION VERSION_LESS 0.5.0)
++        find_package(kColorPicker-Qt5 REQUIRED)
++        if(NOT kImageAnnotator-Qt5_VERSION VERSION_LESS 0.5.0)
+             set(KIMAGEANNOTATOR_CAN_LOAD_TRANSLATIONS 1)
+         endif()
+     endif()
+diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
+index 8c136835..ef4cff74 100644
+--- a/app/CMakeLists.txt
++++ b/app/CMakeLists.txt
+@@ -157,6 +157,6 @@ target_link_libraries(slideshowfileitemaction
+     KF${QT_MAJOR_VERSION}::KIOWidgets
+     KF${QT_MAJOR_VERSION}::Notifications)
+ 
+-if(kImageAnnotator_FOUND)
++if(kImageAnnotator-Qt5_FOUND)
+     target_link_libraries(gwenview kImageAnnotator::kImageAnnotator)
+ endif()
+diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
+index 05a2ea67..4167a1bb 100644
+--- a/lib/CMakeLists.txt
++++ b/lib/CMakeLists.txt
+@@ -157,7 +157,7 @@ set(gwenviewlib_SRCS
+     touch/touch_helper.cpp
+     ${GV_JPEG_DIR}/transupp.c
+     )
+-if (kImageAnnotator_FOUND)
++if (kImageAnnotator-Qt5_FOUND)
+     set(gwenviewlib_SRCS ${gwenviewlib_SRCS}
+         annotate/annotatedialog.cpp
+         annotate/annotateoperation.cpp
+@@ -338,7 +338,7 @@ if (GWENVIEW_SEMANTICINFO_BACKEND_BALOO)
+         )
+ endif()
+ 
+-if(kImageAnnotator_FOUND)
++if(kImageAnnotator-Qt5_FOUND)
+     target_link_libraries(gwenviewlib kImageAnnotator::kImageAnnotator)
+ endif()
+ 
diff --git a/nixpkgs/pkgs/applications/misc/1password/default.nix b/nixpkgs/pkgs/applications/misc/1password/default.nix
index 70ac99f20a49..b7df39ee2b08 100644
--- a/nixpkgs/pkgs/applications/misc/1password/default.nix
+++ b/nixpkgs/pkgs/applications/misc/1password/default.nix
@@ -12,12 +12,12 @@ let
     if extension == "zip" then fetchzip args else fetchurl args;
 
   pname = "1password-cli";
-  version = "2.24.0";
+  version = "2.25.0";
   sources = rec {
-    aarch64-linux = fetch "linux_arm64" "sha256-wISQ4528+rYxaIvxAa9jrF6E6A3SvMGbLyqB4JO3Mbw=" "zip";
-    i686-linux = fetch "linux_386" "sha256-A+sQY6Q0JfHuusdP96M7BqjMCn2YobAekieN3HdRJac=" "zip";
-    x86_64-linux = fetch "linux_amd64" "sha256-hgMZ3gSqpb04ixTwMnEg0EpYgzuTF1CMEGGl6LbYKjY=" "zip";
-    aarch64-darwin = fetch "apple_universal" "sha256-R0gGUgN+f5DQF57AyAI6P4X3ySktxQ60DCPJPknwxPY=" "pkg";
+    aarch64-linux = fetch "linux_arm64" "sha256-Fs7psSWGqQqnUpGtU0nv1Mv+GysL/wD8AeVbMUDJ9pg=" "zip";
+    i686-linux = fetch "linux_386" "sha256-Vqk2COKRtDkOn7960VknyHx7sZVHZ4GP+aaC1rU4eqc=" "zip";
+    x86_64-linux = fetch "linux_amd64" "sha256-rMIZU92A13eiUqr35C+RTg3OTE9u8hcYJRinHoPWYTE=" "zip";
+    aarch64-darwin = fetch "apple_universal" "sha256-JO7Hh8PUnW5D3GCJFPcVfIYXzHV6HkckqFnGK9vH7Qs=" "pkg";
     x86_64-darwin = aarch64-darwin;
   };
   platforms = builtins.attrNames sources;
diff --git a/nixpkgs/pkgs/applications/misc/johnny-reborn/default.nix b/nixpkgs/pkgs/applications/misc/johnny-reborn/default.nix
index 5a512b0466e7..180d46519c64 100644
--- a/nixpkgs/pkgs/applications/misc/johnny-reborn/default.nix
+++ b/nixpkgs/pkgs/applications/misc/johnny-reborn/default.nix
@@ -4,35 +4,34 @@
 , SDL2
 }:
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   pname = "johnny-reborn-engine";
-  version = "unstable-2020-12-06";
+  version = "0.30";
 
   src = fetchFromGitHub {
-    owner = "jno6809";
+    owner = "xesf";
     repo = "jc_reborn";
-    rev = "524a5803e4fa65f840379c781f40ce39a927032e";
-    hash = "sha256-YKAOCgdRnvNMzL6LJVXN0pLvjyJk4Zv/RCqGtDPFR90=";
+    rev = "v${version}";
+    hash = "sha256-n3ELNFvjeDzbamyQIdM9mf/A1sstuhCGzrL9NuXf90Y=";
   };
 
-  makefile = "Makefile.linux";
-
   buildInputs = [ SDL2 ];
 
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out
-    cp jc_reborn $out/
+    mkdir -p $out/bin
+    cp jc_reborn $out/bin/
 
     runHook postInstall
   '';
 
   meta = {
     description = "An open-source engine for the classic \"Johnny Castaway\" screensaver (engine only)";
-    homepage = "https://github.com/jno6809/jc_reborn";
+    homepage = "https://github.com/xesf/jc_reborn";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ pedrohlc ];
+    mainProgram = "jc_reborn";
     inherit (SDL2.meta) platforms;
   };
 }
diff --git a/nixpkgs/pkgs/applications/misc/johnny-reborn/with-data.nix b/nixpkgs/pkgs/applications/misc/johnny-reborn/with-data.nix
index 04300524665e..b9432c543fee 100644
--- a/nixpkgs/pkgs/applications/misc/johnny-reborn/with-data.nix
+++ b/nixpkgs/pkgs/applications/misc/johnny-reborn/with-data.nix
@@ -6,7 +6,6 @@
 , makeWrapper
 }:
 
-
 let
   sounds = fetchFromGitHub {
     owner = "nivs1978";
@@ -39,15 +38,15 @@ stdenvNoCC.mkDerivation {
   installPhase = ''
     runHook preInstall
 
-    mkdir -p $out
-    cp -t $out/ \
+    mkdir -p $out/share/jc_reborn/data
+    cp -t $out/share/jc_reborn/data/ \
       ../scrantic-source/RESOURCE.* \
       JCOS/Resources/sound*.wav
 
     makeWrapper \
-      ${johnny-reborn-engine}/jc_reborn \
-      $out/jc_reborn \
-      --chdir $out
+      ${johnny-reborn-engine}/bin/jc_reborn \
+      $out/bin/jc_reborn \
+      --chdir $out/share/jc_reborn
 
     runHook postInstall
   '';
@@ -56,6 +55,6 @@ stdenvNoCC.mkDerivation {
     description = "An open-source engine for the classic \"Johnny Castaway\" screensaver (ready to use, with resources)";
     license = lib.licenses.unfree;
     maintainers = with lib.maintainers; [ pedrohlc ];
-    inherit (johnny-reborn-engine.meta) homepage platforms;
+    inherit (johnny-reborn-engine.meta) homepage platforms mainProgram;
   };
 }
diff --git a/nixpkgs/pkgs/applications/misc/kiwix/default.nix b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
index 600ea299d18f..46157febbd08 100644
--- a/nixpkgs/pkgs/applications/misc/kiwix/default.nix
+++ b/nixpkgs/pkgs/applications/misc/kiwix/default.nix
@@ -9,15 +9,15 @@
 , aria2
 }:
 
-mkDerivation rec {
+mkDerivation {
   pname = "kiwix";
-  version = "2.3.1";
+  version = "2.3.1-unstable-2024-02-20";
 
   src = fetchFromGitHub {
-    owner = pname;
-    repo = "${pname}-desktop";
-    rev = version;
-    sha256 = "sha256-ghx4pW6IkWPzZXk0TtMGeQZIzm9HEN3mR4XQFJ1xHDo=";
+    owner = "kiwix";
+    repo = "kiwix-desktop";
+    rev = "17ac566b07814aefb1decf108e4ba6d7ad9ef7bc";
+    hash = "sha256-BZzFnQE8/dyZkpY0X3zZ6yC6yLZ002Q/RoDzEhSOa/g=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/misc/kiwix/lib.nix b/nixpkgs/pkgs/applications/misc/kiwix/lib.nix
index aa9117997c08..0fb33b6b0a9b 100644
--- a/nixpkgs/pkgs/applications/misc/kiwix/lib.nix
+++ b/nixpkgs/pkgs/applications/misc/kiwix/lib.nix
@@ -11,15 +11,15 @@
 , gtest
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "libkiwix";
-  version = "12.1.1";
+  version = "13.1.0";
 
   src = fetchFromGitHub {
     owner = "kiwix";
-    repo = pname;
-    rev = version;
-    sha256 = "sha256-hcwLxfn1fiUAiwsnIddv4HukvVrFePtx7sDQUD1lGUA=";
+    repo = "libkiwix";
+    rev = finalAttrs.version;
+    hash = "sha256-DKOwzfGyad/3diOaV1K8hXqT8YGfqCP6QDKDkxWu/1U=";
   };
 
   nativeBuildInputs = [
@@ -55,8 +55,9 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Common code base for all Kiwix ports";
     homepage = "https://kiwix.org";
+    changelog = "https://github.com/kiwix/libkiwix/releases/tag/${finalAttrs.version}";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ colinsane ];
   };
-}
+})
diff --git a/nixpkgs/pkgs/applications/misc/kiwix/tools.nix b/nixpkgs/pkgs/applications/misc/kiwix/tools.nix
index fcc99cf41403..979ce433fb4b 100644
--- a/nixpkgs/pkgs/applications/misc/kiwix/tools.nix
+++ b/nixpkgs/pkgs/applications/misc/kiwix/tools.nix
@@ -9,15 +9,15 @@
 , stdenv
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "kiwix-tools";
-  version = "3.5.0";
+  version = "3.6.0";
 
   src = fetchFromGitHub {
     owner = "kiwix";
     repo = "kiwix-tools";
-    rev = version;
-    sha256 = "sha256-bOxi51H28LhA+5caX6kllIY5B3Q1FoGVFadFIhYRkG0=";
+    rev = finalAttrs.version;
+    hash = "sha256-+th86lMAuCcmWj06yQoZ1L7rLZKqNvuTrV+Rra2km44=";
   };
 
   nativeBuildInputs = [
@@ -36,9 +36,9 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Command line Kiwix tools: kiwix-serve, kiwix-manage, ...";
     homepage = "https://kiwix.org";
+    changelog = "https://github.com/kiwix/kiwix-tools/releases/tag/${finalAttrs.version}";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ colinsane ];
   };
-}
-
+})
diff --git a/nixpkgs/pkgs/applications/misc/kratos/default.nix b/nixpkgs/pkgs/applications/misc/kratos/default.nix
index 961e2289d21b..d5d12eb44676 100644
--- a/nixpkgs/pkgs/applications/misc/kratos/default.nix
+++ b/nixpkgs/pkgs/applications/misc/kratos/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "kratos";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "ory";
     repo = "kratos";
     rev = "v${version}";
-    hash = "sha256-KDpc0zc65rvvpPojghFEujoS0aewyjv7B/bmpC2i1dA=";
+    hash = "sha256-zrII2lpffZkwFauPAilh1QaqRKvpj1mlHZA7in1ljYg=";
   };
 
-  vendorHash = "sha256-Y/Sd2hu1bPUb0TQRD1pANz+rtqKcHBXvjKpYwKgxHMQ=";
+  vendorHash = "sha256-TSB7jCPOVwub+ZQaaUSmsz/R4HAfmnWb0wTf2w4aeuk=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/applications/misc/lutris/fhsenv.nix b/nixpkgs/pkgs/applications/misc/lutris/fhsenv.nix
index 7f78b60f45bc..acdbf8835e31 100644
--- a/nixpkgs/pkgs/applications/misc/lutris/fhsenv.nix
+++ b/nixpkgs/pkgs/applications/misc/lutris/fhsenv.nix
@@ -12,6 +12,14 @@ let
     libX11 libXrender libXrandr libxcb libXmu libpthreadstubs libXext libXdmcp
     libXxf86vm libXinerama libSM libXv libXaw libXi libXcursor libXcomposite
   ];
+  gstreamerDeps = pkgs: with pkgs.gst_all_1; [
+    gstreamer
+    gst-plugins-base
+    gst-plugins-good
+    gst-plugins-ugly
+    gst-plugins-bad
+    gst-libav
+  ];
 
 in buildFHSEnv {
   name = "lutris";
@@ -121,6 +129,7 @@ in buildFHSEnv {
     # Winetricks
     fribidi
   ] ++ xorgDeps pkgs
+    ++ gstreamerDeps pkgs
     ++ extraLibraries pkgs;
 
   extraInstallCommands = ''
diff --git a/nixpkgs/pkgs/applications/misc/mako/default.nix b/nixpkgs/pkgs/applications/misc/mako/default.nix
index b4eeb51049be..ca7849c566a9 100644
--- a/nixpkgs/pkgs/applications/misc/mako/default.nix
+++ b/nixpkgs/pkgs/applications/misc/mako/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, scdoc
-, systemd, pango, cairo, gdk-pixbuf, jq
+, systemd, pango, cairo, gdk-pixbuf, jq, bash
 , wayland, wayland-protocols
 , wrapGAppsHook }:
 
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   preFixup = ''
     gappsWrapperArgs+=(
-      --prefix PATH : "${lib.makeBinPath [ systemd /* for busctl */ jq ]}"
+      --prefix PATH : "${lib.makeBinPath [ systemd /* for busctl */ jq bash ]}"
     )
   '';
 
diff --git a/nixpkgs/pkgs/applications/misc/nwg-panel/default.nix b/nixpkgs/pkgs/applications/misc/nwg-panel/default.nix
index 378d83f8c1ac..308a1d0d2cee 100644
--- a/nixpkgs/pkgs/applications/misc/nwg-panel/default.nix
+++ b/nixpkgs/pkgs/applications/misc/nwg-panel/default.nix
@@ -16,13 +16,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "nwg-panel";
-  version = "0.9.24";
+  version = "0.9.25";
 
   src = fetchFromGitHub {
     owner = "nwg-piotr";
     repo = "nwg-panel";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qd2fnGdpHXX35ZtNGe59GnmhYGn6VJibc0KEr60VIJM=";
+    hash = "sha256-dTBV2OckPJNA707PNz/jmfUPpufhItt4EEDHAI79kxQ=";
   };
 
   # No tests
diff --git a/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix b/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix
index 6d6682713855..921ba4ddd9b3 100644
--- a/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix
+++ b/nixpkgs/pkgs/applications/misc/rofi-emoji/default.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rofi-emoji";
-  version = "3.2.0";
+  version = "3.3.0";
 
   src = fetchFromGitHub {
     owner = "Mange";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-P7AHLwqicKYj5I0Rl9B5mdD/v9iW9aihkNo7enonRF4=";
+    sha256 = "sha256-Y+E5TViKFVtqXMLVEcq1VMLPzG04vfZyThUM7a/fFGM=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/applications/misc/snagboot/default.nix b/nixpkgs/pkgs/applications/misc/snagboot/default.nix
index 61c906ec464a..353712d5ba89 100644
--- a/nixpkgs/pkgs/applications/misc/snagboot/default.nix
+++ b/nixpkgs/pkgs/applications/misc/snagboot/default.nix
@@ -10,14 +10,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "snagboot";
-  version = "1.2";
+  version = "1.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "bootlin";
     repo = "snagboot";
     rev = "v${version}";
-    hash = "sha256-OuHY5+2puZAERtwmXduUW5Wjus6KeQLJLcGcl48umLA=";
+    hash = "sha256-ergTa6uR1SyR27H2HAWp/rtgalCnQge07Pi24PrsW+8=";
   };
 
   nativeBuildInputs = [
@@ -33,7 +33,6 @@ python3.pkgs.buildPythonApplication rec {
     setuptools
     pyusb
     pyserial
-    hid
     crccheck
     six
     xmodem
diff --git a/nixpkgs/pkgs/applications/misc/swaynotificationcenter/001-backport-pr296.patch b/nixpkgs/pkgs/applications/misc/swaynotificationcenter/001-backport-pr296.patch
deleted file mode 100644
index 61fcda5593fd..000000000000
--- a/nixpkgs/pkgs/applications/misc/swaynotificationcenter/001-backport-pr296.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/src/functions.vala b/src/functions.vala
-index cf7fefc..9b4d82a 100644
---- a/src/functions.vala
-+++ b/src/functions.vala
-@@ -102,10 +102,7 @@ namespace SwayNotificationCenter {
- 
-         public static string get_style_path (owned string ? custom_path,
-                                              bool only_system = false) {
--            string[] paths = {
--                // Fallback location. Specified in postinstall.py
--                "/usr/local/etc/xdg/swaync/style.css"
--            };
-+            string[] paths = {};
-             if (custom_path != null && custom_path.length > 0) {
-                 // Replaces the home directory relative path with a absolute path
-                 if (custom_path.get (0) == '~') {
-@@ -123,7 +120,9 @@ namespace SwayNotificationCenter {
-                 paths += Path.build_path (Path.DIR_SEPARATOR.to_string (),
-                                           path, "swaync/style.css");
-             }
--
-+            // Fallback location. Specified in postinstall.py. Mostly for Debian
-+            paths += "/usr/local/etc/xdg/swaync/style.css";
-+            
-             string path = "";
-             foreach (string try_path in paths) {
-                 if (File.new_for_path (try_path).query_exists ()) {
-@@ -140,10 +139,7 @@ namespace SwayNotificationCenter {
-         }
- 
-         public static string get_config_path (owned string ? custom_path) {
--            string[] paths = {
--                // Fallback location. Specified in postinstall.py
--                "/usr/local/etc/xdg/swaync/config.json"
--            };
-+            string[] paths = {};
-             if (custom_path != null && custom_path.length > 0) {
-                 // Replaces the home directory relative path with a absolute path
-                 if (custom_path.get (0) == '~') {
-@@ -158,7 +154,9 @@ namespace SwayNotificationCenter {
-                 paths += Path.build_path (Path.DIR_SEPARATOR.to_string (),
-                                           path, "swaync/config.json");
-             }
--
-+            // Fallback location. Specified in postinstall.py. Mostly for Debian
-+            paths += "/usr/local/etc/xdg/swaync/config.json";
-+ 
-             string path = "";
-             foreach (string try_path in paths) {
-                 if (File.new_for_path (try_path).query_exists ()) {
diff --git a/nixpkgs/pkgs/applications/misc/swaynotificationcenter/default.nix b/nixpkgs/pkgs/applications/misc/swaynotificationcenter/default.nix
index 065ed941c386..f05aa8fd9345 100644
--- a/nixpkgs/pkgs/applications/misc/swaynotificationcenter/default.nix
+++ b/nixpkgs/pkgs/applications/misc/swaynotificationcenter/default.nix
@@ -24,22 +24,23 @@
 , scdoc
 , vala
 , xvfb-run
+, sassc
+, pantheon
 }:
 
 stdenv.mkDerivation (finalAttrs: rec {
   pname = "SwayNotificationCenter";
-  version = "0.9.0";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = "ErikReider";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-mwwSTs4d9jUXUy33nSYJCRFlpH6naCmbRUSpfVacMBE=";
+    hash = "sha256-7O+DX4uuncUqx5zEKQprZE6tctteT6NU01V2EBHiFqA=";
   };
 
-  patches = [
-    ./001-backport-pr296.patch
-  ];
+  # build pkg-config is required to locate the native `scdoc` input
+  depsBuildBuild = [ pkg-config ];
 
   nativeBuildInputs = [
     bash-completion
@@ -51,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: rec {
     ninja
     pkg-config
     python3
+    sassc
     scdoc
     vala
     wrapGAppsHook
@@ -68,14 +70,13 @@ stdenv.mkDerivation (finalAttrs: rec {
     libhandy
     libpulseaudio
     librsvg
+    pantheon.granite
     # systemd # ends with broken permission
   ];
 
   postPatch = ''
     chmod +x build-aux/meson/postinstall.py
     patchShebangs build-aux/meson/postinstall.py
-
-    substituteInPlace src/functions.vala --replace /usr/local/etc $out/etc
   '';
 
   passthru.tests.version = testers.testVersion {
diff --git a/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix b/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
index 35632008f716..0badd7997603 100644
--- a/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
+++ b/nixpkgs/pkgs/applications/misc/syncthingtray/default.nix
@@ -1,9 +1,8 @@
-{ mkDerivation
-, lib
+{ lib
 , stdenv
 , fetchFromGitHub
-, substituteAll
 , qtbase
+, qtsvg
 , qtwebengine
 , qtdeclarative
 , extra-cmake-modules
@@ -46,6 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   buildInputs = [
     qtbase
+    qtsvg
     cpp-utilities
     qtutilities
     boost
@@ -74,7 +74,7 @@ stdenv.mkDerivation (finalAttrs: {
   doCheck = !stdenv.isDarwin;
   preCheck = ''
     export QT_QPA_PLATFORM=offscreen
-    export QT_PLUGIN_PATH="${qtbase.bin}/${qtbase.qtPluginPrefix}"
+    export QT_PLUGIN_PATH="${lib.getBin qtbase}/${qtbase.qtPluginPrefix}"
   '';
   # don't test --help  on Darwin because output is .app
   doInstallCheck = !stdenv.isDarwin;
@@ -83,6 +83,8 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   cmakeFlags = [
+    "-DQT_PACKAGE_PREFIX=Qt${lib.versions.major qtbase.version}"
+    "-DKF_PACKAGE_PREFIX=KF${lib.versions.major qtbase.version}"
     "-DBUILD_TESTING=ON"
     # See https://github.com/Martchus/syncthingtray/issues/208
     "-DEXCLUDE_TESTS_FROM_ALL=OFF"
diff --git a/nixpkgs/pkgs/applications/misc/toipe/default.nix b/nixpkgs/pkgs/applications/misc/toipe/default.nix
index 1b41f9ae53e9..31a468b3bc49 100644
--- a/nixpkgs/pkgs/applications/misc/toipe/default.nix
+++ b/nixpkgs/pkgs/applications/misc/toipe/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "toipe";
-  version = "0.4.1";
+  version = "0.5.0";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-aunejitHVNIB/zIDgX3mlA1FzG7wIxlDCFdUvtuzQnc=";
+    sha256 = "sha256-L4JemOxpynGYsA8FgHnMv/hrogLSRaaiIzDjxzZDqjM=";
   };
 
-  cargoSha256 = "sha256-Nabc2lPpsUCcWEJzL6U84UoIJ5PCtYKVyLRhjhiqhpE=";
+  cargoHash = "sha256-ShJ7dbd3oNo3qZJ5+ut+NfLF9j8kPPZy9yC2zl/s56k=";
 
   meta = with lib; {
     description = "Trusty terminal typing tester";
diff --git a/nixpkgs/pkgs/applications/misc/typioca/default.nix b/nixpkgs/pkgs/applications/misc/typioca/default.nix
index 87b499f010be..70becdc143bd 100644
--- a/nixpkgs/pkgs/applications/misc/typioca/default.nix
+++ b/nixpkgs/pkgs/applications/misc/typioca/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "typioca";
-  version = "2.9.0";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner = "bloznelis";
     repo = "typioca";
     rev = version;
-    hash = "sha256-N7+etRqHxLX0eVvdOofXQ1fqEUTsck7UAL5mX6NUsOU=";
+    hash = "sha256-D6I1r+8cvUerqXR2VyBL33lapWAs5Cl5yvYOsmUBnHo=";
   };
 
-  vendorHash = "sha256-FKLAbrZVtF8gj90NU7m47pG+BBKYkPjJKax5nZmpehY=";
+  vendorHash = "sha256-j/nyAHNwUoNkcdNJqcaUuhQk5a2VHQw/XgYIoTR9ctQ=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/applications/misc/valent/default.nix b/nixpkgs/pkgs/applications/misc/valent/default.nix
index 75318acda6cc..09ec8609712d 100644
--- a/nixpkgs/pkgs/applications/misc/valent/default.nix
+++ b/nixpkgs/pkgs/applications/misc/valent/default.nix
@@ -21,14 +21,14 @@
 
 stdenv.mkDerivation rec {
   pname = "valent";
-  version = "unstable-2023-11-11";
+  version = "0-unstable-2024-02-12";
 
   src = fetchFromGitHub {
     owner = "andyholmes";
     repo = "valent";
-    rev = "51bca834b1c52a1cc49b79fe79d45dfcd9113c02";
+    rev = "70ef1aa42eb2df5e9c3aa4faa014c8d539450018";
     fetchSubmodules = true;
-    hash = "sha256-jmhio/vS+w37IW81XgV4xfb/6ralMgAlwi3zigr4t20=";
+    hash = "sha256-JdrkAtn21NoX+SI6PNWMdE8HLKhLc3HKFhwKydENkvg=";
   };
 
   nativeBuildInputs = [
@@ -62,9 +62,26 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An implementation of the KDE Connect protocol, built on GNOME platform libraries";
-    homepage = "https://github.com/andyholmes/valent/";
+    longDescription = ''
+      Note that you have to open firewall ports for other devices
+      to connect to it. Use either:
+      ```nix
+      programs.kdeconnect = {
+        enable = true;
+        package = pkgs.valent;
+      }
+      ```
+      or open corresponding firewall ports directly:
+      ```nix
+      networking.firewall = rec {
+        allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
+        allowedUDPPortRanges = allowedTCPPortRanges;
+      }
+      ```
+    '';
+    homepage = "https://valent.andyholmes.ca";
     changelog = "https://github.com/andyholmes/valent/blob/${src.rev}/CHANGELOG.md";
-    license = with licenses; [ gpl3Plus cc0 ];
+    license = with licenses; [ gpl3Plus cc0 cc-by-sa-30 ];
     maintainers = with maintainers; [ federicoschonborn aleksana ];
     platforms = platforms.linux;
   };
diff --git a/nixpkgs/pkgs/applications/misc/wttrbar/default.nix b/nixpkgs/pkgs/applications/misc/wttrbar/default.nix
index 9bd55af10b89..c2f67e83f8a7 100644
--- a/nixpkgs/pkgs/applications/misc/wttrbar/default.nix
+++ b/nixpkgs/pkgs/applications/misc/wttrbar/default.nix
@@ -7,18 +7,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wttrbar";
-  version = "0.7.1";
+  version = "0.8.2";
 
   src = fetchFromGitHub {
     owner = "bjesus";
     repo = "wttrbar";
     rev = version;
-    hash = "sha256-b5GJNbXv6W4UA7nKYMgoWpfd9J+yWlWij5W0fh52vgs=";
+    hash = "sha256-XgBPZl5msKICIrUJZz2gj/hZjVAv0HpVKa69/KiLwnI=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [ Security SystemConfiguration ]);
 
-  cargoHash = "sha256-MCsblCDiCRDEHTfTcE6CyhqDclSbj0TJEf2cX6ISDFo=";
+  cargoHash = "sha256-JGJJ94rzHTQNR6rzFPWnFHH3t0fL1tvMeEN5NMzRtHM=";
 
   meta = {
     description = "A simple but detailed weather indicator for Waybar using wttr.in";
diff --git a/nixpkgs/pkgs/applications/misc/xmrig/default.nix b/nixpkgs/pkgs/applications/misc/xmrig/default.nix
index ca4011220d34..b0f8562c1728 100644
--- a/nixpkgs/pkgs/applications/misc/xmrig/default.nix
+++ b/nixpkgs/pkgs/applications/misc/xmrig/default.nix
@@ -15,13 +15,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "xmrig";
-  version = "6.21.0";
+  version = "6.21.1";
 
   src = fetchFromGitHub {
     owner = "xmrig";
     repo = "xmrig";
     rev = "v${version}";
-    hash = "sha256-7OHfFo8+MUNSI3vpOIODKQH41jmraHDJOyqfLBp/v9o=";
+    hash = "sha256-xMfNWqr43Gxu+ET8oP9l97+tBsL/b6DNuFU4j9wy0UA=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/applications/misc/zathura/core/default.nix b/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
index 321ef367c5fe..9e3f5df6a793 100644
--- a/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
+++ b/nixpkgs/pkgs/applications/misc/zathura/core/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, meson, ninja, wrapGAppsHook, pkg-config
-, appstream-glib, desktop-file-utils, python3
+, appstream-glib, json-glib, desktop-file-utils, python3
 , gtk, girara, gettext, libxml2, check
 , sqlite, glib, texlive, libintl, libseccomp
 , file, librsvg
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "zathura";
-  version = "0.5.2";
+  version = "0.5.4";
 
   src = fetchurl {
     url = "https://pwmt.org/projects/zathura/download/zathura-${finalAttrs.version}.tar.xz";
-    sha256 = "15314m9chmh5jkrd9vk2h2gwcwkcffv2kjcxkd4v3wmckz5sfjy6";
+    sha256 = "0ckgamf98sydq543arp865jg1afwzhpzcsbhv6zrch2dm5x7y0x3";
   };
 
   outputs = [ "bin" "man" "dev" "out" ];
@@ -24,8 +24,9 @@ stdenv.mkDerivation (finalAttrs: {
     "-Dmanpages=enabled"
     "-Dconvert-icon=enabled"
     "-Dsynctex=enabled"
+    "-Dtests=disabled"
     # Make sure tests are enabled for doCheck
-    (lib.mesonEnable "tests" finalAttrs.finalPackage.doCheck)
+    # (lib.mesonEnable "tests" finalAttrs.finalPackage.doCheck)
     (lib.mesonEnable "seccomp" stdenv.hostPlatform.isLinux)
   ];
 
@@ -35,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
   ];
 
   buildInputs = [
-    gtk girara libintl sqlite glib file librsvg check
+    gtk girara libintl sqlite glib file librsvg check json-glib
     texlive.bin.core
   ] ++ lib.optional stdenv.isLinux libseccomp
     ++ lib.optional stdenv.isDarwin gtk-mac-integration;
diff --git a/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix b/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix
index e482241bbd6c..5246705bbd8b 100644
--- a/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix
+++ b/nixpkgs/pkgs/applications/misc/zathura/pdf-poppler/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "zathura-pdf-poppler";
-  version = "0.3.1";
+  version = "0.3.2";
 
   src = fetchurl {
     url = "https://pwmt.org/projects/${pname}/download/${pname}-${version}.tar.xz";
-    sha256 = "12qhkshpp1wjfpjmjccsyi6wscqyqvaa19j85prjpyf65i9jg0gf";
+    sha256 = "049h8m9swxni7ar6fsbm0hb3fg4ffmjc3m6vyg78ilfi3kayxavi";
   };
 
   nativeBuildInputs = [ meson ninja pkg-config zathura_core ];
diff --git a/nixpkgs/pkgs/applications/networking/asn/default.nix b/nixpkgs/pkgs/applications/networking/asn/default.nix
index ddd9c1d34c32..6a8ec939cb33 100644
--- a/nixpkgs/pkgs/applications/networking/asn/default.nix
+++ b/nixpkgs/pkgs/applications/networking/asn/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "asn";
-  version = "0.76.0";
+  version = "0.76.1";
 
   src = fetchFromGitHub {
     owner = "nitefood";
     repo = "asn";
     rev = "refs/tags/v${version}";
-    hash = "sha256-pdtRf9VKEdNg1UeYSaLNLm9O057dT+n5g3Dd0bcP4EI=";
+    hash = "sha256-9UDd0tgRKEFC1V1+1s9Ghev0I48L8UR9/YbZKX3F1MU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/networking/avalanchego/default.nix b/nixpkgs/pkgs/applications/networking/avalanchego/default.nix
index 4609413417d3..a3fda46955da 100644
--- a/nixpkgs/pkgs/applications/networking/avalanchego/default.nix
+++ b/nixpkgs/pkgs/applications/networking/avalanchego/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "avalanchego";
-  version = "1.10.19";
+  version = "1.11.1";
 
   src = fetchFromGitHub {
     owner = "ava-labs";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-Pvl4t0nUHAwTdkR2fEFuFpLn2Hz5kw3IBFYDWSmGyXA=";
+    hash = "sha256-uRoo2+1R1sPYN41ybrwGK+msYa2AC02w5h6hzeh9ASs=";
   };
 
-  vendorHash = "sha256-WYewelAUkXLD6cwnJQ/jAYP99qq4HjEnJ4HwNUksHZU=";
+  vendorHash = "sha256-x8AgsJuo2q5vRts4axMgL5rTJKQBfuIW341HnUhzvOI=";
   # go mod vendor has a bug, see: https://github.com/golang/go/issues/57529
   proxyVendor = true;
 
diff --git a/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
index 4afa78c3539e..dc1929b9fd1c 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
@@ -93,11 +93,11 @@ in
 
 stdenv.mkDerivation rec {
   pname = "brave";
-  version = "1.63.161";
+  version = "1.63.162";
 
   src = fetchurl {
     url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
-    hash = "sha256-FAoQ/b88HtrtTq+yEiUzlsZAnUbps9bb0V9Iy3IIMR0=";
+    hash = "sha256-kRIYdSBAjBVX3EZQv0OWifD+XIpGAqAVTcrdxGAifEI=";
   };
 
   dontConfigure = true;
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
index c4888aac71f6..0ab5c7ca1ee4 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -1,11 +1,11 @@
 {
   stable = {
     chromedriver = {
-      hash_darwin = "sha256-qo7eiMC4MR4pskSim6twkC2QDeqe3qfZsIEe5mjS7jg=";
+      hash_darwin = "sha256-iv370BYH8HobUxeYbsV4/A6JyZG2feEuVbJCLVZc3Og=";
       hash_darwin_aarch64 =
-        "sha256-RHqu0wNeAx34LTkVgNjBfXrSWvZ1G7OkNAIGA4WUhmw=";
-      hash_linux = "sha256-K4QeHFp520Z3KjefvVsJf8V7gz7gTf2BCSW4Jxz/H9M=";
-      version = "122.0.6261.69";
+        "sha256-Gc0OXG7dx5Mvy0aAsnqVIJtPFK8OYmFr8Ofy+UXacM4=";
+      hash_linux = "sha256-ZcN/v7co08aRWM88s93nBU/FLEfE7JGf/hEH0tk3qy8=";
+      version = "122.0.6261.94";
     };
     deps = {
       gn = {
@@ -15,9 +15,9 @@
         version = "2024-01-22";
       };
     };
-    hash = "sha256-uEN1hN6DOLgw4QDrMBZdiLLPx+yKQc5MimIf/vbCC84=";
-    hash_deb_amd64 = "sha256-k3/Phs72eIMB6LAU4aU0+ze/cRu6KlRhpBshKhmq9N4=";
-    version = "122.0.6261.69";
+    hash = "sha256-7fIs8qQon9L0iNmM/cHuyqtVm09qf7L4j9qb6KSbw2w=";
+    hash_deb_amd64 = "sha256-hOm7YZ9ya/SmwKhj6uIPkdgIDv5bIbss398szBYHuXk=";
+    version = "122.0.6261.94";
   };
   ungoogled-chromium = {
     deps = {
@@ -28,12 +28,12 @@
         version = "2024-01-22";
       };
       ungoogled-patches = {
-        hash = "sha256-G+agHdsssYhsyi4TgJUJBqMEnEgQ7bYeqpTqmonXI6I=";
-        rev = "122.0.6261.69-1";
+        hash = "sha256-vqiizzSVWV2/iADPac8qgfdZcbunc0QgMqN15NwJ9js=";
+        rev = "122.0.6261.94-1";
       };
     };
-    hash = "sha256-uEN1hN6DOLgw4QDrMBZdiLLPx+yKQc5MimIf/vbCC84=";
-    hash_deb_amd64 = "sha256-k3/Phs72eIMB6LAU4aU0+ze/cRu6KlRhpBshKhmq9N4=";
-    version = "122.0.6261.69";
+    hash = "sha256-7fIs8qQon9L0iNmM/cHuyqtVm09qf7L4j9qb6KSbw2w=";
+    hash_deb_amd64 = "sha256-hOm7YZ9ya/SmwKhj6uIPkdgIDv5bIbss398szBYHuXk=";
+    version = "122.0.6261.94";
   };
 }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
index 550babf8f9fd..e2a8a134a66e 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
@@ -1,1025 +1,1025 @@
 {
-  version = "124.0b2";
+  version = "124.0b5";
   sources = [
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ach/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ach/firefox-124.0b5.tar.bz2";
       locale = "ach";
       arch = "linux-x86_64";
-      sha256 = "363c9f44bc94db125f38d5f64cc048db997324da3f6435f2584d2d88285b8bdf";
+      sha256 = "7d2bbc3802ad238953c9423f8023f9a1177712f56379fc69a180fd39f53388d9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/af/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/af/firefox-124.0b5.tar.bz2";
       locale = "af";
       arch = "linux-x86_64";
-      sha256 = "7e8b0874d35b0c42fcac1c037dd9be119479fbf3f62e8316f6dd3bfbbdeeae4f";
+      sha256 = "5f36ceebf06776170a20b4727b0859ceb4a26508d6d8707c5d492e1b4ce67975";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/an/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/an/firefox-124.0b5.tar.bz2";
       locale = "an";
       arch = "linux-x86_64";
-      sha256 = "cbe139c6a7a333dcac56d0fa78bc653daea355a45a834de2e35a7192a3a17fc9";
+      sha256 = "5f82fc1cb4a458cf28a1f76383d6c1fe11d6f33a157f9247d524fadc5ea6759d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ar/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ar/firefox-124.0b5.tar.bz2";
       locale = "ar";
       arch = "linux-x86_64";
-      sha256 = "d50bc9d3d443bf2a90643ce5cdd6bc7d0e4198fab68ef14e1286504f4d18821c";
+      sha256 = "08680db79f744d864cba21f4795dc1b9a2af5bf8c3ddf5f7ea4c908022579028";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ast/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ast/firefox-124.0b5.tar.bz2";
       locale = "ast";
       arch = "linux-x86_64";
-      sha256 = "2d2543dfdc9c14de05a1c62d088aa0617505b923b1dbb72f4b5e5d2cd9271e53";
+      sha256 = "8bbe8db78333dba3cac356b578a03dd3b77dddc7e63b2177236f6a3d0896f04d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/az/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/az/firefox-124.0b5.tar.bz2";
       locale = "az";
       arch = "linux-x86_64";
-      sha256 = "0379539663e7e48fa7893ada6df1e64e122ec2a14d5f3f76f813b45bbf59f586";
+      sha256 = "7a06cd17959904e49810ef220ec2ba713d4e16ac55eb64bdf74a8dc6ce9b0440";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/be/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/be/firefox-124.0b5.tar.bz2";
       locale = "be";
       arch = "linux-x86_64";
-      sha256 = "f0dcffc2cb42b0a75261f9e16c1edb6b62edecd77a3d9e21f25565ba2ff234f6";
+      sha256 = "10fa657b60076eb048375cc7702edee3bf006c298308254be58a809904c153d0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/bg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/bg/firefox-124.0b5.tar.bz2";
       locale = "bg";
       arch = "linux-x86_64";
-      sha256 = "91a3c7c3cfa6eb78a7b98c2441d71804437fc94ecbf8522613fa0060b19dd125";
+      sha256 = "ecde1dcb5479e5ca179fc09a090ac542b85287369f3b0d719b1b156c32ebd80e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/bn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/bn/firefox-124.0b5.tar.bz2";
       locale = "bn";
       arch = "linux-x86_64";
-      sha256 = "215632319b46c5a1b88cc5936e547f5b5dbd8e28bbe66aeea86e1a362f85e82a";
+      sha256 = "6339cf64b10c1d31bef2d6fc95360653446ff76d2e169dd461bba543d60ff763";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/br/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/br/firefox-124.0b5.tar.bz2";
       locale = "br";
       arch = "linux-x86_64";
-      sha256 = "8721df2ac60c218bb704148c3f392292d1dce848358b6972578aba6779475a2e";
+      sha256 = "3d3a1a26e4fbb44da3d354beb6d801a80d1ce20508d99fa794d182b8d536a744";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/bs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/bs/firefox-124.0b5.tar.bz2";
       locale = "bs";
       arch = "linux-x86_64";
-      sha256 = "583e8f0409e840a88736cd6f49b084e9927eb5ed2021d1bd0f9cd68318d620a2";
+      sha256 = "baed2b12d8d84ce5697320eebad87897b009bcac76e68ba0abda2582e24e88c9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ca-valencia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ca-valencia/firefox-124.0b5.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-x86_64";
-      sha256 = "f34b6bb30b4b8e4d0479ae8049b0439edf7a6bb6f1dda4ed5ab4fd026b9f1bbc";
+      sha256 = "fa7f53c7e56ef56b8fdb4a7e903bb51eb5447d97a0da2408a1be175bc5423f90";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ca/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ca/firefox-124.0b5.tar.bz2";
       locale = "ca";
       arch = "linux-x86_64";
-      sha256 = "0561f69077245da627e1273268859a100a14c32ecc8822f35ab0c3f8d97e5d2f";
+      sha256 = "0310a427861ec5c2fb7a8dd2a285b591f36f11c90d84af47b5fa1cb52e2ad3b9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/cak/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/cak/firefox-124.0b5.tar.bz2";
       locale = "cak";
       arch = "linux-x86_64";
-      sha256 = "cf131a37e5f1df0acab0bc5d820dbbf9aacd79394e91f2e52a03ecf9d59e4dd8";
+      sha256 = "67573c77981d94a7aca7a9d6aa2093330b02f26f4710eff9e46b60f9fd8113f2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/cs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/cs/firefox-124.0b5.tar.bz2";
       locale = "cs";
       arch = "linux-x86_64";
-      sha256 = "6d13e7144f50475a51bb044a92b2a5f94873ce454c5bbce3b97538d6498ec87f";
+      sha256 = "ee7d65efb0098765dfb498cf75cbe6555d20654c6fc00859e38204738661fd69";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/cy/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/cy/firefox-124.0b5.tar.bz2";
       locale = "cy";
       arch = "linux-x86_64";
-      sha256 = "f126e9d3d5515048fc6936c8d917e0db16290183fafb1bc3f2dd73e657cb9490";
+      sha256 = "75ff470c4ade892f4f3f9fe1705000f7c628d6de6e86f6908ee56612bc075671";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/da/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/da/firefox-124.0b5.tar.bz2";
       locale = "da";
       arch = "linux-x86_64";
-      sha256 = "f79b6a07401fcc04503970e9d3cf92c9a9487f5b78f576cbde7fdf550922d061";
+      sha256 = "48d77741b02f2e8fc2e040a84c18e1218ca61bd8e66c7cfefc79bc24bafc5bb3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/de/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/de/firefox-124.0b5.tar.bz2";
       locale = "de";
       arch = "linux-x86_64";
-      sha256 = "3ab1d86e2ecb631d1ef5e62ba96b9eecc1401e185b9a321616fecb315ee51f28";
+      sha256 = "2b1309a5f08980056fe3be624a6c75c05e39618d32153aee826e4b4a50ee15eb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/dsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/dsb/firefox-124.0b5.tar.bz2";
       locale = "dsb";
       arch = "linux-x86_64";
-      sha256 = "f63e77b38c6cf91351bac23257f3f24393fa6a2de2ccddec9c6b392aea781046";
+      sha256 = "570407536fb85f40dc7a872fed16b652b1d6db223ff46e557021233aa02a7a7d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/el/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/el/firefox-124.0b5.tar.bz2";
       locale = "el";
       arch = "linux-x86_64";
-      sha256 = "3b728d338586515822ca1ce165cd7aaee2c8a52e20522de4df36a77988d260fb";
+      sha256 = "fae76f0eed46924669128f56f97d3f2ac672bf5f33d4f1d48f5ab5a7b22d74af";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/en-CA/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/en-CA/firefox-124.0b5.tar.bz2";
       locale = "en-CA";
       arch = "linux-x86_64";
-      sha256 = "db701d73b42e418175e527ed4b96796cd40ddf2176a4d796c45864f8274b1cff";
+      sha256 = "92f03b9f6d7a73411e94d69abbe375b3335302880320a3449571a0aee99eebdc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/en-GB/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/en-GB/firefox-124.0b5.tar.bz2";
       locale = "en-GB";
       arch = "linux-x86_64";
-      sha256 = "518c256ab304fb94556bc06cd6b924f2195d862e81b7b816c9bcf031715856da";
+      sha256 = "21f60b68d0c1239eaa16000c15e57357337682420bd55d3bfb4463c777cc31fd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/en-US/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/en-US/firefox-124.0b5.tar.bz2";
       locale = "en-US";
       arch = "linux-x86_64";
-      sha256 = "e14b4f9dab4ccbdda293e7808a101dcf90e231b5a90980a13dc7bf6d8fde8776";
+      sha256 = "22a8329ae9d5a493215761326cd472991f6f694a4d42eaf83628ab6d26fca83b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/eo/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/eo/firefox-124.0b5.tar.bz2";
       locale = "eo";
       arch = "linux-x86_64";
-      sha256 = "1bed1faff69ca8c4c5a9d213458455e61c8b6e4d9e7f7c7eb6862624fdd8a817";
+      sha256 = "5ecd98a7b5e2317abbaf6f5a9fb21c8a59be51715fb5a8c8cae3d64a0ab5fc48";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/es-AR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/es-AR/firefox-124.0b5.tar.bz2";
       locale = "es-AR";
       arch = "linux-x86_64";
-      sha256 = "7010d92cc5569e023cf3f669ffae011b6ef79a331083fce0f6efb0350df50c31";
+      sha256 = "40cb5d90564fb90025fc6b392582863e0bc724326cb36fde4dba6ad1406f6d94";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/es-CL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/es-CL/firefox-124.0b5.tar.bz2";
       locale = "es-CL";
       arch = "linux-x86_64";
-      sha256 = "16acae24bb87c2d2df00a597d559a6a621c8647c0de9c3c4ffc248974622f59e";
+      sha256 = "4f791d29b283ae6cd5873b4dbe500b6267b051e1ab2d0cff96c1a4440e6aff08";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/es-ES/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/es-ES/firefox-124.0b5.tar.bz2";
       locale = "es-ES";
       arch = "linux-x86_64";
-      sha256 = "9c6f854e01300e2801255b18b7fcf1c31c1457267073ec00fe3cf1b295b30254";
+      sha256 = "2edc711c09c35cd8485343315ae5c2bc6bebb96159168d70cff22527165f58f3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/es-MX/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/es-MX/firefox-124.0b5.tar.bz2";
       locale = "es-MX";
       arch = "linux-x86_64";
-      sha256 = "8be367c4b918e2834da814723054f7c1bf32a3fefd6763ce5244985678284aad";
+      sha256 = "b8a2f655358cffc31b1fe2447db01eb7cf57f6bbb31563c012f7158f3c9d42e8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/et/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/et/firefox-124.0b5.tar.bz2";
       locale = "et";
       arch = "linux-x86_64";
-      sha256 = "09bb7e3b2ac065613a8d9ebbf7e914b0e1f7ee55938b735e4279441e6b6fcb12";
+      sha256 = "c395fc81add76c9d275d25a8de3a4fb26e4f0415e98de5add80a6bd0e999a01a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/eu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/eu/firefox-124.0b5.tar.bz2";
       locale = "eu";
       arch = "linux-x86_64";
-      sha256 = "12ce3b0532812e9adcd3ec3196f798d5e3f91cb83ab0ef601aa329cd7ddf2977";
+      sha256 = "e0851b8ea76f800d9427c217477b94a61de6c274353b4b4cdd47cc8b0d4aaa70";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/fa/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/fa/firefox-124.0b5.tar.bz2";
       locale = "fa";
       arch = "linux-x86_64";
-      sha256 = "bd7782a2d5a925c3ad41781bcf828e95724f3a82f2ccc5ed2082bc655cce38cc";
+      sha256 = "8e12aa67666b55b919e4e81cad3380e0851797a13548f3dcbdc3c227c69da8d6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ff/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ff/firefox-124.0b5.tar.bz2";
       locale = "ff";
       arch = "linux-x86_64";
-      sha256 = "b7da1ca6e9e06db0095da2da79f972ef5dd71da3f9f3ba99ced8edc7a83724d5";
+      sha256 = "c04ff0a8b62793ffcbf4d1d0a5111693cee1b35ba3fb1dd0adbaf03ba66bcdf8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/fi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/fi/firefox-124.0b5.tar.bz2";
       locale = "fi";
       arch = "linux-x86_64";
-      sha256 = "6c028c8e15fbf784d084c7f50fe7260939b2c1b5ae8e45b483265dffbfdcc305";
+      sha256 = "12ba9ea088fb6d17a826c30967ab7b3443aeff2a3f740a4df3ca7ebbd8b45ced";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/fr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/fr/firefox-124.0b5.tar.bz2";
       locale = "fr";
       arch = "linux-x86_64";
-      sha256 = "67062d7de084985e8493be8691e50687def2ad630322caf484850cb8372ddcf7";
+      sha256 = "e91929a98ae40d1ef43b11c3c22d8ed0cb19c6e3e07bb04741090fad53b98607";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/fur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/fur/firefox-124.0b5.tar.bz2";
       locale = "fur";
       arch = "linux-x86_64";
-      sha256 = "5f63297d83984aee6adff522c7cea24c5724a6f6d2f965782ffcd16e41dc5547";
+      sha256 = "99b88c86eb2013b5f07e6f14e71c2c97352dcc1acc02aff90ab42d13410ff2a5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/fy-NL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/fy-NL/firefox-124.0b5.tar.bz2";
       locale = "fy-NL";
       arch = "linux-x86_64";
-      sha256 = "24ba249b084764e96a13b6a9336d6dbe7d1eff04847c9e924c53087ca1fede30";
+      sha256 = "b9c9b522a065f64d6cf40b96dff6526313e2dca401a9008f03083b2812b6167b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ga-IE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ga-IE/firefox-124.0b5.tar.bz2";
       locale = "ga-IE";
       arch = "linux-x86_64";
-      sha256 = "eaa9b0bc0929e1b51027250f5a840f13f77a91ddf10b9278147ee41212bc82c8";
+      sha256 = "bca74cf277bd25d5066df857846be1dd8f6c310d301f49b2961f439949571b28";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/gd/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/gd/firefox-124.0b5.tar.bz2";
       locale = "gd";
       arch = "linux-x86_64";
-      sha256 = "6f62732e5f83dcea1a537cfacc9698b8e3b2aab0953103038ab774ea6bbc716a";
+      sha256 = "47d553028a1a64259877fdfee83d70a46b866afa3b2457660d2a44067b37061d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/gl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/gl/firefox-124.0b5.tar.bz2";
       locale = "gl";
       arch = "linux-x86_64";
-      sha256 = "97657e3beec01ef69d119379a32758fb41816de8bd58d9deb004a88b7c3326fe";
+      sha256 = "130886578c83d2eff99209c4d14c05e68acbdd37564edeac079648740fc7bf0b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/gn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/gn/firefox-124.0b5.tar.bz2";
       locale = "gn";
       arch = "linux-x86_64";
-      sha256 = "f6f05d156c7316cd9baf939309abce7912350c71d409aada45f211ba76409100";
+      sha256 = "23ac53dd3b9a2d18d60a59e2d734fd0c44a5291fee943c902f18cf599d63c16c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/gu-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/gu-IN/firefox-124.0b5.tar.bz2";
       locale = "gu-IN";
       arch = "linux-x86_64";
-      sha256 = "a81b71bd14054cd82332ec091a292d456c848db2f9daba89965d513bf8f38b87";
+      sha256 = "77689877b0d5e877d3be81f02a040e3120a9dd1b40a4367c5a92a40f4c494919";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/he/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/he/firefox-124.0b5.tar.bz2";
       locale = "he";
       arch = "linux-x86_64";
-      sha256 = "cd3ff8efdad04b12f92d14eb387bd68c3d3a06d81d2a363c3685ca4f5457f18e";
+      sha256 = "8a1f1ac0b23cbf62e47ee29b679ab6c48cd89c4bd77a6d295f6ed0fe69711499";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/hi-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/hi-IN/firefox-124.0b5.tar.bz2";
       locale = "hi-IN";
       arch = "linux-x86_64";
-      sha256 = "cfd147bc30a081268545d38c38ecf959b7848648b124a3f2fa9f0ac6277a35fa";
+      sha256 = "18957db7e86db0a0d0b823b68d1e377f85aaa5b14e6092e24310ab8ad10a343b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/hr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/hr/firefox-124.0b5.tar.bz2";
       locale = "hr";
       arch = "linux-x86_64";
-      sha256 = "eea6bcb7747900ba6f0b764890074c6a88506094c8a3e383441a49e164f63dec";
+      sha256 = "3625253e0f9a634270af8f70d1c81b61dadb8102fb2c81b81507f8fdb7b1d250";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/hsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/hsb/firefox-124.0b5.tar.bz2";
       locale = "hsb";
       arch = "linux-x86_64";
-      sha256 = "ff5d2011e6e2f20481fd76a04f1f72e9d5bbb29253d2e47a75317dfc13e5c16b";
+      sha256 = "40e040f1231c88af9090a2fac4001ab8f1d69a1e3734ed6c89bf51e4ff21b206";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/hu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/hu/firefox-124.0b5.tar.bz2";
       locale = "hu";
       arch = "linux-x86_64";
-      sha256 = "6ceb6098abd49f062c86be8e06cec9e4fc8fd04fbcab43c52318d60ac66f9e93";
+      sha256 = "377fe6254302dd396bdb560a44c138983e2c02eae06c427ff5cf94bc434c61ab";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/hy-AM/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/hy-AM/firefox-124.0b5.tar.bz2";
       locale = "hy-AM";
       arch = "linux-x86_64";
-      sha256 = "706500ead0a117e63ffabd84105f2ae4293fd3550e2237379ab3069ae3e94f98";
+      sha256 = "2e4b3a4044d0297f9d9c87f1624f672d0d27b21f5012baa2ca60f45885d8ce79";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ia/firefox-124.0b5.tar.bz2";
       locale = "ia";
       arch = "linux-x86_64";
-      sha256 = "b3ebdf158d37bb338a3c242acba42ab102e23d3616f5fa74b6c7ebbab16f9099";
+      sha256 = "160aa92ea1168487ecc925ade7cbd2e117da72319a9ceccdc59507e4e8fc8764";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/id/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/id/firefox-124.0b5.tar.bz2";
       locale = "id";
       arch = "linux-x86_64";
-      sha256 = "104ad7b721466bdb923b9490545425392dc76e5c74b3eb7ead26cb177f4c1f16";
+      sha256 = "7bd38f8c8b4953db16c1916ed4b2df49b0f840b81949dc4676f2f71c40008948";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/is/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/is/firefox-124.0b5.tar.bz2";
       locale = "is";
       arch = "linux-x86_64";
-      sha256 = "e974076e947af7599cee9ace49430c3ee651b853965caaf2663c5f2517a8a62a";
+      sha256 = "3424522524ca6388a7e2637dfc5452998b7d6dcad2514f48f518be63e5b45c6f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/it/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/it/firefox-124.0b5.tar.bz2";
       locale = "it";
       arch = "linux-x86_64";
-      sha256 = "ecced41cdcb280c2e018a1cdcfe1b403ef6468de8e0470789c3227bcbcea2b1d";
+      sha256 = "0c7ee36605aac12acc542c9481852d39b1b0f0f3c18256cec2ff38811cb1f3eb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ja/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ja/firefox-124.0b5.tar.bz2";
       locale = "ja";
       arch = "linux-x86_64";
-      sha256 = "0d662890d8fd7e3e617fe8e63cd04d3d6505a8817a17b3552f284e42e536ef44";
+      sha256 = "abe8f35fe044928615fe6cfc947d4153509f88882fb94f06eb78f36ac8a5e30d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ka/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ka/firefox-124.0b5.tar.bz2";
       locale = "ka";
       arch = "linux-x86_64";
-      sha256 = "7f13f053f74ccdb33216446668f20f37626e37f830680aa8250071522e73be6f";
+      sha256 = "cb697fdd6f9ea00ce308f1c060d91bbdfc5aff20f2992a78e2e342c0c7fabb6d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/kab/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/kab/firefox-124.0b5.tar.bz2";
       locale = "kab";
       arch = "linux-x86_64";
-      sha256 = "bdcf5b0f64b03504329f0af0827d14499a203bde799584c707261f6397d9b3f8";
+      sha256 = "06984b0b178fd6ed37673e8d41670223377ad77fff6ef8a4a7f0bb09fb4836fe";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/kk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/kk/firefox-124.0b5.tar.bz2";
       locale = "kk";
       arch = "linux-x86_64";
-      sha256 = "0f647e6096b245ef9c7329f5aa6c897f301060542ce8043e80384c22233e4a1e";
+      sha256 = "b0184afa67d0102eec7b58749dd3ede7790346b963a52643a0b7e7c838a51357";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/km/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/km/firefox-124.0b5.tar.bz2";
       locale = "km";
       arch = "linux-x86_64";
-      sha256 = "143f5595132bf337fcf34fddf3ec215a7846c00247f3d920e68321f4f57b30ed";
+      sha256 = "d5a344551d654e27a05483bb6fe05c878a2f1e726455b9e8cd2bda5ed98a3539";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/kn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/kn/firefox-124.0b5.tar.bz2";
       locale = "kn";
       arch = "linux-x86_64";
-      sha256 = "cc9a91fd7809daa3d5bcbd5fe0ad5f5cc3717c9d7b5ce53dbe1c7377e15fa107";
+      sha256 = "b91561544bb249e22e01912acd473404b181cacb6ce1f181a8714416d049ae21";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ko/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ko/firefox-124.0b5.tar.bz2";
       locale = "ko";
       arch = "linux-x86_64";
-      sha256 = "9c6d8c6a41de599eb8652ae2c3f5df83a70b7f1ebcb9582c60e66ffb10ab88e4";
+      sha256 = "9ee5565b3f09dfd5ae9475211ae610c58ad0884759f18c643afd8e4db5187e11";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/lij/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/lij/firefox-124.0b5.tar.bz2";
       locale = "lij";
       arch = "linux-x86_64";
-      sha256 = "b7260ed32256d2082fe052b3eaf367ad5a14a8d6d7c357aa9719185bc81917a8";
+      sha256 = "d42e2636a2773df593f4534bf039e8c54db2e7deee1ad1ca7352902b71b551e1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/lt/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/lt/firefox-124.0b5.tar.bz2";
       locale = "lt";
       arch = "linux-x86_64";
-      sha256 = "436b0381d25b939f63607d15d261f3ec4d639cf3c6bf8e4118427d037f19f38b";
+      sha256 = "d4a80127dc135125f39863ee6b6e59b3aa5c8f5e73df7adddb227e995a5634b5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/lv/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/lv/firefox-124.0b5.tar.bz2";
       locale = "lv";
       arch = "linux-x86_64";
-      sha256 = "cb508a4b712cef1e62f23237efa55f3c8ce539796f6aa301551d42d47f25a80b";
+      sha256 = "3f312f2a8744b84a6543e26b08d4ea20891f0e62e1aa8430e272b0580b736db6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/mk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/mk/firefox-124.0b5.tar.bz2";
       locale = "mk";
       arch = "linux-x86_64";
-      sha256 = "7bc0348cd0cc869b472c3db2f815ff83e84bdaf58f143775abd122c306918870";
+      sha256 = "ea8c18c9a74d6108eaca2aa4e0ba42ef6452b6a96e2bb6f1ec73baaa8b661c3a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/mr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/mr/firefox-124.0b5.tar.bz2";
       locale = "mr";
       arch = "linux-x86_64";
-      sha256 = "b8fc3177bf00739e18d4ff53cf7adde07e1f763db90c12ba94771962c4ae936d";
+      sha256 = "c501119c27b95406b81e93b41aa50088c1c87031469fdf891d35d89d09d5489e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ms/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ms/firefox-124.0b5.tar.bz2";
       locale = "ms";
       arch = "linux-x86_64";
-      sha256 = "d4ed92cf6d38f0c63631d462ea6ea4ba51dadf2d0b36b08aafc23d31c3661b9d";
+      sha256 = "e39693bd45283c19b583848302dd405f0003b7caef939128f8c2f3dc2d5f6988";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/my/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/my/firefox-124.0b5.tar.bz2";
       locale = "my";
       arch = "linux-x86_64";
-      sha256 = "b99b30402ab8071b4cfc1cc565ce8cf06dc8d116e673f9349e529ce03a5b7fed";
+      sha256 = "d8a7e54d74eb3e743f9057838e0abf73def6697fbe5f9474947e08ba810e4bc8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/nb-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/nb-NO/firefox-124.0b5.tar.bz2";
       locale = "nb-NO";
       arch = "linux-x86_64";
-      sha256 = "126574e1ea081fa5ce526a411d224024c6357e7b74e383038034d40f73e6b781";
+      sha256 = "a63953feb54e1ec1570f5dee716eda162d56b76cc31951513e9076108935aad1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ne-NP/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ne-NP/firefox-124.0b5.tar.bz2";
       locale = "ne-NP";
       arch = "linux-x86_64";
-      sha256 = "2b8953f7df629c59da03be91366d5a3f88779245d747678a20f9969477421588";
+      sha256 = "629e529489a676d536b72a97523e4343ddfa0ce2d7356a5bf8eefe0238bcb666";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/nl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/nl/firefox-124.0b5.tar.bz2";
       locale = "nl";
       arch = "linux-x86_64";
-      sha256 = "99abc838e32ba697fba11426ab5c890f98fe58bba0f8e8f828dfabe15c005c3e";
+      sha256 = "12ea68d71847b815ad65d7a665b2a557a083a1c607b3f8cb18ff5fabf0002636";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/nn-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/nn-NO/firefox-124.0b5.tar.bz2";
       locale = "nn-NO";
       arch = "linux-x86_64";
-      sha256 = "d68c301016afbfb31d9dbce6f1440f89e5b51d19a22a45ecfb1b39d15545a997";
+      sha256 = "ca8a111ecde3bd454ed111c55eae69da4fee13504a94c9df3a93c45550905036";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/oc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/oc/firefox-124.0b5.tar.bz2";
       locale = "oc";
       arch = "linux-x86_64";
-      sha256 = "988bdc93d6f7e4a6810491476cdb98339fb6997e873f594260e58841b36e3cc5";
+      sha256 = "902fc9328255bebf6773358103e06ccb9b585638ebaf5eb32505d867c5ecbfe6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/pa-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/pa-IN/firefox-124.0b5.tar.bz2";
       locale = "pa-IN";
       arch = "linux-x86_64";
-      sha256 = "2204323a7c11b847227e776b4ec21339663476a08a07e63ea1e304bec6bad34d";
+      sha256 = "75ed8b95ab613ea714fd646b1ee84371ebf873ede8a28b6c8e5e96b41749f755";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/pl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/pl/firefox-124.0b5.tar.bz2";
       locale = "pl";
       arch = "linux-x86_64";
-      sha256 = "489fe92b3fb075bcc11e3c0281d2ad3ec29105353251f427d49aa79a6c207410";
+      sha256 = "cee1409e398d803dd4fe3050fa12b75bc996bbe553b9ffeef18ea0a085b6ee80";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/pt-BR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/pt-BR/firefox-124.0b5.tar.bz2";
       locale = "pt-BR";
       arch = "linux-x86_64";
-      sha256 = "88fd36ef9b83743736a5a3c23db70a395ae1fc4801296c3ec5f66a92198acf98";
+      sha256 = "448890c7616dc46e381d621df13a28ccb2ce721df244a26742652c846db4593c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/pt-PT/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/pt-PT/firefox-124.0b5.tar.bz2";
       locale = "pt-PT";
       arch = "linux-x86_64";
-      sha256 = "afaa32392f30f3d28b7f636fcd4aade8236b2b4de43b197f914842b757bb37b8";
+      sha256 = "05a961a4d1130472fad818ac29ef473b5fefa075f86848033c6624305c59ca2b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/rm/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/rm/firefox-124.0b5.tar.bz2";
       locale = "rm";
       arch = "linux-x86_64";
-      sha256 = "cb7f2493ca54d79aee3ac60ad0565a573d55b7d814521cff453fd68f60964592";
+      sha256 = "c7df75c5758d198070d6d978413e3196d42a18b061509d27b3092a003fbd4c4b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ro/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ro/firefox-124.0b5.tar.bz2";
       locale = "ro";
       arch = "linux-x86_64";
-      sha256 = "2588e0761f102f81b7e195dbf48727e86f38356100f07848422025f3d0e778b9";
+      sha256 = "26f47dfc912a1cd2558b060932973f2a1f690f6a7ea8eb96d36787f638341a5a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ru/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ru/firefox-124.0b5.tar.bz2";
       locale = "ru";
       arch = "linux-x86_64";
-      sha256 = "7e26d22eca5f65cdff96ff0156ca120047dd2f0de3c5aa1cc52d4f991722c339";
+      sha256 = "942c198c60dc78de58319a3b5138e573b44bc1f99d7e4d2b1325577c9bcc0896";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sat/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sat/firefox-124.0b5.tar.bz2";
       locale = "sat";
       arch = "linux-x86_64";
-      sha256 = "14f77b1a92f7b7359b80c3a6d1b4ecc0b2d88666ee23342bb5f9bab7f9876901";
+      sha256 = "48510782780d5af7b0a1b6c6a86639c00312f066c69abc32bc447451d72ae8cb";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sc/firefox-124.0b5.tar.bz2";
       locale = "sc";
       arch = "linux-x86_64";
-      sha256 = "cd6c90b95f06d305c9860084da7a12318d033acdc21ecccf2f485514f7acf9d5";
+      sha256 = "46d9cc6b9e5c47ef64c37e77cffea12f83e64d1460253ff4cb75ed94b3e4367a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sco/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sco/firefox-124.0b5.tar.bz2";
       locale = "sco";
       arch = "linux-x86_64";
-      sha256 = "5e11949fd6c144922e128a9322bab335ecc361ea2d29fc595cfe6a7325aa8ef0";
+      sha256 = "7e037a7fb4c5c99557039cb1ae7618d724f3da2258d047881cdd7147d1174d81";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/si/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/si/firefox-124.0b5.tar.bz2";
       locale = "si";
       arch = "linux-x86_64";
-      sha256 = "22f4a449eae9ae27cc586718308ad9c09c96603cd6fec917be7c1e007c90ecc6";
+      sha256 = "5b012871da0bf06f38bf1c26975999914e1fe8ef9824efc49f22c1fbfb6b89ca";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sk/firefox-124.0b5.tar.bz2";
       locale = "sk";
       arch = "linux-x86_64";
-      sha256 = "b186826c9adf273db6eb3180f2972149f2e417770a683764bc7403d00a89e169";
+      sha256 = "16a8afc43b6d44ab7c29b753b1a500c6106c8c7bd54c3e8320626b77e2979eb7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sl/firefox-124.0b5.tar.bz2";
       locale = "sl";
       arch = "linux-x86_64";
-      sha256 = "b08c8a2032d110985f4959321b5c42d099d8ba057931ba8a2aba9d473b024581";
+      sha256 = "70c0cc00bf44f4d64a39c2c13ec01f9111c859190a2ca15137f21b2c1ab591a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/son/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/son/firefox-124.0b5.tar.bz2";
       locale = "son";
       arch = "linux-x86_64";
-      sha256 = "24a07144a22cf5af81f250ada72bea887394989fad69340005f516e770a42177";
+      sha256 = "d94707e16ca52af39bbec9b7d527274441e090d54652dfa5c9abc16821225839";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sq/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sq/firefox-124.0b5.tar.bz2";
       locale = "sq";
       arch = "linux-x86_64";
-      sha256 = "47211e50ee162f4cc450ae3e43969ddc9ff3fdf42a4b5dc65dc0ff82b409e3a7";
+      sha256 = "642b971d675f9262e19402f47580f3b811240d3dad3c32b2f4f6e87b4135f2f6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sr/firefox-124.0b5.tar.bz2";
       locale = "sr";
       arch = "linux-x86_64";
-      sha256 = "628d23b0584188a1c77abe1400a3cfb80309bc8fee004fa4b9edaea3c0d4cdbd";
+      sha256 = "23928c430e1db120e84b530b0d3503b2e62036fa8849d9c46b6b1819ea76af64";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/sv-SE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/sv-SE/firefox-124.0b5.tar.bz2";
       locale = "sv-SE";
       arch = "linux-x86_64";
-      sha256 = "ca97e41c25b873294953f1b0d1aedbc063469dcf3ed36f19623ee46935255249";
+      sha256 = "617add83937a3ea14002fe41c736137c8011d635e78a246a3f5002562b97f48d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/szl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/szl/firefox-124.0b5.tar.bz2";
       locale = "szl";
       arch = "linux-x86_64";
-      sha256 = "7606531cf236e2e6a00627c6b698e1156ae27a4eac064c362ea0e96b9451df3d";
+      sha256 = "50e63481383364d50954f5bef8781c125b0f51a876a0377adb399eda00227ed1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ta/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ta/firefox-124.0b5.tar.bz2";
       locale = "ta";
       arch = "linux-x86_64";
-      sha256 = "adfa846371635fdd08da383383400127b122ac077af8a1c7c7608e9b6426dddb";
+      sha256 = "16f2ce13302bea290af292f74d5c48d8db73ccd6ebea1ce2dc441848c233f533";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/te/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/te/firefox-124.0b5.tar.bz2";
       locale = "te";
       arch = "linux-x86_64";
-      sha256 = "8b5aa3dd89603a8310c27a49b79221e869a1002d6ddd369c3de5e46222fb2ccd";
+      sha256 = "1fbdd511f501b4b3be1933c424c315051079a3ca0d5670c8b88438266843ad27";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/tg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/tg/firefox-124.0b5.tar.bz2";
       locale = "tg";
       arch = "linux-x86_64";
-      sha256 = "ef133a701695437aad0ebf3883236a82792f374d94252595df88a7ce73fe68b7";
+      sha256 = "ef5d6491de252486f5b10708b0c0ea5357a2c5d6e0684047ba08949c19ba8651";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/th/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/th/firefox-124.0b5.tar.bz2";
       locale = "th";
       arch = "linux-x86_64";
-      sha256 = "29a62fbef1145649ce6b4e85b7f48abe6880136b3547369a5c745f674d0623e5";
+      sha256 = "1228222e854286521596d3add7ed91668643f8c243c385f90adcb12cd1b0e332";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/tl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/tl/firefox-124.0b5.tar.bz2";
       locale = "tl";
       arch = "linux-x86_64";
-      sha256 = "94b7ca81a9f27bc2581e637d95e0096b8a58f9a982e1b8497fa2d432239df6a1";
+      sha256 = "7e55d29a61209982dc3a607d761e6c802ab82c8ca1027b4bbf4b47a403c42872";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/tr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/tr/firefox-124.0b5.tar.bz2";
       locale = "tr";
       arch = "linux-x86_64";
-      sha256 = "7d8d340ed83c350661e43805a8caf132ca570b6b29dbf81795772539109b9e43";
+      sha256 = "627441565a2500c1c3bad1da306e4f5d618656d9533c89fef4e99977ccd27ab4";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/trs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/trs/firefox-124.0b5.tar.bz2";
       locale = "trs";
       arch = "linux-x86_64";
-      sha256 = "548b12d3476f7daa951559c171ebd174e26ae69f6ca4ebf096d78f4efd3744ea";
+      sha256 = "7418475cd4b2d3ae8540f0caf11c8dc81cc6aae0583bffdb7f46e643422c7e77";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/uk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/uk/firefox-124.0b5.tar.bz2";
       locale = "uk";
       arch = "linux-x86_64";
-      sha256 = "127f304121949104deaeb92fa763c0cf6e64033d15fbe6c54b646e7b74cc2701";
+      sha256 = "492c3a21757e7b10644d3fa70e9f1e244a2d27e8807628088d4ade45ba41cb36";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/ur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/ur/firefox-124.0b5.tar.bz2";
       locale = "ur";
       arch = "linux-x86_64";
-      sha256 = "1f219d9f3fca66b099b3e1870e70f55a253ca62df455cf8d05f768c1135f95ae";
+      sha256 = "e4d7126211a34d0bc17cdbe026554fb3cbea722c2f56d1926698104d78e7207b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/uz/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/uz/firefox-124.0b5.tar.bz2";
       locale = "uz";
       arch = "linux-x86_64";
-      sha256 = "4cb8f30caf29e108d7054db00eed27fdb1a9ec3ce512480f88b8a462f60975f0";
+      sha256 = "d8eb419cb6e4d1e86f68ddedbd42cedff86d6156ae832a32ac5806152f279a6b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/vi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/vi/firefox-124.0b5.tar.bz2";
       locale = "vi";
       arch = "linux-x86_64";
-      sha256 = "3fccf94bf7c4605e3c2ae45cd688a90f18bd9219bf600b9397c038c21fcac584";
+      sha256 = "d64cfe0c88935ed7e40099473c25a9e56002926ecbdcc29d8ced6432b0236a7c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/xh/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/xh/firefox-124.0b5.tar.bz2";
       locale = "xh";
       arch = "linux-x86_64";
-      sha256 = "74b6121bf5bb1f010141ff5de9e8c3c9ffa037146752baff3b8667cf79e9bd7b";
+      sha256 = "7252e30e3656ff20dbafd9c53d5f56844997ae1e02745f59b69a9091260a9035";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/zh-CN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/zh-CN/firefox-124.0b5.tar.bz2";
       locale = "zh-CN";
       arch = "linux-x86_64";
-      sha256 = "9c6d151d68183d84b8c68a3bfb070709c7606c4a3e844db7db5fda8e0d3e7a94";
+      sha256 = "6af38bf66fb726a6b59986bf563f6f18f50a8732a342bf2fe305a0b3e9c2226d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-x86_64/zh-TW/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-x86_64/zh-TW/firefox-124.0b5.tar.bz2";
       locale = "zh-TW";
       arch = "linux-x86_64";
-      sha256 = "d29f8f77e4662695566c02e6307b36e6d7b8f3945ad3eb64f2b7e99ca0d3c804";
+      sha256 = "2979bd2b956475ccb6f6de52c7669ee59351bcfbb4a8d9be139edfd044558b9b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ach/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ach/firefox-124.0b5.tar.bz2";
       locale = "ach";
       arch = "linux-i686";
-      sha256 = "4fe8bfeec4a8c3504c2c39f16d878f567c4882d70573c5a3c0e801e0792e31ce";
+      sha256 = "c72c8fff286e4ff8d51bf6475a1dfbe2be4676eb30777b093457bcb3346fd818";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/af/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/af/firefox-124.0b5.tar.bz2";
       locale = "af";
       arch = "linux-i686";
-      sha256 = "bba30e236e18a645b3f13b283f39eab426ed5d8cbf44277d18d8bc8ceca2980d";
+      sha256 = "7f604659f0cc938c54df6ede433514107bf787c9e06debb7fd475ab050cb67c7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/an/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/an/firefox-124.0b5.tar.bz2";
       locale = "an";
       arch = "linux-i686";
-      sha256 = "e9cb8fb9bab58fb16938605e8a955585bcc1bf3469184a54c5c579f1a24a2ffb";
+      sha256 = "7707076fdcbb8cae6eff8efa1fd0dac40dab0fa7d51486a108161dd8439202c3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ar/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ar/firefox-124.0b5.tar.bz2";
       locale = "ar";
       arch = "linux-i686";
-      sha256 = "f9cebbb247b9d75eae4c85430dcd939471496776637619233c9333a36384a2f0";
+      sha256 = "945f180d474b967c5297c73dd52726967fa337d326d044436cf4869e34db88a3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ast/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ast/firefox-124.0b5.tar.bz2";
       locale = "ast";
       arch = "linux-i686";
-      sha256 = "a54e80da8bf3f4ef8141f687a95f3b9d094a0ba68c5316e1b57a9096321262ed";
+      sha256 = "fa6b0152749881c13f8979b0611b9dbaf8d878f68b8439f21bc88b34c7d580bd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/az/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/az/firefox-124.0b5.tar.bz2";
       locale = "az";
       arch = "linux-i686";
-      sha256 = "32bb9a71a02dfc99ffd94a28be0fd5e3f1c372b776588a234c6259fd7393a335";
+      sha256 = "9bb66edacd8eaf8c990f0a36a7547e6256a715dcfe7888ad15059ffc89b70984";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/be/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/be/firefox-124.0b5.tar.bz2";
       locale = "be";
       arch = "linux-i686";
-      sha256 = "15fdee527c4a51092101ac96b63752b9d382afefdb0f9b71f3f6f30ea3fde8b4";
+      sha256 = "cb1cc8ef5798630117016afbd3f8fdddc66d1a191fa85bedde763e2793a998e8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/bg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/bg/firefox-124.0b5.tar.bz2";
       locale = "bg";
       arch = "linux-i686";
-      sha256 = "4422f0404e9f45ad4708d5b5050792fadd32cf28273fea44f1e9bdc654cbab00";
+      sha256 = "683c069d5da161b02f54255a9c7a62732fe02764d8ca1ad4233f989f09ef52ad";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/bn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/bn/firefox-124.0b5.tar.bz2";
       locale = "bn";
       arch = "linux-i686";
-      sha256 = "19733ad48c15419d9b976f5b7fdc189328e2769ecebf441536d8c0a4a5e5bc9e";
+      sha256 = "65caa543af3ecc5d8d4119516c57898c7644aecc988e45d59c5fd4fe2c631e28";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/br/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/br/firefox-124.0b5.tar.bz2";
       locale = "br";
       arch = "linux-i686";
-      sha256 = "fc0fb718b019be2cdb3f5c445f0ccb21f2362572754a9cd0bdbe3bc56539043e";
+      sha256 = "19cf0bf608bea24c1c0758e07d1af6ca98d7cde3a27f838c4d9811e59bc6f7c3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/bs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/bs/firefox-124.0b5.tar.bz2";
       locale = "bs";
       arch = "linux-i686";
-      sha256 = "79b110f0e8d6f5eb330eb1fcfbd590ac6cf9e3e94f877be3c0b376aaf6ea6fbb";
+      sha256 = "5a5ae9daedd8e961542c6a81c5909a18a128f7a389f2441fb95be559a83d9f28";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ca-valencia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ca-valencia/firefox-124.0b5.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-i686";
-      sha256 = "964ad7a1da5b4becb917438d6fb3f821957bf0e216e941c46882c6dc16f642bb";
+      sha256 = "51bff7837d421d1a6e431cb75ce04727dca12d6034d1e919d54409cc4c375023";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ca/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ca/firefox-124.0b5.tar.bz2";
       locale = "ca";
       arch = "linux-i686";
-      sha256 = "713a920628fde9099dae30d9574d4b9fca557e1d996bdcc859a061a802692ecf";
+      sha256 = "28af0576ae0e4fef698e701560a1152264cdab0e2aec01581d8eb7cbbcbc4499";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/cak/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/cak/firefox-124.0b5.tar.bz2";
       locale = "cak";
       arch = "linux-i686";
-      sha256 = "94cc969237012f7368c892acf2872a366a14f8738f88e41542e9dee81e5ee6ec";
+      sha256 = "12e49ac2213e35825928f585d6c0dea8eea1da8ce5b5533049d2fbfb188b193e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/cs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/cs/firefox-124.0b5.tar.bz2";
       locale = "cs";
       arch = "linux-i686";
-      sha256 = "e690f07b0dc7a97ec9cc144e9f3d604ea9ccac52700ec5af8b100c55bdd585d9";
+      sha256 = "2256f53d918bc5dbae5064a1c79d828fc2f3731caa9e4b24ebf3f321ecd752cd";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/cy/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/cy/firefox-124.0b5.tar.bz2";
       locale = "cy";
       arch = "linux-i686";
-      sha256 = "c75f5c9702a8c22de5899ad40a7753c1ad6426fa4c8af34a9f420a3d604701ab";
+      sha256 = "cb4eba3e523ee5adf085d0d1b989f26873ac0ccff0bfd560dbb25222c74262b2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/da/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/da/firefox-124.0b5.tar.bz2";
       locale = "da";
       arch = "linux-i686";
-      sha256 = "606391ffe609b458dbcbbc859092f57bf4e25886ebbe7fd86c3bd7a90e7dab99";
+      sha256 = "5f1568a418b84d226061d43e1ba59a2f3965308da9c9929e28e7d3118f241559";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/de/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/de/firefox-124.0b5.tar.bz2";
       locale = "de";
       arch = "linux-i686";
-      sha256 = "3b09c5c61788f2d62e853bf59c7a67ba362505d67a0b8eeaf84217d0b4f18744";
+      sha256 = "2d278f63a5b88792951e3c9cc71984ae60d6df63cd1ba626edf11fb7d6daa72b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/dsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/dsb/firefox-124.0b5.tar.bz2";
       locale = "dsb";
       arch = "linux-i686";
-      sha256 = "9a495dfccbc1912f947ef1f31aa843d07214efa9820eaa91fbf3c40910b8ff68";
+      sha256 = "067d0b71cc09b6b11d87d2538410ed010f5d8315c4e1cd0209ac56f8d7292b23";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/el/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/el/firefox-124.0b5.tar.bz2";
       locale = "el";
       arch = "linux-i686";
-      sha256 = "0610b38698998866f9a5c063bb5f44ee87c7c15bc154155a9ed22d701028e2ab";
+      sha256 = "8753f6e8a208d7d9b08925230ff0c34dc38680831de15e0842e7f943b958f495";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/en-CA/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/en-CA/firefox-124.0b5.tar.bz2";
       locale = "en-CA";
       arch = "linux-i686";
-      sha256 = "ed1911bdb239e19791563e6705dc1b70eefa169898b96775bdaaf0aa7bf3dd29";
+      sha256 = "e1c3b136a9923e7f723599e4c41e2242709f93a137388c7a55c2fa01b0f8d66f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/en-GB/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/en-GB/firefox-124.0b5.tar.bz2";
       locale = "en-GB";
       arch = "linux-i686";
-      sha256 = "12a3191edae0f6ccb4c85494e0f0040d9bf925442c10a69c894da1712461ef0f";
+      sha256 = "4f231c143426cf73efae5ef599621fdc4378983058b582efb2276fecf9c4d741";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/en-US/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/en-US/firefox-124.0b5.tar.bz2";
       locale = "en-US";
       arch = "linux-i686";
-      sha256 = "940bb46e4248c2a9071f4fb3d71b9586e86626297b969bef4e5ff528615554aa";
+      sha256 = "e327a18633e26e6a2f2c3339ca20bbc3439186ac8623d5ecc62a6229e11d73d7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/eo/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/eo/firefox-124.0b5.tar.bz2";
       locale = "eo";
       arch = "linux-i686";
-      sha256 = "10c70332248aa9018d887403f5c1092d6d98022132708b3e0e3943399b04b883";
+      sha256 = "b6914d14bfcd0cb9ca6753d3d73118914c76a6c1578415e6bda627f5ec60e817";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/es-AR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/es-AR/firefox-124.0b5.tar.bz2";
       locale = "es-AR";
       arch = "linux-i686";
-      sha256 = "35f97454fefa3b9a0ef3f9a9fa9e63a40d22787c6eb9d5095d5e34c30911a13d";
+      sha256 = "5106309277a0bdc496fdc1bf6d038664b390706821d8d16b82b9a5e844793a48";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/es-CL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/es-CL/firefox-124.0b5.tar.bz2";
       locale = "es-CL";
       arch = "linux-i686";
-      sha256 = "92ffe8ac01913b065b4032cb1094cc2a9260b1667b8a05c401c70c1b3bf3e17a";
+      sha256 = "920a6743d3c2589f0eed4fcb5db347dd451aea9ea692e41848f2571df04ed39a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/es-ES/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/es-ES/firefox-124.0b5.tar.bz2";
       locale = "es-ES";
       arch = "linux-i686";
-      sha256 = "a79e36d36869571f4478b91ef650a5d0b13a43e4f86961d426cf33e3743a0f81";
+      sha256 = "1e17d715730b510ddc39e1946da41221b68f157feef8b22fa93518afc035d268";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/es-MX/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/es-MX/firefox-124.0b5.tar.bz2";
       locale = "es-MX";
       arch = "linux-i686";
-      sha256 = "fc950fa09d21889a75e234c4e23246e31ed30dfc50c0515ec19c511d4b481bfe";
+      sha256 = "8bb595e7f1b5487dc797583b1c72e53f67e978eb40afa8092fc8b9df22139e29";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/et/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/et/firefox-124.0b5.tar.bz2";
       locale = "et";
       arch = "linux-i686";
-      sha256 = "089f99c63bade52974215cb1e57f98fec7ed324e62679843a4f9c393c0be1bc6";
+      sha256 = "afb7e22590c3ec2b2bc577f783c6121a0312041dfa983a4042ce1880299bd739";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/eu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/eu/firefox-124.0b5.tar.bz2";
       locale = "eu";
       arch = "linux-i686";
-      sha256 = "95f9056932a8c40cca3f90bdb8af0550c1ee9aa4318f17be467f603ff14cef6b";
+      sha256 = "5a054d18e7b80f3a3e0e38f8f65d726b2f7f71fd8641d10cb7b2a99ce2d40761";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/fa/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/fa/firefox-124.0b5.tar.bz2";
       locale = "fa";
       arch = "linux-i686";
-      sha256 = "60e6d6954163029c7d7876b419fad35c87eca170b15fe6080b481aadb952180d";
+      sha256 = "37e9e4103ad71843732012b4f9576acb1e538404ad8b1f246a60a898598b94f5";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ff/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ff/firefox-124.0b5.tar.bz2";
       locale = "ff";
       arch = "linux-i686";
-      sha256 = "c7bfe5a9b2050403f3608c54e824b2954fc2a2090eeda513179a1152e62b2b92";
+      sha256 = "4ef6ea7c74531085f295c4c24da699a903e862b93966effbc1ba788946c94514";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/fi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/fi/firefox-124.0b5.tar.bz2";
       locale = "fi";
       arch = "linux-i686";
-      sha256 = "454ac7290795b45a29c7394261d0c92caad9caa4220252c955c7c53634a77ec4";
+      sha256 = "aff1047d05b4fc1557a4a1a0913fb109f9a9ac913e1055dd3d83c84456a1ad11";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/fr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/fr/firefox-124.0b5.tar.bz2";
       locale = "fr";
       arch = "linux-i686";
-      sha256 = "7e2ea1d14a919e8f482ccb9376201aca19022ee55b5a31f05e4d296e7b6e41bc";
+      sha256 = "bf27f573772c6f4604ffd8b231c741bbbdf6f6f550d7a7e815c80c25448d68c2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/fur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/fur/firefox-124.0b5.tar.bz2";
       locale = "fur";
       arch = "linux-i686";
-      sha256 = "1819d23e008886916fb5069413000e447809cc5928ad4d149552f4502aaa2c1b";
+      sha256 = "ce90c58dcda5735f20ce6d8cd6de600e3317c9b61bdaeb9cf906d835bc71cd34";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/fy-NL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/fy-NL/firefox-124.0b5.tar.bz2";
       locale = "fy-NL";
       arch = "linux-i686";
-      sha256 = "990afb6a57de950a0fb70a0ccfe5bdf162b1c899183e3adad97fdac146161870";
+      sha256 = "d8e9dec1c6ee2d2e9c7088d2667ead8bd5c25dff121945df79d1485858d46237";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ga-IE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ga-IE/firefox-124.0b5.tar.bz2";
       locale = "ga-IE";
       arch = "linux-i686";
-      sha256 = "09fa1efb59b8ad7de307f6b610b33455d6cc7a0337f34a8f129301654ab66388";
+      sha256 = "1019ed02595beccf552b06d966c2becf58c52bf63bf8bbfa7631c5467060a77d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/gd/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/gd/firefox-124.0b5.tar.bz2";
       locale = "gd";
       arch = "linux-i686";
-      sha256 = "8478a92590fac43ff43324b548d7ae259c5de605f4ce4e9ae1c7ba8e18b19ff3";
+      sha256 = "7e2b5c1f80810df8e22252321e0c87f62da5bf673d4d2bf7e32c4c235b6f8ba9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/gl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/gl/firefox-124.0b5.tar.bz2";
       locale = "gl";
       arch = "linux-i686";
-      sha256 = "7f7433a74921f744500ac7db11df73705f5d852de8f98f87993b6cbc22064e55";
+      sha256 = "6080f23fa5ed30ecc29203be9b46722962605b4c6782636f8276b6d09812074c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/gn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/gn/firefox-124.0b5.tar.bz2";
       locale = "gn";
       arch = "linux-i686";
-      sha256 = "56fb8e346604092e04959b2c81c7aa400ccdbb1ddd10d3f9e74b73dad40d45d5";
+      sha256 = "771aba5bf954301b0bd8a1f28fc5b21be380f044d663182db4da5c58a9811498";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/gu-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/gu-IN/firefox-124.0b5.tar.bz2";
       locale = "gu-IN";
       arch = "linux-i686";
-      sha256 = "b7e6e79418fdaf5cda925294f231e2fd53e1b0d37087691d2bf3beb5e76489ab";
+      sha256 = "c15d1bf95686b1c61b120c9dd68abcc82bb96f06e7053de38491bea049b7870e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/he/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/he/firefox-124.0b5.tar.bz2";
       locale = "he";
       arch = "linux-i686";
-      sha256 = "1de395bbf21428c64f32db852171f67d9ac45da9d16d29bfd8f5dab0a97cb6a5";
+      sha256 = "704db19843bd8aed88485b13e65e0ad81afb934a50264139bf4b0c78f0c7ac49";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/hi-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/hi-IN/firefox-124.0b5.tar.bz2";
       locale = "hi-IN";
       arch = "linux-i686";
-      sha256 = "7fb06025747de1c564c0ec13dc2fde96905cc0dfe97bcd85b38b4589047ed933";
+      sha256 = "9584a60e7eca3bc87c2d49c48dfeddbb910f5a5e8bd5250208095e9ded2c5a94";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/hr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/hr/firefox-124.0b5.tar.bz2";
       locale = "hr";
       arch = "linux-i686";
-      sha256 = "2fec6480adb336eed80e9be291ed15c9ea32827cabffae13e783588e43d660a2";
+      sha256 = "52b147f44dad1494b3460e37470656325d83866143071e4e4795a9d7ca5ffbd2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/hsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/hsb/firefox-124.0b5.tar.bz2";
       locale = "hsb";
       arch = "linux-i686";
-      sha256 = "fef4012c9bf37b4ce11297334f09b54bae25f569da60a10a1db6e40343ae2a95";
+      sha256 = "e2b6f044600d71cda816078e75d378df4145255eced332ead017fcf6795212ea";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/hu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/hu/firefox-124.0b5.tar.bz2";
       locale = "hu";
       arch = "linux-i686";
-      sha256 = "764029d04bd9833239d6649e1551807261ec9bbfa62baf679b2b268806bd2fb1";
+      sha256 = "8a61b35c4ff40fbaa8bd09597e33ebb5cd9d3291f7df3d160c46745d4cc39505";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/hy-AM/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/hy-AM/firefox-124.0b5.tar.bz2";
       locale = "hy-AM";
       arch = "linux-i686";
-      sha256 = "97c7d35f406587904eca44981c2786273e1ca9d27396ed8e3328889935803e06";
+      sha256 = "19ab45664ebf3160ef71762df32f3ab61ba8e8d3facbf9219858f67cd669a2fe";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ia/firefox-124.0b5.tar.bz2";
       locale = "ia";
       arch = "linux-i686";
-      sha256 = "73e55883abb72c9903c75cf6fd83d9501b209c91863faff4a6f5dd86ab2691e3";
+      sha256 = "8130c47f85fdf7c889fd264972ec3873cd824ab51aff1a786e909448d2cd8901";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/id/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/id/firefox-124.0b5.tar.bz2";
       locale = "id";
       arch = "linux-i686";
-      sha256 = "8235188b0756edf63d9c49b7b078b9254a4f902cab8dc1b88d477bd86b6f4cf1";
+      sha256 = "e36e080403eee96f3b85c1516f9e0d95fa433f19bff038ef5b8d562139878378";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/is/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/is/firefox-124.0b5.tar.bz2";
       locale = "is";
       arch = "linux-i686";
-      sha256 = "2b288009c99b66ab115be16159fb7f13c92af2a7076b16c029efe220c2cb7068";
+      sha256 = "0af7afa8188463b150bd0bb5a6d70280563a32fba63064238eb99ebd914dae43";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/it/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/it/firefox-124.0b5.tar.bz2";
       locale = "it";
       arch = "linux-i686";
-      sha256 = "c752c720c292124f06dbb70dfcdd67a146fa2cc8ae874668218b72dd4ef1b65c";
+      sha256 = "39d4bb3eb6d4f332478dfd7151f681f912c48c9dace7fc5dad0684f114611e73";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ja/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ja/firefox-124.0b5.tar.bz2";
       locale = "ja";
       arch = "linux-i686";
-      sha256 = "34c43c7800927fc6973b1f16aa54170634a487ebe125312e2055ba19bc080009";
+      sha256 = "04a1c82420b4bd333d49c4937a721a5bfd9c01479c975885ec12d6dce5646601";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ka/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ka/firefox-124.0b5.tar.bz2";
       locale = "ka";
       arch = "linux-i686";
-      sha256 = "a2033551b1bbff58c31bacf696286937b1f64d14a0f31d03ae07313d29af0e47";
+      sha256 = "b3b9f59d8a0b8fb940edcf4ab2d9f68e59e20335410c93c362995739a58a0fcc";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/kab/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/kab/firefox-124.0b5.tar.bz2";
       locale = "kab";
       arch = "linux-i686";
-      sha256 = "4acec4cedd4a381e256418e5fe437cc173a6383d7653d37c1e9e5d2394b10463";
+      sha256 = "b5632bc5575a1ddfcff3db4b92da6d9aad578170e491f55158f203225f74ef89";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/kk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/kk/firefox-124.0b5.tar.bz2";
       locale = "kk";
       arch = "linux-i686";
-      sha256 = "d25eac34b55bfbf2d3e07fa84063a7ec4f2c8b2001b4adf029bf30d55f40a5ca";
+      sha256 = "7228c374b1b3589dbe1b72be1c108e92b5d5b1482b211eb0920f0fe5eb8109ec";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/km/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/km/firefox-124.0b5.tar.bz2";
       locale = "km";
       arch = "linux-i686";
-      sha256 = "d03a636b04c142350003363bb517288b2e89b662e8aebb57d14f1922594bf361";
+      sha256 = "4f33c09de0b2bfabad01aadb3a599606ccda4408aaca1f46b850c6d3b0cfc89a";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/kn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/kn/firefox-124.0b5.tar.bz2";
       locale = "kn";
       arch = "linux-i686";
-      sha256 = "687725ac097bcf14a9a8827feb3b8f349a88c6af73d8d3ead28e762dc59bbeb2";
+      sha256 = "1019326622395185993433b442246fe4f0cfff513b58143c0e8073c888dd8bd9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ko/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ko/firefox-124.0b5.tar.bz2";
       locale = "ko";
       arch = "linux-i686";
-      sha256 = "f3a2175461a7a80e24ce3039ec4df728a91ff22beb8931467ce729911d845abb";
+      sha256 = "3ef4b7bc685aad7c95c85fea9c66bb708fed3619233ceb99ae838d856988bb0f";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/lij/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/lij/firefox-124.0b5.tar.bz2";
       locale = "lij";
       arch = "linux-i686";
-      sha256 = "94c927b3a6fc1fdf045669a7e99a5fafa9d41237d16a14ae4f9a1bf447be8da4";
+      sha256 = "6bb1069a877d6e70af29e47cc924e182e403ef6cd741272a4fb40c35a7661a1d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/lt/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/lt/firefox-124.0b5.tar.bz2";
       locale = "lt";
       arch = "linux-i686";
-      sha256 = "20365acd6a1336265faadb1e91dcab7543471b6d4084e2ba6d5771058462fdad";
+      sha256 = "4ab9105cedeae72c8bbed0ab3ef445d3aef9aa1da200e8011249d39193584bd0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/lv/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/lv/firefox-124.0b5.tar.bz2";
       locale = "lv";
       arch = "linux-i686";
-      sha256 = "68e886e4aa30387c658aa5b68b21188a7b89210a1cd6aa79b7fc3bf7dae8aac8";
+      sha256 = "66a9833d26660984ca37fb09b321bacd11882333eb416558d46854ac213f5d5c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/mk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/mk/firefox-124.0b5.tar.bz2";
       locale = "mk";
       arch = "linux-i686";
-      sha256 = "c34e3272ab90c76794e770322b9d6fb76715e249c8f114c1dcc941fb4c5a2168";
+      sha256 = "3d5deb04c79687e5d364c734c30707980417dd478edacf83dc915103c8df1fff";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/mr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/mr/firefox-124.0b5.tar.bz2";
       locale = "mr";
       arch = "linux-i686";
-      sha256 = "24dabf9589f3d82dba29fc219513df7841ab4d039d4a3b5235c45aee2a7d4142";
+      sha256 = "217a6667c7ca77dc9225bbb5d590149dda4df4c50f8c367010bc1967d1de885c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ms/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ms/firefox-124.0b5.tar.bz2";
       locale = "ms";
       arch = "linux-i686";
-      sha256 = "b7b251b723ea0bc4545516172d29c6ee7de36c06c4de8a3850be0500384ec859";
+      sha256 = "2c4a574b86ebb09770174adc1906f036b4cd9a1047dbab2470503c27b8bf8c34";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/my/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/my/firefox-124.0b5.tar.bz2";
       locale = "my";
       arch = "linux-i686";
-      sha256 = "7fac3b633b65d20d9c55fd38565797c14ce94403553accc2c41dae206395f293";
+      sha256 = "889185eac6e208029c98f32ab360d5d5d6706a6a9b74c8d0d6c223408b276bc3";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/nb-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/nb-NO/firefox-124.0b5.tar.bz2";
       locale = "nb-NO";
       arch = "linux-i686";
-      sha256 = "44855c63f4a7c133d0a8b3ecd2ad80a2671caf558fd97bf3001692028126ef7e";
+      sha256 = "54b3ebb3e3765edc5fda8dd16e77b0e64dc6f8c62062780f43fc31082b185dc2";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ne-NP/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ne-NP/firefox-124.0b5.tar.bz2";
       locale = "ne-NP";
       arch = "linux-i686";
-      sha256 = "4e2a34d3c0fe86016b2f01a35b2617af3735b28bb7873aabf8668ed26ced2745";
+      sha256 = "d30e24a98bedba69ed1435dbd198e2cb581334df6bdab799e5a522808a111d78";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/nl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/nl/firefox-124.0b5.tar.bz2";
       locale = "nl";
       arch = "linux-i686";
-      sha256 = "09b618d19c9a3ffbcafaf4b9a75741d04de328d721a065526df8e95ea1c2de4f";
+      sha256 = "04d65559f5741c4546ae74645c32b8ffe26a72581e845c41a13485d8cfe30e21";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/nn-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/nn-NO/firefox-124.0b5.tar.bz2";
       locale = "nn-NO";
       arch = "linux-i686";
-      sha256 = "92bb2fa51f920c42addd1c8f3f93d887375baedcfb29d3915c86ff51a7a1af75";
+      sha256 = "b2691a3729afee02ab3b9eba68c08798950e912552d75723436914b4efa34919";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/oc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/oc/firefox-124.0b5.tar.bz2";
       locale = "oc";
       arch = "linux-i686";
-      sha256 = "e0042d9449a799094aa5f2c28cffbaf633807d56343ec403f497bcababa0979a";
+      sha256 = "fc78773fa0f6667a5685cfb641523df9996d25d3fd325d5c145ee533ad668a47";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/pa-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/pa-IN/firefox-124.0b5.tar.bz2";
       locale = "pa-IN";
       arch = "linux-i686";
-      sha256 = "af84162a056a60ec1677b17a91587e87e9b62c1d238a613b1fbb07e5cce214a8";
+      sha256 = "e7722d661ecb1bb90fcd3aaa74dc180e9f7319c7f291ccacdfd8b8bf7b47f3ca";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/pl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/pl/firefox-124.0b5.tar.bz2";
       locale = "pl";
       arch = "linux-i686";
-      sha256 = "6781465486cd966af11443e3df450979eb25753420160ef5fef98dc121d43c79";
+      sha256 = "b776220d9d296f62f6a73f6f6b8c48d681e6d51f06072d8fe18224ead2727e89";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/pt-BR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/pt-BR/firefox-124.0b5.tar.bz2";
       locale = "pt-BR";
       arch = "linux-i686";
-      sha256 = "8b338e9ef4fa42fb6d2f36d9dba1642f95267b645e7ef84f6fa4d395f895ac43";
+      sha256 = "31ab39129ac43049ee04baf7862a8f37f31eb5475474c3242d4bb65069ed05be";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/pt-PT/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/pt-PT/firefox-124.0b5.tar.bz2";
       locale = "pt-PT";
       arch = "linux-i686";
-      sha256 = "490903e862af703908e340ff5a619a076534e66cb033fb505b9d484b933402bb";
+      sha256 = "051f0dc8f2d9673e9998f567e68c5d93192cf868998f9ee1c8480695c868abfe";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/rm/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/rm/firefox-124.0b5.tar.bz2";
       locale = "rm";
       arch = "linux-i686";
-      sha256 = "5c7534786f2d4c2682b2a512babcfd1ee5eaf1c1f2ac5787b0f8081c4eefcba7";
+      sha256 = "ab7933e544de5d6302911970fa52af650c85ab3de3a1da40eb137463273c92c7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ro/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ro/firefox-124.0b5.tar.bz2";
       locale = "ro";
       arch = "linux-i686";
-      sha256 = "a783b0921654573f134a8635dca1274d89dc93453ae5efbdb78c3c1d7591b3cb";
+      sha256 = "ee617771912c1c0ae3bcff35a431dfb4409cfe6f4e7f4498fc6cc9402e57d9f6";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ru/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ru/firefox-124.0b5.tar.bz2";
       locale = "ru";
       arch = "linux-i686";
-      sha256 = "c4d687be2850404fa1720adf9815b86d9b36c40eb30fd370567bbccfd49f0298";
+      sha256 = "26b2a86099de12870d55407a3742681b7a3ca1595b596355208c540728a6aa8c";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sat/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sat/firefox-124.0b5.tar.bz2";
       locale = "sat";
       arch = "linux-i686";
-      sha256 = "a010c02ea3f4ec76f7de71f743faa728ef450c49a5a5aa9a14f2b9387beeea77";
+      sha256 = "dd2ccdb96290275332c1cc3c72c393b293d0fd2ba13248c92af3faeaf2fcb7f0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sc/firefox-124.0b5.tar.bz2";
       locale = "sc";
       arch = "linux-i686";
-      sha256 = "dfff4f0c69623696f482ae4be7153b1c8f45bab486729c06497d556c1764b564";
+      sha256 = "a802cf0fc342eb63ad6330dd75f28cb2a437a701b2e06128a2e1ad08d4622496";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sco/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sco/firefox-124.0b5.tar.bz2";
       locale = "sco";
       arch = "linux-i686";
-      sha256 = "762c2a782d4558e175a947c9dda553baa6b72d8de9d5fe7a5492fcc1beb5a9a8";
+      sha256 = "56b0b4bd0db2e6c47e384e3c095a39fa0c70aa1a2a1710105ad99003c0ec7955";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/si/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/si/firefox-124.0b5.tar.bz2";
       locale = "si";
       arch = "linux-i686";
-      sha256 = "1be1fbb87d7cf1fad185946932e3fdfcaa1763e959d3abd126c0cb880e3e4351";
+      sha256 = "4033b4b774bbc9fb7839dc1557b3ded270ee14deb70a116b111021ee7d22e3e7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sk/firefox-124.0b5.tar.bz2";
       locale = "sk";
       arch = "linux-i686";
-      sha256 = "dbe63db23c726e0c42390d57c57b87d1ad9af98bbd2a1dce95de66481e509e96";
+      sha256 = "d90ca875fb4d5aaf5ae2a2d9f26a62b3e78107eb900e570d54b1dca405b724ab";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sl/firefox-124.0b5.tar.bz2";
       locale = "sl";
       arch = "linux-i686";
-      sha256 = "97f76716051e61faa9148e75608f0103dc3132b5f33021de90b59f0b2d22e421";
+      sha256 = "896acd6535ce42f8fb1ee66dd39137de3cf18d4439ec10dcb1d28ce45923d9d8";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/son/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/son/firefox-124.0b5.tar.bz2";
       locale = "son";
       arch = "linux-i686";
-      sha256 = "370633a2800ca6dbe8bac859dd93663cb0491713e17f84d157f28e78eed71393";
+      sha256 = "2516376b0843971ffd6aef0ca14022835c963eb0f1360137a941189eca4ca273";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sq/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sq/firefox-124.0b5.tar.bz2";
       locale = "sq";
       arch = "linux-i686";
-      sha256 = "911e0a6e6be7cf0bcb28914dfdcf936b0b50bdee74750faf383cafb13947d811";
+      sha256 = "ece99d294565c787b94cadd992aa9ae3596df5a3e0d79214606bf5115e962eed";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sr/firefox-124.0b5.tar.bz2";
       locale = "sr";
       arch = "linux-i686";
-      sha256 = "dbe160780eb8e36e12dff33987a4433d40712691f9ae80e365671e4a7cf9500b";
+      sha256 = "0907bb87d06a9cdc7393953fc528f1aa01493520889c68cae81be1b1fcd0a4b9";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/sv-SE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/sv-SE/firefox-124.0b5.tar.bz2";
       locale = "sv-SE";
       arch = "linux-i686";
-      sha256 = "6aba4e8af1db24a463b899003e2d3dff4da71d48127712add142bdd7d970c0bd";
+      sha256 = "cec1b86e3f87680f95183090d08206271910ce13beacf0681d56497fba937228";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/szl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/szl/firefox-124.0b5.tar.bz2";
       locale = "szl";
       arch = "linux-i686";
-      sha256 = "81d293a8e72c4045c4d743bd1aa264d3f5e5523f98fbebee170328625f3c1cbf";
+      sha256 = "c28f2cdde800e3dc6acae4e257fc1c7466568294adf06e96ef26b66ed9786530";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ta/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ta/firefox-124.0b5.tar.bz2";
       locale = "ta";
       arch = "linux-i686";
-      sha256 = "84f74f475ba05a3a96eba87c0fe003b4789e0c850fe0ffae9a7f0cb67ed43609";
+      sha256 = "f5b421495a032d3a584ebe43638bf2721f1400e5d5714140344301744d3cb6a7";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/te/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/te/firefox-124.0b5.tar.bz2";
       locale = "te";
       arch = "linux-i686";
-      sha256 = "e60b27e7e101b13f014e56948bf30f4ab25f9bafa2a8a0f35c0feaa36c77d1dc";
+      sha256 = "9601c95bd9d8660b7c862370233b710e99ea2d789702a6d7812d75fe59ceb84d";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/tg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/tg/firefox-124.0b5.tar.bz2";
       locale = "tg";
       arch = "linux-i686";
-      sha256 = "b5dbb5049b6cfae7af1577bf44ce62ea229d92446b2e6cd0b00091b95949b3ce";
+      sha256 = "96837fd4aafeb63b54097193c776c798f03c86aeeb1f952a4bbb38ee37641db0";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/th/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/th/firefox-124.0b5.tar.bz2";
       locale = "th";
       arch = "linux-i686";
-      sha256 = "5d97e3b51a1611908f13ce7eb3f7b5fad7bb6376dce5543b0220c953ea0d04d0";
+      sha256 = "c0fcaef5e94b5357747486c61088b5379da9fa76ebdf2da12ee47e7938f8012b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/tl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/tl/firefox-124.0b5.tar.bz2";
       locale = "tl";
       arch = "linux-i686";
-      sha256 = "36820e779c310fd865a28d0e0dfec9b7a4bd82028731c78312c82bccfc4d61de";
+      sha256 = "9a78df48ab64fc9bfd58a770570abc75b3ece5295e483c87bd4b80b676699084";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/tr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/tr/firefox-124.0b5.tar.bz2";
       locale = "tr";
       arch = "linux-i686";
-      sha256 = "227e15b346d6eda324c2945cb9bb287130bb932415ee4acdbd20b898b957be42";
+      sha256 = "ba817e3b99ffb7f25005164ab5faf505896a526d2f6a3cdabac4ca9d5388d0a1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/trs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/trs/firefox-124.0b5.tar.bz2";
       locale = "trs";
       arch = "linux-i686";
-      sha256 = "c75690dd665415b7b45b7160affe9134cf8e6181a6f0d3c818785e7f89cfd421";
+      sha256 = "d4d98090131f4222a89908dcd96ad723734187bfa12078df2cdde2eb88a42b80";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/uk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/uk/firefox-124.0b5.tar.bz2";
       locale = "uk";
       arch = "linux-i686";
-      sha256 = "a2c892a3611af4708356d49939bca3045c4a28c0e96edde50b293671a7e7778a";
+      sha256 = "0a89b2feb31cdb9b96f8576b53bb38188b78e3a225c75b5cc549d40f84239912";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/ur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/ur/firefox-124.0b5.tar.bz2";
       locale = "ur";
       arch = "linux-i686";
-      sha256 = "bb506bf2acdc9f6bc1781f859b2758ed6faf08326d8bfd5b2fbd5acc41111dfd";
+      sha256 = "a1f8bc32290d3b7c36796aa8d969e75346bbeb5f315cf38c143c0ca172bf171e";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/uz/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/uz/firefox-124.0b5.tar.bz2";
       locale = "uz";
       arch = "linux-i686";
-      sha256 = "d1d2c71fdb55630413c80a820fea6f3269bc4612af6a5c4b9ffa11dbe051dadf";
+      sha256 = "43aa551a19e051e3e30ea2a36f66cdaf8136f51b3f8b3d59a22b8ffbe81111c1";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/vi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/vi/firefox-124.0b5.tar.bz2";
       locale = "vi";
       arch = "linux-i686";
-      sha256 = "e681801883e39fc89a919eba6a0c73ccb8e341d0a0c900832e7b49a78c57454d";
+      sha256 = "22c298ab967d7c3a54b1282890e15cc6fea5c8917281473eb623a0cf0f506255";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/xh/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/xh/firefox-124.0b5.tar.bz2";
       locale = "xh";
       arch = "linux-i686";
-      sha256 = "f68e316a11012f12c90a0b028f0e539e484b7f34d1e4cd693d943adf2c7ee198";
+      sha256 = "de923b5cd70637072481a3f7807bff050c46271ade9be688a52bb4f37581478b";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/zh-CN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/zh-CN/firefox-124.0b5.tar.bz2";
       locale = "zh-CN";
       arch = "linux-i686";
-      sha256 = "973d0dd3c052d41f15b4705e3948f761b7727b5ea7bf3fbd221ae9e5c55d7af8";
+      sha256 = "a54545509427e22187e8da4f1aaffae25a727e9e82ae41a141d7dbe3c5f08a46";
     }
-    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b2/linux-i686/zh-TW/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/firefox/releases/124.0b5/linux-i686/zh-TW/firefox-124.0b5.tar.bz2";
       locale = "zh-TW";
       arch = "linux-i686";
-      sha256 = "dde83ed0876b328fca4a36fd430890c470cc2846226114f9d51221264065600f";
+      sha256 = "ffb6a8b9041761bc2b77a1d5ab74c6fc4b973dbfd6e46b8967d20f52b8769b7b";
     }
     ];
 }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/developer-edition_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/developer-edition_sources.nix
index a9a6715eb08a..38dbd0a21f65 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/developer-edition_sources.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/developer-edition_sources.nix
@@ -1,1025 +1,1025 @@
 {
-  version = "124.0b2";
+  version = "124.0b5";
   sources = [
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ach/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ach/firefox-124.0b5.tar.bz2";
       locale = "ach";
       arch = "linux-x86_64";
-      sha256 = "74793cf9f40a8417cd139a8a5c1eca067d775a1e68c86440ad81db2d84497cb2";
+      sha256 = "3a9d427227b0e507d013b8339c945736bc39d7360c12528017e2c46cd712b74b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/af/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/af/firefox-124.0b5.tar.bz2";
       locale = "af";
       arch = "linux-x86_64";
-      sha256 = "74c505164e6a0d8b175e3b2199b70547d4bdbccef020bc7fcbe257c069608c44";
+      sha256 = "f9389fcad849bc271805a4f6d646bf928c94b7cb848c87599397b0f6e03a5665";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/an/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/an/firefox-124.0b5.tar.bz2";
       locale = "an";
       arch = "linux-x86_64";
-      sha256 = "3f9527cfdcd3f4b08f2fd78d377b1a837d7217576601b962ea20592041a0480b";
+      sha256 = "e021bd8a0c1c6c8f2df3a009586b31ce45f61e3cf38719ddef8166248d9fbd28";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ar/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ar/firefox-124.0b5.tar.bz2";
       locale = "ar";
       arch = "linux-x86_64";
-      sha256 = "8a00ad9daa6c1c7ccf66b79b797a5d0a882859ad78fa37e9fd345fdb28f220ed";
+      sha256 = "49d099742322b2b263c27c1d86686f76b1fb8130a53b67080d1d616ffbcd4328";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ast/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ast/firefox-124.0b5.tar.bz2";
       locale = "ast";
       arch = "linux-x86_64";
-      sha256 = "428328be0dabebb838c00492f35c9b3fd0fcaa97c8d42c9f1013fe8b1bad417d";
+      sha256 = "e0396631de1322a7a707451e12157101dbab304e2850300a3d49d4d4dfa54ba0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/az/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/az/firefox-124.0b5.tar.bz2";
       locale = "az";
       arch = "linux-x86_64";
-      sha256 = "c4db6c6aa1a290bc53aa62c40a4103ddf6de99bafa853a5abbe888213dbca475";
+      sha256 = "8e49721bb354ee02c773682fa955a7f6a6b39fa7a1deb5531bddfc6b65d9cac4";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/be/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/be/firefox-124.0b5.tar.bz2";
       locale = "be";
       arch = "linux-x86_64";
-      sha256 = "e514ce12bb22492858f0656921239e787c712ac00194fce29569a529c3fdb4d1";
+      sha256 = "5e47c784631398d3fbcdeff8c7472b63491c6a762953ed737475d001c3f237cd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/bg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/bg/firefox-124.0b5.tar.bz2";
       locale = "bg";
       arch = "linux-x86_64";
-      sha256 = "ff16975b2740bf9de9e791c9348aecbec9d100b67e31a117d86d27644a7c9c87";
+      sha256 = "efffce83ea3619b5370c765d1c56841c5da3139ede76f9cf1bb73990df6dc630";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/bn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/bn/firefox-124.0b5.tar.bz2";
       locale = "bn";
       arch = "linux-x86_64";
-      sha256 = "4c6940071a7c6f13edfc3d8c91866b95b36d7c3f0a3c01de3a4608812533282b";
+      sha256 = "20deb64cc3881e1ff7300db626088cda56447a90b28725bd0d86d5e600e924ea";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/br/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/br/firefox-124.0b5.tar.bz2";
       locale = "br";
       arch = "linux-x86_64";
-      sha256 = "9a89d3f72df6ac42e75de85e5283fd7fa603a22043037efd291c176834abd26f";
+      sha256 = "79c05c6ced75184d302cbaa0f3a11c9560fc444f7cdc869426067e0e97e06f29";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/bs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/bs/firefox-124.0b5.tar.bz2";
       locale = "bs";
       arch = "linux-x86_64";
-      sha256 = "d5365e33356f207099880879c7d9acadd9161365ce47a64a6016dc572aa7e54c";
+      sha256 = "fa437eefe4b569f3271ee4feabe0f7636e3311a1b90ee08e59100a9603a92bc9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ca-valencia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ca-valencia/firefox-124.0b5.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-x86_64";
-      sha256 = "1d975036e67594bf488e0376e2cec3ed35860e343979d307ad41b079707d093c";
+      sha256 = "d134e16646ed46d894350d8758101aded28e94a203ea6380ddb708f63973fa0b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ca/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ca/firefox-124.0b5.tar.bz2";
       locale = "ca";
       arch = "linux-x86_64";
-      sha256 = "305a55e1ffbbcaf6a9dd7e22e860c2f93df0d22a76a8513398643cae12576201";
+      sha256 = "5620a53acc236bd3aea1e325936134e8f0743acf08aae617d24fa4496cf39f06";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/cak/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/cak/firefox-124.0b5.tar.bz2";
       locale = "cak";
       arch = "linux-x86_64";
-      sha256 = "4e0879c0d4ea48250bdc957e9fa54d2de1f0710c35ce6955e12a3f8ce3b2f66b";
+      sha256 = "69700283c291f63e16e47a7a1a1074a2cae64708ce5fd2c0b2e2232829a6acb7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/cs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/cs/firefox-124.0b5.tar.bz2";
       locale = "cs";
       arch = "linux-x86_64";
-      sha256 = "40d1cc5b9c5dfa0d368c5c1c3c078774883463d13414641135abd8b77d4d5f85";
+      sha256 = "efd6574b6a27aa77525edc3d1789b86a4ce3b39024670a3703ba652e8ac3252d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/cy/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/cy/firefox-124.0b5.tar.bz2";
       locale = "cy";
       arch = "linux-x86_64";
-      sha256 = "e177ea044ddfa85e6963c21d5fea6295f983a1ad03ebb3b5cf1d0e3c82234961";
+      sha256 = "4f13852f795a6ecce2cce51537412a7cfc820d95627548b136c9f63fde959dbf";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/da/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/da/firefox-124.0b5.tar.bz2";
       locale = "da";
       arch = "linux-x86_64";
-      sha256 = "ef0acbe342ca124a02bce32bdb67f534dbc3965c794d60c878c1e412bb20ddd8";
+      sha256 = "bd1c60b9026e168d704c4effa522dd944f159abf3bcb839a9f50620e281c0eb5";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/de/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/de/firefox-124.0b5.tar.bz2";
       locale = "de";
       arch = "linux-x86_64";
-      sha256 = "9fdaccea1990185581d6b004ca59044af49c2c9a559bce6ac3f2322a9f006978";
+      sha256 = "a0d9a1d95f802c1bd2251e96bbb694582acf69b4c63ec14f0f7ebe3201f8c55b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/dsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/dsb/firefox-124.0b5.tar.bz2";
       locale = "dsb";
       arch = "linux-x86_64";
-      sha256 = "a5aae339dd95e857b6c4c3e94c2a43379b711c2cff16c68f83290a94aa90c706";
+      sha256 = "be38971a053252fc897ad1c16165b991e4b94a5edaa1d1aa358c26c6cd47055c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/el/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/el/firefox-124.0b5.tar.bz2";
       locale = "el";
       arch = "linux-x86_64";
-      sha256 = "acee82b0e2b41350a3bf457d002653d2b4631c5453696d25c78f10b0d9fb5a75";
+      sha256 = "9be3cc3c4299e2ef1da36eb8b432b9afca72a103cc0e0c8d921147c003421e6e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/en-CA/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/en-CA/firefox-124.0b5.tar.bz2";
       locale = "en-CA";
       arch = "linux-x86_64";
-      sha256 = "fb04adbfb97fecb86d4508f9f3d30b534c055dd676bb440aeda9e2e6b14ca63f";
+      sha256 = "53edf88fa6281f86fd59e29aed42672488c217df9ee7cb610fe6823f38daefa2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/en-GB/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/en-GB/firefox-124.0b5.tar.bz2";
       locale = "en-GB";
       arch = "linux-x86_64";
-      sha256 = "326c1c63e361e1c5bdeea0b8522e2a73f333a3fb32cd3f4838ab6eb0243d1c63";
+      sha256 = "b1cf43d40fa62dc43c049be0f53b27c93412be3363e4f1b87e3edfc2b5b0a568";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/en-US/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/en-US/firefox-124.0b5.tar.bz2";
       locale = "en-US";
       arch = "linux-x86_64";
-      sha256 = "e11b490aaede14535fcac0cf05410a8125002fdb8a0eb5fadc40f70059a2edfd";
+      sha256 = "a3a6ee9756e0a49675129cf9a82e24e55df476a68ecc7cf23e7d38ba16549b85";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/eo/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/eo/firefox-124.0b5.tar.bz2";
       locale = "eo";
       arch = "linux-x86_64";
-      sha256 = "5bb6103b01d81b159a60dae76b327e943c394e73472299ae25a97cc611394595";
+      sha256 = "0ad69137b8befc8f472b0f39022842747b28a22f29695b0cced487ed7050a49c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/es-AR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/es-AR/firefox-124.0b5.tar.bz2";
       locale = "es-AR";
       arch = "linux-x86_64";
-      sha256 = "39367f994b4c9fd4a72475bb0da452b9030fe71d044b9788a4cd68f43419c031";
+      sha256 = "70f7f24ede7387e4f3f1a16e06d5ad1eaed16cd20c07eb80f690ddd9a7f28d57";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/es-CL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/es-CL/firefox-124.0b5.tar.bz2";
       locale = "es-CL";
       arch = "linux-x86_64";
-      sha256 = "4dfceffc0bb03e5aaeba7d9277f2dd5fd95ea82673ef434ddcfe302376c227a0";
+      sha256 = "7dc56ac573ba34c358abd8e626a93524b5af09a83f0bc12ce1ffbc3bdbe9e138";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/es-ES/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/es-ES/firefox-124.0b5.tar.bz2";
       locale = "es-ES";
       arch = "linux-x86_64";
-      sha256 = "3c806fc1b6da7358b7d7f35534c1004e8830cc3497016e357b28f3bb15b8bfbe";
+      sha256 = "77ecf7b33d05498ec6681f6248f2eb8d00869a3ac67a1f1d6e2ca4023cc03e4c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/es-MX/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/es-MX/firefox-124.0b5.tar.bz2";
       locale = "es-MX";
       arch = "linux-x86_64";
-      sha256 = "bfcd34c6cd99416cfa3072715a43bd657ef4724e7bb63cd072a56a259b8a7ce4";
+      sha256 = "85f2cb1788ff01356f3177973c7764ea8d6ce125c1fca1604f2273d8f0507627";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/et/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/et/firefox-124.0b5.tar.bz2";
       locale = "et";
       arch = "linux-x86_64";
-      sha256 = "27e692508de1fa7101f34de598e13a8f351d8a780e7cf59b354e575fbf0e154e";
+      sha256 = "d409c5f2f299282f4196ff781bd906ea3c002aeab894b99fe12587ac2fcbfa2b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/eu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/eu/firefox-124.0b5.tar.bz2";
       locale = "eu";
       arch = "linux-x86_64";
-      sha256 = "96afbd4330b0163da79cfdeb0c270db0fd82602599815ddaed0ef60f72d6273d";
+      sha256 = "b64a0c98d5153a0ba06f423f891a6b1c4aa573e973be974dba9a566dd891b6bd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/fa/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/fa/firefox-124.0b5.tar.bz2";
       locale = "fa";
       arch = "linux-x86_64";
-      sha256 = "73962b7aab17dddb853216336dab491168e95b84ee1788a3193c81b4c3357121";
+      sha256 = "6eae66efab9e9ce65e3f31f22de36f3b5aa9a5617dc12f4ac1c523edd54f4f24";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ff/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ff/firefox-124.0b5.tar.bz2";
       locale = "ff";
       arch = "linux-x86_64";
-      sha256 = "37bec00b5277f237d28542d0eeba7706cd762de4f3e1909ea04e364230aaaf72";
+      sha256 = "e31a40ad54a2cb84ab43cf5341b73518508cf584d02c783f1f3259de1d06421e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/fi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/fi/firefox-124.0b5.tar.bz2";
       locale = "fi";
       arch = "linux-x86_64";
-      sha256 = "cd7ad1f0073bc94d628c1e9c143a4bf1fae17617a3737f98bfbba5d94bff36c5";
+      sha256 = "5d3a3e5f1ffae23de87db266c00e8d2ed1f8a4bc4e304aa0ecc48fa46d6a5371";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/fr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/fr/firefox-124.0b5.tar.bz2";
       locale = "fr";
       arch = "linux-x86_64";
-      sha256 = "a40e2f8ea24bc1e5631f15e57dc4f5b9a4a9ecffe8795d267375d13d472a5322";
+      sha256 = "8bc969e514fe1e5108682a04e196b83f4ef13145b9f64a1b151517fb8f452f28";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/fur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/fur/firefox-124.0b5.tar.bz2";
       locale = "fur";
       arch = "linux-x86_64";
-      sha256 = "d79e52696e06c842ebacce9186f9de96a017df1403bef8ddf0f84c066691fc72";
+      sha256 = "0e3b1d41f195253d04bf809d533412448f8e8bd78aee1052c0c4400618422801";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/fy-NL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/fy-NL/firefox-124.0b5.tar.bz2";
       locale = "fy-NL";
       arch = "linux-x86_64";
-      sha256 = "a23b70e03540eae7d7c286cdf62d24fe92ec8723d70227728edeb1403d7e0e76";
+      sha256 = "ab9ebe35521aa3fb8d8685bbb0f21912435cd9cfa6c2d9e5e3d8a3287036d96f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ga-IE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ga-IE/firefox-124.0b5.tar.bz2";
       locale = "ga-IE";
       arch = "linux-x86_64";
-      sha256 = "1f39f3ece2190a2bb0e7fda54b158e68245ab916f6ce625eb204677781ffdf37";
+      sha256 = "0f1435551e0d3c35b6a83d56e6df3d053fd10df28c154b13b307b032f17124de";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/gd/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/gd/firefox-124.0b5.tar.bz2";
       locale = "gd";
       arch = "linux-x86_64";
-      sha256 = "21fa9fa6958d1bc2e6d2e0cb505e168dd86e16abf154d4a1c7d924fda46ec988";
+      sha256 = "a6eacbbd51c4b9effe1dce31fc51692d65ead167dcac1504c9005e4e006ca58a";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/gl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/gl/firefox-124.0b5.tar.bz2";
       locale = "gl";
       arch = "linux-x86_64";
-      sha256 = "20d8dc988e9c05c0df4b76bdf18c6fc84eca4d248375ededb2af4a08887e369a";
+      sha256 = "1ec59dd6e003582ca6b1f41fc99ae6ae31a8e36405a8a0a9d0f07916ed6f1cdf";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/gn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/gn/firefox-124.0b5.tar.bz2";
       locale = "gn";
       arch = "linux-x86_64";
-      sha256 = "3dd5677e7a1eb9edcd34a5041ac455bc53cc810649c0d9ee583ec8763d8c1239";
+      sha256 = "469f42a54fc30b9e16d1e2b077a6947f9abc4a2bb8538865d570fb6317a0a943";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/gu-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/gu-IN/firefox-124.0b5.tar.bz2";
       locale = "gu-IN";
       arch = "linux-x86_64";
-      sha256 = "13995938baf5da66bb67dbdfde6d1e7b5fc8d352a16e6d9acbaf38440660fcbf";
+      sha256 = "85ec6fe399c612a6816e5b9825af670b90b3f6964cecf9dcdd1e998edae29cd3";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/he/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/he/firefox-124.0b5.tar.bz2";
       locale = "he";
       arch = "linux-x86_64";
-      sha256 = "45c6b2e365949e802e2884fddf8618848f3faeb7d41b4a7220832a2633d25e24";
+      sha256 = "c7b9af532375a0af8fd31704984c0f47a047e5b1a9217023b4568cb9a74fa3e9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/hi-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/hi-IN/firefox-124.0b5.tar.bz2";
       locale = "hi-IN";
       arch = "linux-x86_64";
-      sha256 = "2368682cf5aff958474da85edcf157319ff5e11e80bbaaf79ecb4ed366e97dce";
+      sha256 = "687111147ec150675e64314c4d81c90052f1b0c66bdd0a02d8ff539dc51deeec";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/hr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/hr/firefox-124.0b5.tar.bz2";
       locale = "hr";
       arch = "linux-x86_64";
-      sha256 = "bd33c9148a93486468703bb01e63b2082b7786145e14bf2e4fdb9ff970e4bfab";
+      sha256 = "18e2657ab0b1cc94e8643d5398401584de29d1e13542712b0359ef05b28cdaf2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/hsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/hsb/firefox-124.0b5.tar.bz2";
       locale = "hsb";
       arch = "linux-x86_64";
-      sha256 = "8a821c32ecacb18528051d2158394aba7fccadb3baf32756faa6dd5e4afbac8e";
+      sha256 = "e741820dc9066a89292d6b741726590d2a14bd1664ccd553fb458f44e6379157";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/hu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/hu/firefox-124.0b5.tar.bz2";
       locale = "hu";
       arch = "linux-x86_64";
-      sha256 = "36870f34e7aa4e94ca4421e69b229e2564d07dedad0a7bae3969fe6a783eb823";
+      sha256 = "cbcce410d1ec563434ea44a26584ba655c26f6b41df8ecad97f41432e5f1f66d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/hy-AM/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/hy-AM/firefox-124.0b5.tar.bz2";
       locale = "hy-AM";
       arch = "linux-x86_64";
-      sha256 = "6954d49ff67257138e840da704e7a669d7a990aebf3045e3fb78bc5a4416713e";
+      sha256 = "2ebd55a1f5bb40702e63488666d4399e9b1ce128d04baf2397f6d4746c66decc";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ia/firefox-124.0b5.tar.bz2";
       locale = "ia";
       arch = "linux-x86_64";
-      sha256 = "5e224701cd57c3df645d73735f900819d49e66533dc9927f087c48d615f58cef";
+      sha256 = "bd3451b27fe2fe2f1ffaff7fbce982a88f8be73da57fa86be15f3a6aefb4e6bd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/id/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/id/firefox-124.0b5.tar.bz2";
       locale = "id";
       arch = "linux-x86_64";
-      sha256 = "b745177d586c74e63d59b12f27609a870f27a7f2ff7db2d0e60fadd23fec044a";
+      sha256 = "ca292956567115be6867630c5c446a1133f7a9f92c0b8530758527faf13fd742";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/is/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/is/firefox-124.0b5.tar.bz2";
       locale = "is";
       arch = "linux-x86_64";
-      sha256 = "536390a98b8adade9fbbeca2aea91544afc75a681f9ae602d1bba33d20e53148";
+      sha256 = "18261dd49c760210691c5f19e69df72c5db5b68334bccebc5b89e23d30feb97e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/it/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/it/firefox-124.0b5.tar.bz2";
       locale = "it";
       arch = "linux-x86_64";
-      sha256 = "367f690d57b8c95c30f967635ddfae8a8d397a55633b08b159d793c352873cf4";
+      sha256 = "a9a9f81a9b2802d5c9e35a665a20cc1bd94e95a1e7d428d3c5c7e51f92fd5025";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ja/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ja/firefox-124.0b5.tar.bz2";
       locale = "ja";
       arch = "linux-x86_64";
-      sha256 = "d1c60935841e3e695c2469139c7f4b3fcc4229532ac4a32662110888952a2f25";
+      sha256 = "bf9cb77cb0fe54f5db5765ce921db21e6e5cb010a685e318af6c01399658be04";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ka/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ka/firefox-124.0b5.tar.bz2";
       locale = "ka";
       arch = "linux-x86_64";
-      sha256 = "35735728917d747bda8f79f108aeacba7b8db5c7c5d8c77bb492f63d71cc6c58";
+      sha256 = "5d9d9147731060c7a4c6a3cb11778b8373ff05e31468b2a3b139627a851d3db1";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/kab/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/kab/firefox-124.0b5.tar.bz2";
       locale = "kab";
       arch = "linux-x86_64";
-      sha256 = "98a4041993477d02dd1d4b3c9c992226428727cad7ced4ad6f47345f75474c21";
+      sha256 = "7ed1d9bec42b2a96531483c584f251a47894cde8b63fe6b2e916172309ef00b7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/kk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/kk/firefox-124.0b5.tar.bz2";
       locale = "kk";
       arch = "linux-x86_64";
-      sha256 = "a8ffed7991f367ceb30ccbc9970f2d4b7bf7dec91835b7c5f798cec381261117";
+      sha256 = "3566f38898ba1e20e07063b330bcd629013ce428cf27d64f8b02e2e60e425fca";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/km/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/km/firefox-124.0b5.tar.bz2";
       locale = "km";
       arch = "linux-x86_64";
-      sha256 = "1e6cfb179b95c37a8f9add7c0d078b8338ed8825e3f941a5828a70de81718858";
+      sha256 = "f3badaef42cb4d56f72913377d02ca28bf6e60d1637b807d1d5c9eea18db687a";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/kn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/kn/firefox-124.0b5.tar.bz2";
       locale = "kn";
       arch = "linux-x86_64";
-      sha256 = "262ccc79e9c54a2f9f292a1efff141693a58b4ef52e3edf21234c79d9cc6353d";
+      sha256 = "9f72af81ae057f491bb6d550790b10a7b98acdb1f39a9daded9fb62f06f531e7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ko/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ko/firefox-124.0b5.tar.bz2";
       locale = "ko";
       arch = "linux-x86_64";
-      sha256 = "79bba7be23599dcec75529d92f7be71372be60c884c6bfb14ff6291f6859283f";
+      sha256 = "85eb0c3787fc9c32f050cfdb735486769d5ec06c2162931c0a68a6c40d1caf54";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/lij/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/lij/firefox-124.0b5.tar.bz2";
       locale = "lij";
       arch = "linux-x86_64";
-      sha256 = "c10b95b64b016c5c87117fdeeafa640fc61d47c35fb27f81cd75d5ca6e0f7862";
+      sha256 = "79e926bfed5f351f331142467740acee235389fd42d64d7d6f26b3fd7b2284b5";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/lt/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/lt/firefox-124.0b5.tar.bz2";
       locale = "lt";
       arch = "linux-x86_64";
-      sha256 = "2f154e352db3400cd68bb2001a771e371ae6b584fbc108a586221438ed84a7db";
+      sha256 = "095526aca901b9a727a83b72568db9f98341d00c84f787b6cfe132af463ea570";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/lv/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/lv/firefox-124.0b5.tar.bz2";
       locale = "lv";
       arch = "linux-x86_64";
-      sha256 = "65f9e00c03745576566244c3a0ce530f9cb838553110018371154f7a7e788e40";
+      sha256 = "00de227c3224da10b45ee7832d559faaa025d8a4ca0cfb554e28a93a1d89dbb3";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/mk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/mk/firefox-124.0b5.tar.bz2";
       locale = "mk";
       arch = "linux-x86_64";
-      sha256 = "f022d406e098f5fa20ee6fc4d81f4ad880c17607ba17afe51825f4702cd42992";
+      sha256 = "5975da0df9e6b2e12945d6e1d28a15b31764711481e9477cf71d464c64415c61";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/mr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/mr/firefox-124.0b5.tar.bz2";
       locale = "mr";
       arch = "linux-x86_64";
-      sha256 = "755f319023a6a921f599780cef447f50a777a6713a12abe28756392ba417eafc";
+      sha256 = "7164e8fab3e7a47f3da722bb7b91afc3dcbd895c0c06082ae0ed658bd56c1a29";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ms/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ms/firefox-124.0b5.tar.bz2";
       locale = "ms";
       arch = "linux-x86_64";
-      sha256 = "517f9062ff8315e43d4f210272b86567e03492ca92316b6d8a77d879c0d2b77c";
+      sha256 = "a8850f422d6ee664a6c35e364bdde11cb6c057447354978a0ba16ba69366f885";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/my/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/my/firefox-124.0b5.tar.bz2";
       locale = "my";
       arch = "linux-x86_64";
-      sha256 = "840388b97bab51613d75d345668cc7adff16bcff970a89bf014d1ba0ad9d713c";
+      sha256 = "bbb2dd78a54472b759fe3cc55658bdf5aa7dc020b6c108785fbee037aa4d60b2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/nb-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/nb-NO/firefox-124.0b5.tar.bz2";
       locale = "nb-NO";
       arch = "linux-x86_64";
-      sha256 = "762b93199192c1f152b5d287a4419c940f58292d5121ecf165b0fef0e46cff9e";
+      sha256 = "b938a616d1d797663022891234875c8b11d08849420b2035841e2f9923ee98f7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ne-NP/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ne-NP/firefox-124.0b5.tar.bz2";
       locale = "ne-NP";
       arch = "linux-x86_64";
-      sha256 = "e8fae1d9e6633b940c88fa7560ea98201445e02943bd93a851978d34c920280a";
+      sha256 = "059c02e5ac4436d5b2335936986130bf798178950c34bf0761772eddbc0b290d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/nl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/nl/firefox-124.0b5.tar.bz2";
       locale = "nl";
       arch = "linux-x86_64";
-      sha256 = "a3ab4ebd5d56bef06b996a17bb1f8a2a19c0d0957221c07127b338c610f702f5";
+      sha256 = "5f4aca4a2a5b6ef331bb8cdd011663e3b07197ec7a9acfad0ab72001d833a8d9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/nn-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/nn-NO/firefox-124.0b5.tar.bz2";
       locale = "nn-NO";
       arch = "linux-x86_64";
-      sha256 = "1b57e17813998644c90f0e67055bef23d2fa99f7866c58c0e24e31b5c154c10b";
+      sha256 = "71f055e95e1f20ef687f0399c7c1c6130af4a156055e2330d6b8e41fb82f384d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/oc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/oc/firefox-124.0b5.tar.bz2";
       locale = "oc";
       arch = "linux-x86_64";
-      sha256 = "8ea031ae317c5180fdec4024923913a34a9fbe91b6325f895adebae303989507";
+      sha256 = "b9e23ebc113bce19c0e792f544c2b83354a4c95982d541e86d5a140877d3ffdb";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/pa-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/pa-IN/firefox-124.0b5.tar.bz2";
       locale = "pa-IN";
       arch = "linux-x86_64";
-      sha256 = "a949438ea00b1e81a7e6c1bc0c0c482c27641c568b19bf5ec9bbb11e00a94bf3";
+      sha256 = "a10f44ae3f4fe85aa8885e8ff9c8b6b412e2922760cecd7cf92fcd623606512e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/pl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/pl/firefox-124.0b5.tar.bz2";
       locale = "pl";
       arch = "linux-x86_64";
-      sha256 = "973c774fa1ed32d6a60cd45a285369735dd1a6e97f69369be1ceec621068d4f4";
+      sha256 = "8cb1458f0df89a59aef33d6c35ffc0d267f3ed0fe09ba3c9d4bb4e73c2594c65";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/pt-BR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/pt-BR/firefox-124.0b5.tar.bz2";
       locale = "pt-BR";
       arch = "linux-x86_64";
-      sha256 = "21b16694ddd7fd9419f60d3ed133df088b473b0c315153ae3e1d4d29fd728d62";
+      sha256 = "3d4d6fd8f2c79b7953ae3fff5d8a9a3e6b0b90c700205640648db351fcd9ade9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/pt-PT/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/pt-PT/firefox-124.0b5.tar.bz2";
       locale = "pt-PT";
       arch = "linux-x86_64";
-      sha256 = "52278307a464713fb118d7a04b8f5c9719dff4d06fec0c50d83e74a944c76328";
+      sha256 = "ea42d3b23a30f7052b4ffc019ba6ffa082d5d685ede24654908ab03c8c8db318";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/rm/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/rm/firefox-124.0b5.tar.bz2";
       locale = "rm";
       arch = "linux-x86_64";
-      sha256 = "0d8a6e0eada48e70d38cd280936e51e8d4f02eff0b3331d3ec7a8376336f0b9a";
+      sha256 = "50094bff240efd4c49d4247827a50a85ccb8cf025217b486d85fdf35656eea83";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ro/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ro/firefox-124.0b5.tar.bz2";
       locale = "ro";
       arch = "linux-x86_64";
-      sha256 = "1ac3741d0b14741ddb58515077787dbb642a20a6ee4077ae54eb6da6e70e10b6";
+      sha256 = "707b878228df1ca1e9f05570a7633575dda66bfb2be2e1b2a92194e101e0c124";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ru/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ru/firefox-124.0b5.tar.bz2";
       locale = "ru";
       arch = "linux-x86_64";
-      sha256 = "609971dd8611e956e702ccf5a77e89fde0f371cabc047093859e2dce5da8a00d";
+      sha256 = "de342f890331beaaf1d9f2809baf454940edfa7a5cd9364b4ccf884ca4cf5be0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sat/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sat/firefox-124.0b5.tar.bz2";
       locale = "sat";
       arch = "linux-x86_64";
-      sha256 = "be01ee3d3747fba34058c827b202551363cce2ae8281dab3fe80b90f7fab389a";
+      sha256 = "52c1c9476158d2d497faf8abc9e3beb883abd951214f04daf8696cac84806dc7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sc/firefox-124.0b5.tar.bz2";
       locale = "sc";
       arch = "linux-x86_64";
-      sha256 = "243dcd83e58b358f48dddc1532166b2c86c576da3d0dac663e220ff22c402c4c";
+      sha256 = "a4bf499bd0eb3e4b084b63725f2d1cacf51992218429d593e68564ed3400ede5";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sco/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sco/firefox-124.0b5.tar.bz2";
       locale = "sco";
       arch = "linux-x86_64";
-      sha256 = "9f8fd14b7025ae1dcb7ea118225577f8c51fa3084d84c38b88b7b252fb79e29c";
+      sha256 = "210e023054d80f11043861bd5c866d607ab275ee2bcdbc26695d63c3a6dbcfb8";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/si/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/si/firefox-124.0b5.tar.bz2";
       locale = "si";
       arch = "linux-x86_64";
-      sha256 = "4d80f8bc1f0a39938d51f0db0f06fecf76fba9ff88e3f894a2dc2bbbdc50b013";
+      sha256 = "92734b3ede3cad670987a741504c88c967bffbad342c6019342f62344a967e6f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sk/firefox-124.0b5.tar.bz2";
       locale = "sk";
       arch = "linux-x86_64";
-      sha256 = "6faea76d228a88c4973d220ce571b4f992496aa7026018dad4350114d5fe0db3";
+      sha256 = "23170691d560359be0b92e3f43d468bbdae3df8b92a3fa3e56289dbe4b79a0d4";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sl/firefox-124.0b5.tar.bz2";
       locale = "sl";
       arch = "linux-x86_64";
-      sha256 = "2edb42c9aef0670b50acc2beace6f26210567b1efb43c2030e950d38f851a7bf";
+      sha256 = "99b6aff6d04cde61fe4341c332a047c8d72ed47891b8d7b5b5f3300cfa24adea";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/son/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/son/firefox-124.0b5.tar.bz2";
       locale = "son";
       arch = "linux-x86_64";
-      sha256 = "30546cdaa39d46ef8f1396fed2cb06cf2d550045ebc03e7f8f5557b689cf74ec";
+      sha256 = "7cfb51266358c6ccefd8be658074652be522f9dd08afa4fbd66c66ea6e1c301c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sq/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sq/firefox-124.0b5.tar.bz2";
       locale = "sq";
       arch = "linux-x86_64";
-      sha256 = "7d4efd553a2e28aa4c853c6a1596139fafe67198d8f85afb47fceba7661e95ac";
+      sha256 = "36c2549c2866c02fe7439fb0aab22472a1fe08499ef903c4d100d6fc5a5382ae";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sr/firefox-124.0b5.tar.bz2";
       locale = "sr";
       arch = "linux-x86_64";
-      sha256 = "37d42cd9317ae0ec236c2cf2979247391be9787080dfa625888e7d215b47e141";
+      sha256 = "72d68fc9b2c27208ee82dc0b12a36c2c830dc0dd8371002f65e83d2fa9bfc580";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/sv-SE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/sv-SE/firefox-124.0b5.tar.bz2";
       locale = "sv-SE";
       arch = "linux-x86_64";
-      sha256 = "16ab2cb27e787e8981f7af527ddda5b85f384cb893eddf2d9ab064f667843aa1";
+      sha256 = "e404bfbec892bad57b8c4214476ab24154bb364f4bf417711e108b924cb1a0ef";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/szl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/szl/firefox-124.0b5.tar.bz2";
       locale = "szl";
       arch = "linux-x86_64";
-      sha256 = "945b54ed7c810e95be63a58d651c7fbf4e7c8fce820d3ae1a8994b79c90e8fc3";
+      sha256 = "396e3a91b623084fb01e5cfeb54b31265f64b2d40220c825013358ce6e91c086";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ta/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ta/firefox-124.0b5.tar.bz2";
       locale = "ta";
       arch = "linux-x86_64";
-      sha256 = "81d685c7d67d5d78ef6338524ddf49c4701b0eb4f3170b292b3738672f8f434d";
+      sha256 = "3aee12fd06ed6e297c51a7f896ec6c2b6c9d9976963a3b7be38e15ee2f417363";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/te/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/te/firefox-124.0b5.tar.bz2";
       locale = "te";
       arch = "linux-x86_64";
-      sha256 = "b06432c05a9a9af720a0d3fb13d4bdf2f0b911aacfd1b4be0262551f04bd21cd";
+      sha256 = "879b11760080f552185afdfa7d85e97ec3de1582325c365db8e706a2479d952e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/tg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/tg/firefox-124.0b5.tar.bz2";
       locale = "tg";
       arch = "linux-x86_64";
-      sha256 = "004214989af19e056281be2e8117fa3df84fd289038b40428ceff0f8927cd13e";
+      sha256 = "142fa013b4c9c25cb3cefaa0c505867abc9f6a740436596c8c71eff2b2c89b0c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/th/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/th/firefox-124.0b5.tar.bz2";
       locale = "th";
       arch = "linux-x86_64";
-      sha256 = "021711b103a1598662ca158625285042ac56493afe4f85fba06247af4cf204c3";
+      sha256 = "9b6433258f1c78b91ba027a185a393683679087d6a718bfa72dff6b29230937a";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/tl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/tl/firefox-124.0b5.tar.bz2";
       locale = "tl";
       arch = "linux-x86_64";
-      sha256 = "963935bde9203ca934606bdb4541b5163766102dd4bd061b92675d1d4bd18e9f";
+      sha256 = "4995d72b2c6f7c36df2bec5d7d6d43db2ab486a4666c8c494c3980ab05b28f58";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/tr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/tr/firefox-124.0b5.tar.bz2";
       locale = "tr";
       arch = "linux-x86_64";
-      sha256 = "b3921594d76954ffd291093a1ab9be568660f764ab21aca56be6b045f9860eb4";
+      sha256 = "d69e754cd73a7160ab165cc2e9ac9152c7ce21c1f1c80b770505055dc12758b8";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/trs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/trs/firefox-124.0b5.tar.bz2";
       locale = "trs";
       arch = "linux-x86_64";
-      sha256 = "9669b9047cb3216b43beb1e2fcbce26db8ddef3246c110ba721ecacc6217ef8a";
+      sha256 = "e7b548bcccb1fb1dd667db515b3de7b434d8ec2f6b240bfb9d2abb546fd64352";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/uk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/uk/firefox-124.0b5.tar.bz2";
       locale = "uk";
       arch = "linux-x86_64";
-      sha256 = "1763a89bc98245ae10fdaeabea46edfeb883c77eacfcb60ea32d98e4165bde9c";
+      sha256 = "6b8e56538a29bd538312fda7e423e151dbf7f9818583cc855c9c6532f05012e7";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/ur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/ur/firefox-124.0b5.tar.bz2";
       locale = "ur";
       arch = "linux-x86_64";
-      sha256 = "d27b5ca78b6cc65bfc4dac1fb634e984cf5d6276f27a2ae6292fe990ee54d686";
+      sha256 = "94f69b4181bfa72981a844f133fdbd6e9ca7e82688c7c75a0ceb8a1a3b3b4962";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/uz/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/uz/firefox-124.0b5.tar.bz2";
       locale = "uz";
       arch = "linux-x86_64";
-      sha256 = "76f0b7572315a740d2618bb9c4535a53079c96b467cd949b89f7de19e3eb27d5";
+      sha256 = "2c110757681fa6bbb568cb4a73cec0dda794215a78c0bc497327aa69c558e56d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/vi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/vi/firefox-124.0b5.tar.bz2";
       locale = "vi";
       arch = "linux-x86_64";
-      sha256 = "24034052bc94a736491adc5b66671108c9534411322a51681465e2797609c8ae";
+      sha256 = "a737e018da186db9d368d9db84f96874b66d211de7dfe6f6c96c51d71296418c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/xh/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/xh/firefox-124.0b5.tar.bz2";
       locale = "xh";
       arch = "linux-x86_64";
-      sha256 = "a26013df15666d3a41a7fe246264e61e8870ae57f6a3b7801debae83fee22b53";
+      sha256 = "ca7c53e1ad88430cfa59a8f818ced58ab211ea50da640202692857a86487a4b9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/zh-CN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/zh-CN/firefox-124.0b5.tar.bz2";
       locale = "zh-CN";
       arch = "linux-x86_64";
-      sha256 = "e3c268df2ad614ef363c7fbbdf40ed2843d7893f618e0dee1f600431959445bb";
+      sha256 = "7f221cb142947db55f1bcd8bfc3951372ee99319f2cffbe92ac6e2c95d1ff30f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-x86_64/zh-TW/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-x86_64/zh-TW/firefox-124.0b5.tar.bz2";
       locale = "zh-TW";
       arch = "linux-x86_64";
-      sha256 = "9be0da58e8ce4f2c803e8525f14f2c0bde65646de4786ad1e394519a2b772e8f";
+      sha256 = "25c10e07d9257649253d8acdbf17a8e7f743c7365cebec1d33a4324e57730463";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ach/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ach/firefox-124.0b5.tar.bz2";
       locale = "ach";
       arch = "linux-i686";
-      sha256 = "2f490132f46d7911618257f7cee0acee78639dc3d956695bf90d9f941deca8fc";
+      sha256 = "6410b114a2c5daf887ac9a38acb844b711bba3f3ea91019711a72bc92a9e6fb8";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/af/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/af/firefox-124.0b5.tar.bz2";
       locale = "af";
       arch = "linux-i686";
-      sha256 = "9aafc0d5e31d4a2b66eb073f55a9e4fd7f42472f5547b527db5cb6a1c1bcce2a";
+      sha256 = "b36bc55464796fb51652eab114df0684d9ff6a24eed76e94d5646f34b62ce801";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/an/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/an/firefox-124.0b5.tar.bz2";
       locale = "an";
       arch = "linux-i686";
-      sha256 = "d983a30c6b00e606a871004186dffe3ea030c54274c3dfae29a10115388705c0";
+      sha256 = "9943120acfe5fc1f3c002bad9e594a53b3b0eb94873de3853d8f875faff79280";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ar/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ar/firefox-124.0b5.tar.bz2";
       locale = "ar";
       arch = "linux-i686";
-      sha256 = "0d3799364eef781abef7649947a53c5f4545f79baf934f47563615b4b112f2b7";
+      sha256 = "753de19d7c7b6035a72829f99b77577857b0aa4da196a7925d0c8123679c4755";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ast/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ast/firefox-124.0b5.tar.bz2";
       locale = "ast";
       arch = "linux-i686";
-      sha256 = "644c4170f7efc88fbdacb74ce1d679fe38551fc22eee6bf914f230d5b9980456";
+      sha256 = "c804f9873eb9e9d03ad0814c541656a8391af36183f98047bb739e9d32751479";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/az/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/az/firefox-124.0b5.tar.bz2";
       locale = "az";
       arch = "linux-i686";
-      sha256 = "d573b888d6541af8cc00e3429c9a0cc8af0e5036e61ed45c53aed0c3e18719f7";
+      sha256 = "b0039d1c965c957f99b262611d79c751c34b0e65710e336fa258d4621f5bbcb1";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/be/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/be/firefox-124.0b5.tar.bz2";
       locale = "be";
       arch = "linux-i686";
-      sha256 = "e59510204f159b62ec7503a7e11e15b2fcde48844f59bbca777e8e4a4a95e18c";
+      sha256 = "648d859b8b19c5b5aad1260436752537534008c668b3e6fbfd99760fe0159a75";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/bg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/bg/firefox-124.0b5.tar.bz2";
       locale = "bg";
       arch = "linux-i686";
-      sha256 = "5913894496ef63830920478ac7bc736942ddf4a18723b5ca3c608045e7346bab";
+      sha256 = "1df511632cef19795f1f1dbd4d9162654f3ad7fb6f82f8f0042f31692decb3e0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/bn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/bn/firefox-124.0b5.tar.bz2";
       locale = "bn";
       arch = "linux-i686";
-      sha256 = "2c06c054d4af08bb6016111e23f5acc175f48dc66fe806d200315dd61513ff57";
+      sha256 = "12eebe199a907506e279bb13ecbca0648acb610370e55b45337f21c62b779fbd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/br/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/br/firefox-124.0b5.tar.bz2";
       locale = "br";
       arch = "linux-i686";
-      sha256 = "ed4912612518db7f25ec9ab23857b917b5e15922d25b82e1cd9df5c8dfc62ca7";
+      sha256 = "4fe652739af9415f50117112fae884cc8965092772c6394916f593144e232096";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/bs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/bs/firefox-124.0b5.tar.bz2";
       locale = "bs";
       arch = "linux-i686";
-      sha256 = "0e2a80167239a6f52c7c219020423360a7fa7507776d63885b4313d5673e7bc5";
+      sha256 = "e1c53f84cbdcb0e54885c95bfabcea4e3af385ef2aa7be97e90ff900ba90225e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ca-valencia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ca-valencia/firefox-124.0b5.tar.bz2";
       locale = "ca-valencia";
       arch = "linux-i686";
-      sha256 = "401f65c35aad581550a71b9e23d75fd315c78706baccef239575315aa6cd7691";
+      sha256 = "cdae0f83ab760f8799f1059d9b0bb7ad9f9c30366ac0bacb7f7666baaf87dacb";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ca/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ca/firefox-124.0b5.tar.bz2";
       locale = "ca";
       arch = "linux-i686";
-      sha256 = "01cdab31cfc7d7cb9c3dd546772086653c4857f7fb5483938555c24e79b2dd82";
+      sha256 = "f604aeb476b0c244dc0d8da499f2da74d0637320794d8b74c8a1ca05839fe6f3";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/cak/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/cak/firefox-124.0b5.tar.bz2";
       locale = "cak";
       arch = "linux-i686";
-      sha256 = "7285403b994369d50b91fd0461966fd135575484f0f5b410dac8e30612a33d67";
+      sha256 = "9f13a7c93fc8aebee8b819db09dd8a9275c3c2b87771e1f784e6332ac00384d2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/cs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/cs/firefox-124.0b5.tar.bz2";
       locale = "cs";
       arch = "linux-i686";
-      sha256 = "4ad37942080837b6cb455020dcc5ea00b50701f0487f8b71b645510f5bf1bdeb";
+      sha256 = "c2b40d89374e1b25dd304795a490d4eb8b6a4d55a5feba8d1a8fd5be19842e5a";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/cy/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/cy/firefox-124.0b5.tar.bz2";
       locale = "cy";
       arch = "linux-i686";
-      sha256 = "8494202bd1e6a60f6ce6d028ed9a4a427e85346ad87e13c722fd1c69cb7621da";
+      sha256 = "4f36c761acebf9799ddad960d08c6af0918de0c76b3138475b4f41a3678a8718";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/da/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/da/firefox-124.0b5.tar.bz2";
       locale = "da";
       arch = "linux-i686";
-      sha256 = "a3842b0e02ee84283a70c83b2e63e0b2287690c3f34377c0a7ce1404f93d65a7";
+      sha256 = "05855ff0a054dccca46f05dbd024858f2cb6b79597a3aad8d1002ff56965be05";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/de/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/de/firefox-124.0b5.tar.bz2";
       locale = "de";
       arch = "linux-i686";
-      sha256 = "671f5c1fe8b93ee4bbe10c51d9ffd0cecec3fab45abb182da50e09658da08f92";
+      sha256 = "23b266875bbbfa3b71ef3fee60c57ca44a2c27328377c667102642366ff9a290";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/dsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/dsb/firefox-124.0b5.tar.bz2";
       locale = "dsb";
       arch = "linux-i686";
-      sha256 = "e5ea18682d880e758d7883d3915463e4e88e4c6add0dcd081732562c7197076b";
+      sha256 = "80c14d7befeda8010c510f561b0fb3c7b5ea372bcb5e125c1d7c3f8102a41f2d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/el/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/el/firefox-124.0b5.tar.bz2";
       locale = "el";
       arch = "linux-i686";
-      sha256 = "a4d3054d8d45e1a176580b030f98896ba2beed05f93f0b544deb66964a86af68";
+      sha256 = "ad9614d1917167408d615a733793f8c3205b8e139207ffacd2db86b6a31e86b0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/en-CA/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/en-CA/firefox-124.0b5.tar.bz2";
       locale = "en-CA";
       arch = "linux-i686";
-      sha256 = "48e4068e735464a592d7a9d831792f336dfc4ee512fdd7b89adb9c9219e38b2e";
+      sha256 = "3eb6464f3a221bc467d745eea949cca12252cab79ffa14f632ed2a9fe146b685";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/en-GB/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/en-GB/firefox-124.0b5.tar.bz2";
       locale = "en-GB";
       arch = "linux-i686";
-      sha256 = "e742bbf40bde8445b6f704e7902049353a73880eb8a8a5ac6df288f4d91f9c90";
+      sha256 = "e3fc3a80db2f9512a19e812b5187afe409331a9f94e27a10a1b975821235db94";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/en-US/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/en-US/firefox-124.0b5.tar.bz2";
       locale = "en-US";
       arch = "linux-i686";
-      sha256 = "391d04b1fcd686e1e14456be2db84660ad5b59c13bc0160de89a4d546e2470ce";
+      sha256 = "e3a0ab34e853d7be3372fb02ebd926eaa1bb73198fb2ad51c166b10804659073";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/eo/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/eo/firefox-124.0b5.tar.bz2";
       locale = "eo";
       arch = "linux-i686";
-      sha256 = "00d18aec871fcb0f0041564977ccccd0c9a98fb3db9032dbb8b70d5a984ab308";
+      sha256 = "74a3a78037ed2c808a3d646444339e719bc898c527bbbd4a7389f91aa1a843db";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/es-AR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/es-AR/firefox-124.0b5.tar.bz2";
       locale = "es-AR";
       arch = "linux-i686";
-      sha256 = "0398e1bfed77cc284f3e92dc69d542b450f3b061de2053e5063f75051b822f42";
+      sha256 = "5c19c4f750be69c7ece72ac5897f138942cbaadba03cbc17a9cb2e91168e9181";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/es-CL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/es-CL/firefox-124.0b5.tar.bz2";
       locale = "es-CL";
       arch = "linux-i686";
-      sha256 = "9cdfac7dd3c6c6351dc59a7c21a3c6c8db53cfef73cc0e84f1a419a01e34516f";
+      sha256 = "63684f89ec146eb2fe41b7a6e3931695cacf3db223b93b93c7bccdbf518a081d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/es-ES/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/es-ES/firefox-124.0b5.tar.bz2";
       locale = "es-ES";
       arch = "linux-i686";
-      sha256 = "f88e67ea4b4f995621da4d9c76638bd3c5e0f82f5a9c47143c960b0e0988ae57";
+      sha256 = "90cfdd1d7bd9a9bd7c3ea8725deeb6343e0d0197725efc5b1ee5b7b3b0c3dea4";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/es-MX/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/es-MX/firefox-124.0b5.tar.bz2";
       locale = "es-MX";
       arch = "linux-i686";
-      sha256 = "e4065fad28630ade4885ff22f42e64182cae5e26b50a4b67035e16c90a9fdb94";
+      sha256 = "e76ba7f2f5616113b43a4d3dd969cc017cf31d236d8e2a839d6cd342888561dd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/et/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/et/firefox-124.0b5.tar.bz2";
       locale = "et";
       arch = "linux-i686";
-      sha256 = "6e813b73d9b17d591f69afd931bd9c4498b04d0a17a6bfe45fd940b4d020a0c2";
+      sha256 = "29d98c7699973ada05a80bbcc1affdbe172f84d094f4ed12c2be729c84f58037";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/eu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/eu/firefox-124.0b5.tar.bz2";
       locale = "eu";
       arch = "linux-i686";
-      sha256 = "21e284904eae18ae89909b7e46eb1ccc11266a098f2ff073cb5f0b3c57c96683";
+      sha256 = "a99a7bf071b65bbe82d16374abbb154f728ccd22db79c312c25b87fcc12fbb7b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/fa/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/fa/firefox-124.0b5.tar.bz2";
       locale = "fa";
       arch = "linux-i686";
-      sha256 = "df2c33c57df3013892987a55a0d4faecfd302ca108e13e80bb7bd2b2c7b15622";
+      sha256 = "fb87bfeda0969dec943dd7da47f31cd416aab800a30c0ae00737b25044dbc9ba";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ff/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ff/firefox-124.0b5.tar.bz2";
       locale = "ff";
       arch = "linux-i686";
-      sha256 = "e0b1b7b5de2959f1355b1a87de17b8b41b84ee1265feab5f988891323c1726d9";
+      sha256 = "cda78f95e3124ab8efb09c6c39043e144441cea8fdea9c7bde2631a29d008a21";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/fi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/fi/firefox-124.0b5.tar.bz2";
       locale = "fi";
       arch = "linux-i686";
-      sha256 = "a981c34179dc6e769eb0936675c525029f167bf99a087e29d0ab04feef4bd757";
+      sha256 = "534d4cf6a962369e0d55bebb2ccc411df8b875c5bf4848cf5bdfeb5420239934";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/fr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/fr/firefox-124.0b5.tar.bz2";
       locale = "fr";
       arch = "linux-i686";
-      sha256 = "42c2543ad92772e3c2c3720a90cdb63f4f88b7d4132d5655aca73078b69f0ca9";
+      sha256 = "16b76ccb164f7572530631e242b696f01174d1460510403a29be8f23e42ed083";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/fur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/fur/firefox-124.0b5.tar.bz2";
       locale = "fur";
       arch = "linux-i686";
-      sha256 = "2868c9444b6631aa56dea35315f380a9697479d6c64290506f42083a81b7329b";
+      sha256 = "75d5dec03f0f4c9ff481a7068853f4f07a9c5dab12df2014c67a52fcf5ee41a4";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/fy-NL/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/fy-NL/firefox-124.0b5.tar.bz2";
       locale = "fy-NL";
       arch = "linux-i686";
-      sha256 = "3afaddfeb8f29d5d058b4056f26f16def134a2408eb8d932f2f940acce851eae";
+      sha256 = "8b62e81fb83c91958bd4b4a1a64eb6e80f6300a071d2713e1a9fe366e9de6212";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ga-IE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ga-IE/firefox-124.0b5.tar.bz2";
       locale = "ga-IE";
       arch = "linux-i686";
-      sha256 = "56110b537eac661b85cf0c50a32e71864a32d1c01339acb82f516d3c85e73f98";
+      sha256 = "62842170dc94f350ca4cf5fa53d29e8bceda1b1ad05ea1f900a8aa559ce84a2e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/gd/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/gd/firefox-124.0b5.tar.bz2";
       locale = "gd";
       arch = "linux-i686";
-      sha256 = "f1798d5a500d0893a55fa4aae5d30c9d364f8774f090931d166dfacbd0e85fea";
+      sha256 = "6244f889f9b7403bb6566943ff7d35c6ff24bbdaea65b8b666e93578c4191c32";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/gl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/gl/firefox-124.0b5.tar.bz2";
       locale = "gl";
       arch = "linux-i686";
-      sha256 = "0319d0f24937adc317883130656a00d5ea18366446accff61fa527819fc29536";
+      sha256 = "912d1fb10dde72c84d6d91a51190b10be45b12df6504285c1f94a1faf28aca7f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/gn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/gn/firefox-124.0b5.tar.bz2";
       locale = "gn";
       arch = "linux-i686";
-      sha256 = "1fc303d04f6328e183c964d8f4427a2ad694bc070d00405df27458ccd7fb4636";
+      sha256 = "afc27f6985a2e206a856ff36c9f9c1237ccc9044c6295142116e582041ffd13b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/gu-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/gu-IN/firefox-124.0b5.tar.bz2";
       locale = "gu-IN";
       arch = "linux-i686";
-      sha256 = "dcf8aade2bd2a8385668e48d2884ae851da10e270cdb49d620a55058dd55b927";
+      sha256 = "18352071ffd3c219108553882452a07ee1d85ca33e7e4f03bd77bb01f19fa44d";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/he/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/he/firefox-124.0b5.tar.bz2";
       locale = "he";
       arch = "linux-i686";
-      sha256 = "4895a163d923ff8f065d161c1bfc863511bce93cab5047b37f3c5b511a419030";
+      sha256 = "33964ef4c4f2b5c108663c60a970d7b6166ae0289fed71d67c427cbb5ee5529e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/hi-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/hi-IN/firefox-124.0b5.tar.bz2";
       locale = "hi-IN";
       arch = "linux-i686";
-      sha256 = "be2f4266b4ee48b25fe66798a70a15ad56db89f65b91c68227d282d151d1e063";
+      sha256 = "c9d2df146e0647ee63c9110ae35cd0a377d0ec2683d211a424d73f9aebfc2fec";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/hr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/hr/firefox-124.0b5.tar.bz2";
       locale = "hr";
       arch = "linux-i686";
-      sha256 = "6ccdb5b56711569c0f233923bae6a79829e1822309053da38f4757946ff959c6";
+      sha256 = "7a28b5e5f8651037094e76d638cc06d8ec0f5cede39b3dd1dbbebfec6af90fd6";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/hsb/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/hsb/firefox-124.0b5.tar.bz2";
       locale = "hsb";
       arch = "linux-i686";
-      sha256 = "7c53c0f87f5030c5cb04148cfd0bd50f7622ca96a5db723045ac82ac2543c1e3";
+      sha256 = "627b1ec567e4d8227385002ecca1369a0c8b1746d570ff5c5019e8cc3af40514";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/hu/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/hu/firefox-124.0b5.tar.bz2";
       locale = "hu";
       arch = "linux-i686";
-      sha256 = "579893603bc1db650111a1ebb09bd5e244e503a87b2c6ef24f7a66732afaca09";
+      sha256 = "aceec21e56f24f59e57ebbef1e826e1b5c8bae38ffd249e27dd4645a0b4559b1";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/hy-AM/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/hy-AM/firefox-124.0b5.tar.bz2";
       locale = "hy-AM";
       arch = "linux-i686";
-      sha256 = "c1ef3a69e66a8204cbbff3481af995708d361385903771bb9d5eb5babc935c8d";
+      sha256 = "e45653c2f3d8e276d9a321aec0b148bc6f254f4e583f6a4b594e6cd48ff3c977";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ia/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ia/firefox-124.0b5.tar.bz2";
       locale = "ia";
       arch = "linux-i686";
-      sha256 = "04f415ed7e4b603e2264e8afd37a9d2634b76e65dc83c5c6b8dc18deb7da86c2";
+      sha256 = "63efce2c4ae7bebc130745b123b73e6d7ddc620b1aca6b50271cfbc24319cb9f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/id/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/id/firefox-124.0b5.tar.bz2";
       locale = "id";
       arch = "linux-i686";
-      sha256 = "d08d629c30e45ea94ea181561448e85de8508f469e55bbd0b6790bc1f99f5899";
+      sha256 = "ce6af3a7fddb9ba6520e186ef647b4ace04e6e7b7b5bdee0888b440b115297ae";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/is/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/is/firefox-124.0b5.tar.bz2";
       locale = "is";
       arch = "linux-i686";
-      sha256 = "447e8950ef4ecdad169cef93cc9e390520705b3ea4d088bda589fddbef7bf0f5";
+      sha256 = "c904ead6b576bbb42b39689263ff83197e851a90abd3e824b79315f6c830e593";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/it/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/it/firefox-124.0b5.tar.bz2";
       locale = "it";
       arch = "linux-i686";
-      sha256 = "8742d55eaeb26db063af9475658a3be865f2c378e04096b7d9c080099afeb71b";
+      sha256 = "5db33151f0819a8af41aa73077c4e825f52044bc629ce644ef8b80873aefcc19";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ja/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ja/firefox-124.0b5.tar.bz2";
       locale = "ja";
       arch = "linux-i686";
-      sha256 = "f40016e013e548ddc39934cda2cbf48f51e99bc76e4e0ce1796f014a96cdc3ae";
+      sha256 = "73b5d2622f067d74c1f3322ffd2df3c9db5e27ac7edc24e8b3d5b5483d89b02a";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ka/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ka/firefox-124.0b5.tar.bz2";
       locale = "ka";
       arch = "linux-i686";
-      sha256 = "7409e7e24397c07e5cbff93ea301025bbf0a8b422a8ee4cf5c59ddfa453c8977";
+      sha256 = "7930341f03147d7149883a91e1c1e588daebfe4f9548314c6fdfdc3c2209e137";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/kab/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/kab/firefox-124.0b5.tar.bz2";
       locale = "kab";
       arch = "linux-i686";
-      sha256 = "048a9d86af755665fc5fa35c44e960a37aac0b2a9d7dff54bb0bcc8d02bbc8b5";
+      sha256 = "39fc9f26498bbf98c4636dc71bd66053de766b1652dacced0b257da37efba818";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/kk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/kk/firefox-124.0b5.tar.bz2";
       locale = "kk";
       arch = "linux-i686";
-      sha256 = "6d6ec919f2ed19b5ec34d430ec49acc573e93fb3b79b2df534345b90f9d2ca76";
+      sha256 = "f4af02bdb106533f991b2a279781461ebb64115996fb45a37b4e4888583a8325";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/km/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/km/firefox-124.0b5.tar.bz2";
       locale = "km";
       arch = "linux-i686";
-      sha256 = "fd4fe4d3f77f10966e9f2c929d34fe2c7afc814dbce174bb4e948ce76024d6a3";
+      sha256 = "5ae42af8950275d2d8ce097db1791982ae52c1cb9f4e77a08e8e95a52211708b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/kn/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/kn/firefox-124.0b5.tar.bz2";
       locale = "kn";
       arch = "linux-i686";
-      sha256 = "ffe6972c03c655c2970bb930e169e79e46603423d1772f37350692cee68dcc5b";
+      sha256 = "fb34672b970fa04b93573b699e69e2ad6517996d685e041c41ac9409f97f1e8e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ko/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ko/firefox-124.0b5.tar.bz2";
       locale = "ko";
       arch = "linux-i686";
-      sha256 = "a96fab95ee01c126cca70ee2d8a95ac88abf732a45a63435e3e5238990950597";
+      sha256 = "1bee075f512ab94e99252a55645300151c979e5797ece8cc6f60e7c3e2941979";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/lij/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/lij/firefox-124.0b5.tar.bz2";
       locale = "lij";
       arch = "linux-i686";
-      sha256 = "3eb2987fe59d9b065d2495931a0dd53bfda24ac05e9b387b6258bcac6e002664";
+      sha256 = "598d283a34daf9273349de71bfbf25f842149273aad136285d88edce83a19b9e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/lt/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/lt/firefox-124.0b5.tar.bz2";
       locale = "lt";
       arch = "linux-i686";
-      sha256 = "5c93e34fc5f4b662d911c81762fc6c281ed78ebead0f605168bea23408b5f785";
+      sha256 = "126df1404e11bb44864903879eba9a0eddd942248519b17352dff8487c9737c8";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/lv/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/lv/firefox-124.0b5.tar.bz2";
       locale = "lv";
       arch = "linux-i686";
-      sha256 = "c052e0d40cbf4a067235419ccfb5b105f7de0caacb0bf4e7dd6be4bd03b8fd79";
+      sha256 = "d4064f65336d206258b2e2298bdc8cc966e9ea747fa172bf393553f2ad9bf4cd";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/mk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/mk/firefox-124.0b5.tar.bz2";
       locale = "mk";
       arch = "linux-i686";
-      sha256 = "726f45cc51c5824ca1abbb67d8f23776c9473fac985cef4dcfdf5e27fd23ea06";
+      sha256 = "d01ff8b6f392c9d20eba744df9cbea1f424d3be8a2b225301506813c24626ed9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/mr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/mr/firefox-124.0b5.tar.bz2";
       locale = "mr";
       arch = "linux-i686";
-      sha256 = "634a8f904f23ab6bb91287aa7762515d0171bc38f7e83ad66e9fcf47fce9bd21";
+      sha256 = "a3032ebd70ba506c5380faaee3df946df840b9eafde5a3c889e675fd4bda6d93";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ms/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ms/firefox-124.0b5.tar.bz2";
       locale = "ms";
       arch = "linux-i686";
-      sha256 = "bfbec91b976f8378c8d7842d386110f3a228cf490350984b357a3b959ab98b2b";
+      sha256 = "01124e88f41088d3af50d627b3f60e92a392561b0bc8a376e19b90e5d9532a68";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/my/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/my/firefox-124.0b5.tar.bz2";
       locale = "my";
       arch = "linux-i686";
-      sha256 = "df8469de96f97b0edd8918fd785b0956a9b83d8942e363c0fd2cb3c43c62a3a3";
+      sha256 = "e8cdcc7d9b37275ce14a592126e2ed9ebca9b6b61862a11d543deb40292ca3d2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/nb-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/nb-NO/firefox-124.0b5.tar.bz2";
       locale = "nb-NO";
       arch = "linux-i686";
-      sha256 = "c056e5a9dbd4c96099c17027218f854d42a6e3e0d73327adcdd03e6b541a7b2a";
+      sha256 = "2706dffb755d8f9f1bc3322f8c81ba0fca6ff614e2b722a4f157a2ba5f131427";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ne-NP/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ne-NP/firefox-124.0b5.tar.bz2";
       locale = "ne-NP";
       arch = "linux-i686";
-      sha256 = "7809cc887d241eaf20ca9b740d2031a54def43272b17559d773b66d54d48b414";
+      sha256 = "ae07fb682309cfc7a9b3bac71f01deb5f99da5f4959552af27f929cece49fb91";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/nl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/nl/firefox-124.0b5.tar.bz2";
       locale = "nl";
       arch = "linux-i686";
-      sha256 = "95730506bb5bcdfecbcc8eb1172fbdb627d62830d9ad8335036d9e66505ec974";
+      sha256 = "e5aabf8ddfb7ce8aa1ee23976646879a29fe75aa67a685a23a92267bc82efa31";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/nn-NO/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/nn-NO/firefox-124.0b5.tar.bz2";
       locale = "nn-NO";
       arch = "linux-i686";
-      sha256 = "51cea63f339b978b7474270fcf64e0ef4a6671f06fe48df0759a47f5f13b2574";
+      sha256 = "df00b85e4c0617c9a79d3c1f7d879b4426f2d86a2fb90a9e0854a227438f1223";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/oc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/oc/firefox-124.0b5.tar.bz2";
       locale = "oc";
       arch = "linux-i686";
-      sha256 = "8e63ce6010475676ba92382e30cbe02abb933a94da9ae68a6151bc794df66b8f";
+      sha256 = "c087ba2df8b1629ae2a9b7db9c48ed43fdb2721cac5a5560e479f48a4e6026e1";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/pa-IN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/pa-IN/firefox-124.0b5.tar.bz2";
       locale = "pa-IN";
       arch = "linux-i686";
-      sha256 = "20bc49df1206b6f5a97d0a7bf359582df7340bda5bc207fd8d200fa9a4488607";
+      sha256 = "016724e6aa1ce48a5402ed2e70fd51ab02c3c9540c8157560eb4d9718b75c46e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/pl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/pl/firefox-124.0b5.tar.bz2";
       locale = "pl";
       arch = "linux-i686";
-      sha256 = "03d6515ff506ff2319a877f00b9b6549e8e33ff420b2c751657d6e721eb5f05a";
+      sha256 = "5fc308cd53fb059626a035193bd9e60b36f932e22a3110ac3860d9721bfb0f67";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/pt-BR/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/pt-BR/firefox-124.0b5.tar.bz2";
       locale = "pt-BR";
       arch = "linux-i686";
-      sha256 = "b612c139651654e38dfe2d49f499bdb31f862b837e6b1d359f98b4723762da30";
+      sha256 = "ce7c0b1faed4b1d98c470e9ff34795f97e93f2b77f01a11499bb449cbb914001";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/pt-PT/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/pt-PT/firefox-124.0b5.tar.bz2";
       locale = "pt-PT";
       arch = "linux-i686";
-      sha256 = "8f0c7467a22e76021027795b64922e8f3e5e6d82349ed9c74d30e3ddc2e9ffc5";
+      sha256 = "b30e8a87937bdeb6c95b17db5d514851219c4a83f3995c27a73ece8a732c1b74";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/rm/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/rm/firefox-124.0b5.tar.bz2";
       locale = "rm";
       arch = "linux-i686";
-      sha256 = "32aefa9e3f69c455f881ecbe2bd0779792e3d5fad94f32d435e98bf4753c19a6";
+      sha256 = "fc9f24869aa998ff0e49659b338661164727d4e1411e7750afd34a9b32e4fa58";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ro/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ro/firefox-124.0b5.tar.bz2";
       locale = "ro";
       arch = "linux-i686";
-      sha256 = "28776a0c93e3e8533210e55ee3a01a2d1f52efe552b81512cbe4281ece80dd1d";
+      sha256 = "7a8224a90221d9ffe9a243c051c05327610755f11ecdecd2b5d3f30e04fc13b4";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ru/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ru/firefox-124.0b5.tar.bz2";
       locale = "ru";
       arch = "linux-i686";
-      sha256 = "fbae655a52ca3faf2b4651379451225b4a112c3cee127a28bbcc3f33ed0d260a";
+      sha256 = "184c7301bce1429f2eb03de2752ac0d4488f90351a40e4a1b1a591f256609dca";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sat/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sat/firefox-124.0b5.tar.bz2";
       locale = "sat";
       arch = "linux-i686";
-      sha256 = "f70a998b30d92986a8e3531e9cb39485449a42760be3e5fb89b33ef3cc9c2ffb";
+      sha256 = "57f605d927b765595d702c5a21022d06c29979594ff4c3a0b2490beb49aebbc3";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sc/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sc/firefox-124.0b5.tar.bz2";
       locale = "sc";
       arch = "linux-i686";
-      sha256 = "0f340bf270e6a251a487951bffe67e47192e2aab8ffca5c896f05844dfc9d63e";
+      sha256 = "d45fbd0ec436d2b3a404a8ebb4a2953d94672cd58d547fec7b37c9dd9a880cf0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sco/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sco/firefox-124.0b5.tar.bz2";
       locale = "sco";
       arch = "linux-i686";
-      sha256 = "329f7751ca82903ffbc97e81f598ed8c96781b0db1586a2d369358642150651e";
+      sha256 = "ca5080dd24a1728596ee9f18622b8f472a38794dddcf502f94cdea322a5c2ea0";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/si/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/si/firefox-124.0b5.tar.bz2";
       locale = "si";
       arch = "linux-i686";
-      sha256 = "c06620fc41f2268055ce9478c9e7d05a5b748a88153c39a207e62d46dae1874c";
+      sha256 = "7619c96af6694e39b4facd42e8e99d7b8efe716372b7241b6f411c5c887ceec1";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sk/firefox-124.0b5.tar.bz2";
       locale = "sk";
       arch = "linux-i686";
-      sha256 = "f490a187c9758e614268eef2dd66ced62f2eb3ce93d7deec8844e7c767d3b6dd";
+      sha256 = "299383f3da74c81153bc828506fed4f2a3ce312b49420fb992e847710e87b5d9";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sl/firefox-124.0b5.tar.bz2";
       locale = "sl";
       arch = "linux-i686";
-      sha256 = "8c1f937a974a014be66367bc05afd222dff3dc81c5042570769546973b1d1b8a";
+      sha256 = "dbf5b58e315ab2723ed5408c290c527261c1f2780dc54baeca55c3ad092c5167";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/son/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/son/firefox-124.0b5.tar.bz2";
       locale = "son";
       arch = "linux-i686";
-      sha256 = "66ae427e708e6968b64097b309a73457aeaa8c0623a8f91d54e294bf783e3e8a";
+      sha256 = "8e61c851cbcc497b73770a6ecb6281dbe59fb6059c33b29906c29bec1d0887af";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sq/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sq/firefox-124.0b5.tar.bz2";
       locale = "sq";
       arch = "linux-i686";
-      sha256 = "372b55d37112ae472ed045a8358957f7009d17f9888ded2b11e3552e3f6b91c6";
+      sha256 = "bf2fd515b30e3dff7ac7b796a66098b6dcf026e5329521c08e5d2966e97c8a9c";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sr/firefox-124.0b5.tar.bz2";
       locale = "sr";
       arch = "linux-i686";
-      sha256 = "2ca00e2f6dad1d5ba446a8315bca8f2ea104d1de7e60c29dc0e4b3d2f68dcfa0";
+      sha256 = "1102ed90f5af1feccef6ee6d891c378260fa83356b7e5c10df0e812ee199ba0f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/sv-SE/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/sv-SE/firefox-124.0b5.tar.bz2";
       locale = "sv-SE";
       arch = "linux-i686";
-      sha256 = "d138f355fd5577c8ce52bc38b6cac51a244f5590697dab8cec784d90e04f374f";
+      sha256 = "08deb15679412a19305b447b5623a01cd85fa640904eeb83fb00cd7878b34d8b";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/szl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/szl/firefox-124.0b5.tar.bz2";
       locale = "szl";
       arch = "linux-i686";
-      sha256 = "4a8934473d63c375f36fc647a394da269c89d834257bc29e5cffbc03e87ebb99";
+      sha256 = "7f9bc22f10d3e775c5a6f1e1db2d477fb4fe2cf7fdfa340dcf36cec4aa8842e2";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ta/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ta/firefox-124.0b5.tar.bz2";
       locale = "ta";
       arch = "linux-i686";
-      sha256 = "4028f5b708736d406676fc17417c848845c137173a44ce7be64d8075b88ed284";
+      sha256 = "0fc213731dc9a04c3f83f936eb138a0da768c577e65d688b5bfc4a5b6340a2aa";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/te/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/te/firefox-124.0b5.tar.bz2";
       locale = "te";
       arch = "linux-i686";
-      sha256 = "de933dd9666175b0caf67190a4ef201862ac124123d34ca07d286272d34ade7b";
+      sha256 = "08f380bef43660c672cdd604cdcc871894810db738cc808f65713d4af5116031";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/tg/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/tg/firefox-124.0b5.tar.bz2";
       locale = "tg";
       arch = "linux-i686";
-      sha256 = "fb1cb98912782b54728c3dd8d2175961ec086bbfbc17de8501409e5fe4738e61";
+      sha256 = "2e8b90a30b37889814aaa76bc9984fae85265c8b991e0847661d5485d5ac75cf";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/th/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/th/firefox-124.0b5.tar.bz2";
       locale = "th";
       arch = "linux-i686";
-      sha256 = "6a1adb355aa8c8f968828b405198e8900a1d862a1a45c4ebb14395e33eca80d3";
+      sha256 = "07684ca053f6321c5ea5c4307ea1e1ba1ac13eb45c519e83d5c6b4515e7db324";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/tl/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/tl/firefox-124.0b5.tar.bz2";
       locale = "tl";
       arch = "linux-i686";
-      sha256 = "448182e041cb358aa020da1dc395caa96b8aa490a2e0a9ac178f260d88add18a";
+      sha256 = "d58a6d63ca1d2d161b85c78660a303f91875ba6f69a2ef66e36e393688b02a3e";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/tr/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/tr/firefox-124.0b5.tar.bz2";
       locale = "tr";
       arch = "linux-i686";
-      sha256 = "1d956f6078d801880ed4b436b2505a1f419356891814a1e3144eaa1aa8d1af91";
+      sha256 = "b1f71d7961f2cc9a025f65e4f6ddd3c28acd3e11f9aed981bef38dcdf5191b68";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/trs/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/trs/firefox-124.0b5.tar.bz2";
       locale = "trs";
       arch = "linux-i686";
-      sha256 = "f9821d95b6d289c54ce03202e4421ea9e25355d290d90ea2298d1ec2d3ccd8fb";
+      sha256 = "d17daf00437ffcdaca30e7b085f12d0e18850e42cc9974349738e6f53d7d8077";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/uk/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/uk/firefox-124.0b5.tar.bz2";
       locale = "uk";
       arch = "linux-i686";
-      sha256 = "38820181b0ad6303631f3b1931ec865eb59b014dfebdf7a63189b061ced81f16";
+      sha256 = "c3e8c5fe1c6ed73a9b66ad4f6785929c183a1333588b1d288a481f8abf52bb4f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/ur/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/ur/firefox-124.0b5.tar.bz2";
       locale = "ur";
       arch = "linux-i686";
-      sha256 = "3b525d9c2de9674da96e84621ac980888b4389de247a30c830fd3d5ec94bc446";
+      sha256 = "653473c33c8eafe638c83089ba9f99ffc81b20f13d0b6d15bfbc2ebee5bb1931";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/uz/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/uz/firefox-124.0b5.tar.bz2";
       locale = "uz";
       arch = "linux-i686";
-      sha256 = "a7b1f2817995b4e7398f2dab855d0025dc024128cb519d073541be1deb89ecf3";
+      sha256 = "7ca4cd55d2d48aef1c80f26c9e0c7edd8db4f2945d5fb8bd3466cd61d3917965";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/vi/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/vi/firefox-124.0b5.tar.bz2";
       locale = "vi";
       arch = "linux-i686";
-      sha256 = "acc6cc725737ccc7fe0b1a1a802a687c4e86db5fcdeac364375a6503ea9933c6";
+      sha256 = "2c45af4e5a789bb7a2ec03322987e83c249b18006126c0cb6a2036678092c244";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/xh/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/xh/firefox-124.0b5.tar.bz2";
       locale = "xh";
       arch = "linux-i686";
-      sha256 = "f2e2afc654efd280bb1daf47afdd2e503ef762d39f13ae70bbaa76847c96882c";
+      sha256 = "8b4d414f92a3f1368d2eef8cfccb17ee9bba5c86fdf705281020f140d60fe5ee";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/zh-CN/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/zh-CN/firefox-124.0b5.tar.bz2";
       locale = "zh-CN";
       arch = "linux-i686";
-      sha256 = "6bcec8e98dd9ac57d214a84b8fe87f3acfbc6339f0484394039e1a64af68d0c7";
+      sha256 = "79a67eefcf5655b1de108f6d14f42ed34167e5556637c34f41a1093e6a18561f";
     }
-    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b2/linux-i686/zh-TW/firefox-124.0b2.tar.bz2";
+    { url = "https://archive.mozilla.org/pub/devedition/releases/124.0b5/linux-i686/zh-TW/firefox-124.0b5.tar.bz2";
       locale = "zh-TW";
       arch = "linux-i686";
-      sha256 = "bc8ca622e452d69c0d5e371f2ba89a5947c1fa7492f91a791c4250b3ca945cc9";
+      sha256 = "f14023c75ee13fc10e05db2110bf4e9541f2cda889715e6e499122fb698d40a7";
     }
     ];
 }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
index e21ec0ec7414..f92dc751e528 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -33,11 +33,11 @@
 
   firefox-beta = buildMozillaMach rec {
     pname = "firefox-beta";
-    version = "124.0b2";
+    version = "124.0b5";
     applicationName = "Mozilla Firefox Beta";
     src = fetchurl {
       url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
-      sha512 = "a98bedcf2bb6e58a20b4ab49d53db0899ed7c6589b20266522521c3db5c583807be1d536a580a1b42dd5783c0d81d95c4f42be6a157fb08a588447ca4fa21dde";
+      sha512 = "a232d5f8d3118ef37166ef8706ab17d4cceaf67f0b12da4780c52253eec297c79e95ab42fe15165fdda62cda045ac923a53550c3525e9fd94ea3dca586510637";
     };
 
     meta = {
@@ -62,13 +62,13 @@
 
   firefox-devedition = buildMozillaMach rec {
     pname = "firefox-devedition";
-    version = "124.0b2";
+    version = "124.0b5";
     applicationName = "Mozilla Firefox Developer Edition";
     requireSigning = false;
     branding = "browser/branding/aurora";
     src = fetchurl {
       url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
-      sha512 = "a65a522130d95ef5ffd4ee351c79a64517abdd60a80a74e66b147f6b179613240ab2abd6eb9cd939dfe31dd5b971773e882eb234a358e9546ab0272d8ed94145";
+      sha512 = "bea92dcf8703dab99cc8248a0d205b8613f74efa81cbe789aa3ef863093fa78ac4e362956dfd57186954389cd87cd97bc0b077d3f80bfe5b7dd3b6435874fa98";
     };
 
     meta = {
diff --git a/nixpkgs/pkgs/applications/networking/browsers/floorp/default.nix b/nixpkgs/pkgs/applications/networking/browsers/floorp/default.nix
index fa022637b10b..8701f8d7795b 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/floorp/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/floorp/default.nix
@@ -7,7 +7,7 @@
 
 ((buildMozillaMach rec {
   pname = "floorp";
-  packageVersion = "11.10.2";
+  packageVersion = "11.10.5";
   applicationName = "Floorp";
   binaryName = "floorp";
   branding = "browser/branding/official";
@@ -20,7 +20,7 @@
     repo = "Floorp";
     fetchSubmodules = true;
     rev = "v${packageVersion}";
-    hash = "sha256-fjLYR59AZaR6S1zcAT+DNpdsCdrW+3NdkRQBoVNdwYw=";
+    hash = "sha256-uKgN74xn0v86E/YfqbJNnMIR3gS+3dhdgLJ5VUerurQ=";
   };
 
   extraConfigureFlags = [
diff --git a/nixpkgs/pkgs/applications/networking/browsers/librewolf/default.nix b/nixpkgs/pkgs/applications/networking/browsers/librewolf/default.nix
index 004746c2166f..0e6ba888015e 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/librewolf/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/librewolf/default.nix
@@ -16,7 +16,7 @@ in
   meta = {
     description = "A fork of Firefox, focused on privacy, security and freedom";
     homepage = "https://librewolf.net/";
-    maintainers = with lib.maintainers; [ squalus ];
+    maintainers = with lib.maintainers; [ dotlambda squalus ];
     platforms = lib.platforms.unix;
     badPlatforms = lib.platforms.darwin;
     broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory".
diff --git a/nixpkgs/pkgs/applications/networking/browsers/librewolf/src.json b/nixpkgs/pkgs/applications/networking/browsers/librewolf/src.json
index bbc259efc19f..40f22d2096f6 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/librewolf/src.json
+++ b/nixpkgs/pkgs/applications/networking/browsers/librewolf/src.json
@@ -1,15 +1,15 @@
 {
-  "packageVersion": "122.0.1-2",
+  "packageVersion": "123.0-1",
   "source": {
-    "rev": "122.0.1-2",
-    "sha256": "0bp9x5hvjhdvrb5niyx4si7in116l37y5km7a207z7zl1z5d3q16"
+    "rev": "123.0-1",
+    "sha256": "1ic71b9sf6pgvsyinz0r8qhbpkryfdbj7lz6lh02d27xhnw9jd93"
   },
   "settings": {
-    "rev": "c242d6d6c77948451af5bd52125a8a81259a7a77",
-    "sha256": "1s56a4a8wz92gh1cxk8qny3qzvmanl6q34yp049f18c4zrk23lax"
+    "rev": "8a499ecdab8a5136faee50aae1fdd48997711de6",
+    "sha256": "1c12y7b09rrz8zlpar8nnd9k2nvldjqq3cicbc57g6s1npnf8rz6"
   },
   "firefox": {
-    "version": "122.0.1",
-    "sha512": "1d4fe1ed351edd748ede2ef6448798a32de9ed7a075a54a7ed5f7baa7b0c4c7f932c2e29f443c9066829e39f22a1dc94be5d00cc994193e949b72aa4a1c8ba41"
+    "version": "123.0",
+    "sha512": "a19567a13e1b663e538c4af17491146adad1f0ab977995e8da9ce9ed428008ad20902dee4efb82d54e1319a0e31768609696bc822563d75732b622760129d8bb"
   }
 }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix b/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
index ae98d8aa44a2..784e89adc629 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/microsoft-edge/default.nix
@@ -1,20 +1,20 @@
 {
   beta = import ./browser.nix {
     channel = "beta";
-    version = "122.0.2365.52";
+    version = "122.0.2365.59";
     revision = "1";
-    hash = "sha256-H8VTDyDY2Rm5z4cJruzMa1YorBAUL0pJuwhQ6cy4WfY=";
+    hash = "sha256-hs6NHAdqji5Cg1ReGWqalFHv6wyRlyclssyc0cxM+ZU=";
   };
   dev = import ./browser.nix {
     channel = "dev";
-    version = "123.0.2400.1";
+    version = "123.0.2420.6";
     revision = "1";
-    hash = "sha256-I9PT320DJgqJYNwB0pvngyLlV+N2jaS5tOwVwwNHex0=";
+    hash = "sha256-fX6lxhJstz2cZZODu7xRe1fez8WTXqlYNgsMhIVTLaU=";
   };
   stable = import ./browser.nix {
     channel = "stable";
-    version = "122.0.2365.52";
+    version = "122.0.2365.59";
     revision = "1";
-    hash = "sha256-hULyUUFhMjiareXr1zTynyknVyert45N0H4iR8woGRw=";
+    hash = "sha256-LbyipfA5TZWSZu1jeUykGZ2FXwt9rZ7ak7mmryXRnMQ=";
   };
 }
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
index 4995a5b9340e..ada3dc518efc 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -24,7 +24,7 @@ let
   vivaldiName = if isSnapshot then "vivaldi-snapshot" else "vivaldi";
 in stdenv.mkDerivation rec {
   pname = "vivaldi";
-  version = "6.5.3206.55";
+  version = "6.5.3206.63";
 
   suffix = {
     aarch64-linux = "arm64";
@@ -34,8 +34,8 @@ in stdenv.mkDerivation rec {
   src = fetchurl {
     url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb";
     hash = {
-      aarch64-linux = "sha256-lr+9+w1vRZSG/2dP5K3mcKLCQijckPdkM/I2DgjO4wg=";
-      x86_64-linux = "sha256-ElkuuaZfK8F6CVA5xbKszkbqdcPACFR+xd0pRxnd6+U=";
+      aarch64-linux = "sha256-MyKTihImCd1/4UwnC/GqyeQcYnJNvKW5UfIIRN45r8E=";
+      x86_64-linux = "sha256-RbGoOKQyAaNY+y+jCT+r7GI9vymTT9kPDrwl9/bhaNw=";
     }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
   };
 
diff --git a/nixpkgs/pkgs/applications/networking/cluster/atmos/default.nix b/nixpkgs/pkgs/applications/networking/cluster/atmos/default.nix
index 88d417863673..2b3ff6c11710 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/atmos/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/atmos/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "atmos";
-  version = "1.64.0";
+  version = "1.64.1";
 
   src = fetchFromGitHub {
     owner = "cloudposse";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-wNsyZ0Y3siSZ+i/G3bH/S8wkrmK+FZ2sn5XByDkZ80c=";
+    sha256 = "sha256-QHXBvZThLi5Gnpc7fmitkvl3JU1i/g2jz8c6U4//6mU=";
   };
 
   vendorHash = "sha256-i7m9YXPlWqHtvC4Df7v5bLWt2tqeT933t2+Xit5RQxg=";
diff --git a/nixpkgs/pkgs/applications/networking/cluster/bosh-cli/default.nix b/nixpkgs/pkgs/applications/networking/cluster/bosh-cli/default.nix
index f54860cd95e1..ab20b2dc72cc 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/bosh-cli/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/bosh-cli/default.nix
@@ -8,13 +8,13 @@
 buildGoModule rec {
   pname = "bosh-cli";
 
-  version = "7.5.2";
+  version = "7.5.4";
 
   src = fetchFromGitHub {
     owner = "cloudfoundry";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-gT0Oivo5QE+pr5PpD/7JAj8oYF9UmSi5F6Ps8RtACzc=";
+    sha256 = "sha256-aNzKp7QwyhC/ado0NrCyxrRZu+ePGBNSq31/Iw6k6n0=";
   };
   vendorHash = null;
 
diff --git a/nixpkgs/pkgs/applications/networking/cluster/cmctl/default.nix b/nixpkgs/pkgs/applications/networking/cluster/cmctl/default.nix
index e871b43a91d5..e23af212b554 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/cmctl/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/cmctl/default.nix
@@ -8,18 +8,18 @@
 
 buildGoModule rec {
   pname = "cmctl";
-  version = "1.14.2";
+  version = "1.14.3";
 
   src = fetchFromGitHub {
     owner = "cert-manager";
     repo = "cert-manager";
     rev = "v${version}";
-    hash = "sha256-pq7v7j/w+gDlyjYyrOk86YW76rwxLQQUFwhaPrblCSw=";
+    hash = "sha256-CPHSWGM8zq+Sg0tqdm9kmIyBFpVf1ot40Ud7Mpe1sNI=";
   };
 
   sourceRoot = "${src.name}/cmd/ctl";
 
-  vendorHash = "sha256-HHlZkxXEJIP3u2rB4+B8Z9vcGwzRT5dtjf5Hu1WVroI=";
+  vendorHash = "sha256-CBX/U9v2ubmPveXUeWbogHDyWVAtU0pyOWAlnRsMs4c=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helm/plugins/helm-unittest.nix b/nixpkgs/pkgs/applications/networking/cluster/helm/plugins/helm-unittest.nix
index c5c33573c921..8e0a72251ca3 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/helm/plugins/helm-unittest.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/helm/plugins/helm-unittest.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "helm-unittest";
-  version = "0.4.1";
+  version = "0.4.2";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-8rGYFoBhNPJnsZsRXJ7Z9a/KOV4d2ZIVLSdYCpf3IMs=";
+    hash = "sha256-51Cx8V0cvuyBLFVmOWpA8X/kpDR67Q5EYZct44ED/ys=";
   };
 
-  vendorHash = "sha256-wD4FxJ/+8iw2qAz+s0G/8/PKt7X0MZn+roWtc/wTWmw=";
+  vendorHash = "sha256-6tXQ2fbn1ZzImx8luxetXHNj3gIUt217rjXJPxMpjTw=";
 
   # NOTE: Remove the install and upgrade hooks.
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/networking/cluster/k3s/builder.nix b/nixpkgs/pkgs/applications/networking/cluster/k3s/builder.nix
index 3f44deb9771d..2173748cd2df 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/k3s/builder.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/k3s/builder.nix
@@ -355,6 +355,7 @@ buildGoModule rec {
   passthru.mkTests = version:
     let k3s_version = "k3s_" + lib.replaceStrings ["."] ["_"] (lib.versions.majorMinor version);
     in {
+      etcd = nixosTests.k3s.etcd.${k3s_version};
       single-node = nixosTests.k3s.single-node.${k3s_version};
       multi-node = nixosTests.k3s.multi-node.${k3s_version};
     };
diff --git a/nixpkgs/pkgs/applications/networking/cluster/karmor/default.nix b/nixpkgs/pkgs/applications/networking/cluster/karmor/default.nix
index 8ee03d825d65..38058e57d2d8 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/karmor/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/karmor/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "karmor";
-  version = "1.1.0";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "kubearmor";
     repo = "kubearmor-client";
     rev = "v${version}";
-    hash = "sha256-HQJHtRi/ddKD+CNG3Ea61jz8zKcACBYCUR+qKbzADcI=";
+    hash = "sha256-NeLMHecfDyMhXmq1HO3qRIWeYpkoj9Od5wWStZEkHYU=";
   };
 
-  vendorHash = "sha256-Lzp6n66oMrzTk4oWERa8Btb3FwiASpSj8hdQmYxYges=";
+  vendorHash = "sha256-EIvwzgpC9Ls43RJEhxNYDlF4luKthFgJleaXcYzOYow=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kube-score/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kube-score/default.nix
index 3caa17c2a5e2..47eb7b4e60af 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/kube-score/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/kube-score/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "kube-score";
-  version = "1.17.0";
+  version = "1.18.0";
 
   src = fetchFromGitHub {
     owner = "zegl";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-/4xnUb60ARGO6hM5PQ3ZkuwjEQUT4Xnj/InIsfw2bzI=";
+    hash = "sha256-3OdcYqSUy0WH5CrrRMXDs1HGxvToXx/3iPytYBdDncg=";
   };
 
-  vendorHash = "sha256-UpuwkQHcNg3rohr+AdALakIdHroIySlTnXHgoUdY+EQ=";
+  vendorHash = "sha256-4yd/N57O3avD8KaGU9lZAEDasPx1pRx37rqQpuGeRiY=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubedb-cli/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubedb-cli/default.nix
index c965e6a3046f..2a3b6e63a9a8 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/kubedb-cli/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubedb-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "kubedb-cli";
-  version = "0.42.0";
+  version = "0.42.1";
 
   src = fetchFromGitHub {
     owner = "kubedb";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-1HxTpDBKZZoGlsGra2DXw4kEDTUOcrayDvbUzUY/y1k=";
+    sha256 = "sha256-i+0oQaEHMu3525mJTQyL+Me2DPFSpaIK1xGaPMR2M0s=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubefirst/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubefirst/default.nix
index c7c2b795179c..c470b79f9097 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/kubefirst/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubefirst/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "kubefirst";
-  version = "2.3.7";
+  version = "2.3.8";
 
   src = fetchFromGitHub {
     owner = "kubefirst";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-oJWQ5u85uQrHnf3VxY0vJwgGePxB4pg+LD0gofYIB1g=";
+    hash = "sha256-CW+p6hcXHVUlMuxXiwHtp4/iY/VYe/64TMY2UyARpG4=";
   };
 
-  vendorHash = "sha256-blMKBgSBRCVlXu8n3wcd2iMkBTALe2gPxy0Z4uwxUWI=";
+  vendorHash = "sha256-hI6f7Iyo4sWgSSRLDROLhvI/g1wLc1oVmVt2pQ5Ptbk=";
 
   ldflags = [ "-s" "-w" "-X github.com/kubefirst/runtime/configs.K1Version=v${version}"];
 
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
index 3053a59ae7d4..774feac4d23d 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "kubetail";
-  version = "1.6.19";
+  version = "1.6.20";
 
   src = fetchFromGitHub {
     owner = "johanhaleby";
     repo = "kubetail";
     rev = version;
-    sha256 = "sha256-s+rz30VWG4RijeJuRYEhCmgFDjaxJ+4twgXrGkNc5c8=";
+    sha256 = "sha256-RbbZHKXRtbs42cCbw+xb8TLul6ebUeCiNclMFF39c3M=";
   };
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
diff --git a/nixpkgs/pkgs/applications/networking/cluster/linkerd/edge.nix b/nixpkgs/pkgs/applications/networking/cluster/linkerd/edge.nix
index 3feed7bf8e4b..88cd474392a0 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/linkerd/edge.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/linkerd/edge.nix
@@ -2,7 +2,7 @@
 
 (callPackage ./generic.nix { }) {
   channel = "edge";
-  version = "24.2.3";
-  sha256 = "0l1sa8xzqddvyzlzddcb9nbvxlj06dm5l6fb0f6fw9ay0d8qm22k";
+  version = "24.2.4";
+  sha256 = "0hh2sfjvqz085hl2dpsa9zgr3dwpyc85gcbx0c7lzpjg411bxmim";
   vendorHash = "sha256-g1e1uY43fUC2srKK9erVFlJDSwWrEvq4ni0PgeCFaOg=";
 }
diff --git a/nixpkgs/pkgs/applications/networking/cluster/popeye/default.nix b/nixpkgs/pkgs/applications/networking/cluster/popeye/default.nix
index c955ebec3d22..f1db435c443c 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/popeye/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/popeye/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "popeye";
-  version = "0.11.3";
+  version = "0.20.4";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "derailed";
     repo = "popeye";
-    sha256 = "sha256-yxYG74k/HpzIrAFLLSnaqKeODIL+ioNXeyx0aTlsCi0=";
+    sha256 = "sha256-rUG2tZokWXWVvGiyDAxVYfVwSDInaLptBCBuawtP1bc=";
   };
 
   ldflags = [
@@ -17,7 +17,7 @@ buildGoModule rec {
     "-X github.com/derailed/popeye/cmd.commit=${version}"
   ];
 
-  vendorHash = "sha256-Vt5QwggdasVk4j2huSIneBMemi3Q0R4MgZn2yNlOH5E=";
+  vendorHash = "sha256-ThldEPzAwMfNnhUEgHL5/asc+SETKxTrPIJt307tqsg=";
 
   doInstallCheck = true;
   installCheckPhase = ''
diff --git a/nixpkgs/pkgs/applications/networking/cluster/talosctl/default.nix b/nixpkgs/pkgs/applications/networking/cluster/talosctl/default.nix
index bbcc4e0de957..17b5c866de6e 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/talosctl/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/talosctl/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "talosctl";
-  version = "1.6.4";
+  version = "1.6.5";
 
   src = fetchFromGitHub {
     owner = "siderolabs";
     repo = "talos";
     rev = "v${version}";
-    hash = "sha256-2ZccpOqddgq51Q1AxV1uK9fThPMtJIL66ZGU51k2eL0=";
+    hash = "sha256-TEQnbQux+rN2WdlIbxh836Lx/ipqTDkoUsjQP8Ubl6s=";
   };
 
-  vendorHash = "sha256-BC3RMhpYmyELJDzOva31QsTmrPeptMcfDYNK3q8D+dw=";
+  vendorHash = "sha256-xdcHd/LvIm4rawwXtsGMF8Es9pMGMaJJaZ6UQwc24ZU=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
index a96f09b71e3c..6089d74e199c 100644
--- a/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
+++ b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "terragrunt";
-  version = "0.55.8";
+  version = "0.55.10";
 
   src = fetchFromGitHub {
     owner = "gruntwork-io";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-6ffPHam6dFPurlm+VWCI+Z6m3eG+NX/ii8ANCbjtF5Y=";
+    hash = "sha256-O3WEzcurQnT3bOy80lYEBIh8Nbr1iQnV0u9Y0qrjXW4=";
   };
 
   vendorHash = "sha256-gXqpBi89VVxHSuHzzcxVRAsdu7TRsNo/vQgI1tMVuaM=";
diff --git a/nixpkgs/pkgs/applications/networking/discordo/default.nix b/nixpkgs/pkgs/applications/networking/discordo/default.nix
index adc7a7f5dc01..3130765ee991 100644
--- a/nixpkgs/pkgs/applications/networking/discordo/default.nix
+++ b/nixpkgs/pkgs/applications/networking/discordo/default.nix
@@ -3,16 +3,16 @@
 
 buildGoModule rec {
   pname = "discordo";
-  version = "unstable-2024-02-21";
+  version = "unstable-2024-02-25";
 
   src = fetchFromGitHub {
     owner = "ayn2op";
     repo = pname;
-    rev = "3486f6ced9db8eb865641632e50daa2550a55ef8";
-    hash = "sha256-iSc9WiX0xu9X1GCSPEnf99OpTaKVlNN7sGp+f1S89SM=";
+    rev = "6e683a6526279a8c0f9f8a03be776d62214a4d13";
+    hash = "sha256-sPNJkzVulgbm3OdJWSj6i2YOKin9VO0L3aS2c0alwBE=";
   };
 
-  vendorHash = "sha256-89WJZuqUnYGT2eTWcfxdouwc2kZ15Lt38EyLP/DLSWI=";
+  vendorHash = "sha256-dBJYTe8aZtNuBwmcpXb3OEHoLVCa/GbGExLIRc8cVbo=";
 
   CGO_ENABLED = 0;
 
diff --git a/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix b/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix
index eb784c95b9fc..1ea754149554 100644
--- a/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix
+++ b/nixpkgs/pkgs/applications/networking/ids/suricata/default.nix
@@ -33,11 +33,11 @@
 in
 stdenv.mkDerivation rec {
   pname = "suricata";
-  version = "7.0.2";
+  version = "7.0.3";
 
   src = fetchurl {
     url = "https://www.openinfosecfoundation.org/download/${pname}-${version}.tar.gz";
-    hash = "sha256-tOtgSDjvmag5a8i3u1TK0R8kQsvXy7MA5/WqsZCXvE0=";
+    hash = "sha256-6gdC16mHg/GvSldmGvYGi8LYUKw+ygSzIE0ozhZeNf8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/beeper/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/beeper/default.nix
index e555aec38724..af02d0b72797 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/beeper/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/beeper/default.nix
@@ -11,11 +11,11 @@
 }:
 let
   pname = "beeper";
-  version = "3.96.30";
+  version = "3.97.44";
   name = "${pname}-${version}";
   src = fetchurl {
-    url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.96.30-build-240217e2y4xz3z3-x86_64.AppImage";
-    hash = "sha256-j/ACMLHircmt5yKhQIeZnVaJBDBcB2YYA+XOjcdMjxc=";
+    url = "https://download.todesktop.com/2003241lzgn20jd/beeper-3.97.44-build-2402237nrc018ws-x86_64.AppImage";
+    hash = "sha256-z7SKs3ID8tnBwhhd6Z1khR+qjMQ7ivbkCAB49XYxnSs=";
   };
   appimage = appimageTools.wrapType2 {
     inherit version pname src;
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
index e95b9eb99905..8a19ec12c308 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -4,7 +4,7 @@ let
     if stdenv.isLinux then {
       stable = "0.0.43";
       ptb = "0.0.71";
-      canary = "0.0.282";
+      canary = "0.0.285";
       development = "0.0.13";
     } else {
       stable = "0.0.294";
@@ -25,7 +25,7 @@ let
       };
       canary = fetchurl {
         url = "https://dl-canary.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
-        hash = "sha256-+Ijl/yPa7DVzVKOWTxCu6FxIsschIqYa+tYBnnKdCBA=";
+        hash = "sha256-dfBwe/YOzUUAfBrf51mNXtpyGL3Mp235e6TfQM4h04s=";
       };
       development = fetchurl {
         url = "https://dl-development.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/element/pin.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/element/pin.nix
index ba1606582b88..19ea95b452ff 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/element/pin.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/element/pin.nix
@@ -1,9 +1,9 @@
 {
-  "version" = "1.11.58";
+  "version" = "1.11.59";
   "hashes" = {
-    "desktopSrcHash" = "sha256-otZNhe6V/kGErx6J0+TcIwk5ASD/H4K/pYtm864VTIE=";
-    "desktopYarnHash" = "1pdja3rw4ykf9pgk937i4n0w8dj1r64fz7nzk9fsqlq8ciygabsq";
-    "webSrcHash" = "sha256-IAIsg9dvZMFfWst1xeVQLp+8URUauiaL3j2ui4lpKaY=";
-    "webYarnHash" = "0gv0vrgb62hgw58lgrmn6yywvrl9a5v5msd4l06n5wgnbbqi0i5j";
+    "desktopSrcHash" = "sha256-dasRfLsa8Jc6Vyay02f6IytjvYs3xbSFB2fU5bxi79E=";
+    "desktopYarnHash" = "00jvid2li68ji1xkbbpdiy39fzvhmw7ypnr3x82wbqqafkc5vil6";
+    "webSrcHash" = "sha256-UpRRTPrNiFsqXKD072jXVIqS8ZiuKt/BUzx1oja90VA=";
+    "webYarnHash" = "1s9lp2dd3slpp70rrbmsbmzphm6fwglnrqwk9fgylzqa1ds8nfjd";
   };
 }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/Cargo.lock b/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/Cargo.lock
index c3a79854053e..f345596ff115 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/Cargo.lock
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/Cargo.lock
@@ -35,9 +35,9 @@ dependencies = [
 
 [[package]]
 name = "aes"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
 dependencies = [
  "cfg-if",
  "cipher",
@@ -100,9 +100,9 @@ dependencies = [
 
 [[package]]
 name = "anstream"
-version = "0.6.11"
+version = "0.6.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
+checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -114,9 +114,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.4"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
@@ -148,9 +148,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.79"
+version = "1.0.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
 
 [[package]]
 name = "arrayref"
@@ -197,13 +197,13 @@ dependencies = [
 
 [[package]]
 name = "async-channel"
-version = "2.1.1"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
 dependencies = [
  "concurrent-queue",
- "event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener 5.1.0",
+ "event-listener-strategy 0.5.0",
  "futures-core",
  "pin-project-lite",
 ]
@@ -230,9 +230,9 @@ dependencies = [
 
 [[package]]
 name = "async-io"
-version = "2.3.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb41eb19024a91746eba0773aa5e16036045bbf45733766661099e182ea6a744"
+checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65"
 dependencies = [
  "async-lock 3.3.0",
  "cfg-if",
@@ -240,8 +240,8 @@ dependencies = [
  "futures-io",
  "futures-lite 2.2.0",
  "parking",
- "polling 3.3.2",
- "rustix 0.38.30",
+ "polling 3.5.0",
+ "rustix 0.38.31",
  "slab",
  "tracing",
  "windows-sys 0.52.0",
@@ -263,7 +263,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
 dependencies = [
  "event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener-strategy 0.4.0",
  "pin-project-lite",
 ]
 
@@ -280,7 +280,7 @@ dependencies = [
  "cfg-if",
  "event-listener 3.1.0",
  "futures-lite 1.13.0",
- "rustix 0.38.30",
+ "rustix 0.38.31",
  "windows-sys 0.48.0",
 ]
 
@@ -292,7 +292,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -301,13 +301,13 @@ version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
 dependencies = [
- "async-io 2.3.0",
+ "async-io 2.3.1",
  "async-lock 2.8.0",
  "atomic-waker",
  "cfg-if",
  "futures-core",
  "futures-io",
- "rustix 0.38.30",
+ "rustix 0.38.31",
  "signal-hook-registry",
  "slab",
  "windows-sys 0.48.0",
@@ -327,7 +327,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -369,7 +369,7 @@ dependencies = [
  "cc",
  "cfg-if",
  "libc",
- "miniz_oxide 0.7.1",
+ "miniz_oxide 0.7.2",
  "object",
  "rustc-demangle",
 ]
@@ -472,15 +472,15 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.14.0"
+version = "3.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+checksum = "c764d619ca78fccbf3069b37bd7af92577f044bb15236036662d79b6559f25b7"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.0"
+version = "1.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
+checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
 
 [[package]]
 name = "byteorder"
@@ -530,19 +530,18 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.83"
+version = "1.0.86"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+checksum = "7f9fa1897e4325be0d68d48df6aa1a71ac2ed4d27723887e7754192705350730"
 dependencies = [
- "jobserver",
  "libc",
 ]
 
 [[package]]
 name = "cfg-expr"
-version = "0.15.6"
+version = "0.15.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
 dependencies = [
  "smallvec",
  "target-lexicon",
@@ -580,9 +579,9 @@ dependencies = [
 
 [[package]]
 name = "chrono"
-version = "0.4.32"
+version = "0.4.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a"
+checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
@@ -656,9 +655,9 @@ dependencies = [
 
 [[package]]
 name = "crc32fast"
-version = "1.3.2"
+version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
 dependencies = [
  "cfg-if",
 ]
@@ -738,7 +737,7 @@ source = "git+https://github.com/signalapp/curve25519-dalek?tag=signal-curve2551
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -787,7 +786,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -798,15 +797,15 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
 
 [[package]]
 name = "either"
-version = "1.9.0"
+version = "1.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
 
 [[package]]
 name = "enumflags2"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939"
+checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d"
 dependencies = [
  "enumflags2_derive",
  "serde",
@@ -814,13 +813,13 @@ dependencies = [
 
 [[package]]
 name = "enumflags2_derive"
-version = "0.7.8"
+version = "0.7.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
+checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -835,9 +834,9 @@ dependencies = [
 
 [[package]]
 name = "env_logger"
-version = "0.11.0"
+version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9eeb342678d785662fd2514be38c459bb925f02b68dd2a3e0f21d7ef82d979dd"
+checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d"
 dependencies = [
  "anstream",
  "anstyle",
@@ -905,6 +904,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "event-listener"
+version = "5.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7ad6fd685ce13acd6d9541a30f6db6567a7a24c9ffd4ba2955d29e3f22c8b27"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "event-listener-strategy"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -915,16 +925,26 @@ dependencies = [
 ]
 
 [[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.1.0",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "exr"
-version = "1.71.0"
+version = "1.72.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "832a761f35ab3e6664babfbdc6cef35a4860e816ec3916dcfd0882954e98a8a8"
+checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4"
 dependencies = [
  "bit_field",
  "flume",
  "half",
  "lebe",
- "miniz_oxide 0.7.1",
+ "miniz_oxide 0.7.2",
  "rayon-core",
  "smallvec",
  "zune-inflate",
@@ -978,7 +998,7 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
 
 [[package]]
 name = "flare"
-version = "0.12.0"
+version = "0.13.0"
 dependencies = [
  "ashpd",
  "async-trait",
@@ -1017,7 +1037,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 dependencies = [
  "crc32fast",
- "miniz_oxide 0.7.1",
+ "miniz_oxide 0.7.2",
 ]
 
 [[package]]
@@ -1141,7 +1161,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -1430,11 +1450,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
 dependencies = [
  "heck 0.4.1",
- "proc-macro-crate 2.0.1",
+ "proc-macro-crate 2.0.2",
  "proc-macro-error",
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -1593,10 +1613,11 @@ dependencies = [
 
 [[package]]
 name = "half"
-version = "2.2.1"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0"
+checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
 dependencies = [
+ "cfg-if",
  "crunchy",
 ]
 
@@ -1647,9 +1668,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.4"
+version = "0.3.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
+checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd"
 
 [[package]]
 name = "hex"
@@ -1799,9 +1820,9 @@ dependencies = [
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.59"
+version = "0.1.60"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539"
+checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
@@ -1862,16 +1883,16 @@ dependencies = [
  "gif 0.12.0",
  "jpeg-decoder 0.3.1",
  "num-traits",
- "png 0.17.11",
+ "png 0.17.13",
  "qoi",
  "tiff 0.9.1",
 ]
 
 [[package]]
 name = "indexmap"
-version = "2.1.0"
+version = "2.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177"
 dependencies = [
  "equivalent",
  "hashbrown",
@@ -1932,15 +1953,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
 
 [[package]]
-name = "jobserver"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
-dependencies = [
- "libc",
-]
-
-[[package]]
 name = "jpeg-decoder"
 version = "0.1.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1960,9 +1972,9 @@ dependencies = [
 
 [[package]]
 name = "js-sys"
-version = "0.3.67"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
+checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -2016,9 +2028,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.152"
+version = "0.2.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
 
 [[package]]
 name = "libm"
@@ -2061,7 +2073,7 @@ dependencies = [
 [[package]]
 name = "libsignal-service"
 version = "0.1.0"
-source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=a2e7540a71866a62028ad0205574a5feb0e717ec#a2e7540a71866a62028ad0205574a5feb0e717ec"
+source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=1a8cdf81#1a8cdf81e66477077bd130cdd0313762e3d5e3c8"
 dependencies = [
  "aes",
  "aes-gcm",
@@ -2096,7 +2108,7 @@ dependencies = [
 [[package]]
 name = "libsignal-service-hyper"
 version = "0.1.0"
-source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=a2e7540a71866a62028ad0205574a5feb0e717ec#a2e7540a71866a62028ad0205574a5feb0e717ec"
+source = "git+https://github.com/whisperfish/libsignal-service-rs?rev=1a8cdf81#1a8cdf81e66477077bd130cdd0313762e3d5e3c8"
 dependencies = [
  "async-trait",
  "async-tungstenite",
@@ -2280,9 +2292,9 @@ dependencies = [
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
  "simd-adler32",
@@ -2394,28 +2406,27 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
+checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6"
 dependencies = [
  "num-traits",
 ]
 
 [[package]]
 name = "num-integer"
-version = "0.1.45"
+version = "0.1.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
 dependencies = [
- "autocfg",
  "num-traits",
 ]
 
 [[package]]
 name = "num-iter"
-version = "0.1.43"
+version = "0.1.44"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
+checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9"
 dependencies = [
  "autocfg",
  "num-integer",
@@ -2447,9 +2458,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
  "autocfg",
 ]
@@ -2482,7 +2493,7 @@ dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -2634,7 +2645,7 @@ dependencies = [
  "cfg-if",
  "instant",
  "libc",
- "redox_syscall 0.2.16",
+ "redox_syscall",
  "smallvec",
  "winapi",
 ]
@@ -2688,22 +2699,22 @@ dependencies = [
 
 [[package]]
 name = "pin-project"
-version = "1.1.3"
+version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0"
 dependencies = [
  "pin-project-internal",
 ]
 
 [[package]]
 name = "pin-project-internal"
-version = "1.1.3"
+version = "1.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -2731,9 +2742,9 @@ dependencies = [
 
 [[package]]
 name = "pkg-config"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
+checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
 
 [[package]]
 name = "platforms"
@@ -2755,15 +2766,15 @@ dependencies = [
 
 [[package]]
 name = "png"
-version = "0.17.11"
+version = "0.17.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f6c3c3e617595665b8ea2ff95a86066be38fb121ff920a9c0eb282abcd1da5a"
+checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
 dependencies = [
  "bitflags 1.3.2",
  "crc32fast",
  "fdeflate",
  "flate2",
- "miniz_oxide 0.7.1",
+ "miniz_oxide 0.7.2",
 ]
 
 [[package]]
@@ -2795,14 +2806,14 @@ dependencies = [
 
 [[package]]
 name = "polling"
-version = "3.3.2"
+version = "3.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41"
+checksum = "24f040dee2588b4963afb4e420540439d126f73fdacf4a9c486a96d840bac3c9"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
  "pin-project-lite",
- "rustix 0.38.30",
+ "rustix 0.38.31",
  "tracing",
  "windows-sys 0.52.0",
 ]
@@ -2870,7 +2881,7 @@ checksum = "94e851c7654eed9e68d7d27164c454961a616cf8c203d500607ef22c737b51bb"
 [[package]]
 name = "presage"
 version = "0.6.0-dev"
-source = "git+https://github.com/Schmiddiii/presage?rev=75011227faac60773bb1422d365ecc7fed95484a#75011227faac60773bb1422d365ecc7fed95484a"
+source = "git+https://github.com/Schmiddiii/presage?rev=03ffb349a125518fdc6087ebfb6a5d82a1600da6#03ffb349a125518fdc6087ebfb6a5d82a1600da6"
 dependencies = [
  "base64",
  "futures",
@@ -2889,7 +2900,7 @@ dependencies = [
 [[package]]
 name = "presage-store-cipher"
 version = "0.1.0"
-source = "git+https://github.com/Schmiddiii/presage?rev=75011227faac60773bb1422d365ecc7fed95484a#75011227faac60773bb1422d365ecc7fed95484a"
+source = "git+https://github.com/Schmiddiii/presage?rev=03ffb349a125518fdc6087ebfb6a5d82a1600da6#03ffb349a125518fdc6087ebfb6a5d82a1600da6"
 dependencies = [
  "blake3",
  "chacha20poly1305",
@@ -2906,7 +2917,7 @@ dependencies = [
 [[package]]
 name = "presage-store-sled"
 version = "0.6.0-dev"
-source = "git+https://github.com/Schmiddiii/presage?rev=75011227faac60773bb1422d365ecc7fed95484a#75011227faac60773bb1422d365ecc7fed95484a"
+source = "git+https://github.com/Schmiddiii/presage?rev=03ffb349a125518fdc6087ebfb6a5d82a1600da6#03ffb349a125518fdc6087ebfb6a5d82a1600da6"
 dependencies = [
  "async-trait",
  "base64",
@@ -2931,7 +2942,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5"
 dependencies = [
  "proc-macro2",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -2946,9 +2957,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro-crate"
-version = "2.0.1"
+version = "2.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a"
+checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
 dependencies = [
  "toml_datetime",
  "toml_edit 0.20.2",
@@ -3044,7 +3055,7 @@ dependencies = [
  "prost 0.12.3",
  "prost-types 0.12.3",
  "regex",
- "syn 2.0.48",
+ "syn 2.0.50",
  "tempfile",
  "which",
 ]
@@ -3072,7 +3083,7 @@ dependencies = [
  "itertools 0.11.0",
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -3209,15 +3220,6 @@ dependencies = [
 ]
 
 [[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 = "regex"
 version = "1.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3231,9 +3233,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
+checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -3266,16 +3268,17 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "ring"
-version = "0.17.7"
+version = "0.17.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d"
 dependencies = [
  "cc",
+ "cfg-if",
  "getrandom",
  "libc",
  "spin 0.9.8",
  "untrusted",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -3309,9 +3312,9 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.30"
+version = "0.38.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
 dependencies = [
  "bitflags 2.4.2",
  "errno",
@@ -3349,9 +3352,9 @@ dependencies = [
 
 [[package]]
 name = "rustls-pemfile"
-version = "2.0.0"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4"
+checksum = "3c333bb734fcdedcea57de1602543590f545f127dc8b533324318fd492c5c70b"
 dependencies = [
  "base64",
  "rustls-pki-types",
@@ -3359,15 +3362,15 @@ dependencies = [
 
 [[package]]
 name = "rustls-pki-types"
-version = "1.1.0"
+version = "1.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e9d979b3ce68192e42760c7810125eb6cf2ea10efae545a156063e61f314e2a"
+checksum = "048a63e5b3ac996d78d402940b5fa47973d2d080c6c6fffa1d0f19c4445310b7"
 
 [[package]]
 name = "rustls-webpki"
-version = "0.102.1"
+version = "0.102.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef4ca26037c909dedb327b48c3327d0ba91d3dd3c4e05dad328f210ffb68e95b"
+checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610"
 dependencies = [
  "ring",
  "rustls-pki-types",
@@ -3382,9 +3385,9 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
 
 [[package]]
 name = "ryu"
-version = "1.0.16"
+version = "1.0.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
 
 [[package]]
 name = "schannel"
@@ -3432,35 +3435,35 @@ dependencies = [
 
 [[package]]
 name = "semver"
-version = "1.0.21"
+version = "1.0.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
 
 [[package]]
 name = "serde"
-version = "1.0.195"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.195"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.111"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
  "itoa",
  "ryu",
@@ -3475,7 +3478,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -3689,9 +3692,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.48"
+version = "2.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3737,35 +3740,34 @@ checksum = "dd16aa9ffe15fe021c6ee3766772132c6e98dfa395a167e16864f61a9cfb71d6"
 
 [[package]]
 name = "tempfile"
-version = "3.9.0"
+version = "3.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
 dependencies = [
  "cfg-if",
  "fastrand 2.0.1",
- "redox_syscall 0.4.1",
- "rustix 0.38.30",
+ "rustix 0.38.31",
  "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "thiserror"
-version = "1.0.56"
+version = "1.0.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.56"
+version = "1.0.57"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -3807,9 +3809,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "tokio"
-version = "1.35.1"
+version = "1.36.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
 dependencies = [
  "backtrace",
  "bytes",
@@ -3842,7 +3844,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -3955,7 +3957,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
@@ -4044,18 +4046,18 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
-version = "0.1.22"
+version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5"
 dependencies = [
  "tinyvec",
 ]
 
 [[package]]
 name = "unicode-segmentation"
-version = "1.10.1"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-xid"
@@ -4153,9 +4155,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -4163,24 +4165,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -4188,22 +4190,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 
 [[package]]
 name = "weezl"
@@ -4220,7 +4222,7 @@ dependencies = [
  "either",
  "home",
  "once_cell",
- "rustix 0.38.30",
+ "rustix 0.38.31",
 ]
 
 [[package]]
@@ -4388,18 +4390,18 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
 
 [[package]]
 name = "winnow"
-version = "0.5.34"
+version = "0.5.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
 dependencies = [
  "memchr",
 ]
 
 [[package]]
 name = "x25519-dalek"
-version = "2.0.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
+checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
 dependencies = [
  "curve25519-dalek",
  "rand_core",
@@ -4409,19 +4411,19 @@ dependencies = [
 
 [[package]]
 name = "xdg-home"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
 dependencies = [
- "nix",
+ "libc",
  "winapi",
 ]
 
 [[package]]
 name = "zbus"
-version = "3.14.1"
+version = "3.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+checksum = "c45d06ae3b0f9ba1fb2671268b975557d8f5a84bb5ec6e43964f87e763d8bca8"
 dependencies = [
  "async-broadcast",
  "async-process",
@@ -4455,9 +4457,9 @@ dependencies = [
 
 [[package]]
 name = "zbus_macros"
-version = "3.14.1"
+version = "3.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+checksum = "b4a1ba45ed0ad344b85a2bb5a1fe9830aed23d67812ea39a586e7d0136439c7d"
 dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
@@ -4495,7 +4497,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.48",
+ "syn 2.0.50",
 ]
 
 [[package]]
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/default.nix
index d61bb07d2bcf..9988352d1614 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/flare-signal/default.nix
@@ -21,14 +21,14 @@
 
 stdenv.mkDerivation rec {
   pname = "flare";
-  version = "0.12.0";
+  version = "0.13.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.com";
     owner = "schmiddi-on-mobile";
     repo = "flare";
     rev = version;
-    hash = "sha256-Dg5UhVTmxiwPIbU8fG/ehX9Zp8WI2V+JoOEI7P1Way4=";
+    hash = "sha256-WfW2xUlF1vCaYFVP6ds06+niULKZgMMxgAOm66LK2xQ=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
@@ -36,8 +36,8 @@ stdenv.mkDerivation rec {
     outputHashes = {
       "curve25519-dalek-4.0.0" = "sha256-KUXvYXeVvJEQ/+dydKzXWCZmA2bFa2IosDzaBL6/Si0=";
       "libsignal-protocol-0.1.0" = "sha256-FCrJO7porlY5FrwZ2c67UPd4tgN7cH2/3DTwfPjihwM=";
-      "libsignal-service-0.1.0" = "sha256-lzyUUP1mhxxIU+xCr+5VAoeEO6FlDgeEJtWhm9avJb8=";
-      "presage-0.6.0-dev" = "sha256-PqMz6jJuL/4LVY3kNFQ9NmKt3D6cwQkGiPs2QJsL01A=";
+      "libsignal-service-0.1.0" = "sha256-XkCb83IvlnmvhHD8Vi9D5fNuBOoR9yX0/Vlb+YhrDz8=";
+      "presage-0.6.0-dev" = "sha256-zot92dlGtB7B423BU74oqpPzQKvLm2Dw9P8lCWkbsoE=";
     };
   };
 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop-beta.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop-beta.nix
index 82d017376e0c..b0167a479382 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop-beta.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop-beta.nix
@@ -2,7 +2,7 @@
 callPackage ./generic.nix {} rec {
   pname = "signal-desktop-beta";
   dir = "Signal Beta";
-  version = "7.0.0-beta.1";
+  version = "7.0.0-beta.2";
   url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop-beta/signal-desktop-beta_${version}_amd64.deb";
-  hash = "sha256-mMwOQVPihko/+ukEsaSu8l2u7obuY6gkTLAhSoWAVLo=";
+  hash = "sha256-yfa82JI/CKyQNT+oq0laupLyMIrq9Xs99M/xxgM9eQs=";
 }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop.nix
index 94ba7a3c08fa..e214a4a9d1f4 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/signal-desktop.nix
@@ -2,7 +2,7 @@
 callPackage ./generic.nix {} rec {
   pname = "signal-desktop";
   dir = "Signal";
-  version = "6.48.1";
+  version = "7.0.0";
   url = "https://updates.signal.org/desktop/apt/pool/s/signal-desktop/signal-desktop_${version}_amd64.deb";
-  hash = "sha256-3FJdgWmpfHAy5Hd97bH1DAbXYLsabom22tUKNK2bF2c=";
+  hash = "sha256-xwKisiOE2g+pg1P9mX6AlwYU1JWXIWSSygwauoU05E8=";
 }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
index ec44ba5625d6..9261b807e6c7 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signalbackup-tools/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "signalbackup-tools";
-  version = "20240221";
+  version = "20240225";
 
   src = fetchFromGitHub {
     owner = "bepaald";
     repo = pname;
     rev = version;
-    hash = "sha256-KIeTGPNGfWyyvh0dEdM7ir4+Gu6+hgQdiBG9/THXj8I=";
+    hash = "sha256-V02ZaBQQ1KgCCFCNxr52BSXowf4p1mHo5IrSjsawiY4=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix
index 0c0949688382..0814ff148653 100644
--- a/nixpkgs/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/twitch-tui/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "twitch-tui";
-  version = "2.6.3";
+  version = "2.6.4";
 
   src = fetchFromGitHub {
     owner = "Xithrius";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-h8qpsrMFFb49yfNb5mKEYRpul0hB0m1rDCvVW6jW+Pg=";
+    hash = "sha256-8jb5SrPAPas4TG4RbsaiL7bdbl/o/KX2WpDu/avPxp8=";
   };
 
-  cargoHash = "sha256-L7psqmU4Zd7c0mbd4pK/tmPslTaxIhQoWtN0/RRMerA=";
+  cargoHash = "sha256-riDRGoPMLoDuBD1iFxoTgr5pgZLYkL18sidtQM5HYNk=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/himalaya/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/himalaya/default.nix
index e200148cc076..02da88ba6a32 100644
--- a/nixpkgs/pkgs/applications/networking/mailreaders/himalaya/default.nix
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/himalaya/default.nix
@@ -3,6 +3,9 @@
 , fetchFromGitHub
 , stdenv
 , pkg-config
+, AppKit
+, Cocoa
+, Security
 , installShellFiles
 , installShellCompletions ? stdenv.hostPlatform == stdenv.buildPlatform
 , installManPages ? stdenv.hostPlatform == stdenv.buildPlatform
@@ -16,22 +19,23 @@ rustPlatform.buildRustPackage rec {
   inherit buildNoDefaultFeatures buildFeatures;
 
   pname = "himalaya";
-  version = "1.0.0-beta.2";
+  version = "1.0.0-beta.3";
 
   src = fetchFromGitHub {
     owner = "soywod";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-dLj/bEPz3SD1v54yXbtVdUJKQsyw0OJxmQh10ql+3iI=";
+    hash = "sha256-B7eswDq4tKyg881i3pLd6h+HsObK0c2dQnYuvPAGJHk=";
   };
 
-  cargoSha256 = "0IYpuKq5amAcYtsDMzJGghbxkuldAulsgUmChTl2DIg=";
+  cargoSha256 = "jOzuCXsrtXp8dmJTBqrEq4nog6smEPbdsFAy+ruPtY8=";
 
   nativeBuildInputs = [ ]
     ++ lib.optional (builtins.elem "pgp-gpg" buildFeatures) pkg-config
     ++ lib.optional (installManPages || installShellCompletions) installShellFiles;
 
   buildInputs = [ ]
+    ++ lib.optionals stdenv.isDarwin [ AppKit Cocoa Security ]
     ++ lib.optional (builtins.elem "notmuch" buildFeatures) notmuch
     ++ lib.optional (builtins.elem "pgp-gpg" buildFeatures) gpgme;
 
diff --git a/nixpkgs/pkgs/applications/networking/onionshare/default.nix b/nixpkgs/pkgs/applications/networking/onionshare/default.nix
index af0722a6acd3..017dcf3c9156 100644
--- a/nixpkgs/pkgs/applications/networking/onionshare/default.nix
+++ b/nixpkgs/pkgs/applications/networking/onionshare/default.nix
@@ -1,39 +1,40 @@
 { lib
 , stdenv
 , buildPythonApplication
-, substituteAll
-, fetchFromGitHub
-, isPy3k
+, cepa
 , colorama
+, fetchFromGitHub
 , flask
+, flask-compress
 , flask-httpauth
 , flask-socketio
 , gevent-socketio
 , gevent-websocket
-, cepa
+, obfs4
 , psutil
-, pyqt5
 , pycrypto
 , pynacl
-, pyside2
+, pyqt5
+, pyside6
 , pysocks
 , pytestCheckHook
 , qrcode
 , qt5
 , requests
-, unidecode
-, tor
-, obfs4
 , snowflake
+, substituteAll
+, tor
+, unidecode
+, waitress
 }:
 
 let
-  version = "2.6";
+  version = "2.6.1";
   src = fetchFromGitHub {
     owner = "onionshare";
     repo = "onionshare";
     rev = "v${version}";
-    sha256 = "sha256-LA7XlzoCXUiG/9subTddAd22336wO9sOHCIBlQK4Ga4=";
+    sha256 = "sha256-LR3Ao4Q8kEDwrFV+gYdMSEeYF4hDtEa1rJgvRRrJMwc=";
   };
   meta = with lib; {
     description = "Securely and anonymously send and receive files";
@@ -79,23 +80,27 @@ rec {
       })
     ];
     propagatedBuildInputs = [
+      cepa
       colorama
       flask
+      flask-compress
       flask-httpauth
       flask-socketio
       gevent-socketio
       gevent-websocket
-      cepa
       psutil
       pycrypto
       pynacl
+      pyside6
+      qrcode
       requests
       unidecode
+      waitress
     ];
 
     buildInputs = [
-      tor
       obfs4
+      tor
     ];
 
     nativeCheckInputs = [
@@ -107,9 +112,11 @@ rec {
       export HOME="$(mktemp -d)"
     '';
 
-    disabledTests = [
+    disabledTests = lib.optionals stdenv.isLinux [
       "test_get_tor_paths_linux"  # expects /usr instead of /nix/store
     ] ++ lib.optionals stdenv.isDarwin [
+      # requires meek-client which is not packaged
+      "test_get_tor_paths_darwin"
       # on darwin (and only on darwin) onionshare attempts to discover
       # user's *real* homedir via /etc/passwd, making it more painful
       # to fake
@@ -128,16 +135,15 @@ rec {
         inherit tor meek obfs4 snowflake;
         inherit (tor) geoip;
       })
-      ./fix-qrcode-gui.patch
     ];
 
     propagatedBuildInputs = [
       onionshare
-      pyqt5
-      pyside2
       psutil
-      qrcode
+      pyqt5
+      pyside6
       pysocks
+      qrcode
     ];
 
     nativeBuildInputs = [ qt5.wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/applications/networking/onionshare/fix-qrcode-gui.patch b/nixpkgs/pkgs/applications/networking/onionshare/fix-qrcode-gui.patch
deleted file mode 100644
index 97ee3817ab68..000000000000
--- a/nixpkgs/pkgs/applications/networking/onionshare/fix-qrcode-gui.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git desktop/onionshare/widgets.py desktop/onionshare/widgets.py
-index 64a07703..bca974fb 100644
---- desktop/onionshare/widgets.py
-+++ desktop/onionshare/widgets.py
-@@ -101,7 +101,7 @@ class Image(qrcode.image.base.BaseImage):
-     A custom Image class, for use with the QR Code pixmap.
-     """
- 
--    def __init__(self, border, width, box_size):
-+    def __init__(self, border, width, box_size, *args, **kargs):
-         self.border = border
-         self.width = width
-         self.box_size = box_size
-
diff --git a/nixpkgs/pkgs/applications/networking/powerdns-admin/default.nix b/nixpkgs/pkgs/applications/networking/powerdns-admin/default.nix
index 61a728d983b3..12cd9f9d04e7 100644
--- a/nixpkgs/pkgs/applications/networking/powerdns-admin/default.nix
+++ b/nixpkgs/pkgs/applications/networking/powerdns-admin/default.nix
@@ -1,12 +1,12 @@
 { lib, stdenv, fetchFromGitHub, fetchYarnDeps, mkYarnPackage, nixosTests, writeText, python3 }:
 
 let
-  version = "0.4.1";
+  version = "0.4.2";
   src = fetchFromGitHub {
     owner = "PowerDNS-Admin";
     repo = "PowerDNS-Admin";
     rev = "v${version}";
-    hash = "sha256-AwqEcAPD1SF1Ma3wtH03mXlTywM0Q19hciCmTtlr3gk=";
+    hash = "sha256-q9mt8wjSNFb452Xsg+qhNOWa03KJkYVGAeCWVSzZCyk=";
   };
 
   python = python3;
@@ -29,7 +29,7 @@ let
 
     offlineCache = fetchYarnDeps {
       yarnLock = "${src}/yarn.lock";
-      hash = "sha256-3ebT19LrbYuypdJaoB3tClVVP0Fi8tHx3Xi6ge/DpA4=";
+      hash = "sha256-rXIts+dgOuZQGyiSke1NIG7b4lFlR/Gfu3J6T3wP3aY=";
     };
 
     # Copied from package.json, see also
diff --git a/nixpkgs/pkgs/applications/networking/seafile-client/default.nix b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
index 4da47eddd61b..8dbecdd50aa3 100644
--- a/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
+++ b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "seafile-client";
-  version = "9.0.4";
+  version = "9.0.5";
 
   src = fetchFromGitHub {
     owner = "haiwen";
     repo = "seafile-client";
     rev = "v${version}";
-    sha256 = "sha256-Qt4Y7s2BMwuKXTYjHAzK40HgAsxlk98af3irOXT4/Vs=";
+    sha256 = "sha256-fAPEtULab3Ug4gRCS+Eigp48JkORi7tvic2vp5jaw44=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
index deae24ec6547..f9ec3d21f6e9 100644
--- a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
+++ b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -54,7 +54,7 @@ assert withQt -> qt6 != null;
 
 stdenv.mkDerivation rec {
   pname = "wireshark-${if withQt then "qt" else "cli"}";
-  version = "4.2.2";
+  version = "4.2.3";
 
   outputs = [ "out" "dev" ];
 
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
     repo = "wireshark";
     owner = "wireshark";
     rev = "v${version}";
-    hash = "sha256-4SxrlNrVg8Yc1THyRPEQDM/yQzDTLM1ppVwCw9vResE=";
+    hash = "sha256-2kJBVO40F1m43317g337bk84ZSf6WPK04ir0xc5qxTc=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
index 735133d641fe..ebb0f17e784b 100644
--- a/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
+++ b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, buildGoModule, fetchFromGitHub, buildPackages, installShellFiles
 , makeWrapper
-, enableCmount ? true, fuse, macfuse-stubs
+, enableCmount ? true, fuse, fuse3, macfuse-stubs
 , librclone
 }:
 
@@ -46,12 +46,12 @@ buildGoModule rec {
       ln -s $out/bin/rclone $out/bin/rclonefs
       ln -s $out/bin/rclone $out/bin/mount.rclone
     '' + lib.optionalString (enableCmount && !stdenv.isDarwin)
-      # use --suffix here to ensure we don't shadow /run/wrappers/bin/fusermount,
+      # use --suffix here to ensure we don't shadow /run/wrappers/bin/fusermount3,
       # as the setuid wrapper is required as non-root on NixOS.
       ''
       wrapProgram $out/bin/rclone \
-        --suffix PATH : "${lib.makeBinPath [ fuse ] }" \
-        --prefix LD_LIBRARY_PATH : "${fuse}/lib"
+        --suffix PATH : "${lib.makeBinPath [ fuse3 ] }" \
+        --prefix LD_LIBRARY_PATH : "${fuse3}/lib"
     '';
 
   passthru.tests = {
diff --git a/nixpkgs/pkgs/applications/office/moneyplex/default.nix b/nixpkgs/pkgs/applications/office/moneyplex/default.nix
deleted file mode 100644
index 08d926a6d5e2..000000000000
--- a/nixpkgs/pkgs/applications/office/moneyplex/default.nix
+++ /dev/null
@@ -1,123 +0,0 @@
-{ lib, stdenv, fetchurl, patchelf, coreutils, pcsclite
-, zlib, glib, gdk-pixbuf, gtk2, cairo, pango, libX11, atk, openssl
-, runtimeShell }:
-
-let
-  libPath = lib.makeLibraryPath [
-    stdenv.cc.cc zlib glib gdk-pixbuf gtk2 cairo pango libX11 atk openssl
-  ];
-
-  src_i686 = {
-    url = "http://www.matrica.com/download/distribution/moneyplex_16_install32_22424.tar.gz";
-    sha256 = "0yfpc6s85r08g796dycl378kagkma865vp7j72npia3hjc4vwamr";
-  };
-
-  src_x86_64 = {
-    url = "http://www.matrica.com/download/distribution/moneyplex_16_install64_22424.tar.gz";
-    sha256 = "03vxbg1yp8qyvcn6bw2a5s134nxzq9cn0vqbmlld7hh4knbsfqzw";
-  };
-in
-
-stdenv.mkDerivation {
-  pname = "moneyplex";
-  version = "16.0.22424";
-
-  src = fetchurl (if stdenv.hostPlatform.system == "i686-linux" then src_i686
-                  else if stdenv.hostPlatform.system == "x86_64-linux" then src_x86_64
-                  else throw "moneyplex requires i686-linux or x86_64-linux");
-
-
-  phases = [ "unpackPhase" "installPhase" "postInstall" ];
-
-  buildInputs = [ ];
-
-  installPhase =
-  ''
-    mkdir -p "$out/opt/moneyplex"
-    cp -r . $out/opt/moneyplex
-
-    mkdir "$out/bin"
-
-    cat > $out/bin/moneyplex <<EOF
-    #!${runtimeShell}
-
-    if [ -z "\$XDG_DATA_HOME" ]; then
-        MDIR=\$HOME/.local/share/moneyplex
-    else
-        MDIR=\$XDG_DATA_HOME/moneyplex
-    fi
-
-    if [ ! -d "\$MDIR" ]; then
-        ${coreutils}/bin/mkdir -p \$MDIR
-        ${coreutils}/bin/cp -r $out/opt/moneyplex/* \$MDIR
-        ${coreutils}/bin/chmod 0644 \$MDIR/*
-        ${coreutils}/bin/chmod 0755 \$MDIR/system
-        ${coreutils}/bin/chmod 0644 \$MDIR/system/*
-        ${coreutils}/bin/chmod 0755 \$MDIR/reports
-        ${coreutils}/bin/chmod 0644 \$MDIR/reports/*
-        ${coreutils}/bin/chmod 0755 \$MDIR/moneyplex
-        ${coreutils}/bin/chmod 0755 \$MDIR/prestart
-        ${coreutils}/bin/chmod 0755 \$MDIR/mpxalarm
-    fi
-
-    if [ ! -d "\$MDIR/pcsc" ]; then
-        ${coreutils}/bin/mkdir -p \$MDIR/pcsc
-    fi
-    if [ ! -e "\$MDIR/pcsc/libpcsclite.so.1" ] || [ ! \`${coreutils}/bin/readlink -f "\$MDIR/pcsc/libpcsclite.so.1"\` -ef "${lib.getLib pcsclite}/lib/libpcsclite.so.1" ]; then
-        ${coreutils}/bin/ln -sf "${lib.getLib pcsclite}/lib/libpcsclite.so.1" "\$MDIR/pcsc/libpcsclite.so.1"
-    fi
-
-
-    if [ -e "\$MDIR/rup/rupremote.lst" ]; then
-      for i in \`${coreutils}/bin/cat "\$MDIR/rup/rupremote.lst"\`; do
-        ${coreutils}/bin/mv "\$MDIR/rup/"\`${coreutils}/bin/basename \$i\` "\$MDIR/\$i"
-      done
-      rm -r "\$MDIR/rup/rupremote.lst"
-    fi
-
-    if [ ! -e "\$MDIR/moneyplex.patched" ] || [ "\$MDIR/moneyplex" -nt "\$MDIR/moneyplex.patched" ]; then
-        ${coreutils}/bin/cp "\$MDIR/moneyplex" "\$MDIR/moneyplex.patched"
-        ${coreutils}/bin/chmod 0755 "\$MDIR/moneyplex.patched"
-    fi
-    if [ ! \`${patchelf}/bin/patchelf --print-interpreter \$MDIR/moneyplex.patched\` = $(cat $NIX_CC/nix-support/dynamic-linker) ] ||
-       [ ! \`${patchelf}/bin/patchelf --print-rpath \$MDIR/moneyplex.patched\` = "${libPath}" ]; then
-        ${patchelf}/bin/patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath "${libPath}" "\$MDIR/moneyplex.patched"
-    fi
-
-    exec \$MDIR/moneyplex.patched
-    EOF
-
-    chmod +x $out/bin/moneyplex
-    '';
-
-  postInstall = ''
-    mkdir -p $out/share/icons
-    cp -r $out/opt/moneyplex/system/mpx256.png $out/share/icons/moneyplex.png
-
-    mkdir -p $out/share/applications
-    cat > $out/share/applications/moneyplex.desktop <<EOF
-    [Desktop Entry]
-    Type=Application
-    Encoding=UTF-8
-    Name=Moneyplex
-    GenericName=Moneyplex online banking software
-    Comment=Online banking software
-    Icon=$out/share/icons/moneyplex.png
-    Exec=$out/bin/moneyplex
-    Terminal=false
-    Categories=Application;
-    StartupNotify=true
-    EOF
-    '';
-
-
-  meta = with lib; {
-    description = "Moneyplex online banking software";
-    maintainers = with maintainers; [ ];
-    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
-    platforms = platforms.linux;
-    license = licenses.unfree;
-    downloadPage = "http://matrica.de/download/download.html";
-  };
-
-}
diff --git a/nixpkgs/pkgs/applications/office/paperless-ngx/default.nix b/nixpkgs/pkgs/applications/office/paperless-ngx/default.nix
index 704689e20282..db6becac38d1 100644
--- a/nixpkgs/pkgs/applications/office/paperless-ngx/default.nix
+++ b/nixpkgs/pkgs/applications/office/paperless-ngx/default.nix
@@ -22,13 +22,13 @@
 }:
 
 let
-  version = "2.5.3";
+  version = "2.5.4";
 
   src = fetchFromGitHub {
     owner = "paperless-ngx";
     repo = "paperless-ngx";
     rev = "refs/tags/v${version}";
-    hash = "sha256-fZ5grVZjCVkCH6doeqBLHPh9mPvHkiz+QXi/OyoJhR4=";
+    hash = "sha256-F+fZb8Eqw2gHxnv2Zj/xyUOrQu5KIGBIeyhIa1gyayw=";
   };
 
   python = python3;
@@ -53,7 +53,7 @@ let
       cd src-ui
     '';
 
-    npmDepsHash = "sha256-7//VmAgXB4H8hlalfu4JeqFDa8dj1u5Z1kbwp2Wi4cQ=";
+    npmDepsHash = "sha256-GXGYfyWy6g1XWKyu3jdbszYYhEk1TzjQIwMGT8Rc0a0=";
 
     nativeBuildInputs = [
       pkg-config
diff --git a/nixpkgs/pkgs/applications/office/wpsoffice/default.nix b/nixpkgs/pkgs/applications/office/wpsoffice/default.nix
index d336b9cd5ba5..78b559b8ff3f 100644
--- a/nixpkgs/pkgs/applications/office/wpsoffice/default.nix
+++ b/nixpkgs/pkgs/applications/office/wpsoffice/default.nix
@@ -16,20 +16,49 @@
 , xorg
 , cups
 , pango
+, runCommandLocal
+, curl
+, coreutils
+, cacert
 , useChineseVersion ? false
 }:
-
+let
+  pkgVersion = "11.1.0.11719";
+  url =
+    if useChineseVersion then
+      "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/${lib.last (lib.splitVersion pkgVersion)}/wps-office_${pkgVersion}_amd64.deb"
+    else
+      "https://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/${lib.last (lib.splitVersion pkgVersion)}/wps-office_${pkgVersion}.XA_amd64.deb";
+  hash =
+    if useChineseVersion then
+      "sha256-LgE5du2ZnMsAqgoQkY63HWyWYA5TLS5I8ArRYrpxffs="
+    else
+      "sha256-6fXzHSMzZDGuBubOXsHA0YEUGKcy5QIPg3noyxUbdjA=";
+  uri = builtins.replaceStrings [ "https://wps-linux-personal.wpscdn.cn" ] [ "" ] url;
+  securityKey = "7f8faaaa468174dc1c9cd62e5f218a5b";
+in
 stdenv.mkDerivation rec {
   pname = "wpsoffice";
-  version = "11.1.0.11711";
+  version = pkgVersion;
 
-  src = if useChineseVersion then fetchurl {
-    url = "https://wps-linux-personal.wpscdn.cn/wps/download/ep/Linux2019/${lib.last (lib.splitVersion version)}/wps-office_${version}_amd64.deb";
-    hash = "sha256-JHSTZZnOZoTpj8zF4C5PmjTkftEdxbeaqweY3ITiJto=";
-  } else fetchurl {
-    url = "https://wdl1.pcfg.cache.wpscdn.com/wpsdl/wpsoffice/download/linux/${lib.last (lib.splitVersion version)}/wps-office_${version}.XA_amd64.deb";
-    hash = "sha256-2apkSE/8Wm6/OQ4x5n1PE1emhovqOgD0NVTY5QZZTYA=";
-  };
+  src = runCommandLocal (if useChineseVersion then "wps-office_${version}_amd64.deb" else "wps-office_${version}.XA_amd64.deb")
+    {
+      outputHashMode = "recursive";
+      outputHashAlgo = "sha256";
+      outputHash = hash;
+
+      nativeBuildInputs = [ curl coreutils ];
+
+      SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
+    } ''
+    timestamp10=$(date '+%s')
+    md5hash=($(echo -n "${securityKey}${uri}$timestamp10" | md5sum))
+
+    curl \
+    --retry 3 --retry-delay 3 \
+    "${url}?t=$timestamp10&k=$md5hash" \
+    > $out
+  '';
 
   unpackCmd = "dpkg -x $src .";
   sourceRoot = ".";
@@ -102,6 +131,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     hydraPlatforms = [ ];
     license = licenses.unfreeRedistributable;
-    maintainers = with maintainers; [ mlatus th0rgal rewine ];
+    maintainers = with maintainers; [ mlatus th0rgal rewine pokon548 ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/radio/wsjtx/default.nix b/nixpkgs/pkgs/applications/radio/wsjtx/default.nix
index 23fb34db0e32..b624898664c8 100644
--- a/nixpkgs/pkgs/applications/radio/wsjtx/default.nix
+++ b/nixpkgs/pkgs/applications/radio/wsjtx/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
       These modes were all designed for making reliable, confirmed ham radio
       contacts under extreme weak-signal conditions.
     '';
-    homepage = "https://physics.princeton.edu/pulsar/k1jt/wsjtx.html";
+    homepage = "https://wsjt.sourceforge.io";
     license = with licenses; [ gpl3Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ lasandell numinit melling ];
diff --git a/nixpkgs/pkgs/applications/science/biology/last/default.nix b/nixpkgs/pkgs/applications/science/biology/last/default.nix
index a3faca60c2a6..3bc84e414bb7 100644
--- a/nixpkgs/pkgs/applications/science/biology/last/default.nix
+++ b/nixpkgs/pkgs/applications/science/biology/last/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "last";
-  version = "1541";
+  version = "1542";
 
   src = fetchFromGitLab {
     owner = "mcfrith";
     repo = "last";
     rev = "refs/tags/${version}";
-    hash = "sha256-gEesPeGY2RozoViZpBWNTXFJriKVb/r0Efw9XEXwXmM=";
+    hash = "sha256-ZzvyyecYiBscogfN9/FnDbHg/lqb8y14n9C2KLIqhFA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/science/logic/lean4/default.nix b/nixpkgs/pkgs/applications/science/logic/lean4/default.nix
index 97336c06b806..d8e52a77326c 100644
--- a/nixpkgs/pkgs/applications/science/logic/lean4/default.nix
+++ b/nixpkgs/pkgs/applications/science/logic/lean4/default.nix
@@ -10,13 +10,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "lean4";
-  version = "4.5.0";
+  version = "4.6.0";
 
   src = fetchFromGitHub {
     owner = "leanprover";
     repo = "lean4";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-KTCTk4Fpbmm7FsUo03tAvenC6HuB3zJGax6iGTwLaXM=";
+    hash = "sha256-Anf6uaTFG/c94N7b7HgT5riyOL5xbHeeoYTrrOl2vDA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/applications/science/math/eigenmath/default.nix b/nixpkgs/pkgs/applications/science/math/eigenmath/default.nix
index c43add48fcb6..e91ec9e5bbbf 100644
--- a/nixpkgs/pkgs/applications/science/math/eigenmath/default.nix
+++ b/nixpkgs/pkgs/applications/science/math/eigenmath/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "eigenmath";
-  version = "unstable-2024-02-04";
+  version = "unstable-2024-02-25";
 
   src = fetchFromGitHub {
     owner = "georgeweigt";
     repo = pname;
-    rev = "3e37263611e181e2927d63b97b7656790c7f4fe1";
-    hash = "sha256-gjmz9Ma7OLQyIry6i2HMNy4Ai5Wh5NUzDKPO2a9Hp+s=";
+    rev = "4391a5bfe22d095cdf9fc12f376f64a8ffccccd9";
+    hash = "sha256-p+dnu35HGX8SgVpq5NczoZVehzfcuN+uucGurT7lWYM=";
   };
 
   checkPhase = let emulator = stdenv.hostPlatform.emulator buildPackages; in ''
diff --git a/nixpkgs/pkgs/applications/terminal-emulators/rio/default.nix b/nixpkgs/pkgs/applications/terminal-emulators/rio/default.nix
index afb380134b58..2eb978a4c181 100644
--- a/nixpkgs/pkgs/applications/terminal-emulators/rio/default.nix
+++ b/nixpkgs/pkgs/applications/terminal-emulators/rio/default.nix
@@ -51,16 +51,16 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "rio";
-  version = "0.0.34";
+  version = "0.0.35";
 
   src = fetchFromGitHub {
     owner = "raphamorim";
     repo = "rio";
     rev = "v${version}";
-    hash = "sha256-UHA2j7NOPBl7qrCu5bWLHjpVgWxlydtj0F7lfAlQZXg=";
+    hash = "sha256-e+GiNwvjwIi5wCyI+IQ0BZ8IR8by5RUq8dk1JO50mjU=";
   };
 
-  cargoHash = "sha256-xqLticREnGxsuo2d7d3VaFWbGJ5A1L7GvDwV7qQ61xs=";
+  cargoHash = "sha256-voQQjouCOwVLzOKtDUCa1lZLgx0JB7mvCqOY4BhmMr4=";
 
   nativeBuildInputs = [
     ncurses
diff --git a/nixpkgs/pkgs/applications/version-management/commitizen/default.nix b/nixpkgs/pkgs/applications/version-management/commitizen/default.nix
index 98a5549faab4..5b5042494c49 100644
--- a/nixpkgs/pkgs/applications/version-management/commitizen/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/commitizen/default.nix
@@ -11,7 +11,7 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "commitizen";
-  version = "3.15.0";
+  version = "3.16.0";
   format = "pyproject";
 
   disabled = python3.pythonOlder "3.8";
@@ -20,7 +20,7 @@ python3.pkgs.buildPythonApplication rec {
     owner = "commitizen-tools";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-WXsEkJRis9L9heHj6SkTFFTuGmnDXPMKfr7rYy8vzcI=";
+    hash = "sha256-vd8MtkzI7PPow0Ld0NhwbWOUWgSgecAT/DZK0ocUWCw=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/applications/version-management/conform/default.nix b/nixpkgs/pkgs/applications/version-management/conform/default.nix
index 4ebe11038ddd..65ce7e63d603 100644
--- a/nixpkgs/pkgs/applications/version-management/conform/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/conform/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "conform";
-  version = "0.1.0-alpha.28";
+  version = "0.1.0-alpha.29";
 
   src = fetchFromGitHub {
     owner = "siderolabs";
     repo = "conform";
     rev = "v${version}";
-    hash = "sha256-qrMOybTjXql+cOggkgSMnK2MQhZr59e5Z4d+jBMUTko=";
+    hash = "sha256-5knN+lTedUdgWG8rb3zuJAxx9N0lt7LjJvmSJhdTSgw=";
   };
 
   vendorHash = "sha256-hDdNYXy5NIrlqT6yyOglFg2v7HOM9nE+oh7mx2kLdnQ=";
diff --git a/nixpkgs/pkgs/applications/version-management/git-dive/default.nix b/nixpkgs/pkgs/applications/version-management/git-dive/default.nix
index 983d7b3dd672..c0209c38cfa9 100644
--- a/nixpkgs/pkgs/applications/version-management/git-dive/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/git-dive/default.nix
@@ -2,8 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-  # libgit2-sys doesn't support libgit2 1.6 yet
-, libgit2_1_5
+, libgit2
 , oniguruma
 , zlib
 , stdenv
@@ -29,7 +28,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_5
+    libgit2
     oniguruma
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
@@ -54,7 +53,10 @@ rustPlatform.buildRustPackage rec {
     git config --global user.email nixbld@example.com
   '';
 
-  RUSTONIG_SYSTEM_LIBONIG = true;
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+    RUSTONIG_SYSTEM_LIBONIG = true;
+  };
 
   meta = with lib; {
     description = "Dive into a file's history to find root cause";
diff --git a/nixpkgs/pkgs/applications/version-management/git-gone/default.nix b/nixpkgs/pkgs/applications/version-management/git-gone/default.nix
index 559c81dd48c6..133bc35f64fa 100644
--- a/nixpkgs/pkgs/applications/version-management/git-gone/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/git-gone/default.nix
@@ -8,16 +8,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "git-gone";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "swsnr";
     repo = "git-gone";
     rev = "v${version}";
-    hash = "sha256-cEMFbG7L48s1SigLD/HfQ2NplGZPpO+KIgs3oV3rgQQ=";
+    hash = "sha256-Mc9/P4VBmLOC05xqdx/yopbhvdpQS3uejc4YA7BIgug=";
   };
 
-  cargoHash = "sha256-CCPVjOWM59ELd4AyT968v6kvGdVwkMxxLZGDiJlLkzA=";
+  cargoHash = "sha256-NyyficEDJReMLAw2VAK2fOXNIwHilnUqQRACGck+0Vo=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/applications/version-management/git-mit/default.nix b/nixpkgs/pkgs/applications/version-management/git-mit/default.nix
index d4dece40ebde..5e5732a01145 100644
--- a/nixpkgs/pkgs/applications/version-management/git-mit/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/git-mit/default.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-, libgit2_1_5
+, libgit2
 , openssl
 , zlib
 , stdenv
@@ -28,13 +28,17 @@ rustPlatform.buildRustPackage {
   nativeBuildInputs = [ pkg-config ];
 
   buildInputs = [
-    libgit2_1_5
+    libgit2
     openssl
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.AppKit
   ];
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "Minimalist set of hooks to aid pairing and link commits to issues";
     homepage = "https://github.com/PurpleBooth/git-mit";
diff --git a/nixpkgs/pkgs/applications/version-management/gitea/default.nix b/nixpkgs/pkgs/applications/version-management/gitea/default.nix
index ae7eb2021fe1..e5b05f211f62 100644
--- a/nixpkgs/pkgs/applications/version-management/gitea/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/gitea/default.nix
@@ -20,12 +20,12 @@
 
 buildGoModule rec {
   pname = "gitea";
-  version = "1.21.6";
+  version = "1.21.7";
 
   # not fetching directly from the git repo, because that lacks several vendor files for the web UI
   src = fetchurl {
     url = "https://dl.gitea.com/gitea/${version}/gitea-src-${version}.tar.gz";
-    hash = "sha256-tixWipiVHugacTzBurdgfiLnKyVDDcqCPlysj2DoWjg=";
+    hash = "sha256-d/3BPOSez7M2Xh2x9H2KsDIZ69PHinHIzQ6ekt/yWas=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/applications/version-management/gitoxide/default.nix b/nixpkgs/pkgs/applications/version-management/gitoxide/default.nix
index ed3f3c8764f4..eb3ee122bf51 100644
--- a/nixpkgs/pkgs/applications/version-management/gitoxide/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/gitoxide/default.nix
@@ -9,9 +9,14 @@
 , SystemConfiguration
 , curl
 , openssl
+, buildPackages
+, installShellFiles
 }:
 
-rustPlatform.buildRustPackage rec {
+let
+  canRunCmd = stdenv.hostPlatform.emulatorAvailable buildPackages;
+  gix = "${stdenv.hostPlatform.emulator buildPackages} $out/bin/gix";
+in rustPlatform.buildRustPackage rec {
   pname = "gitoxide";
   version = "0.33.0";
 
@@ -24,12 +29,19 @@ rustPlatform.buildRustPackage rec {
 
   cargoHash = "sha256-JOl/hhyuc6vqeK6/oXXMB3fGRapBsuOTaUG+BQ9QSnk=";
 
-  nativeBuildInputs = [ cmake pkg-config ];
+  nativeBuildInputs = [ cmake pkg-config installShellFiles ];
 
   buildInputs = [ curl ] ++ (if stdenv.isDarwin
     then [ libiconv Security SystemConfiguration ]
     else [ openssl ]);
 
+  preFixup = lib.optionalString canRunCmd ''
+    installShellCompletion --cmd gix \
+      --bash <(${gix} completions --shell bash) \
+      --fish <(${gix} completions --shell fish) \
+      --zsh <(${gix} completions --shell zsh)
+  '';
+
   # Needed to get openssl-sys to use pkg-config.
   env.OPENSSL_NO_VENDOR = 1;
 
diff --git a/nixpkgs/pkgs/applications/version-management/legit-web/default.nix b/nixpkgs/pkgs/applications/version-management/legit-web/default.nix
index a14b7c22bd4b..3c42284702d2 100644
--- a/nixpkgs/pkgs/applications/version-management/legit-web/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/legit-web/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "legit";
-  version = "0.2.1";
+  version = "0.2.2";
 
   src = fetchFromGitHub {
     repo = "legit";
     owner = "icyphox";
     rev = "v${version}";
-    hash = "sha256-Y0lfbe4xBCj80z07mLFIiX+shvntYAHiW2Uw7h94jrE=";
+    hash = "sha256-TBq1ILBhojMIxnLj108L0zLmFsZD/ET9w5cSbqk8+XM=";
   };
 
-  vendorHash = "sha256-RAUSYCtP4rcJ2zIBXfPAEZWD1VSfr3d4MrmUMiPpjK8=";
+  vendorHash = "sha256-IeWgmUNkBU3W6ayfRkzMO/0XHNqm5zy5lLUNePzv+ug=";
 
   postInstall = ''
     mkdir -p $out/lib/legit/templates
diff --git a/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix b/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix
index 7e830e1077a5..e4ad91a8713f 100644
--- a/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/tortoisehg/default.nix
@@ -7,11 +7,11 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "tortoisehg";
-  version = "6.2.2";
+  version = "6.6.3";
 
   src = fetchurl {
     url = "https://www.mercurial-scm.org/release/tortoisehg/targz/tortoisehg-${version}.tar.gz";
-    sha256 = "sha256-Xbvg/FcuX/AL2reWsaM2oaFyLby3+HDCfYtRyswE7DA=";
+    sha256 = "sha256-9pg1N5uj1ZaZCAm4N8toRwfVHme7nAsNMZkXSRgFves=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/version-management/vcsh/default.nix b/nixpkgs/pkgs/applications/version-management/vcsh/default.nix
index b764e6bb768c..1477695506e6 100644
--- a/nixpkgs/pkgs/applications/version-management/vcsh/default.nix
+++ b/nixpkgs/pkgs/applications/version-management/vcsh/default.nix
@@ -8,11 +8,11 @@
 
 stdenv.mkDerivation rec {
   pname = "vcsh";
-  version = "2.0.7";
+  version = "2.0.8";
 
   src = fetchurl {
     url = "https://github.com/RichiH/vcsh/releases/download/v${version}/${pname}-${version}.tar.xz";
-    sha256 = "sha256-Rx5yBCDRqFNyhP0Pfoo2upn7t4Yh5hxTgNKmMtaY/08=";
+    sha256 = "sha256-VgRA3v5PIKwizmXoc8f/YMoMCDGFJK/m2uhq3EsT1xQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix b/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
index 283658a0dbd4..e92065486918 100644
--- a/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
+++ b/nixpkgs/pkgs/applications/video/davinci-resolve/default.nix
@@ -31,7 +31,7 @@ let
   davinci = (
     stdenv.mkDerivation rec {
       pname = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
-      version = "18.6.4";
+      version = "18.6.5";
 
       nativeBuildInputs = [
         (appimage-run.override { buildFHSEnv = buildFHSEnvChroot; } )
@@ -52,8 +52,8 @@ let
           outputHashAlgo = "sha256";
           outputHash =
             if studioVariant
-            then "sha256-Us8DsxdGwBxUL+yUHT9DNJFIV7EO+J9CSN2Juyf8VQ4="
-            else "sha256-yPdfmS42ID7MOTB3XlGXfOqp46kRLR8martJ9gWqDjA=";
+            then "sha256-Ua5R0G4okBpz9SyyA2zn6nVflY9AlWch7Kx6PrW/nMg="
+            else "sha256-oCK7w5jB7h4PSKg2IJwriyAVi/kj4TurloBcfDAe6BQ=";
 
           impureEnvVars = lib.fetchers.proxyImpureEnvVars;
 
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/mediathekview/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/mediathekview/default.nix
index 327cf16ae895..7f03d813388d 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/mediathekview/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/mediathekview/default.nix
@@ -1,4 +1,4 @@
-{ lib, buildKodiAddon, fetchFromGitHub, addonUpdateScript, myconnpy }:
+{ lib, buildKodiAddon, fetchFromGitHub, myconnpy }:
 
 buildKodiAddon rec {
   pname = "mediathekview";
@@ -16,14 +16,10 @@ buildKodiAddon rec {
     myconnpy
   ];
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.mediathekview";
-  };
-
   meta = with lib; {
     homepage = "https://github.com/mediathekview/plugin.video.mediathekview";
     description = "Access media libraries of German speaking broadcasting stations";
     license = licenses.mit;
-    maintainers = teams.kodi.members;
+    maintainers = teams.kodi.members ++ [ lib.maintainers.dschrempf ];
   };
 }
diff --git a/nixpkgs/pkgs/applications/video/kodi/addons/youtube/default.nix b/nixpkgs/pkgs/applications/video/kodi/addons/youtube/default.nix
index d6bc80d0189e..83afc51053ba 100644
--- a/nixpkgs/pkgs/applications/video/kodi/addons/youtube/default.nix
+++ b/nixpkgs/pkgs/applications/video/kodi/addons/youtube/default.nix
@@ -3,13 +3,13 @@
 buildKodiAddon rec {
   pname = "youtube";
   namespace = "plugin.video.youtube";
-  version = "7.0.3";
+  version = "7.0.3.2";
 
   src = fetchFromGitHub {
     owner = "anxdpanic";
     repo = "plugin.video.youtube";
     rev = "v${version}";
-    hash = "sha256-dD9jl/W8RDfYHv13TBniOeRyc4cocj8160BHWz3MKlE=";
+    hash = "sha256-gJ7RGB0pSG/iLdpmXHpQOoQTisXnMl1Mgd0KYFgg2qI=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix b/nixpkgs/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
index 874263f7b2d2..5287c7f21108 100644
--- a/nixpkgs/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
+++ b/nixpkgs/pkgs/applications/video/mpv/scripts/mpv-playlistmanager.nix
@@ -2,13 +2,13 @@
 
 buildLua rec {
   pname = "mpv-playlistmanager";
-  version = "unstable-2023-11-28";
+  version = "unstable-2024-02-26";
 
   src = fetchFromGitHub {
     owner = "jonniek";
     repo = "mpv-playlistmanager";
-    rev = "579490c7ae1becc129736b7632deec4f3fb90b99";
-    hash = "sha256-swOtoB8UV/HPTpQRGXswAfUYsyC2Nj/QRIkGP8X1jk0=";
+    rev = "1911dc053951169c98cfcfd9f44ef87d9122ca80";
+    hash = "sha256-pcdOMhkivLF5B86aNuHrqj77DuYLAFGlwFwY7jxkDkE=";
   };
   passthru.updateScript = unstableGitUpdater {};
 
diff --git a/nixpkgs/pkgs/applications/video/shotcut/default.nix b/nixpkgs/pkgs/applications/video/shotcut/default.nix
index dce78f3cdf90..ca3c0599a626 100644
--- a/nixpkgs/pkgs/applications/video/shotcut/default.nix
+++ b/nixpkgs/pkgs/applications/video/shotcut/default.nix
@@ -20,13 +20,13 @@
 }:
 stdenv.mkDerivation rec {
   pname = "shotcut";
-  version = "24.01.31";
+  version = "24.02.19";
 
   src = fetchFromGitHub {
     owner = "mltframework";
     repo = "shotcut";
     rev = "v${version}";
-    hash = "sha256-3Itlv9Jc4xl9pB4WDUwc3f7iP7NHyZ6yr5NZuH8M2Jo=";
+    hash = "sha256-fjm2gqbuLKj6YyAZGgbfWUd+JOM9/Fhvpfz0E+TaqY0=";
   };
 
   nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook ];
diff --git a/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
index d3ebd6a7f29e..2e8c5bd1f603 100644
--- a/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
+++ b/nixpkgs/pkgs/applications/virtualization/OVMF/default.nix
@@ -1,7 +1,6 @@
 { stdenv, nixosTests, lib, edk2, util-linux, nasm, acpica-tools, llvmPackages
 , fetchurl, python3, pexpect, xorriso, qemu, dosfstools, mtools
-, csmSupport ? false, seabios
-, fdSize2MB ? csmSupport
+, fdSize2MB ? false
 , fdSize4MB ? secureBoot
 , secureBoot ? false
 , systemManagementModeRequired ? secureBoot && stdenv.hostPlatform.isx86
@@ -99,7 +98,6 @@ edk2.mkDerivation projectDscPath (finalAttrs: {
     ++ lib.optionals sourceDebug [ "-D SOURCE_DEBUG_ENABLE=TRUE" ]
     ++ lib.optionals secureBoot [ "-D SECURE_BOOT_ENABLE=TRUE" ]
     ++ lib.optionals systemManagementModeRequired [ "-D SMM_REQUIRE=TRUE" ]
-    ++ lib.optionals csmSupport [ "-D CSM_ENABLE" ]
     ++ lib.optionals fdSize2MB ["-D FD_SIZE_2MB"]
     ++ lib.optionals fdSize4MB ["-D FD_SIZE_4MB"]
     ++ lib.optionals httpSupport [ "-D NETWORK_HTTP_ENABLE=TRUE" "-D NETWORK_HTTP_BOOT_ENABLE=TRUE" ]
@@ -115,10 +113,6 @@ edk2.mkDerivation projectDscPath (finalAttrs: {
     unpackFile ${debian-edk-src}
   '';
 
-  postPatch = lib.optionalString csmSupport ''
-    cp ${seabios}/share/seabios/Csm16.bin OvmfPkg/Csm/Csm16/Csm16.bin
-  '';
-
   postConfigure = lib.optionalDrvAttr msVarsTemplate ''
     tr -d '\n' < ${vendorPkKek} | sed \
       -e 's/.*-----BEGIN CERTIFICATE-----/${OvmfPkKek1AppPrefix}:/' \
diff --git a/nixpkgs/pkgs/applications/virtualization/docker/default.nix b/nixpkgs/pkgs/applications/virtualization/docker/default.nix
index 343b00148055..9b6bb0a48be3 100644
--- a/nixpkgs/pkgs/applications/virtualization/docker/default.nix
+++ b/nixpkgs/pkgs/applications/virtualization/docker/default.nix
@@ -120,7 +120,7 @@ rec {
       ];
 
       postPatch = ''
-        patchShebangs hack/make.sh hack/make/
+        patchShebangs hack/make.sh hack/make/ hack/with-go-mod.sh
       '';
 
       buildPhase = ''
@@ -306,4 +306,18 @@ rec {
     tiniRev = "v0.19.0";
     tiniHash = "sha256-ZDKu/8yE5G0RYFJdhgmCdN3obJNyRWv6K/Gd17zc1sI=";
   };
+
+  docker_25 = callPackage dockerGen rec {
+    version = "25.0.3";
+    cliRev = "v${version}";
+    cliHash = "sha256-Jvb0plV1O/UzrcpzN4zH5OulmTVF+p9UQQQ9xqkiObQ=";
+    mobyRev = "v${version}";
+    mobyHash = "sha256-cDlRVdQNzH/X2SJUYHK1QLUHlKQtSyRYCVbz3wPx1ZM=";
+    runcRev = "v1.1.12";
+    runcHash = "sha256-N77CU5XiGYIdwQNPFyluXjseTeaYuNJ//OsEUS0g/v0=";
+    containerdRev = "v1.7.13";
+    containerdHash = "sha256-y3CYDZbA2QjIn1vyq/p1F1pAVxQHi/0a6hGWZCRWzyk=";
+    tiniRev = "v0.19.0";
+    tiniHash = "sha256-ZDKu/8yE5G0RYFJdhgmCdN3obJNyRWv6K/Gd17zc1sI=";
+  };
 }
diff --git a/nixpkgs/pkgs/applications/virtualization/lima/bin.nix b/nixpkgs/pkgs/applications/virtualization/lima/bin.nix
index 2080ac1e7876..e02d41f4ddc3 100644
--- a/nixpkgs/pkgs/applications/virtualization/lima/bin.nix
+++ b/nixpkgs/pkgs/applications/virtualization/lima/bin.nix
@@ -9,31 +9,31 @@
 }:
 
 let
-  version = "0.19.1";
+  version = "0.20.1";
 
   dist = {
     aarch64-darwin = rec {
       archSuffix = "Darwin-arm64";
       url = "https://github.com/lima-vm/lima/releases/download/v${version}/lima-${version}-${archSuffix}.tar.gz";
-      sha256 = "0dfcf3a39782baf1c2ea43cf026f8df0321c671d914c105fbb78de507aa8bda4";
+      sha256 = "a561a457d3620965e017fc750805dd2fb99db1c21b2f14e8f044dfaa042de76f";
     };
 
     x86_64-darwin = rec {
       archSuffix = "Darwin-x86_64";
       url = "https://github.com/lima-vm/lima/releases/download/v${version}/lima-${version}-${archSuffix}.tar.gz";
-      sha256 = "ac8827479f66ef1b288b31f164b22f6433faa14c44ce5bbebe09e6e913582479";
+      sha256 = "c57d2b317e5488c96b642b05146146a5ec94d0407cccba0f31401f52824d404d";
     };
 
     aarch64-linux = rec {
       archSuffix = "Linux-aarch64";
       url = "https://github.com/lima-vm/lima/releases/download/v${version}/lima-${version}-${archSuffix}.tar.gz";
-      sha256 = "c55e57ddbefd9988d0f3676bb873bcc6e0f7b3c3d47a1f07599ee151c5198d96";
+      sha256 = "1d93b5fc0bde1369fce3029c917934ef57514fa23a715f8fb7fb333c1db9ec41";
     };
 
     x86_64-linux = rec {
       archSuffix = "Linux-x86_64";
       url = "https://github.com/lima-vm/lima/releases/download/v${version}/lima-${version}-${archSuffix}.tar.gz";
-      sha256 = "7d18b1716aae14bf98d6ea93a703e8877b0c3142f7ba2e87401d47d5d0fe3ff1";
+      sha256 = "e7093ca1889d2dab436d9f0e6b53d65336f75cf8ebd54f583085eca462a1fc4b";
     };
   };
 in
diff --git a/nixpkgs/pkgs/applications/virtualization/lima/default.nix b/nixpkgs/pkgs/applications/virtualization/lima/default.nix
index 53c6eb55d564..ae6e6d19ee79 100644
--- a/nixpkgs/pkgs/applications/virtualization/lima/default.nix
+++ b/nixpkgs/pkgs/applications/virtualization/lima/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "lima";
-  version = "0.19.1";
+  version = "0.20.1";
 
   src = fetchFromGitHub {
     owner = "lima-vm";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-0EKVWXNxOnz7j+f1ExkwQW69khhazj2Uz7RBAvwSjmQ=";
+    sha256 = "sha256-MeTFATaAGRSaUXmC1fv9/gMFWafvkteKVJS6MHaqt8A=";
   };
 
-  vendorHash = "sha256-SfN4gj5nC9TEVD7aogsUv1um5w5Hvdy1eOSSNjGmnEw=";
+  vendorHash = "sha256-wd7YiEo4Gy2kHF7aCRoNGlbOQUxqQnKqP3znzMqS2PI=";
 
   nativeBuildInputs = [ makeWrapper installShellFiles ]
     ++ lib.optionals stdenv.isDarwin [ xcbuild.xcrun sigtool ];
diff --git a/nixpkgs/pkgs/applications/virtualization/tart/default.nix b/nixpkgs/pkgs/applications/virtualization/tart/default.nix
index 29f84ba691d7..fd46baba6fce 100644
--- a/nixpkgs/pkgs/applications/virtualization/tart/default.nix
+++ b/nixpkgs/pkgs/applications/virtualization/tart/default.nix
@@ -10,11 +10,11 @@
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "tart";
-  version = "2.4.3";
+  version = "2.6.0";
 
   src = fetchurl {
-    url = "https://github.com/cirruslabs/tart/releases/download/${finalAttrs.version}/tart.tar.gz";
-    sha256 = "sha256-cXisvF+W/Uxe3Q0ZRhkvF13UWXxbsIQSzG172lzwruo=";
+      url = "https://github.com/cirruslabs/tart/releases/download/${finalAttrs.version}/tart-arm64.tar.gz";
+      hash = "sha256-QtVqgmjYpLAhFibW1DIVWNYiOjHB1X/YY6zRVB+1soA=";
   };
   sourceRoot = ".";
 
diff --git a/nixpkgs/pkgs/applications/virtualization/xen/4.15.nix b/nixpkgs/pkgs/applications/virtualization/xen/4.15.nix
index 5cc81fc0ab85..d4905088ae1e 100644
--- a/nixpkgs/pkgs/applications/virtualization/xen/4.15.nix
+++ b/nixpkgs/pkgs/applications/virtualization/xen/4.15.nix
@@ -125,7 +125,7 @@ callPackage (import ./generic.nix (rec {
     ++ optional (withSeabios) "--with-system-seabios=${seabios}/share/seabios"
     ++ optional (!withInternalSeabios && !withSeabios) "--disable-seabios"
 
-    ++ optional (withOVMF) "--with-system-ovmf=${OVMF.fd}/FV/OVMF.fd"
+    ++ optional (withOVMF) "--with-system-ovmf=${OVMF.firmware}"
     ++ optional (withInternalOVMF) "--enable-ovmf";
 
   NIX_CFLAGS_COMPILE = toString [
diff --git a/nixpkgs/pkgs/applications/window-managers/eww/default.nix b/nixpkgs/pkgs/applications/window-managers/eww/default.nix
index 0479f1fe259b..b245941fc7d4 100644
--- a/nixpkgs/pkgs/applications/window-managers/eww/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/eww/default.nix
@@ -5,32 +5,26 @@
 , wrapGAppsHook
 , gtk3
 , librsvg
-, withWayland ? false
 , gtk-layer-shell
 , stdenv
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "eww";
-  version = "unstable-2023-08-18";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "elkowar";
     repo = "eww";
-    rev = "a9a35c1804d72ef92e04ee71555bd9e5a08fa17e";
-    hash = "sha256-GEysmNDm+olt1WXHzRwb4ZLifkXmeP5+APAN3b81/Og=";
+    rev = "v${version}";
+    hash = "sha256-HBBz1NDtj2TnDK5ghDLRrAOwHXDZlzclvVscYnmKGck=";
   };
 
-  cargoHash = "sha256-4yeu5AgleZMOLKNynGMd0XuyZxyyZ+RmzNtuJiNPN8g=";
+  cargoHash = "sha256-IirFE714NZmppLjwbWk6fxcmRXCUFzB4oxOxBvmYu5U=";
 
   nativeBuildInputs = [ pkg-config wrapGAppsHook ];
 
-  buildInputs = [ gtk3 librsvg ] ++ lib.optional withWayland gtk-layer-shell;
-
-  buildNoDefaultFeatures = true;
-  buildFeatures = [
-    (if withWayland then "wayland" else "x11")
-  ];
+  buildInputs = [ gtk3 librsvg gtk-layer-shell ];
 
   cargoBuildFlags = [ "--bin" "eww" ];
 
@@ -43,7 +37,7 @@ rustPlatform.buildRustPackage rec {
     description = "ElKowars wacky widgets";
     homepage = "https://github.com/elkowar/eww";
     license = licenses.mit;
-    maintainers = with maintainers; [ figsoda lom ];
+    maintainers = with maintainers; [ figsoda lom coffeeispower ];
     mainProgram = "eww";
     broken = stdenv.isDarwin;
   };
diff --git a/nixpkgs/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix b/nixpkgs/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
index 5f9cedd9e05e..cea8c7c414cf 100644
--- a/nixpkgs/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
+++ b/nixpkgs/pkgs/applications/window-managers/hyprwm/hyprshade/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "hyprshade";
-  version = "3.0.2";
+  version = "3.0.3";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "loqusion";
     repo = "hyprshade";
     rev = "refs/tags/${version}";
-    hash = "sha256-E5FNVzmzxzqhIZ4i8PwiKB8q4LwpsV961Bc77kSym8A=";
+    hash = "sha256-vX1Cc170ifevn1aji5s0MI7G0zktPuvSpAbYpGPMudA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
index 06c3de8cd3fa..74635d158829 100644
--- a/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
+++ b/nixpkgs/pkgs/applications/window-managers/i3/status-rust.nix
@@ -16,16 +16,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "i3status-rust";
-  version = "0.32.3";
+  version = "0.33.0";
 
   src = fetchFromGitHub {
     owner = "greshake";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-CldVak1BQ4VhRt24hHdog5O3crkQBZBkRWNT7uYUw4Y=";
+    hash = "sha256-DIEWmXqs4yNIJsBBhH7khOY6RJQ9qRoSTIHN/aeBuA4=";
   };
 
-  cargoHash = "sha256-gWBmzpgZcsO4u8kXSqtr4FIYvshXpxWbECg/tcyl9Ok=";
+  cargoHash = "sha256-5946aMSndBkXCY0jjnhPc5x9wFOC1zjJNkFkMFFOuxo=";
 
   nativeBuildInputs = [ pkg-config makeWrapper ];
 
diff --git a/nixpkgs/pkgs/build-support/docker/default.nix b/nixpkgs/pkgs/build-support/docker/default.nix
index 6c13a379f934..0583f522bda3 100644
--- a/nixpkgs/pkgs/build-support/docker/default.nix
+++ b/nixpkgs/pkgs/build-support/docker/default.nix
@@ -64,6 +64,8 @@ let
       # https://github.com/NixOS/nix/blob/9348f9291e5d9e4ba3c4347ea1b235640f54fd79/src/libutil/util.cc#L478
       export USER=nobody
       ${buildPackages.nix}/bin/nix-store --load-db < ${closureInfo {rootPaths = contentsList;}}/registration
+      # Reset registration times to make the image reproducible
+      ${buildPackages.sqlite}/bin/sqlite3 nix/var/nix/db/db.sqlite "UPDATE ValidPaths SET registrationTime = ''${SOURCE_DATE_EPOCH}"
 
       mkdir -p nix/var/nix/gcroots/docker/
       for i in ${lib.concatStringsSep " " contentsList}; do
@@ -890,41 +892,26 @@ rec {
     })
   );
 
+  # Arguments are documented in ../../../doc/build-helpers/images/dockertools.section.md
   streamLayeredImage = lib.makeOverridable (
     {
-      # Image Name
       name
-    , # Image tag, the Nix's output hash will be used if null
-      tag ? null
-    , # Parent image, to append to.
-      fromImage ? null
-    , # Files to put on the image (a nix store path or list of paths).
-      contents ? [ ]
-    , # Docker config; e.g. what command to run on the container.
-      config ? { }
-    , # Image architecture, defaults to the architecture of the `hostPlatform` when unset
-      architecture ? defaultArchitecture
-    , # Time of creation of the image. Passing "now" will make the
-      # created date be the time of building.
-      created ? "1970-01-01T00:00:01Z"
-    , # Optional bash script to run on the files prior to fixturizing the layer.
-      extraCommands ? ""
-    , # Optional bash script to run inside fakeroot environment.
-      # Could be used for changing ownership of files in customisation layer.
-      fakeRootCommands ? ""
-    , # Whether to run fakeRootCommands in fakechroot as well, so that they
-      # appear to run inside the image, but have access to the normal Nix store.
-      # Perhaps this could be enabled on by default on pkgs.stdenv.buildPlatform.isLinux
-      enableFakechroot ? false
-    , # We pick 100 to ensure there is plenty of room for extension. I
-      # believe the actual maximum is 128.
-      maxLayers ? 100
-    , # Whether to include store paths in the image. You generally want to leave
-      # this on, but tooling may disable this to insert the store paths more
-      # efficiently via other means, such as bind mounting the host store.
-      includeStorePaths ? true
-    , # Passthru arguments for the underlying derivation.
-      passthru ? {}
+    , tag ? null
+    , fromImage ? null
+    , contents ? [ ]
+    , config ? { }
+    , architecture ? defaultArchitecture
+    , created ? "1970-01-01T00:00:01Z"
+    , uid ? 0
+    , gid ? 0
+    , uname ? "root"
+    , gname ? "root"
+    , maxLayers ? 100
+    , extraCommands ? ""
+    , fakeRootCommands ? ""
+    , enableFakechroot ? false
+    , includeStorePaths ? true
+    , passthru ? {}
     ,
     }:
       assert
@@ -1007,7 +994,7 @@ rec {
 
         conf = runCommand "${baseName}-conf.json"
           {
-            inherit fromImage maxLayers created;
+            inherit fromImage maxLayers created uid gid uname gname;
             imageName = lib.toLower name;
             preferLocalBuild = true;
             passthru.imageTag =
@@ -1086,14 +1073,22 @@ rec {
               "store_layers": $store_layers[0],
               "customisation_layer", $customisation_layer,
               "repo_tag": $repo_tag,
-              "created": $created
+              "created": $created,
+              "uid": $uid,
+              "gid": $gid,
+              "uname": $uname,
+              "gname": $gname
             }
             ' --arg store_dir "${storeDir}" \
               --argjson from_image ${if fromImage == null then "null" else "'\"${fromImage}\"'"} \
               --slurpfile store_layers store_layers.json \
               --arg customisation_layer ${customisationLayer} \
               --arg repo_tag "$imageName:$imageTag" \
-              --arg created "$created" |
+              --arg created "$created" \
+              --arg uid "$uid" \
+              --arg gid "$gid" \
+              --arg uname "$uname" \
+              --arg gname "$gname" |
             tee $out
         '';
 
diff --git a/nixpkgs/pkgs/build-support/docker/stream_layered_image.py b/nixpkgs/pkgs/build-support/docker/stream_layered_image.py
index d7c63eb43a78..98ec2358cef9 100644
--- a/nixpkgs/pkgs/build-support/docker/stream_layered_image.py
+++ b/nixpkgs/pkgs/build-support/docker/stream_layered_image.py
@@ -9,6 +9,8 @@ image as an uncompressed tarball to stdout:
   the fields with the same name on the image spec [2].
 * "created" can be "now".
 * "created" is also used as mtime for files added to the image.
+* "uid", "gid", "uname", "gname" is the file ownership, for example,
+  0, 0, "root", "root".
 * "store_layers" is a list of layers in ascending order, where each
   layer is the list of store paths to include in that layer.
 
@@ -45,7 +47,7 @@ from datetime import datetime, timezone
 from collections import namedtuple
 
 
-def archive_paths_to(obj, paths, mtime):
+def archive_paths_to(obj, paths, mtime, uid, gid, uname, gname):
     """
     Writes the given store paths as a tar file to the given stream.
 
@@ -61,14 +63,14 @@ def archive_paths_to(obj, paths, mtime):
 
     def apply_filters(ti):
         ti.mtime = mtime
-        ti.uid = 0
-        ti.gid = 0
-        ti.uname = "root"
-        ti.gname = "root"
+        ti.uid = uid
+        ti.gid = gid
+        ti.uname = uname
+        ti.gname = gname
         return ti
 
     def nix_root(ti):
-        ti.mode = 0o0555  # r-xr-xr-x
+        ti.mode = 0o0755  # rwxr-xr-x
         return ti
 
     def dir(path):
@@ -208,7 +210,7 @@ def overlay_base_config(from_image, final_config):
     return final_config
 
 
-def add_layer_dir(tar, paths, store_dir, mtime):
+def add_layer_dir(tar, paths, store_dir, mtime, uid, gid, uname, gname):
     """
     Appends given store paths to a TarFile object as a new layer.
 
@@ -231,7 +233,7 @@ def add_layer_dir(tar, paths, store_dir, mtime):
     archive_paths_to(
         extract_checksum,
         paths,
-        mtime=mtime,
+        mtime, uid, gid, uname, gname
     )
     (checksum, size) = extract_checksum.extract()
 
@@ -247,7 +249,7 @@ def add_layer_dir(tar, paths, store_dir, mtime):
             archive_paths_to(
                 write,
                 paths,
-                mtime=mtime,
+                mtime, uid, gid, uname, gname
             )
             write.close()
 
@@ -324,6 +326,10 @@ def main():
       else datetime.fromisoformat(conf["created"])
     )
     mtime = int(created.timestamp())
+    uid = int(conf["uid"])
+    gid = int(conf["gid"])
+    uname = conf["uname"]
+    gname = conf["gname"]
     store_dir = conf["store_dir"]
 
     from_image = load_from_image(conf["from_image"])
@@ -336,7 +342,8 @@ def main():
         for num, store_layer in enumerate(conf["store_layers"], start=start):
             print("Creating layer", num, "from paths:", store_layer,
                   file=sys.stderr)
-            info = add_layer_dir(tar, store_layer, store_dir, mtime=mtime)
+            info = add_layer_dir(tar, store_layer, store_dir,
+                                 mtime, uid, gid, uname, gname)
             layers.append(info)
 
         print("Creating layer", len(layers) + 1, "with customisation...",
diff --git a/nixpkgs/pkgs/build-support/php/hooks/composer-install-hook.sh b/nixpkgs/pkgs/build-support/php/hooks/composer-install-hook.sh
index 6e7fb5d7503b..a84a9e3aa862 100644
--- a/nixpkgs/pkgs/build-support/php/hooks/composer-install-hook.sh
+++ b/nixpkgs/pkgs/build-support/php/hooks/composer-install-hook.sh
@@ -9,6 +9,8 @@ preBuildHooks+=(composerInstallBuildHook)
 preCheckHooks+=(composerInstallCheckHook)
 preInstallHooks+=(composerInstallInstallHook)
 
+source @phpScriptUtils@
+
 composerInstallConfigureHook() {
     echo "Executing composerInstallConfigureHook"
 
@@ -22,6 +24,8 @@ composerInstallConfigureHook() {
     fi
 
     if [[ ! -f "composer.lock" ]]; then
+        setComposeRootVersion
+
         composer \
             --no-ansi \
             --no-install \
@@ -75,6 +79,8 @@ composerInstallConfigureHook() {
 composerInstallBuildHook() {
     echo "Executing composerInstallBuildHook"
 
+    setComposeRootVersion
+
     # Since this file cannot be generated in the composer-repository-hook.sh
     # because the file contains hardcoded nix store paths, we generate it here.
     composer-local-repo-plugin --no-ansi build-local-repo -m "${composerRepository}" .
@@ -90,7 +96,6 @@ composerInstallBuildHook() {
 
     # Since the composer.json file has been modified in the previous step, the
     # composer.lock file needs to be updated.
-    COMPOSER_ROOT_VERSION="${version}" \
     composer \
       --lock \
       --no-ansi \
@@ -134,11 +139,10 @@ composerInstallCheckHook() {
 composerInstallInstallHook() {
     echo "Executing composerInstallInstallHook"
 
+    setComposeRootVersion
+
     # Finally, run `composer install` to install the dependencies and generate
     # the autoloader.
-    # The COMPOSER_ROOT_VERSION environment variable is needed only for
-    # vimeo/psalm.
-    COMPOSER_ROOT_VERSION="${version}" \
     composer \
       --no-ansi \
       --no-interaction \
diff --git a/nixpkgs/pkgs/build-support/php/hooks/composer-repository-hook.sh b/nixpkgs/pkgs/build-support/php/hooks/composer-repository-hook.sh
index 03783d9d639c..bb3017bd98c9 100644
--- a/nixpkgs/pkgs/build-support/php/hooks/composer-repository-hook.sh
+++ b/nixpkgs/pkgs/build-support/php/hooks/composer-repository-hook.sh
@@ -10,6 +10,8 @@ preBuildHooks+=(composerRepositoryBuildHook)
 preCheckHooks+=(composerRepositoryCheckHook)
 preInstallHooks+=(composerRepositoryInstallHook)
 
+source @phpScriptUtils@
+
 composerRepositoryConfigureHook() {
     echo "Executing composerRepositoryConfigureHook"
 
@@ -18,7 +20,8 @@ composerRepositoryConfigureHook() {
     fi
 
     if [[ ! -f "composer.lock" ]]; then
-        COMPOSER_ROOT_VERSION="${version}" \
+        setComposeRootVersion
+
         composer \
             --no-ansi \
             --no-install \
@@ -55,6 +58,8 @@ composerRepositoryBuildHook() {
 
     mkdir -p repository
 
+    setComposeRootVersion
+
     # Build the local composer repository
     # The command 'build-local-repo' is provided by the Composer plugin
     # nix-community/composer-local-repo-plugin.
diff --git a/nixpkgs/pkgs/build-support/php/hooks/default.nix b/nixpkgs/pkgs/build-support/php/hooks/default.nix
index 240ec640723a..98e81c88f9e9 100644
--- a/nixpkgs/pkgs/build-support/php/hooks/default.nix
+++ b/nixpkgs/pkgs/build-support/php/hooks/default.nix
@@ -2,18 +2,28 @@
 , makeSetupHook
 , diffutils
 , jq
+, writeShellApplication
 , moreutils
 , makeBinaryWrapper
 , cacert
 , buildPackages
 }:
 
+let
+  php-script-utils = writeShellApplication {
+    name = "php-script-utils";
+    runtimeInputs = [ jq ];
+    text = builtins.readFile ./php-script-utils.bash;
+  };
+in
 {
   composerRepositoryHook = makeSetupHook
     {
       name = "composer-repository-hook.sh";
       propagatedBuildInputs = [ jq moreutils cacert ];
-      substitutions = { };
+      substitutions = {
+        phpScriptUtils = lib.getExe php-script-utils;
+      };
     } ./composer-repository-hook.sh;
 
   composerInstallHook = makeSetupHook
@@ -24,6 +34,7 @@
         # Specify the stdenv's `diff` by abspath to ensure that the user's build
         # inputs do not cause us to find the wrong `diff`.
         cmp = "${lib.getBin buildPackages.diffutils}/bin/cmp";
+        phpScriptUtils = lib.getExe php-script-utils;
       };
     } ./composer-install-hook.sh;
 }
diff --git a/nixpkgs/pkgs/build-support/php/hooks/php-script-utils.bash b/nixpkgs/pkgs/build-support/php/hooks/php-script-utils.bash
new file mode 100644
index 000000000000..163d9306f5f4
--- /dev/null
+++ b/nixpkgs/pkgs/build-support/php/hooks/php-script-utils.bash
@@ -0,0 +1,12 @@
+declare version
+
+setComposeRootVersion() {
+    set +e # Disable exit on error
+
+    if [[ -v version ]]; then
+        echo -e "\e[32mSetting COMPOSER_ROOT_VERSION to $version\e[0m"
+        export COMPOSER_ROOT_VERSION=$version
+    fi
+
+    set -e
+}
diff --git a/nixpkgs/pkgs/build-support/substitute/substitute.nix b/nixpkgs/pkgs/build-support/substitute/substitute.nix
index 7f0332334585..37233a306840 100644
--- a/nixpkgs/pkgs/build-support/substitute/substitute.nix
+++ b/nixpkgs/pkgs/build-support/substitute/substitute.nix
@@ -1,14 +1,58 @@
-{ stdenvNoCC }:
+{ lib, stdenvNoCC }:
+/*
+This is a wrapper around `substitute` in the stdenv.
 
+Attribute arguments:
+- `name` (optional): The name of the resulting derivation
+- `src`: The path to the file to substitute
+- `substitutions`: The list of substitution arguments to pass
+  See https://nixos.org/manual/nixpkgs/stable/#fun-substitute
+- `replacements`: Deprecated version of `substitutions`
+  that doesn't support spaces in arguments.
+
+Example:
+
+```nix
+{ substitute }:
+substitute {
+  src = ./greeting.txt;
+  substitutions = [
+    "--replace"
+    "world"
+    "paul"
+  ];
+}
+```
+
+See ../../test/substitute for tests
+*/
 args:
 
-# This is a wrapper around `substitute` in the stdenv.
-# The `replacements` attribute should be a list of list of arguments
-# to `substitute`, such as `[ "--replace" "sourcetext" "replacementtext" ]`
-stdenvNoCC.mkDerivation ({
+let
   name = if args ? name then args.name else baseNameOf (toString args.src);
+  deprecationReplacement = lib.pipe args.replacements [
+    lib.toList
+    (map (lib.splitString " "))
+    lib.concatLists
+    (lib.concatMapStringsSep " " lib.strings.escapeNixString)
+  ];
+  optionalDeprecationWarning =
+    # substitutions is only available starting 24.05.
+    # TODO: Remove support for replacements sometime after the next release
+    lib.warnIf (args ? replacements && lib.isInOldestRelease 2405) ''
+      pkgs.substitute: For "${name}", `replacements` is used, which is deprecated since it doesn't support arguments with spaces. Use `substitutions` instead:
+        substitutions = [ ${deprecationReplacement} ];'';
+in
+optionalDeprecationWarning
+stdenvNoCC.mkDerivation ({
+  inherit name;
   builder = ./substitute.sh;
   inherit (args) src;
   preferLocalBuild = true;
   allowSubstitutes = false;
-} // args // { replacements = args.replacements; })
+} // args // lib.optionalAttrs (args ? substitutions) {
+  substitutions =
+    assert lib.assertMsg (lib.isList args.substitutions) ''
+      pkgs.substitute: For "${name}", `substitutions` is passed, which is expected to be a list, but it's a ${builtins.typeOf args.substitutions} instead.'';
+    lib.escapeShellArgs args.substitutions;
+})
diff --git a/nixpkgs/pkgs/build-support/substitute/substitute.sh b/nixpkgs/pkgs/build-support/substitute/substitute.sh
index dbac275a80ed..d50a82446639 100644
--- a/nixpkgs/pkgs/build-support/substitute/substitute.sh
+++ b/nixpkgs/pkgs/build-support/substitute/substitute.sh
@@ -8,7 +8,13 @@ if test -n "$dir"; then
     mkdir -p $out/$dir
 fi
 
-substitute $src $target $replacements
+substitutionsList=($replacements)
+
+if [[ -v substitutions ]]; then
+    eval "substitutionsList+=($substitutions)"
+fi
+
+substitute $src $target "${substitutionsList[@]}"
 
 if test -n "$isExecutable"; then
     chmod +x $target
diff --git a/nixpkgs/pkgs/build-support/trivial-builders/default.nix b/nixpkgs/pkgs/build-support/trivial-builders/default.nix
index a38231bdcaa3..cecf3f5eae84 100644
--- a/nixpkgs/pkgs/build-support/trivial-builders/default.nix
+++ b/nixpkgs/pkgs/build-support/trivial-builders/default.nix
@@ -904,22 +904,23 @@ rec {
         else throw "applyPatches: please supply a `name` argument because a default name can only be computed when the `src` is a path or is an attribute set with a `name` attribute."
       ) + "-patched"
     , patches ? [ ]
+    , prePatch ? ""
     , postPatch ? ""
     , ...
     }@args:
-    if patches == [ ] && postPatch == ""
+    if patches == [ ] && prePatch == "" && postPatch == ""
     then src # nothing to do, so use original src to avoid additional drv
     else stdenvNoCC.mkDerivation
-      {
-        inherit name src patches postPatch;
+      ({
+        inherit name src patches prePatch postPatch;
         preferLocalBuild = true;
         allowSubstitutes = false;
         phases = "unpackPhase patchPhase installPhase";
         installPhase = "cp -R ./ $out";
       }
-    # Carry `meta` information from the underlying `src` if present.
-    // (optionalAttrs (src?meta) { inherit (src) meta; })
-    // (removeAttrs args [ "src" "name" "patches" "postPatch" ]);
+      # Carry `meta` information from the underlying `src` if present.
+      // (optionalAttrs (src?meta) { inherit (src) meta; })
+      // (removeAttrs args [ "src" "name" "patches" "prePatch" "postPatch" ]));
 
   /* An immutable file in the store with a length of 0 bytes. */
   emptyFile = runCommand "empty-file"
diff --git a/nixpkgs/pkgs/by-name/aa/aaaaxy/package.nix b/nixpkgs/pkgs/by-name/aa/aaaaxy/package.nix
index 67d533e5f12b..d0a6585fcd2e 100644
--- a/nixpkgs/pkgs/by-name/aa/aaaaxy/package.nix
+++ b/nixpkgs/pkgs/by-name/aa/aaaaxy/package.nix
@@ -20,17 +20,17 @@
 
 buildGoModule rec {
   pname = "aaaaxy";
-  version = "1.5.6";
+  version = "1.5.23";
 
   src = fetchFromGitHub {
     owner = "divVerent";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-Tban8i0/dALjxN6wPs/GVh8ZRLW2pXezhhGNwXSDkL4=";
+    hash = "sha256-AB2MBXNWfWo8X5QTt2w8nrSG3v9qpIkMB7BUUKQtQEk=";
     fetchSubmodules = true;
   };
 
-  vendorHash = "sha256-FCJd+nXETuVqTiQolGxl3Q/ZE8/wrvZMaNXEKpyEVP4=";
+  vendorHash = "sha256-ECKzKGMQjmZFHn/lzVzijpXlFcAKuUsiD/HVz59clAc=";
 
   buildInputs = [
     alsa-lib
diff --git a/nixpkgs/pkgs/by-name/ad/adwsteamgtk/package.nix b/nixpkgs/pkgs/by-name/ad/adwsteamgtk/package.nix
new file mode 100644
index 000000000000..f40843624fa8
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ad/adwsteamgtk/package.nix
@@ -0,0 +1,52 @@
+{ blueprint-compiler
+, desktop-file-utils
+, fetchFromGitHub
+, lib
+, libadwaita
+, libportal-gtk4
+, meson
+, ninja
+, python3Packages
+, wrapGAppsHook4
+}:
+
+python3Packages.buildPythonApplication rec {
+  pname = "adwsteamgtk";
+  version = "0.6.9";
+  # built with meson, not a python format
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "Foldex";
+    repo = "AdwSteamGtk";
+    rev = "v${version}";
+    hash = "sha256-aHJxgSb7oZTRrfFVYdLimwhSGzdRjGf7dGTRA+ANQiM=";
+  };
+
+  buildInputs = [
+    libadwaita
+    libportal-gtk4
+  ];
+
+  nativeBuildInputs = [
+    blueprint-compiler
+    desktop-file-utils
+    meson
+    ninja
+    wrapGAppsHook4
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    packaging
+    pygobject3
+  ];
+
+  meta = {
+    description = "A simple Gtk wrapper for Adwaita-for-Steam";
+    homepage = "https://github.com/Foldex/AdwSteamGtk";
+    license = lib.licenses.gpl3Plus;
+    maintainers = [ lib.maintainers.reedrw ];
+    mainProgram = "adwaita-steam-gtk";
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/an/ansel/package.nix b/nixpkgs/pkgs/by-name/an/ansel/package.nix
index f4ee5d5ff048..82cafc40bd74 100644
--- a/nixpkgs/pkgs/by-name/an/ansel/package.nix
+++ b/nixpkgs/pkgs/by-name/an/ansel/package.nix
@@ -77,13 +77,13 @@ let
 in
 stdenv.mkDerivation {
   pname = "ansel";
-  version = "unstable-2024-01-05";
+  version = "unstable-2024-02-23";
 
   src = fetchFromGitHub {
     owner = "aurelienpierreeng";
     repo = "ansel";
-    rev = "e2c4a0a60cd80f741dd3d3c6ab72be9ac11234fb";
-    hash = "sha256-Kg020MHy9fn1drCk+66f25twqczvD/5evutDODqOjYM=";
+    rev = "61eb388760d130476415a51e19f94b199a1088fe";
+    hash = "sha256-68EX5rnOlBHXZnMlXjQk+ZXFIwR5ZFc1Wyg8EzCKaUg=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/by-name/ap/apt-mirror/package.nix b/nixpkgs/pkgs/by-name/ap/apt-mirror/package.nix
new file mode 100644
index 000000000000..46aed818fe34
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ap/apt-mirror/package.nix
@@ -0,0 +1,46 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, perl
+, wget
+, makeWrapper
+, nix-update-script
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "apt-mirror";
+  version = "0.5.4";
+
+  src = fetchFromGitHub {
+    owner = "apt-mirror";
+    repo = "apt-mirror";
+    rev = finalAttrs.version;
+    hash = "sha256-GNsyXP/O56Y+8QhoSfMm+ig5lK/K3Cm085jxRt9ZRmI=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ perl ];
+
+  makeFlags = [
+    "DESTDIR=$(out)"
+    "PREFIX=''"
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/apt-mirror \
+      --prefix PATH : ${lib.makeBinPath [wget]}
+  '';
+
+  passthru.updateScript = nix-update-script {};
+
+  meta = with lib; {
+    description = "A tool that provides the ability to mirror any parts of apt sources";
+    homepage = "https://github.com/apt-mirror/apt-mirror";
+    changelog = "https://github.com/apt-mirror/apt-mirror/blob/${finalAttrs.src.rev}/CHANGELOG";
+    license = licenses.gpl2Only;
+    maintainers = with maintainers; [ arthsmn ];
+    mainProgram = "apt-mirror";
+    platforms = platforms.all;
+  };
+})
diff --git a/nixpkgs/pkgs/by-name/as/ast-grep/package.nix b/nixpkgs/pkgs/by-name/as/ast-grep/package.nix
index 3126b11fa373..9a80ef6751f2 100644
--- a/nixpkgs/pkgs/by-name/as/ast-grep/package.nix
+++ b/nixpkgs/pkgs/by-name/as/ast-grep/package.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ast-grep";
-  version = "0.19.2";
+  version = "0.19.3";
 
   src = fetchFromGitHub {
     owner = "ast-grep";
     repo = "ast-grep";
     rev = version;
-    hash = "sha256-u9VoLGf8Qfy6wtU+rWZvIxOj1Q3RUKjE+LKISKtTKfA=";
+    hash = "sha256-nqKDBRH2/YsSmirxJ84BgUTLfgPzZ/EQxqy6Fa7Mfxs=";
   };
 
-  cargoHash = "sha256-IPZ0R7SMdZi/h51lInXhRZFBAyEu/D8fwnUUkWV9Ivg=";
+  cargoHash = "sha256-48ZVbRJkpMO+kJE5Kz96McjXhMtu4TzzjfyYdggNWkQ=";
 
   # Work around https://github.com/NixOS/nixpkgs/issues/166205.
   env = lib.optionalAttrs stdenv.cc.isClang {
diff --git a/nixpkgs/pkgs/by-name/at/atuin/package.nix b/nixpkgs/pkgs/by-name/at/atuin/package.nix
index 88e9609075fe..7f4321233125 100644
--- a/nixpkgs/pkgs/by-name/at/atuin/package.nix
+++ b/nixpkgs/pkgs/by-name/at/atuin/package.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, fetchpatch
 , installShellFiles
 , rustPlatform
 , libiconv
@@ -11,29 +10,20 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "atuin";
-  version = "18.0.1";
+  version = "18.0.2";
 
   src = fetchFromGitHub {
     owner = "atuinsh";
     repo = "atuin";
     rev = "v${version}";
-    hash = "sha256-fuVSn1vhKn2+Tw5f6zBYHFW3QSL4eisZ6d5pxsj5hh4=";
+    hash = "sha256-1ZNp6e2ZjVRU0w9m8YDWOHApu8vRYlcg6MJw03ZV49M=";
   };
 
-  patches = [
-    # atuin with bash-preexec wasn't recording history properly after searching,
-    # backport recent fix until next release
-    (fetchpatch {
-      url = "https://github.com/atuinsh/atuin/commit/cb11af25afddbad552d337a9c82e74ac4302feca.patch";
-      sha256 = "sha256-cG99aLKs5msatT7vXiX9Rn5xur2WUjQ/U33nOxuon7I=";
-    })
-  ];
-
   # TODO: unify this to one hash because updater do not support this
   cargoHash =
     if stdenv.isLinux
-    then "sha256-lHWgsVnjSeBmd7O4Fn0pUtTn4XbkBOAouaRHRozil50="
-    else "sha256-LxfpllzvgUu7ZuD97n3W+el3bdOt5QGXzJbDQ0w8seo=";
+    then "sha256-1yGv6Tmp7QhxIu3GNyRzK1i9Ghcil30+e8gTvyeKiZs="
+    else "sha256-+QdtQuXTk7Aw7xwelVDp/0T7FAYOnhDqSjazGemzSLw=";
 
   # atuin's default features include 'check-updates', which do not make sense
   # for distribution builds. List all other default features.
diff --git a/nixpkgs/pkgs/by-name/au/audiobookshelf/source.json b/nixpkgs/pkgs/by-name/au/audiobookshelf/source.json
index 74a387587170..7dced826db6d 100644
--- a/nixpkgs/pkgs/by-name/au/audiobookshelf/source.json
+++ b/nixpkgs/pkgs/by-name/au/audiobookshelf/source.json
@@ -1,9 +1,9 @@
 {
   "owner": "advplyr",
   "repo": "audiobookshelf",
-  "rev": "90f4833c9e0957f08799af15966d1909516b335e",
-  "hash": "sha256-m+CwUV3Bu9sHvRKCA1vFXYYRx48bxZ8N3BornO1tLQ0=",
-  "version": "2.7.2",
-  "depsHash": "sha256-1623oXtkOp43xQvHI3GbJpEQLvgr5WD5FpfNO+d0RR8=",
-  "clientDepsHash": "sha256-ugf9C/L5aBTO7gCy561kV06Ihb/mg/ZW916NKngIYXI="
+  "rev": "85fecbd1b9fc424d8bfd1b63cbae45b8b23a7d34",
+  "hash": "sha256-GWaaoVa1UJptbYAZ99LbrzfKEksSqK0GSsl3Vh2xKKs=",
+  "version": "2.8.0",
+  "depsHash": "sha256-vznd+ZKn0nx0Q7/lsMfWRUZUsK2LtxQor/3C4fQc0Ss=",
+  "clientDepsHash": "sha256-oqINZO4v5WeRRiLQnnChrnK8VeIzLg1MRhG/gEjkv58="
 }
diff --git a/nixpkgs/pkgs/by-name/au/audiobookshelf/update.nu b/nixpkgs/pkgs/by-name/au/audiobookshelf/update.nu
index 25166c9cf1d1..4aef2276e4f0 100755
--- a/nixpkgs/pkgs/by-name/au/audiobookshelf/update.nu
+++ b/nixpkgs/pkgs/by-name/au/audiobookshelf/update.nu
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i nu -p nushell common-updater-scripts prefetch-npm-deps
+#!nix-shell -i nu -p nushell common-updater-scripts prefetch-npm-deps nix-prefetch-github
 
 def main [] {
   let sourceFile = $"(pwd)/pkgs/by-name/au/audiobookshelf/source.json"
diff --git a/nixpkgs/pkgs/by-name/be/bemoji/package.nix b/nixpkgs/pkgs/by-name/be/bemoji/package.nix
index 1747d8934c26..37e2155ca1d3 100644
--- a/nixpkgs/pkgs/by-name/be/bemoji/package.nix
+++ b/nixpkgs/pkgs/by-name/be/bemoji/package.nix
@@ -5,13 +5,13 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "bemoji";
-  version = "0.3.0";
+  version = "0.4.0";
 
   src = fetchFromGitHub {
     owner = "marty-oehme";
     repo = "bemoji";
     rev = "refs/tags/v${version}";
-    hash = "sha256-DhsJX5HlyTh0QLlHy1OwyaYg4vxWpBSsF71D9fxqPWE=";
+    hash = "sha256-HXwho0vRI9ZrUuDMicMH4ZNExY+zJfbrne2LMQmmHww=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/by-name/bi/bitmagnet/package.nix b/nixpkgs/pkgs/by-name/bi/bitmagnet/package.nix
index f09920f77785..3c8f5b6c7605 100644
--- a/nixpkgs/pkgs/by-name/bi/bitmagnet/package.nix
+++ b/nixpkgs/pkgs/by-name/bi/bitmagnet/package.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "bitmagnet";
-  version = "0.6.2";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "bitmagnet-io";
     repo = "bitmagnet";
     rev = "v${version}";
-    hash = "sha256-17jRktEqBCAXiddx8FnqHg3+c/03nqKHC8BQc9AhQA0=";
+    hash = "sha256-lomTfG6Fo4IywI8VMRvv4mBNRxLCq6IQGIuaR61UwOE=";
   };
 
-  vendorHash = "sha256-YfsSz72CeHdrh5610Ilo1NYxlCT993hxWRWh0OsvEQc=";
+  vendorHash = "sha256-tKU4GoaEwwdbpWjojx+Z/mWxXKjceJPYRg5UTpYzad4=";
 
   ldflags = [ "-s" "-w" ];
 
diff --git a/nixpkgs/pkgs/tools/security/bitwarden/cli.nix b/nixpkgs/pkgs/by-name/bi/bitwarden-cli/package.nix
index 68abb6385319..68abb6385319 100644
--- a/nixpkgs/pkgs/tools/security/bitwarden/cli.nix
+++ b/nixpkgs/pkgs/by-name/bi/bitwarden-cli/package.nix
diff --git a/nixpkgs/pkgs/tools/security/bitwarden/default.nix b/nixpkgs/pkgs/by-name/bi/bitwarden-desktop/package.nix
index 5ed43dc6b3b6..c2d3f04db7d5 100644
--- a/nixpkgs/pkgs/tools/security/bitwarden/default.nix
+++ b/nixpkgs/pkgs/by-name/bi/bitwarden-desktop/package.nix
@@ -29,7 +29,7 @@ let
   icon = "bitwarden";
   electron = electron_28;
 in buildNpmPackage rec {
-  pname = "bitwarden";
+  pname = "bitwarden-desktop";
   version = "2024.2.0";
 
   src = fetchFromGitHub {
@@ -41,8 +41,7 @@ in buildNpmPackage rec {
 
   patches = [
     (fetchpatch2 {
-      # https://github.com/bitwarden/clients/pull/7508
-      url = "https://github.com/amarshall/bitwarden-clients/commit/e85fa4ef610d9dd05bd22a9b93d54b0c7901776d.patch";
+      url = "https://github.com/bitwarden/clients/commit/746bf0a4745423b9e70c2c54dcf76a95ffb62e11.patch";
       hash = "sha256-P9MTsiNbAb2kKo/PasIm9kGm0lQjuVUxAJ3Fh1DfpzY=";
     })
   ];
@@ -68,7 +67,7 @@ in buildNpmPackage rec {
       patches;
     patchFlags = [ "-p4" ];
     sourceRoot = "${src.name}/${cargoRoot}";
-    hash = "sha256-KJUz5hvdsurnohUWRZedXvuWMnLtR0dcdTeHtJGrZBs=";
+    hash = "sha256-LjwtOmIJlwtOiy36Y0pP+jJEwfmCGTN4RhqgmD3Yj6E=";
   };
   cargoRoot = "apps/desktop/desktop_native";
 
diff --git a/nixpkgs/pkgs/by-name/bp/bpftop/package.nix b/nixpkgs/pkgs/by-name/bp/bpftop/package.nix
new file mode 100644
index 000000000000..cd6d9e605a37
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/bp/bpftop/package.nix
@@ -0,0 +1,43 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, elfutils
+, zlib
+, libbpf
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "bpftop";
+  version = "0.2.2";
+
+  src = fetchFromGitHub {
+    owner = "Netflix";
+    repo = "bpftop";
+    rev = "v${version}";
+    hash = "sha256-1Wgfe+M1s3hxcN9g1KiBeZycdgpMiHy5FWlE0jlNq/U=";
+  };
+
+  cargoHash = "sha256-CrAH3B3dCg3GsxvRrVp/jx3YSpmEg4/jyNuXUO/zeq0=";
+
+  buildInputs = [
+    elfutils
+    libbpf
+    zlib
+  ];
+
+  nativeBuildInputs = [
+    pkg-config
+  ];
+
+  meta = {
+    description = "A dynamic real-time view of running eBPF programs";
+    homepage = "https://github.com/Netflix/bpftop";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [
+      _0x4A6F
+      mfrw
+    ];
+    mainProgram = "bpftop";
+  };
+}
diff --git a/nixpkgs/pkgs/games/itch/butler.nix b/nixpkgs/pkgs/by-name/bu/butler/package.nix
index cbd6b8aef936..cbd6b8aef936 100644
--- a/nixpkgs/pkgs/games/itch/butler.nix
+++ b/nixpkgs/pkgs/by-name/bu/butler/package.nix
diff --git a/nixpkgs/pkgs/by-name/by/byobu/package.nix b/nixpkgs/pkgs/by-name/by/byobu/package.nix
new file mode 100644
index 000000000000..bf6896f3153a
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/by/byobu/package.nix
@@ -0,0 +1,98 @@
+{ lib
+, autoreconfHook
+, bc
+, fetchFromGitHub
+, gettext
+, makeWrapper
+, perl
+, python3
+, screen
+, stdenv
+, vim
+, tmux
+}:
+
+let
+  pythonEnv = python3.withPackages (ps: with ps; [ snack ]);
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "byobu";
+  version = "6.12";
+
+  src = fetchFromGitHub {
+    owner = "dustinkirkland";
+    repo = "byobu";
+    rev = finalAttrs.version;
+    hash = "sha256-NzC9Njsnz14mfKnERGDZw8O3vux0wnfCKwjUeTBQswc=";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    gettext
+    makeWrapper
+  ];
+
+  buildInputs = [
+    perl # perl is needed for `lib/byobu/include/*` scripts
+    screen
+    tmux
+  ];
+
+  doCheck = true;
+  strictDeps = true;
+
+  postPatch = ''
+    for file in usr/bin/byobu-export.in usr/lib/byobu/menu; do
+      substituteInPlace $file \
+        --replace "gettext" "${gettext}/bin/gettext"
+    done
+  '';
+
+  postInstall = ''
+    # By some reason the po files are not being compiled
+    for po in po/*.po; do
+      lang=''${po#po/}
+      lang=''${lang%.po}
+      # Path where byobu looks for translations, as observed in the source code
+      # and strace
+      mkdir -p $out/share/byobu/po/$lang/LC_MESSAGES/
+      msgfmt --verbose $po -o $out/share/byobu/po/$lang/LC_MESSAGES/byobu.mo
+    done
+
+    # Override the symlinks, otherwise they mess with the wrapping
+    cp --remove-destination $out/bin/byobu $out/bin/byobu-screen
+    cp --remove-destination $out/bin/byobu $out/bin/byobu-tmux
+
+    for file in $out/bin/byobu*; do
+      # We don't use the usual "-wrapped" suffix because arg0 within the shebang
+      # scripts points to the filename and byobu matches against this to know
+      # which backend to start with
+      bname="$(basename $file)"
+      mv "$file" "$out/bin/.$bname"
+      makeWrapper "$out/bin/.$bname" "$out/bin/$bname" \
+        --argv0 $bname \
+        --prefix PATH ":" "$out/bin" \
+        --set BYOBU_PATH ${lib.makeBinPath [ vim bc ]} \
+        --set BYOBU_PYTHON "${pythonEnv}/bin/python"
+    done
+  '';
+
+  meta = {
+    homepage = "https://www.byobu.org/";
+    description = "Text-based window manager and terminal multiplexer";
+    longDescription = ''
+      Byobu is a text-based window manager and terminal multiplexer. It was
+      originally designed to provide elegant enhancements to the otherwise
+      functional, plain, practical GNU Screen, for the Ubuntu server
+      distribution. Byobu now includes an enhanced profiles, convenient
+      keybindings, configuration utilities, and toggle-able system status
+      notifications for both the GNU Screen window manager and the more modern
+      Tmux terminal multiplexer, and works on most Linux, BSD, and Mac
+      distributions.
+    '';
+    license = with lib.licenses; [ gpl3Plus ];
+    mainProgram = "byobu";
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.unix;
+  };
+})
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-make/default.nix b/nixpkgs/pkgs/by-name/ca/cargo-make/package.nix
index 1971c81f4609..0c8aaec637f3 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-make/default.nix
+++ b/nixpkgs/pkgs/by-name/ca/cargo-make/package.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-make";
-  version = "0.37.9";
+  version = "0.37.10";
 
   src = fetchFromGitHub {
     owner = "sagiegurari";
     repo = "cargo-make";
     rev = version;
-    hash = "sha256-pfLK9QGDS4KPIdXq/LI++/r1OxqmgF0qqVJNDSVrZFI=";
+    hash = "sha256-qahmRwRjwefkp21f4nsIR4THGibkQ8+20qVmQmJ7+Vk=";
   };
 
-  cargoHash = "sha256-x8cx64B+skusk0LDRQT/1g57NBQMchy2HvvryoY0R/I=";
+  cargoHash = "sha256-NTi+1ULK+k1JIP7z3/3v7gPUxXgliq3i8gtJQVLDGEY=";
 
   nativeBuildInputs = [ pkg-config ];
 
diff --git a/nixpkgs/pkgs/applications/misc/chrysalis/default.nix b/nixpkgs/pkgs/by-name/ch/chrysalis/package.nix
index 0852e886c54b..ab4b5b5f3f8f 100644
--- a/nixpkgs/pkgs/applications/misc/chrysalis/default.nix
+++ b/nixpkgs/pkgs/by-name/ch/chrysalis/package.nix
@@ -2,13 +2,13 @@
 
 let
   pname = "chrysalis";
-  version = "0.13.2";
+  version = "0.13.3";
   name = "${pname}-${version}-binary";
   src = fetchurl {
     url =
       "https://github.com/keyboardio/${pname}/releases/download/v${version}/${pname}-${version}-x64.AppImage";
     hash =
-      "sha512-WuItdQ/hDxbZZ3zulHI74NUkuYfesV/31rA1gPakCFgX2hpPrmKzwUez2vqt4N5qrGyphrR0bcelUatGZhOn5A==";
+      "sha512-F6Y87rgIclj1OA3gVX/gqqp9AvXKQlBXrbqk/26F1KHPF9NzHJgVmeszSo3Nhb6xg4CzWmzkqc8IW2H/Bg57kw==";
   };
   appimageContents = appimageTools.extract { inherit name src; };
 in appimageTools.wrapType2 rec {
@@ -38,11 +38,13 @@ in appimageTools.wrapType2 rec {
     install -Dm444 ${appimageContents}/usr/share/icons/hicolor/256x256/chrysalis.png -t $out/share/pixmaps
   '';
 
+  passthru.updateScript = ./update.sh;
+
   meta = with lib; {
     description = "A graphical configurator for Kaleidoscope-powered keyboards";
     homepage = "https://github.com/keyboardio/Chrysalis";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ aw ];
+    maintainers = with maintainers; [ aw eclairevoyant nshalman ];
     platforms = [ "x86_64-linux" ];
     mainProgram = "chrysalis";
   };
diff --git a/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh b/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh
new file mode 100644
index 000000000000..182d47a9285a
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ch/chrysalis/update.sh
@@ -0,0 +1,16 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i bash --pure -p curl cacert jq
+
+set -euo pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+DRV_DIR="$PWD"
+
+relinfo=$(curl -sL 'https://api.github.com/repos/keyboardio/chrysalis/releases' | jq 'map(select(.prerelease == false)) | max_by(.tag_name)')
+newver=$(echo "$relinfo" | jq --raw-output '.tag_name' | sed 's|^v||')
+hashurl=$(echo "$relinfo" | jq --raw-output '.assets[] | select(.name == "latest-linux.yml").browser_download_url')
+newhash=$(curl -sL "$hashurl" | grep -Po '^sha512: \K.*')
+
+sed -i package.nix \
+    -e "/^  version =/ s|\".*\"|\"$newver\"|" \
+    -e "/sha512-/ s|\".*\"|\"sha512-$newhash\"|" \
diff --git a/nixpkgs/pkgs/by-name/cl/cld2/package.nix b/nixpkgs/pkgs/by-name/cl/cld2/package.nix
new file mode 100644
index 000000000000..bf28b160f2ba
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/cl/cld2/package.nix
@@ -0,0 +1,50 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, fetchpatch
+}:
+
+stdenv.mkDerivation {
+  pname = "cld2";
+  version = "unstable-2015-08-21";
+
+  src = fetchFromGitHub {
+    owner = "CLD2Owners";
+    repo = "cld2";
+    rev = "b56fa78a2fe44ac2851bae5bf4f4693a0644da7b";
+    hash = "sha256-YhXs45IbriKWKULguZM4DgfV/Fzr73VHxA1pFTXCyv8=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "add-cmakelists.txt";
+      url = "https://github.com/CLD2Owners/cld2/pull/65/commits/9cfac02c2ac7802ab7079560b38a474473c45f51.patch";
+      hash = "sha256-uOjmUk8kMFl+wED44ErXoLRyblhgDwFx9K1Wj65Omh8=";
+    })
+  ];
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with lib; {
+    homepage = "https://github.com/CLD2Owners/cld2";
+    description = "Compact Language Detector 2";
+    longDescription = ''
+      CLD2 probabilistically detects over 80 languages in Unicode UTF-8 text,
+      either plain text or HTML/XML. Legacy encodings must be converted to valid
+      UTF-8 by the caller. For mixed-language input, CLD2 returns the top three
+      languages found and their approximate percentages of the total text bytes
+      (e.g. 80% English and 20% French out of 1000 bytes of text means about 800
+      bytes of English and 200 bytes of French). Optionally, it also returns a
+      vector of text spans with the language of each identified. This may be
+      useful for applying different spelling-correction dictionaries or
+      different machine translation requests to each span. The design target is
+      web pages of at least 200 characters (about two sentences); CLD2 is not
+      designed to do well on very short text, lists of proper names, part
+      numbers, etc.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ chvp ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/cm/cmake/package.nix b/nixpkgs/pkgs/by-name/cm/cmake/package.nix
index 07161b65b076..c75d095fdff0 100644
--- a/nixpkgs/pkgs/by-name/cm/cmake/package.nix
+++ b/nixpkgs/pkgs/by-name/cm/cmake/package.nix
@@ -191,6 +191,7 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ ttuegel lnl7 AndersonTorres ];
     platforms = lib.platforms.all;
+    mainProgram = "cmake";
     broken = (qt5UI && stdenv.isDarwin);
   };
 })
diff --git a/nixpkgs/pkgs/by-name/cn/cntb/package.nix b/nixpkgs/pkgs/by-name/cn/cntb/package.nix
index 78e5f16f303c..98364e8f9a88 100644
--- a/nixpkgs/pkgs/by-name/cn/cntb/package.nix
+++ b/nixpkgs/pkgs/by-name/cn/cntb/package.nix
@@ -3,23 +3,18 @@
 , fetchFromGitHub
 }: buildGoModule rec {
   pname = "cntb";
-  version = "1.4.6";
+  version = "1.4.8";
 
   src = fetchFromGitHub {
     owner = "contabo";
     repo = "cntb";
-    rev = "v${version}";
-    hash = "sha256-bvWNcEUSSHEk8fwwPdowATGEHIAj+TN8Z+A156sPVtA=";
-    # docs contains two files with the same name but different cases,
-    # this leads to a different hash on case insensitive filesystems (e.g. darwin)
-    postFetch = ''
-      rm -rf $out/openapi/docs
-    '';
+    rev = version;
+    hash = "sha256-Cj1PO82JeztThFAHR4/8UyqKrodgxBqVDMDsun3iGDo=";
   };
 
   subPackages = [ "." ];
 
-  vendorHash = "sha256-++y2C3jYuGZ0ovRFoxeqnx7S9EwoOZBJ5zxeLGWjkqc=";
+  vendorHash = "sha256-4PhLUUtlnRh2dKkeVD7rZDDVP0eTDVAohvLLftQxQyE=";
 
   meta = with lib; {
     description = "CLI tool for managing your products from Contabo like VPS and VDS";
diff --git a/nixpkgs/pkgs/by-name/cs/csvlens/package.nix b/nixpkgs/pkgs/by-name/cs/csvlens/package.nix
index 81d56c70facc..7781896d8d76 100644
--- a/nixpkgs/pkgs/by-name/cs/csvlens/package.nix
+++ b/nixpkgs/pkgs/by-name/cs/csvlens/package.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "csvlens";
-  version = "0.6.0";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "YS-L";
     repo = "csvlens";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KileDwgVnrbJ6sCv6d4PjnyYqrEmZK6JESYa7+rBneo=";
+    hash = "sha256-b8SuXx1uN9lBrCoEDLeudZwylHu+f2i/PQkfHA56YlE=";
   };
 
-  cargoHash = "sha256-RtnfyhWfctByh8QqOMAu32xKSigP+lCIUIDfzj7kOkE=";
+  cargoHash = "sha256-SPUEK+8rLXBR8cdxN3qUajvN6PxbAZX2i7vYcyMzqyw=";
 
   meta = with lib; {
     description = "Command line csv viewer";
diff --git a/nixpkgs/pkgs/by-name/dc/dc3dd/package.nix b/nixpkgs/pkgs/by-name/dc/dc3dd/package.nix
index 2744168adfc7..511068fdc219 100644
--- a/nixpkgs/pkgs/by-name/dc/dc3dd/package.nix
+++ b/nixpkgs/pkgs/by-name/dc/dc3dd/package.nix
@@ -23,10 +23,9 @@ stdenv.mkDerivation (finalAttrs: {
 
   makeFlags = [
     "PREFIX=$out"
+    "CC=${stdenv.cc.targetPrefix}cc"
   ];
 
-  configureFlags = lib.optionals (stdenv.hostPlatform.isAarch32 || stdenv.hostPlatform.isAarch64) [ "--build=arm" ];
-
   enableParallelBuilding = true;
 
   meta = with lib; {
@@ -34,8 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
     mainProgram = "dc3dd";
     homepage = "https://sourceforge.net/projects/dc3dd/";
     maintainers = with maintainers; [ d3vil0p3r ];
-    platforms = platforms.unix;
+    platforms = platforms.linux;
     license = licenses.gpl3Plus; # Refer to https://sourceforge.net/p/dc3dd/code/HEAD/tree/COPYING
-    broken = stdenv.isDarwin;
   };
 })
diff --git a/nixpkgs/pkgs/applications/editors/edbrowse/0001-small-fixes.patch b/nixpkgs/pkgs/by-name/ed/edbrowse/0001-small-fixes.patch
index 433b884cc5de..433b884cc5de 100644
--- a/nixpkgs/pkgs/applications/editors/edbrowse/0001-small-fixes.patch
+++ b/nixpkgs/pkgs/by-name/ed/edbrowse/0001-small-fixes.patch
diff --git a/nixpkgs/pkgs/applications/editors/edbrowse/default.nix b/nixpkgs/pkgs/by-name/ed/edbrowse/package.nix
index 0f51e016c0ea..154095e57cc8 100644
--- a/nixpkgs/pkgs/applications/editors/edbrowse/default.nix
+++ b/nixpkgs/pkgs/by-name/ed/edbrowse/package.nix
@@ -1,8 +1,7 @@
 { lib
-, stdenv
-, fetchFromGitHub
 , curl
 , duktape
+, fetchFromGitHub
 , html-tidy
 , openssl
 , pcre
@@ -10,24 +9,45 @@
 , pkg-config
 , quickjs
 , readline
+, stdenv
+, unixODBC
 , which
+, withODBC ? true
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "edbrowse";
   version = "3.8.0";
 
   src = fetchFromGitHub {
     owner = "CMB";
-    repo = pname;
-    rev = "v${version}";
+    repo = "edbrowse";
+    rev = "v${finalAttrs.version}";
     hash = "sha256-ZXxzQBAmu7kM3sjqg/rDLBXNucO8sFRFKXV8UxQVQZU=";
   };
 
+  sourceRoot = "${finalAttrs.src.name}/src";
+
+  patches = [
+    # Fixes some small annoyances on src/makefile
+     ./0001-small-fixes.patch
+  ];
+
+  patchFlags =  [
+    "-p2"
+  ];
+
+  postPatch = ''
+    for file in $(find ./tools/ -type f ! -name '*.c'); do
+      patchShebangs $file
+    done
+  '';
+
   nativeBuildInputs = [
     pkg-config
     which
   ];
+
   buildInputs = [
     curl
     duktape
@@ -37,27 +57,23 @@ stdenv.mkDerivation rec {
     perl
     quickjs
     readline
+  ] ++ lib.optionals withODBC [
+    unixODBC
   ];
 
-  patches = [
-    # Fixes some small annoyances on src/makefile
-    ./0001-small-fixes.patch
-  ];
-
-  postPatch = ''
-    substituteInPlace src/makefile --replace\
-      '-L/usr/local/lib/quickjs' '-L${quickjs}/lib/quickjs'
-    for i in $(find ./tools/ -type f ! -name '*.c'); do
-      patchShebangs $i
-    done
-  '';
-
   makeFlags = [
-    "-C" "src"
     "PREFIX=${placeholder "out"}"
   ];
 
-  meta = with lib; {
+  preBuild = ''
+    buildFlagsArray+=(
+      BUILD_EDBR_ODBC=${if withODBC then "on" else "off"}
+      EBDEMIN=on
+      QUICKJS_LDFLAGS="-L${quickjs}/lib/quickjs -lquickjs -ldl -latomic"
+    )
+  '';
+
+  meta = {
     homepage = "https://edbrowse.org/";
     description = "Command Line Editor Browser";
     longDescription = ''
@@ -71,10 +87,14 @@ stdenv.mkDerivation rec {
       send email, with no human intervention whatsoever. edbrowse can also tap
       into databases through odbc. It was primarily written by Karl Dahlke.
     '';
-    license = licenses.gpl1Plus;
-    maintainers = with maintainers; [ schmitthenner vrthra equirosa ];
-    platforms = platforms.linux;
+    license = with lib.licenses; [ gpl1Plus ];
     mainProgram = "edbrowse";
+    maintainers = with lib.maintainers; [
+      schmitthenner
+      equirosa
+      AndersonTorres
+    ];
+    platforms = lib.platforms.linux;
   };
-}
+})
 # TODO: send the patch to upstream developers
diff --git a/nixpkgs/pkgs/by-name/el/elf-info/package.nix b/nixpkgs/pkgs/by-name/el/elf-info/package.nix
new file mode 100644
index 000000000000..ac633286606c
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/el/elf-info/package.nix
@@ -0,0 +1,29 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, nix-update-script
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "elf-info";
+  version = "0.3.0";
+
+  src = fetchFromGitHub {
+    owner = "kevin-lesenechal";
+    repo = "elf-info";
+    rev = "v${version}";
+    hash = "sha256-wbFVuoarOoxV9FqmuHJ9eZlG4rRqy1rsnuqbGorC2Rk=";
+  };
+
+  cargoHash = "sha256-r4GcJhQn9x5c2hbL+813mS3HbIg8OwNDsMg/fHQoL9Y=";
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Inspect and dissect an ELF file with pretty formatting";
+    homepage = "https://github.com/kevin-lesenechal/elf-info";
+    license = lib.licenses.gpl3Only;
+    maintainers = with lib.maintainers; [ viperML ];
+    mainProgram = "elf";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacspeak/default.nix b/nixpkgs/pkgs/by-name/em/emacspeak/package.nix
index 5294623584da..6c18af7807ea 100644
--- a/nixpkgs/pkgs/applications/editors/emacs/elisp-packages/manual-packages/emacspeak/default.nix
+++ b/nixpkgs/pkgs/by-name/em/emacspeak/package.nix
@@ -1,34 +1,37 @@
 { lib
-, stdenv
+, emacs
+, espeak-ng
 , fetchFromGitHub
 , makeWrapper
-, emacs
+, stdenv
 , tcl
 , tclx
-, espeak-ng
 }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "emacspeak";
-  version = "58.0";
+  version = "59.0";
 
   src = fetchFromGitHub {
     owner = "tvraman";
-    repo = pname;
-    rev = version;
-    hash= "sha256-5pWC17nvy3ZuG0bR//LqDVpKsH5hFSFf63Q33a1BfBk=";
+    repo = "emacspeak";
+    rev = finalAttrs.version;
+    hash = "sha256-npS/wlqI7nBde/2S/rzp79jdfYXIIhgsVs5VizxEDAQ=";
   };
 
   nativeBuildInputs = [
     emacs
     makeWrapper
   ];
+
   buildInputs = [
     espeak-ng
     tcl
     tclx
   ];
 
+  strictDeps = true;
+
   preConfigure = ''
     make config
   '';
@@ -44,17 +47,21 @@ stdenv.mkDerivation rec {
     cp -a .  "$d"
     find "$d" \( -type d -or \( -type f -executable \) \) -execdir chmod 755 {} +
     find "$d" -type f -not -executable -execdir chmod 644 {} +
-    makeWrapper ${emacs}/bin/emacs $out/bin/emacspeak \
+    makeWrapper ${lib.getExe emacs} $out/bin/emacspeak \
         --set DTK_PROGRAM "${placeholder "out"}/share/emacs/site-lisp/emacspeak/servers/espeak" \
         --set TCLLIBPATH "${tclx}/lib" \
         --add-flags '-l "${placeholder "out"}/share/emacs/site-lisp/emacspeak/lisp/emacspeak-setup.elc"'
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "https://github.com/tvraman/emacspeak/";
     description = "Emacs extension that provides spoken output";
-    license = licenses.gpl2Plus;
-    maintainers = [ maintainers.AndersonTorres ];
-    platforms = platforms.linux;
+    changelog = "https://github.com/tvraman/emacspeak/blob/${finalAttrs.src.rev}/etc/NEWS";
+    license = with lib.licenses; [ gpl2Plus ];
+    mainProgram = "emacspeak";
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.linux;
+    # Emacspeak requires a minimal Emacs version; let's use the broken flag
+    broken = lib.versionOlder (lib.getVersion emacs) "29.1";
   };
-}
+})
diff --git a/nixpkgs/pkgs/by-name/ez/eza/package.nix b/nixpkgs/pkgs/by-name/ez/eza/package.nix
index 396b1cf38c73..5ac21168eb1f 100644
--- a/nixpkgs/pkgs/by-name/ez/eza/package.nix
+++ b/nixpkgs/pkgs/by-name/ez/eza/package.nix
@@ -17,16 +17,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "eza";
-  version = "0.18.4";
+  version = "0.18.5";
 
   src = fetchFromGitHub {
     owner = "eza-community";
     repo = "eza";
     rev = "v${version}";
-    hash = "sha256-G8Ow38vNSMMYINYhGp33rls5AV4EFZDEJhkNn5H64LA=";
+    hash = "sha256-L0FF9pN4WGCFpg2MPAvrKC/DwyWK6BWGxwYEpQBl9Rw=";
   };
 
-  cargoHash = "sha256-A/EIkWSdMqSdrnjMTfIdg0scSBK/xsI5PPsOn+cRogA=";
+  cargoHash = "sha256-bZ2NzFpB9vpT0mB2LsETdmtzYAwNrpzBRoqmm4+13+0=";
 
   nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
   buildInputs = [ zlib ]
diff --git a/nixpkgs/pkgs/by-name/ff/ffsubsync/package.nix b/nixpkgs/pkgs/by-name/ff/ffsubsync/package.nix
index 8165e30c504d..759de944a6e3 100644
--- a/nixpkgs/pkgs/by-name/ff/ffsubsync/package.nix
+++ b/nixpkgs/pkgs/by-name/ff/ffsubsync/package.nix
@@ -1,21 +1,25 @@
 { lib
-, python3Packages
 , fetchFromGitHub
+, python3
 }:
 
-python3Packages.buildPythonApplication rec {
+python3.pkgs.buildPythonApplication rec {
   pname = "ffsubsync";
   version = "0.4.25";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "smacke";
     repo = "ffsubsync";
-    rev = version;
+    rev = "refs/tags/${version}";
     hash = "sha256-ZdKZeKfAUe/FXLOur9Btb5RgXewmy3EHunQphqlxpIc=";
   };
 
-  propagatedBuildInputs = with python3Packages; [
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
     auditok
     charset-normalizer
     faust-cchardet
@@ -32,9 +36,13 @@ python3Packages.buildPythonApplication rec {
     webrtcvad
   ];
 
-  nativeCheckInputs = with python3Packages; [ pytestCheckHook ];
+  nativeCheckInputs = with python3.pkgs; [
+    pytestCheckHook
+  ];
 
-  pythonImportsCheck = [ "ffsubsync" ];
+  pythonImportsCheck = [
+    "ffsubsync"
+  ];
 
   meta = with lib; {
     homepage = "https://github.com/smacke/ffsubsync";
diff --git a/nixpkgs/pkgs/by-name/fl/flake-checker/package.nix b/nixpkgs/pkgs/by-name/fl/flake-checker/package.nix
new file mode 100644
index 000000000000..8c39c66b8553
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/fl/flake-checker/package.nix
@@ -0,0 +1,34 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, stdenv
+, darwin
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "flake-checker";
+  version = "0.1.16";
+
+  src = fetchFromGitHub {
+    owner = "DeterminateSystems";
+    repo = "flake-checker";
+    rev = "v${version}";
+    hash = "sha256-n20qW7TS/FSaRseyGFbgJ0qy3ILQRjzEpbFRLT6crI8=";
+  };
+
+  cargoHash = "sha256-inwVhy31T0jFpdAXh3So3kfFezeKkBG9HzxAQ1+7FXQ=";
+
+  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [
+    Security
+    SystemConfiguration
+  ]);
+
+  meta = with lib; {
+    description = "Health checks for your Nix flakes";
+    homepage = "https://github.com/${src.owner}/${src.repo}";
+    changelog = "https://github.com/${src.owner}/${src.repo}/releases/tag/${src.rev}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ lucperkins ];
+    mainProgram = "flake-checker";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/fl/flarectl/package.nix b/nixpkgs/pkgs/by-name/fl/flarectl/package.nix
index e73f0741b0fe..aedf03584372 100644
--- a/nixpkgs/pkgs/by-name/fl/flarectl/package.nix
+++ b/nixpkgs/pkgs/by-name/fl/flarectl/package.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "flarectl";
-  version = "0.88.0";
+  version = "0.89.0";
 
   src = fetchFromGitHub {
     owner = "cloudflare";
     repo = "cloudflare-go";
     rev = "v${version}";
-    hash = "sha256-nFTE6RCVpfF/CPcwKM0wK15/1KMXAuvSdmtrt+Xrp8E=";
+    hash = "sha256-BXG9pKkgSSlBNiWiDOWL6D/DSC2iVzVCktL4xyi6/Ao=";
   };
 
   vendorHash = "sha256-AxBvmDB3mfgkv7U+BzR0Khdgx1hrDI61CSxr45pRZqg=";
diff --git a/nixpkgs/pkgs/by-name/fl/flottbot/package.nix b/nixpkgs/pkgs/by-name/fl/flottbot/package.nix
index 43866e947c81..ba0321fbdd5b 100644
--- a/nixpkgs/pkgs/by-name/fl/flottbot/package.nix
+++ b/nixpkgs/pkgs/by-name/fl/flottbot/package.nix
@@ -6,13 +6,13 @@
 }:
 buildGoModule rec {
   pname = "flottbot";
-  version = "0.13.0";
+  version = "0.13.1";
 
   src = fetchFromGitHub {
     owner = "target";
     repo = "flottbot";
     rev = version;
-    hash = "sha256-ldWE5QcLHyIqap5Qe6OTTIJZ1sshI+CVoJoRUxWHfxM=";
+    hash = "sha256-Fv4ZBCQA7gwt11ULIiyFwn+QgoMNgu+1TM9yy2Jz7og=";
   };
 
   patches = [
@@ -24,7 +24,7 @@ buildGoModule rec {
     })
   ];
 
-  vendorHash = "sha256-XRcTp3ZnoPupzI1kjoM4oF5+VlNJFV0Bu+WAwfRWl7g=";
+  vendorHash = "sha256-wOUQKFd2Xm/2rvLw8kw8Ejbcq/JUvup/BzZs0fllBYY=";
 
   subPackages = [ "cmd/flottbot" ];
 
diff --git a/nixpkgs/pkgs/by-name/fm/fm-go/package.nix b/nixpkgs/pkgs/by-name/fm/fm-go/package.nix
new file mode 100644
index 000000000000..204250e7c907
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/fm/fm-go/package.nix
@@ -0,0 +1,31 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, stdenv
+}:
+
+let
+  finalAttrs = {
+    pname = "fm";
+    version = "0.16.0";
+
+    src = fetchFromGitHub {
+      owner = "mistakenelf";
+      repo = "fm";
+      rev = "v${finalAttrs.version}";
+      hash = "sha256-wiACaszbkO9jBYmIfeQpcx984RY41Emyu911nkJxUFY=";
+    };
+
+    vendorHash = "sha256-AfRGoKiVZGVIbsDj5pV1zCkp2FpcfWKS0t+cTU51RRc=";
+
+    meta = {
+      homepage = "https://github.com/mistakenelf/fm";
+      description = "A terminal based file manager";
+      changelog = "https://github.com/mistakenelf/fm/releases/tag/${finalAttrs.src.rev}";
+      license = with lib.licenses; [ mit ];
+      mainProgram = "fm";
+      maintainers = with lib.maintainers; [ AndersonTorres ];
+    };
+  };
+in
+buildGoModule finalAttrs
diff --git a/nixpkgs/pkgs/by-name/fw/fwupd/package.nix b/nixpkgs/pkgs/by-name/fw/fwupd/package.nix
index 532ba9bb2537..e87ebdc04d6f 100644
--- a/nixpkgs/pkgs/by-name/fw/fwupd/package.nix
+++ b/nixpkgs/pkgs/by-name/fw/fwupd/package.nix
@@ -120,7 +120,7 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "fwupd";
-  version = "1.9.13";
+  version = "1.9.14";
 
   # 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-h2e9MFTb777xbNRlzKWXc5GUdu/BHSkJTaogEE5byjo=";
+    hash = "sha256-pG4pRksHw8p8rz99UnLURP+ROE+P+ySt4IlfmyRc1CQ=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/by-name/gi/gickup/package.nix b/nixpkgs/pkgs/by-name/gi/gickup/package.nix
index f5286032c28c..55ae72c6e94c 100644
--- a/nixpkgs/pkgs/by-name/gi/gickup/package.nix
+++ b/nixpkgs/pkgs/by-name/gi/gickup/package.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "gickup";
-  version = "0.10.27";
+  version = "0.10.28";
 
   src = fetchFromGitHub {
     owner = "cooperspencer";
     repo = "gickup";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ExSTvIq5u5Zmep/tipAJOHcXMxtESLQlEVMWnD8/rSI=";
+    hash = "sha256-IGzwMSpbGiUjlO7AtxL20m72VXYW3MJemLpO5BN2rMo=";
   };
 
-  vendorHash = "sha256-riRFDhVOMdqwgGd6wowSDNgt8lZPzagCvKPWTHSqm6U=";
+  vendorHash = "sha256-sINmTwUERhxZ/qEAhKiJratWV6fDxrP21cJg97RBKVc=";
 
   ldflags = ["-X main.version=${version}"];
 
diff --git a/nixpkgs/pkgs/by-name/gi/git-releaser/package.nix b/nixpkgs/pkgs/by-name/gi/git-releaser/package.nix
index f5be82cec293..8e88862bf02e 100644
--- a/nixpkgs/pkgs/by-name/gi/git-releaser/package.nix
+++ b/nixpkgs/pkgs/by-name/gi/git-releaser/package.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "git-releaser";
-  version = "0.1.2";
+  version = "0.1.3";
 
   src = fetchFromGitHub {
     owner = "git-releaser";
     repo = "git-releaser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rgnOXon68QMfVbyYhERy5z2pUlLCBwum7a/U9kdp5M0=";
+    hash = "sha256-27xUsqFuAu02jYLi3LiTnVjifqZIr39lPwMfJea7a4A=";
   };
 
-  vendorHash = "sha256-O6Rqdf6yZvW8aix51oIziip+WcVIiyDZZ2VOQfwP8Fs=";
+  vendorHash = "sha256-uKS7MwCak/CjnMjzFKqYypBVZFl+3hD1xVaOPvQV9E0=";
 
   ldflags = [ "-X main.version=${version}" ];
 
diff --git a/nixpkgs/pkgs/by-name/gi/git-together/package.nix b/nixpkgs/pkgs/by-name/gi/git-together/package.nix
new file mode 100644
index 000000000000..1fd062760de0
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/gi/git-together/package.nix
@@ -0,0 +1,35 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, openssl
+, pkg-config
+, darwin
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "git-together";
+  version = "v0.1.0-alpha.26";
+
+  src = fetchFromGitHub {
+    owner = "kejadlen";
+    repo = "git-together";
+    rev = version;
+    hash = "sha256-2HgOaqlX0mmmvRlALHm90NAdIhby/jWUJO63bQFqc+4=";
+  };
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ openssl ] ++ lib.optional stdenv.isDarwin darwin.Security;
+
+  OPENSSL_NO_VENDOR = true;
+
+  cargoHash = "sha256-mIkhXVuSgcsQf4be7NT0R8rkN9tdgim41gqjbq3ndPA=";
+
+  meta = with lib; {
+    description = "Better commit attribution while pairing without messing with your git workflow";
+    homepage = "https://github.com/kejadlen/git-together";
+    license = licenses.mit;
+    maintainers = with maintainers; [ sentientmonkey ];
+    mainProgram = "git-together";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/go/go-errorlint/package.nix b/nixpkgs/pkgs/by-name/go/go-errorlint/package.nix
new file mode 100644
index 000000000000..5c67519c4ea5
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/go/go-errorlint/package.nix
@@ -0,0 +1,29 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+buildGoModule rec {
+  pname = "go-errorlint";
+  version = "1.4.5";
+
+  src = fetchFromGitHub {
+    owner = "polyfloyd";
+    repo = "go-errorlint";
+    rev = "v${version}";
+    hash = "sha256-BU+3sLUGBCFA1JYFxTEyIan+iWB7Y7SaMFVomfNObMg=";
+  };
+
+  vendorHash = "sha256-xn7Ou4l8vbPD44rsN0mdFjTzOvkfv6QN6i5XR1XPxTE=";
+
+  ldflags = [ "-s" "-w" ];
+
+  meta = with lib; {
+    description = "A source code linter that can be used to find code that will cause problems with Go's error wrapping scheme";
+    homepage = "https://github.com/polyfloyd/go-errorlint";
+    changelog = "https://github.com/polyfloyd/go-errorlint/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ meain ];
+    mainProgram = "go-errorlint";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/gp/gpt4all-chat/package.nix b/nixpkgs/pkgs/by-name/gp/gpt4all/package.nix
index 8337ad938391..e6119fc9212e 100644
--- a/nixpkgs/pkgs/by-name/gp/gpt4all-chat/package.nix
+++ b/nixpkgs/pkgs/by-name/gp/gpt4all/package.nix
@@ -10,7 +10,7 @@
 }:
 
 stdenv.mkDerivation (finalAttrs: {
-  pname = "gpt4all-chat";
+  pname = "gpt4all";
   version = "2.7.1";
 
   src = fetchFromGitHub {
@@ -63,10 +63,11 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   meta = {
+    changelog = "https://github.com/nomic-ai/gpt4all/releases/tag/v${finalAttrs.version}";
     description = "A free-to-use, locally running, privacy-aware chatbot. No GPU or internet required";
-    homepage = "https://github.com/nomic-ai/gpt4all-chat";
+    homepage = "https://github.com/nomic-ai/gpt4all";
     license = lib.licenses.mit;
-    mainProgram = "gpt4all-chat";
+    mainProgram = "gpt4all";
     maintainers = with lib.maintainers; [ drupol polygon ];
   };
 })
diff --git a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix b/nixpkgs/pkgs/by-name/ho/home-manager/package.nix
index 7a427300f85e..dce820175938 100644
--- a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
+++ b/nixpkgs/pkgs/by-name/ho/home-manager/package.nix
@@ -1,29 +1,29 @@
 { lib
-, stdenvNoCC
-, fetchFromGitHub
 , bash
 , coreutils
+, fetchFromGitHub
 , findutils
 , gettext
 , gnused
+, installShellFiles
 , less
 , ncurses
 , nixos-option
+, stdenvNoCC
 , unixtools
-, installShellFiles
 , unstableGitUpdater
 }:
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "home-manager";
-  version = "unstable-2024-02-20";
+  version = "0-unstable-2024-02-24";
 
   src = fetchFromGitHub {
     name = "home-manager-source";
     owner = "nix-community";
     repo = "home-manager";
-    rev = "517601b37c6d495274454f63c5a483c8e3ca6be1";
-    hash = "sha256-tgZ38NummEdnXvxj4D0StHBzXgceAw8CptytHljH790=";
+    rev = "4ee704cb13a5a7645436f400b9acc89a67b9c08a";
+    hash = "sha256-MSbxtF3RThI8ANs/G4o1zIqF5/XlShHvwjl9Ws0QAbI=";
   };
 
   nativeBuildInputs = [
@@ -40,6 +40,21 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     install -D -m755 home-manager/home-manager $out/bin/home-manager
     install -D -m755 lib/bash/home-manager.sh $out/share/bash/home-manager.sh
 
+    installShellCompletion --bash --name home-manager.bash home-manager/completion.bash
+    installShellCompletion --fish --name home-manager.fish home-manager/completion.fish
+    installShellCompletion --zsh --name _home-manager home-manager/completion.zsh
+
+    for pofile in home-manager/po/*.po; do
+      lang="''${pofile##*/}"
+      lang="''${lang%%.*}"
+      mkdir -p "$out/share/locale/$lang/LC_MESSAGES"
+      msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile"
+    done
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
     substituteInPlace $out/bin/home-manager \
       --subst-var-by bash "${bash}" \
       --subst-var-by DEP_PATH "${
@@ -57,19 +72,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
       --subst-var-by HOME_MANAGER_LIB '${placeholder "out"}/share/bash/home-manager.sh' \
       --subst-var-by HOME_MANAGER_PATH "${finalAttrs.src}" \
       --subst-var-by OUT '${placeholder "out"}'
-
-    installShellCompletion --bash --name home-manager.bash home-manager/completion.bash
-    installShellCompletion --fish --name home-manager.fish home-manager/completion.fish
-    installShellCompletion --zsh --name _home-manager home-manager/completion.zsh
-
-    for pofile in home-manager/po/*.po; do
-      lang="''${pofile##*/}"
-      lang="''${lang%%.*}"
-      mkdir -p "$out/share/locale/$lang/LC_MESSAGES"
-      msgfmt -o "$out/share/locale/$lang/LC_MESSAGES/home-manager.mo" "$pofile"
-    done
-
-    runHook postInstall
   '';
 
   passthru.updateScript = unstableGitUpdater {
@@ -86,8 +88,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
       (non global) packages and dotfiles.
     '';
     license = lib.licenses.mit;
+    mainProgram = "home-manager";
     maintainers = with lib.maintainers; [ AndersonTorres ];
     platforms = lib.platforms.unix;
-    mainProgram = "home-manager";
   };
 })
diff --git a/nixpkgs/pkgs/by-name/hu/hugo/package.nix b/nixpkgs/pkgs/by-name/hu/hugo/package.nix
index 28646b969027..7695aeca9ed3 100644
--- a/nixpkgs/pkgs/by-name/hu/hugo/package.nix
+++ b/nixpkgs/pkgs/by-name/hu/hugo/package.nix
@@ -10,16 +10,16 @@
 
 buildGoModule rec {
   pname = "hugo";
-  version = "0.123.3";
+  version = "0.123.4";
 
   src = fetchFromGitHub {
     owner = "gohugoio";
     repo = "hugo";
     rev = "refs/tags/v${version}";
-    hash = "sha256-agFXyxjqtnL2JsOfIhp+o46kzw/F/Ggq1ALPPgZy+Gg=";
+    hash = "sha256-AJ/uK2eunQgsCcXR8FcQ9TVvMXs56J0gpfXRQCX78qY=";
   };
 
-  vendorHash = "sha256-1cd0w9eIPSlhznOQaIiaPoIBnQ4DycVUbZwLOlJ+t8o=";
+  vendorHash = "sha256-6qNICaj+P0VRl/crbiucZ7CpBG1vwFURkvOdaH6WidU=";
 
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/by-name/hy/hypridle/package.nix b/nixpkgs/pkgs/by-name/hy/hypridle/package.nix
index 9ded2f57d774..0526d741dd9d 100644
--- a/nixpkgs/pkgs/by-name/hy/hypridle/package.nix
+++ b/nixpkgs/pkgs/by-name/hy/hypridle/package.nix
@@ -12,13 +12,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "hypridle";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = "hypridle";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-0x5R6v82nKBualYf+TxAduMsvG80EZAl7gofTIYtpf4=";
+    hash = "sha256-YayFU0PZkwnKn1RSV3+i2HlSha/IFkG5osXcT0b/EUw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/by-name/hy/hyprlang/package.nix b/nixpkgs/pkgs/by-name/hy/hyprlang/package.nix
index 672499f6bee9..6dc2c4fecbcc 100644
--- a/nixpkgs/pkgs/by-name/hy/hyprlang/package.nix
+++ b/nixpkgs/pkgs/by-name/hy/hyprlang/package.nix
@@ -7,18 +7,23 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "hyprlang";
-  version = "0.4.0";
+  version = "0.4.1";
 
   src = fetchFromGitHub {
     owner = "hyprwm";
     repo = "hyprlang";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=";
+    hash = "sha256-upV2PWOoQ5hKbeuMwiJ4RJUa1JDVqzxdr5LL7YJJ/f4=";
   };
 
-  nativeBuildInputs = [cmake];
+  nativeBuildInputs = [
+    cmake
+  ];
 
-  outputs = ["out" "dev"];
+  outputs = [
+    "out"
+    "dev"
+  ];
 
   doCheck = true;
 
diff --git a/nixpkgs/pkgs/by-name/hy/hyprlock/package.nix b/nixpkgs/pkgs/by-name/hy/hyprlock/package.nix
new file mode 100644
index 000000000000..5872e860474c
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/hy/hyprlock/package.nix
@@ -0,0 +1,60 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, cmake
+, pkg-config
+, libGL
+, libxkbcommon
+, hyprlang
+, pam
+, wayland
+, wayland-protocols
+, cairo
+, pango
+, libdrm
+, mesa
+, nix-update-script
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "hyprlock";
+  version = "0.1.0";
+
+  src = fetchFromGitHub {
+    owner = "hyprwm";
+    repo = "hyprlock";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-SX3VRcewkqeAIY6ptgfk9+C6KB9aCEUOacb2pKl3kO0=";
+  };
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+  ];
+
+  buildInputs = [
+    cairo
+    hyprlang
+    libdrm
+    libGL
+    libxkbcommon
+    mesa
+    pam
+    pango
+    wayland
+    wayland-protocols
+  ];
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    description = "Hyprland's GPU-accelerated screen locking utility";
+    homepage = "https://github.com/hyprwm/hyprlock";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ eclairevoyant ];
+    mainProgram = "hyprlock";
+    platforms = [ "aarch64-linux" "x86_64-linux" ];
+  };
+})
diff --git a/nixpkgs/pkgs/by-name/im/imhex/package.nix b/nixpkgs/pkgs/by-name/im/imhex/package.nix
index 2f1a6b927df2..7ee075ae1888 100644
--- a/nixpkgs/pkgs/by-name/im/imhex/package.nix
+++ b/nixpkgs/pkgs/by-name/im/imhex/package.nix
@@ -3,6 +3,7 @@
 , cmake
 , llvm
 , fetchFromGitHub
+, fetchpatch
 , mbedtls
 , gtk3
 , pkg-config
@@ -22,16 +23,14 @@
 }:
 
 let
-  # FIXME: unstable, stable needs #252945 (details in #258964)
-  # Next version bump should be stabilized
-  version = "unstable-2023-10-01";
-  patterns_version = "1.31.0";
+  version = "1.32.2";
+  patterns_version = "1.32.2";
 
   patterns_src = fetchFromGitHub {
     owner = "WerWolv";
     repo = "ImHex-Patterns";
     rev = "ImHex-v${patterns_version}";
-    hash = "sha256-lTTXu9RxoD582lXWI789gNcWvJmxmBIlBRIiyY3DseM=";
+    hash = "sha256-K+LiQvykCrOwhEVy37lh7VSf5YJyBQtLz8AGFsuRznQ=";
   };
 
 in
@@ -43,10 +42,20 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
     owner = "WerWolv";
     repo = pname;
-    rev = "a62ede784018f9d5aaf40587f71a1271429ab50b";
-    hash = "sha256-L3ncmM7Ro60DvOF/Y0fjo2Smlw2LL8cPa8H6yVGdGAk=";
+    rev = "v${version}";
+    hash = "sha256-MYOZHQMYbbP01z0FyoCgTzwY1/71eUCmJYYfYvN9+so=";
   };
 
+  patches = [
+    # Backport fixes (and fix to fix) for default plugin not being loaded.
+    (fetchpatch {
+      url = "https://github.com/WerWolv/PatternLanguage/compare/ImHex-v1.32.2..1adcdd358d3772681242267ddd3459c9d0913796.patch";
+      stripLen = 1;
+      extraPrefix = "lib/external/pattern_language/";
+      hash = "sha256-aGvt7vQ6PtFE3sw4rAXUP7Pq8cL29LEKyC0rJKkxOZI=";
+    })
+  ];
+
   nativeBuildInputs = [ cmake llvm python3 perl pkg-config rsync ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/by-name/in/incus/client.nix b/nixpkgs/pkgs/by-name/in/incus/client.nix
index 46bf691c6951..76f792377b10 100644
--- a/nixpkgs/pkgs/by-name/in/incus/client.nix
+++ b/nixpkgs/pkgs/by-name/in/incus/client.nix
@@ -3,12 +3,13 @@
 
   lib,
   buildGoModule,
+  fetchpatch,
   fetchFromGitHub,
   installShellFiles,
 }:
 let
   releaseFile = if lts then ./lts.nix else ./latest.nix;
-  inherit (import releaseFile) version hash vendorHash;
+  inherit (import releaseFile { inherit fetchpatch; }) version hash vendorHash;
 in
 
 buildGoModule rec {
diff --git a/nixpkgs/pkgs/by-name/in/incus/latest.nix b/nixpkgs/pkgs/by-name/in/incus/latest.nix
index 0c0c32ba9af3..78c09a857488 100644
--- a/nixpkgs/pkgs/by-name/in/incus/latest.nix
+++ b/nixpkgs/pkgs/by-name/in/incus/latest.nix
@@ -1,5 +1,12 @@
+{ fetchpatch }:
 {
-  hash = "sha256-3eWkQT2P69ZfN62H9B4WLnmlUOGkpzRR0rctgchP+6A=";
-  version = "0.5.1";
-  vendorHash = "sha256-2ZJU7WshN4UIbJv55bFeo9qiAQ/wxu182mnz7pE60xA=";
+  hash = "sha256-tGuAS0lZvoYb+TvmCklQ8TADZhbm4w/lhdI0ycS4/0o=";
+  version = "0.6.0";
+  vendorHash = "sha256-+WmgLOEBJ/7GF596iiTgyTPxn8l+hE6RVqjLKfCi5rs=";
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/lxc/incus/pull/529.patch";
+      hash = "sha256-2aaPrzW/LVJidWeom0rqYOGpT2gvuV1yHLJN/TwQ1fk=";
+    })
+  ];
 }
diff --git a/nixpkgs/pkgs/by-name/in/incus/lts.nix b/nixpkgs/pkgs/by-name/in/incus/lts.nix
index d70793f94dfa..a78deb48e23b 100644
--- a/nixpkgs/pkgs/by-name/in/incus/lts.nix
+++ b/nixpkgs/pkgs/by-name/in/incus/lts.nix
@@ -1,3 +1,3 @@
 # this release doesn't exist yet, but satisfay the by-name checks
 # will be added as incus-lts in all-packages.nix once ready
-{ }
+_: { }
diff --git a/nixpkgs/pkgs/by-name/in/incus/package.nix b/nixpkgs/pkgs/by-name/in/incus/package.nix
index 110bc41dce28..2958ab036ac9 100644
--- a/nixpkgs/pkgs/by-name/in/incus/package.nix
+++ b/nixpkgs/pkgs/by-name/in/incus/package.nix
@@ -81,20 +81,11 @@ let
 
   ovmf-2mb = OVMF.override {
     secureBoot = true;
-    csmSupport = false;
     fdSize2MB = true;
   };
 
   ovmf-4mb = OVMF.override {
     secureBoot = true;
-    csmSupport = false;
-    fdSize4MB = true;
-  };
-
-  ovmf-4mb-csm = OVMF.override {
-    secureBoot = true;
-    csmSupport = false;
-    fdSize2MB = false;
     fdSize4MB = true;
   };
 
@@ -108,10 +99,6 @@ let
       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd";
     }
     {
-      name = "OVMF_CODE.4MB.CSM.fd";
-      path = "${ovmf-4mb-csm.fd}/FV/${ovmf-prefix}_CODE.fd";
-    }
-    {
       name = "OVMF_CODE.4MB.fd";
       path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd";
     }
@@ -129,10 +116,6 @@ let
       path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd";
     }
     {
-      name = "OVMF_VARS.4MB.CSM.fd";
-      path = "${ovmf-4mb-csm.fd}/FV/${ovmf-prefix}_VARS.fd";
-    }
-    {
       name = "OVMF_VARS.4MB.fd";
       path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd";
     }
diff --git a/nixpkgs/pkgs/by-name/in/incus/unwrapped.nix b/nixpkgs/pkgs/by-name/in/incus/unwrapped.nix
index 73257c583940..7a28737ea390 100644
--- a/nixpkgs/pkgs/by-name/in/incus/unwrapped.nix
+++ b/nixpkgs/pkgs/by-name/in/incus/unwrapped.nix
@@ -3,6 +3,7 @@
 
   lib,
   buildGoModule,
+  fetchpatch,
   fetchFromGitHub,
   writeShellScript,
   acl,
@@ -19,14 +20,19 @@
 
 let
   releaseFile = if lts then ./lts.nix else ./latest.nix;
-  inherit (import releaseFile) version hash vendorHash;
+  inherit (import releaseFile { inherit fetchpatch; })
+    version
+    hash
+    patches
+    vendorHash
+    ;
   name = "incus${lib.optionalString lts "-lts"}";
 in
 
-buildGoModule rec {
+buildGoModule {
   pname = "${name}-unwrapped";
 
-  inherit vendorHash version;
+  inherit patches vendorHash version;
 
   src = fetchFromGitHub {
     owner = "lxc";
diff --git a/nixpkgs/pkgs/by-name/ip/ipam/package.nix b/nixpkgs/pkgs/by-name/ip/ipam/package.nix
new file mode 100644
index 000000000000..ec54b78e6e9d
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ip/ipam/package.nix
@@ -0,0 +1,42 @@
+{ lib
+, buildGoModule
+, fetchFromGitea
+, installShellFiles
+}:
+
+buildGoModule rec {
+  pname = "ipam";
+  version = "0.3.0-1";
+
+  src = fetchFromGitea {
+    domain = "codeberg.org";
+    owner = "lauralani";
+    repo = "ipam";
+    rev = "v${version}";
+    hash = "sha256-6gOkBjXgaMMWFRXFTSBY9YaNPdMRyLl8wy7BT/5vHio=";
+  };
+
+  nativeBuildInputs = [
+    installShellFiles
+  ];
+
+  vendorHash = "sha256-l8eeeYv41yUPQ1dyJY4Jo3uvULrc1B/buGlMxYSdhCA=";
+
+  ldflags = [ "-s" "-w" ];
+
+  postInstall = ''
+    installShellCompletion --cmd ipam \
+      --bash <($out/bin/ipam completion bash) \
+      --fish <($out/bin/ipam completion fish) \
+      --zsh <($out/bin/ipam completion zsh)
+  '';
+
+  meta = with lib; {
+    description = "A cli based IPAM written in Go with PowerDNS support";
+    homepage = "https://ipam.lauka.net/";
+    changelog = "https://codeberg.org/lauralani/ipam/releases/tag/v${version}";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ janik ];
+    mainProgram = "ipam";
+  };
+}
diff --git a/nixpkgs/pkgs/games/itch/default.nix b/nixpkgs/pkgs/by-name/it/itch/package.nix
index 897d8f3941c4..3ba0c6cb4350 100644
--- a/nixpkgs/pkgs/games/itch/default.nix
+++ b/nixpkgs/pkgs/by-name/it/itch/package.nix
@@ -11,27 +11,27 @@
 }:
 stdenvNoCC.mkDerivation rec {
   pname = "itch";
-  version = "26.1.2";
+  version = "26.1.3";
 
   # TODO: Using kitch instead of itch, revert when possible
   src = fetchzip {
-    url = "https://broth.itch.ovh/k${pname}/linux-amd64/${version}/archive/default#.zip";
+    url = "https://broth.itch.ovh/kitch/linux-amd64/${version}/archive/default#.zip";
     stripRoot = false;
-    sha256 = "sha256-thXe+glpltSiKNGIRgvOZQZPJWfDHWo3dLdziyp2BM4=";
+    hash = "sha256-FHwbzLPMzIpyg6KyYTq6/rSNRH76dytwb9D5f9vNKkU=";
   };
 
   itch-setup = fetchzip {
     url = "https://broth.itch.ovh/itch-setup/linux-amd64/1.26.0/itch-setup.zip";
     stripRoot = false;
-    sha256 = "sha256-5MP6X33Jfu97o5R1n6Og64Bv4ZMxVM0A8lXeQug+bNA=";
+    hash = "sha256-5MP6X33Jfu97o5R1n6Og64Bv4ZMxVM0A8lXeQug+bNA=";
   };
 
   icons = let sparseCheckout = "/release/images/itch-icons"; in
     fetchFromGitHub {
         owner = "itchio";
-        repo = pname;
+        repo = "itch";
         rev = "v${version}-canary";
-        sha256 = "sha256-veZiKs9qHge+gCEpJ119bAT56ssXJAH3HBcYkEHqBFg=";
+        hash = "sha256-0AMyDZ5oI7/pSvudoEqXnMZJtpcKVlUSR6YVm+s4xv0=";
         sparseCheckout = [ sparseCheckout ];
       } + sparseCheckout;
 
@@ -39,11 +39,11 @@ stdenvNoCC.mkDerivation rec {
 
   desktopItems = [
     (makeDesktopItem {
-      name = pname;
+      name = "itch";
       exec = "itch %U";
-      tryExec = pname;
-      icon = pname;
-      desktopName = pname;
+      tryExec = "itch";
+      icon = "itch";
+      desktopName = "itch";
       mimeTypes = [ "x-scheme-handler/itchio" "x-scheme-handler/itch" ];
       comment = "Install and play itch.io games easily";
       categories = [ "Game" ];
@@ -58,8 +58,8 @@ stdenvNoCC.mkDerivation rec {
     substituteInPlace ./resources/app/package.json \
       --replace "kitch" "itch"
 
-    mkdir -p $out/bin $out/share/${pname}/resources/app
-    cp -r resources/app "$out/share/${pname}/resources/"
+    mkdir -p $out/bin $out/share/itch/resources/app
+    cp -r resources/app "$out/share/itch/resources/"
 
     install -Dm644 LICENSE -t "$out/share/licenses/$pkgname/"
     install -Dm644 LICENSES.chromium.html -t "$out/share/licenses/$pkgname/"
@@ -76,9 +76,9 @@ stdenvNoCC.mkDerivation rec {
   '';
 
   postFixup = ''
-    makeWrapper ${steam-run}/bin/steam-run $out/bin/${pname} \
+    makeWrapper ${steam-run}/bin/steam-run $out/bin/itch \
       --add-flags ${electron}/bin/electron \
-      --add-flags $out/share/${pname}/resources/app \
+      --add-flags $out/share/itch/resources/app \
       --set BROTH_USE_LOCAL butler,itch-setup \
       --prefix PATH : ${butler}/bin/:${itch-setup}
   '';
@@ -90,5 +90,6 @@ stdenvNoCC.mkDerivation rec {
     platforms = platforms.linux;
     sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
     maintainers = with maintainers; [ pasqui23 ];
+    mainProgram = "itch";
   };
 }
diff --git a/nixpkgs/pkgs/by-name/ja/jan/package.nix b/nixpkgs/pkgs/by-name/ja/jan/package.nix
index 2566dc09bc65..44296231986f 100644
--- a/nixpkgs/pkgs/by-name/ja/jan/package.nix
+++ b/nixpkgs/pkgs/by-name/ja/jan/package.nix
@@ -5,10 +5,10 @@
 
 let
   pname = "jan";
-  version = "0.4.6";
+  version = "0.4.7";
   src = fetchurl {
     url = "https://github.com/janhq/jan/releases/download/v${version}/jan-linux-x86_64-${version}.AppImage";
-    hash = "sha256-/FYaFyp028CeEFfrxNnj67/z7FoOwU0wC2V56mACD5Q=";
+    hash = "sha256-Mn7rIBEf46JbNof8h3z66TGdGKnb0FGMJc46JncA0KM=";
   };
 
   appimageContents = appimageTools.extractType2 { inherit pname version src; };
diff --git a/nixpkgs/pkgs/by-name/ku/kubectl-validate/package.nix b/nixpkgs/pkgs/by-name/ku/kubectl-validate/package.nix
new file mode 100644
index 000000000000..13ca4998c58d
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ku/kubectl-validate/package.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, nix-update-script
+}:
+let
+  version = "0.0.1";
+in
+buildGoModule {
+  inherit version;
+  pname = "kubectl-validate";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes-sigs";
+    repo = "kubectl-validate";
+    rev = "v${version}";
+    hash = "sha256-0lwN+3Cy7O9kX9dh8PjxmvdyKSZhBxcxy+b+ZtuDZaw=";
+  };
+
+  vendorHash = null;
+
+  # Disable the download tool.
+  # Disable network based tests.
+  preBuild = ''
+    mv cmd/download-builtin-schemas/main.go cmd/download-builtin-schemas/_main.go
+    mv pkg/openapiclient/github_builtins_test.go pkg/openapiclient/_github_builtins_test.go
+  '';
+
+  passthru.updateScript = nix-update-script { };
+
+  meta = {
+    platforms = lib.platforms.all;
+    mainProgram = "kubectl-validate";
+    description = "A tool for local validation of resources for native Kubernetes types and CRDs";
+    homepage = "https://github.com/kubernetes-sigs/kubectl-validate";
+    changelog = "https://github.com/kubernetes-sigs/kubectl-validate/releases/tag/v${version}";
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ fd ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/le/lefthook/package.nix b/nixpkgs/pkgs/by-name/le/lefthook/package.nix
index 256701a004f0..19eab38e3c4e 100644
--- a/nixpkgs/pkgs/by-name/le/lefthook/package.nix
+++ b/nixpkgs/pkgs/by-name/le/lefthook/package.nix
@@ -6,7 +6,7 @@
 
 let
   pname = "lefthook";
-  version = "1.6.1";
+  version = "1.6.4";
 in
 buildGoModule {
   inherit pname version;
@@ -15,10 +15,10 @@ buildGoModule {
     owner = "evilmartians";
     repo = "lefthook";
     rev = "v${version}";
-    hash = "sha256-015tIgu9L62uZm4ae1JzU/GAK6fwX8BI9HGYhc+4jQQ=";
+    hash = "sha256-j4ejDL0QRpRUoUYYjYAlju0A9mHwtmBTRFQVYrh+xvU=";
   };
 
-  vendorHash = "sha256-/VLS7+nPERjIU7V2CzqXH69Z3/y+GKZbAFn+KcRKRuA=";
+  vendorHash = "sha256-FEicYJUyn+eT7IqoL4XqIsL6JhYJ8+2UOgc/PTMpuI4=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/by-name/li/libappimage/package.nix b/nixpkgs/pkgs/by-name/li/libappimage/package.nix
new file mode 100644
index 000000000000..8d2a1013aff8
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/li/libappimage/package.nix
@@ -0,0 +1,87 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  fetchpatch,
+  cmake,
+  autoconf,
+  automake,
+  libtool,
+  pkg-config,
+  boost,
+  cairo,
+  fuse,
+  glib,
+  libarchive,
+  librsvg,
+  squashfuse,
+  xdg-utils-cxx,
+  zlib,
+}:
+stdenv.mkDerivation rec {
+  pname = "libappimage";
+  version = "1.0.4-5";
+
+  src = fetchFromGitHub {
+    owner = "AppImageCommunity";
+    repo = "libappimage";
+    rev = "v${version}";
+    hash = "sha256-V9Ilo0zFo9Urke+jCA4CSQB5tpzLC/S5jmon+bA+TEU=";
+  };
+
+  patches = [
+    # Fix build with GCC 13
+    # FIXME: remove in next release
+    (fetchpatch {
+      url = "https://github.com/AppImageCommunity/libappimage/commit/1e0515b23b90588ce406669134feca56ddcbbe43.patch";
+      hash = "sha256-WIMvXNqC1stgPiBTRpXHWq3edIRnQomtRSW2qO52TRo=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace cmake/libappimage.pc.in \
+      --replace 'libdir=''${prefix}/@CMAKE_INSTALL_LIBDIR@' 'libdir=@CMAKE_INSTALL_FULL_LIBDIR@' \
+      --replace 'includedir=''${prefix}/@CMAKE_INSTALL_INCLUDEDIR@' 'includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@'
+  '';
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_BOOST=1"
+    "-DUSE_SYSTEM_LIBARCHIVE=1"
+    "-DUSE_SYSTEM_SQUASHFUSE=1"
+    "-DUSE_SYSTEM_XDGUTILS=1"
+    "-DUSE_SYSTEM_XZ=1"
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    autoconf
+    automake
+    libtool
+    pkg-config
+  ];
+
+  buildInputs = [
+    boost
+    fuse
+    libarchive
+    squashfuse
+    xdg-utils-cxx
+  ];
+
+  propagatedBuildInputs = [
+    cairo
+    glib
+    librsvg
+    zlib
+  ];
+
+  strictDeps = true;
+
+  meta = with lib; {
+    description = "Implements functionality for dealing with AppImage files";
+    homepage = "https://github.com/AppImageCommunity/libappimage/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ k900 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/li/libgrapheme/package.nix b/nixpkgs/pkgs/by-name/li/libgrapheme/package.nix
new file mode 100644
index 000000000000..1aaed5f1a604
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/li/libgrapheme/package.nix
@@ -0,0 +1,25 @@
+{ lib, stdenv, fetchurl, buildPackages }:
+
+stdenv.mkDerivation rec {
+  pname = "libgrapheme";
+  version = "2.0.2";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/libgrapheme/libgrapheme-${version}.tar.gz";
+    hash = "sha256-pou93edr1Vul1kEWzl5CoT3wRcgcCFLemrYIlqoUMSU=";
+  };
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+
+  makeFlags = [ "AR:=$(AR)" "CC:=$(CC)" "RANLIB:=$(RANLIB)" "BUILD_CC=$(CC_FOR_BUILD)" ];
+
+  installFlags = [ "PREFIX=$(out)" "LDCONFIG=" ];
+
+  meta = with lib; {
+    description = "Unicode string library";
+    homepage = "https://libs.suckless.org/libgrapheme/";
+    license = licenses.isc;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ sikmir ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/tools/lightningcss/default.nix b/nixpkgs/pkgs/by-name/li/lightningcss/package.nix
index 7edc7e3695aa..6388413bd43b 100644
--- a/nixpkgs/pkgs/development/tools/lightningcss/default.nix
+++ b/nixpkgs/pkgs/by-name/li/lightningcss/package.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lightningcss";
-  version = "1.23.0";
+  version = "1.24.0";
 
   src = fetchFromGitHub {
     owner = "parcel-bundler";
     repo = "lightningcss";
     rev = "refs/tags/v${version}";
-    hash = "sha256-vMxf5WQtoj7FycU1zHn5t/bJtwh6t4wqyKfoetzojzU=";
+    hash = "sha256-Ai6zvLR5w2AarjZIWMPoDsU1Dr5kvREgL6oyg6TF+TU=";
   };
 
-  cargoHash = "sha256-g7/1s3FvuwsJvypeHOqJA/lVBkQcLATWtlygI8IW+QA=";
+  cargoHash = "sha256-HHuj7uAqipPtbjkOsxxMq+JWXww2vUDTNGgnHd3UY3o=";
 
   buildFeatures = [
     "cli"
diff --git a/nixpkgs/pkgs/by-name/li/livekit-cli/package.nix b/nixpkgs/pkgs/by-name/li/livekit-cli/package.nix
index 2ed5129a6d13..a4ecebcde30c 100644
--- a/nixpkgs/pkgs/by-name/li/livekit-cli/package.nix
+++ b/nixpkgs/pkgs/by-name/li/livekit-cli/package.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "livekit-cli";
-  version = "1.3.4";
+  version = "1.4.0";
 
   src = fetchFromGitHub {
     owner = "livekit";
     repo = "livekit-cli";
     rev = "v${version}";
-    hash = "sha256-pzVzfs0bwG9n7fa0ouQiCFrbXAqkfovEIjVmrHFdqtI=";
+    hash = "sha256-u6tqrh2Au4XL590EqD3WInQbN6H6GzRoaA3Uke94Y60=";
   };
 
-  vendorHash = "sha256-pM5DeaukY6x4RDryLvSEQASSwtOaLiiLObjhdWBYd8k=";
+  vendorHash = "sha256-PCZNFt08Ad+pjKrl7KZy7jUhu/fWO3raoQM0abCpaGs=";
 
   subPackages = [ "cmd/livekit-cli" ];
 
diff --git a/nixpkgs/pkgs/by-name/li/livekit/package.nix b/nixpkgs/pkgs/by-name/li/livekit/package.nix
index ed14e56b1809..40706a679c2d 100644
--- a/nixpkgs/pkgs/by-name/li/livekit/package.nix
+++ b/nixpkgs/pkgs/by-name/li/livekit/package.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "livekit";
-  version = "1.5.2";
+  version = "1.5.3";
 
   src = fetchFromGitHub {
     owner = "livekit";
     repo = "livekit";
     rev = "v${version}";
-    hash = "sha256-Z1N6iYXd3HswRJql3YZMot5fdkdFFbJuxyGDgLsbtQI=";
+    hash = "sha256-2MooX+wy7KetxEBgQoVoL4GuVkm+SbTzYgfWyLL7KU8=";
   };
 
-  vendorHash = "sha256-O0rlezMdhoRHdK37BGKW3CHLpYfkFC1d83o5u54LQ8k=";
+  vendorHash = "sha256-8YR0Bl+sQsqpFtD+1GeYaydBdHeM0rRL2NbgAh9kCj0=";
 
   subPackages = [ "cmd/server" ];
 
diff --git a/nixpkgs/pkgs/by-name/ll/llama-cpp/package.nix b/nixpkgs/pkgs/by-name/ll/llama-cpp/package.nix
index 4ee6293ae438..ebb9c29e75bd 100644
--- a/nixpkgs/pkgs/by-name/ll/llama-cpp/package.nix
+++ b/nixpkgs/pkgs/by-name/ll/llama-cpp/package.nix
@@ -15,12 +15,16 @@
 , openclSupport ? false
 , clblast
 
-, blasSupport ? !rocmSupport && !cudaSupport
-, openblas
+, blasSupport ? builtins.all (x: !x) [ cudaSupport metalSupport openclSupport rocmSupport vulkanSupport ]
 , pkg-config
 , metalSupport ? stdenv.isDarwin && stdenv.isAarch64 && !openclSupport
-, patchelf
-, static ? true # if false will build the shared objects as well
+, vulkanSupport ? false
+, mpiSupport ? false # Increases the runtime closure by ~700M
+, vulkan-headers
+, vulkan-loader
+, ninja
+, git
+, mpi
 }:
 
 let
@@ -28,16 +32,50 @@ let
   # otherwise we get libstdc++ errors downstream.
   # cuda imposes an upper bound on the gcc version, e.g. the latest gcc compatible with cudaPackages_11 is gcc11
   effectiveStdenv = if cudaSupport then cudaPackages.backendStdenv else stdenv;
+  inherit (lib) cmakeBool cmakeFeature optionals;
+
+  darwinBuildInputs =
+    with darwin.apple_sdk.frameworks;
+    [
+      Accelerate
+      CoreVideo
+      CoreGraphics
+    ]
+    ++ optionals metalSupport [ MetalKit ];
+
+   cudaBuildInputs = with cudaPackages; [
+    cuda_cccl.dev # <nv/target>
+
+    # A temporary hack for reducing the closure size, remove once cudaPackages
+    # have stopped using lndir: https://github.com/NixOS/nixpkgs/issues/271792
+    cuda_cudart.dev
+    cuda_cudart.lib
+    cuda_cudart.static
+    libcublas.dev
+    libcublas.lib
+    libcublas.static
+  ];
+
+  rocmBuildInputs = with rocmPackages; [
+    clr
+    hipblas
+    rocblas
+  ];
+
+  vulkanBuildInputs = [
+    vulkan-headers
+    vulkan-loader
+  ];
 in
 effectiveStdenv.mkDerivation (finalAttrs: {
   pname = "llama-cpp";
-  version = "2249";
+  version = "2294";
 
   src = fetchFromGitHub {
     owner = "ggerganov";
     repo = "llama.cpp";
     rev = "refs/tags/b${finalAttrs.version}";
-    hash = "sha256-ikJUToUbA60u/8azR6dPmPyodq/nQe5L2aotlYBclaE=";
+    hash = "sha256-uZi4Bj03PgfFV+jS5M+A1sMCWC/GMY5IyyrlR1b4Sh4=";
   };
 
   postPatch = ''
@@ -45,7 +83,8 @@ effectiveStdenv.mkDerivation (finalAttrs: {
       --replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/bin/ggml-metal.metal\";"
   '';
 
-  nativeBuildInputs = [ cmake ] ++ lib.optionals blasSupport [ pkg-config ] ++ lib.optionals cudaSupport [
+  nativeBuildInputs = [ cmake ninja pkg-config git ]
+    ++ optionals cudaSupport [
     cudaPackages.cuda_nvcc
 
     # TODO: Replace with autoAddDriverRunpath
@@ -53,86 +92,55 @@ effectiveStdenv.mkDerivation (finalAttrs: {
     cudaPackages.autoAddOpenGLRunpathHook
   ];
 
-  buildInputs = lib.optionals effectiveStdenv.isDarwin
-    (with darwin.apple_sdk.frameworks; [
-      Accelerate
-      CoreGraphics
-      CoreVideo
-      Foundation
-    ])
-  ++ lib.optionals metalSupport (with darwin.apple_sdk.frameworks; [
-    MetalKit
-  ])
-  ++ lib.optionals cudaSupport (with cudaPackages; [
-    cuda_cccl.dev # <nv/target>
-
-    # A temporary hack for reducing the closure size, remove once cudaPackages
-    # have stopped using lndir: https://github.com/NixOS/nixpkgs/issues/271792
-    cuda_cudart.dev
-    cuda_cudart.lib
-    cuda_cudart.static
-    libcublas.dev
-    libcublas.lib
-    libcublas.static
-  ]) ++ lib.optionals rocmSupport [
-    rocmPackages.clr
-    rocmPackages.hipblas
-    rocmPackages.rocblas
-  ] ++ lib.optionals openclSupport [
-    clblast
-  ] ++ lib.optionals blasSupport [
-    openblas
-  ];
+  buildInputs = optionals effectiveStdenv.isDarwin darwinBuildInputs
+    ++ optionals cudaSupport cudaBuildInputs
+    ++ optionals mpiSupport mpi
+    ++ optionals openclSupport [ clblast ]
+    ++ optionals rocmSupport rocmBuildInputs
+    ++ optionals vulkanSupport vulkanBuildInputs;
 
   cmakeFlags = [
-    "-DLLAMA_NATIVE=OFF"
-    "-DLLAMA_BUILD_SERVER=ON"
+    # -march=native is non-deterministic; override with platform-specific flags if needed
+    (cmakeBool "LLAMA_NATIVE" false)
+    (cmakeBool "BUILD_SHARED_SERVER" true)
+    (cmakeBool "BUILD_SHARED_LIBS" true)
+    (cmakeBool "BUILD_SHARED_LIBS" true)
+    (cmakeBool "LLAMA_BLAS" blasSupport)
+    (cmakeBool "LLAMA_CLBLAST" openclSupport)
+    (cmakeBool "LLAMA_CUBLAS" cudaSupport)
+    (cmakeBool "LLAMA_HIPBLAS" rocmSupport)
+    (cmakeBool "LLAMA_METAL" metalSupport)
+    (cmakeBool "LLAMA_MPI" mpiSupport)
+    (cmakeBool "LLAMA_VULKAN" vulkanSupport)
   ]
-  ++ lib.optionals metalSupport [
-    "-DCMAKE_C_FLAGS=-D__ARM_FEATURE_DOTPROD=1"
-    "-DLLAMA_METAL=ON"
-  ]
-  ++ lib.optionals cudaSupport [
-    "-DLLAMA_CUBLAS=ON"
-  ]
-  ++ lib.optionals rocmSupport [
-    "-DLLAMA_HIPBLAS=1"
-    "-DCMAKE_C_COMPILER=hipcc"
-    "-DCMAKE_CXX_COMPILER=hipcc"
-    "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-  ]
-  ++ lib.optionals openclSupport [
-    "-DLLAMA_CLBLAST=ON"
-  ]
-  ++ lib.optionals blasSupport [
-    "-DLLAMA_BLAS=ON"
-    "-DLLAMA_BLAS_VENDOR=OpenBLAS"
-  ]
-  ++ lib.optionals (!static) [
-    (lib.cmakeBool "BUILD_SHARED_LIBS" true)
-  ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin
-    ${lib.optionalString (!static) ''
-      mkdir $out/lib
-      cp libggml_shared.so $out/lib
-      cp libllama.so $out/lib
-    ''}
-
-    for f in bin/*; do
-      test -x "$f" || continue
-      ${lib.optionalString (!static) ''
-        ${patchelf}/bin/patchelf "$f" --set-rpath "$out/lib"
-      ''}
-      cp "$f" $out/bin/llama-cpp-"$(basename "$f")"
-    done
-
-    ${lib.optionalString metalSupport "cp ./bin/ggml-metal.metal $out/bin/ggml-metal.metal"}
-
-    runHook postInstall
+      ++ optionals cudaSupport [
+        (
+          with cudaPackages.flags;
+          cmakeFeature "CMAKE_CUDA_ARCHITECTURES" (
+            builtins.concatStringsSep ";" (map dropDot cudaCapabilities)
+          )
+        )
+      ]
+      ++ optionals rocmSupport [
+        (cmakeFeature "CMAKE_C_COMPILER" "hipcc")
+        (cmakeFeature "CMAKE_CXX_COMPILER" "hipcc")
+
+        # Build all targets supported by rocBLAS. When updating search for TARGET_LIST_ROCM
+        # in https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/CMakeLists.txt
+        # and select the line that matches the current nixpkgs version of rocBLAS.
+        # Should likely use `rocmPackages.clr.gpuTargets`.
+        "-DAMDGPU_TARGETS=gfx803;gfx900;gfx906:xnack-;gfx908:xnack-;gfx90a:xnack+;gfx90a:xnack-;gfx940;gfx941;gfx942;gfx1010;gfx1012;gfx1030;gfx1100;gfx1101;gfx1102"
+      ]
+      ++ optionals metalSupport [ (cmakeFeature "CMAKE_C_FLAGS" "-D__ARM_FEATURE_DOTPROD=1") ]
+      ++ optionals blasSupport [ (cmakeFeature "LLAMA_BLAS_VENDOR" "OpenBLAS") ];
+
+  # upstream plans on adding targets at the cmakelevel, remove those
+  # additional steps after that
+  postInstall = ''
+    mv $out/bin/main $out/bin/llama
+    mv $out/bin/server $out/bin/llama-server
+    mkdir -p $out/include
+    cp $src/llama.h $out/include/
   '';
 
   passthru.updateScript = nix-update-script {
@@ -144,9 +152,10 @@ effectiveStdenv.mkDerivation (finalAttrs: {
     description = "Port of Facebook's LLaMA model in C/C++";
     homepage = "https://github.com/ggerganov/llama.cpp/";
     license = licenses.mit;
-    mainProgram = "llama-cpp-main";
-    maintainers = with maintainers; [ dit7ya elohmeier ];
-    broken = (effectiveStdenv.isDarwin && effectiveStdenv.isx86_64) || lib.count lib.id [openclSupport blasSupport rocmSupport cudaSupport] == 0;
+    mainProgram = "llama";
+    maintainers = with maintainers; [ dit7ya elohmeier philiptaron ];
     platforms = platforms.unix;
+    badPlatforms = optionals (cudaSupport || openclSupport) lib.platforms.darwin;
+    broken = (metalSupport && !effectiveStdenv.isDarwin);
   };
 })
diff --git a/nixpkgs/pkgs/by-name/lo/loramon/package.nix b/nixpkgs/pkgs/by-name/lo/loramon/package.nix
new file mode 100644
index 000000000000..9d0161dff2cd
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/lo/loramon/package.nix
@@ -0,0 +1,33 @@
+{ lib
+, python3
+, fetchFromGitHub
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "loramon";
+  version = "0.9.7";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "markqvist";
+    repo = "LoRaMon";
+    rev = "refs/tags/${version}";
+    hash = "sha256-94tXhuAoaS1y/zGz63PPqOayRylGK0Ei2a6H4/BCB30";
+  };
+
+  nativeBuildInputs = with python3.pkgs; [
+    setuptools
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pyserial
+  ];
+
+  meta = with lib; {
+    description = "LoRa packet sniffer for RNode hardware";
+    homepage = "https://github.com/markqvist/LoRaMon";
+    changelog = "https://github.com/markqvist/LoRaMon/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ erethon ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/lu/lubelogger/package.nix b/nixpkgs/pkgs/by-name/lu/lubelogger/package.nix
index 386cddb9a7bd..203073cd404e 100644
--- a/nixpkgs/pkgs/by-name/lu/lubelogger/package.nix
+++ b/nixpkgs/pkgs/by-name/lu/lubelogger/package.nix
@@ -6,13 +6,13 @@
 
 buildDotnetModule rec {
   pname = "lubelogger";
-  version = "1.2.2";
+  version = "1.2.3";
 
   src = fetchFromGitHub {
     owner = "hargata";
     repo = "lubelog";
     rev = "v${version}";
-    hash = "sha256-eH8BWTUTzmVTOnn5svSfk8hqf8CjIpQdxoknlkgjVDY=";
+    hash = "sha256-vYtIrusaprqLNXxb0pyi3a5XX5d1OBpjat0CwvnyCz4=";
   };
 
   projectFile = "CarCareTracker.sln";
diff --git a/nixpkgs/pkgs/by-name/me/mealie/mealie-frontend.nix b/nixpkgs/pkgs/by-name/me/mealie/mealie-frontend.nix
new file mode 100644
index 000000000000..5a7b677802ee
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/me/mealie/mealie-frontend.nix
@@ -0,0 +1,51 @@
+src: version:
+{ lib, fetchYarnDeps, nodejs_18, prefetch-yarn-deps, stdenv }: stdenv.mkDerivation {
+  name = "mealie-frontend";
+  inherit version;
+  src = "${src}/frontend";
+
+  yarnOfflineCache = fetchYarnDeps {
+    yarnLock = "${src}/frontend/yarn.lock";
+    hash = "sha256-zQUD/PQWzp2Q6fiVmLicvSusXffu6s9q3x/aAUnCN38=";
+  };
+
+  nativeBuildInputs = [
+    prefetch-yarn-deps
+    nodejs_18
+    nodejs_18.pkgs.yarn
+  ];
+
+  configurePhase = ''
+    runHook preConfigure
+
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror "$yarnOfflineCache"
+    fixup-yarn-lock yarn.lock
+    yarn install --frozen-lockfile --offline --no-progress --non-interactive
+    patchShebangs node_modules/
+
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    runHook preBuild
+
+    export NUXT_TELEMETRY_DISABLED=1
+    yarn --offline build
+    yarn --offline generate
+
+    runHook postBuild
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mv dist $out
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Frontend for Mealie";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ litchipi ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch b/nixpkgs/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch
new file mode 100644
index 000000000000..521c5cebcf74
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/me/mealie/mealie-logs-to-stdout.patch
@@ -0,0 +1,103 @@
+diff --git a/mealie/core/root_logger.py b/mealie/core/root_logger.py
+index 29db504f..3da5ef84 100644
+--- a/mealie/core/root_logger.py
++++ b/mealie/core/root_logger.py
+@@ -9,7 +9,6 @@ DATA_DIR = determine_data_dir()
+ 
+ from .config import get_app_settings  # noqa E402
+ 
+-LOGGER_FILE = DATA_DIR.joinpath("mealie.log")
+ DATE_FORMAT = "%d-%b-%y %H:%M:%S"
+ LOGGER_FORMAT = "%(levelname)s: %(asctime)s \t%(message)s"
+ 
+@@ -40,19 +39,17 @@ def get_logger_config():
+             level=log_level,
+         )
+ 
+-    output_file_handler = logging.FileHandler(LOGGER_FILE)
+     handler_format = logging.Formatter(LOGGER_FORMAT, datefmt=DATE_FORMAT)
+-    output_file_handler.setFormatter(handler_format)
+ 
+     # Stdout
+     stdout_handler = logging.StreamHandler(sys.stdout)
+     stdout_handler.setFormatter(handler_format)
+ 
+     return LoggerConfig(
+-        handlers=[output_file_handler, stdout_handler],
++        handlers=[stdout_handler],
+         format="%(levelname)s: %(asctime)s \t%(message)s",
+         date_format="%d-%b-%y %H:%M:%S",
+-        logger_file=LOGGER_FILE,
++        logger_file=None,
+         level=log_level,
+     )
+ 
+diff --git a/mealie/routes/admin/admin_log.py b/mealie/routes/admin/admin_log.py
+index ac12c12e..0de98b99 100644
+--- a/mealie/routes/admin/admin_log.py
++++ b/mealie/routes/admin/admin_log.py
+@@ -1,6 +1,5 @@
+ from fastapi import APIRouter
+ 
+-from mealie.core.root_logger import LOGGER_FILE
+ from mealie.core.security import create_file_token
+ 
+ router = APIRouter(prefix="/logs")
+@@ -9,15 +8,13 @@ router = APIRouter(prefix="/logs")
+ @router.get("/{num}")
+ async def get_log(num: int):
+     """Doc Str"""
+-    with open(LOGGER_FILE, "rb") as f:
+-        log_text = tail(f, num)
+-    return log_text
++    return ""
+ 
+ 
+ @router.get("")
+ async def get_log_file():
+     """Returns a token to download a file"""
+-    return {"fileToken": create_file_token(LOGGER_FILE)}
++    return {"fileToken": create_file_token("nofile")}
+ 
+ 
+ def tail(f, lines=20):
+diff --git a/mealie/routes/admin/admin_maintenance.py b/mealie/routes/admin/admin_maintenance.py
+index 23ef8369..322b580f 100644
+--- a/mealie/routes/admin/admin_maintenance.py
++++ b/mealie/routes/admin/admin_maintenance.py
+@@ -6,7 +6,6 @@ from pathlib import Path
+ 
+ from fastapi import APIRouter, HTTPException
+ 
+-from mealie.core.root_logger import LOGGER_FILE
+ from mealie.pkgs.stats import fs_stats
+ from mealie.routes._base import BaseAdminController, controller
+ from mealie.schema.admin import MaintenanceSummary
+@@ -73,8 +72,6 @@ class AdminMaintenanceController(BaseAdminController):
+         Get the maintenance summary
+         """
+         log_file_size = 0
+-        with contextlib.suppress(FileNotFoundError):
+-            log_file_size = os.path.getsize(LOGGER_FILE)
+ 
+         return MaintenanceSummary(
+             data_dir_size=fs_stats.pretty_size(fs_stats.get_dir_size(self.folders.DATA_DIR)),
+@@ -85,7 +82,7 @@ class AdminMaintenanceController(BaseAdminController):
+ 
+     @router.get("/logs", response_model=MaintenanceLogs)
+     def get_logs(self, lines: int = 200):
+-        return MaintenanceLogs(logs=tail_log(LOGGER_FILE, lines))
++        return MaintenanceLogs(logs="")
+ 
+     @router.get("/storage", response_model=MaintenanceStorageDetails)
+     def get_storage_details(self):
+@@ -137,9 +134,6 @@ class AdminMaintenanceController(BaseAdminController):
+         Purges the logs
+         """
+         try:
+-            with contextlib.suppress(FileNotFoundError):
+-                os.remove(LOGGER_FILE)
+-                LOGGER_FILE.touch()
+             return SuccessResponse.respond("Logs cleaned")
+         except Exception as e:
+             raise HTTPException(status_code=500, detail=ErrorResponse.respond("Failed to clean logs")) from e
diff --git a/nixpkgs/pkgs/by-name/me/mealie/package.nix b/nixpkgs/pkgs/by-name/me/mealie/package.nix
new file mode 100644
index 000000000000..2d1512f67ebc
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/me/mealie/package.nix
@@ -0,0 +1,166 @@
+{ lib
+, callPackage
+, fetchFromGitHub
+, fetchpatch
+, makeWrapper
+, nixosTests
+, python3Packages
+, stdenv
+, writeShellScript
+}:
+
+let
+  version = "1.2.0";
+  src = fetchFromGitHub {
+    owner = "mealie-recipes";
+    repo = "mealie";
+    rev = "v${version}";
+    sha256 = "sha256-Kc49XDWcZLeJaYgiAO2/mHeVSOLMeiPr3U32e0IYfdU=";
+  };
+
+  frontend = callPackage (import ./mealie-frontend.nix src version) { };
+
+  pythonpkgs = python3Packages.override {
+    overrides = self: super: {
+      pydantic = python3Packages.pydantic_1;
+    };
+  };
+  python = pythonpkgs.python;
+
+  crfpp = stdenv.mkDerivation {
+    pname = "mealie-crfpp";
+    version = "unstable-2024-02-12";
+    src = fetchFromGitHub {
+      owner = "mealie-recipes";
+      repo = "crfpp";
+      rev = "c56dd9f29469c8a9f34456b8c0d6ae0476110516";
+      hash = "sha256-XNps3ZApU8m07bfPEnvip1w+3hLajdn9+L5+IpEaP0c=";
+    };
+  };
+
+  mealie_patch = { name, commit, hash }: fetchpatch {
+    inherit name hash;
+    url = "https://github.com/mealie-recipes/mealie/commit/${commit}.patch";
+  };
+
+in pythonpkgs.buildPythonPackage rec {
+  pname = "mealie";
+  inherit version src;
+  pyproject = true;
+
+  patches = [
+    # See https://github.com/mealie-recipes/mealie/pull/3102
+    # Replace hardcoded paths in code with environment variables (meant for inside Docker only)
+    # So we can configure easily where the data is stored on the server
+    (mealie_patch {
+      name = "model-path.patch";
+      commit = "e445705c5d26b895d806b96b2f330d4e9aac3723";
+      hash = "sha256-cf0MwvT81lNBTjvag8UUEbXkBu8Jyi/LFwUcs4lBVcY=";
+    })
+    (mealie_patch {
+      name = "alembic-cfg-path.patch";
+      commit = "06c528bfac0708af66aa0629f2e2232ddf07768f";
+      hash = "sha256-IOgdZK7dmWeX2ox16J9v+bOS7nHgCMvCJy6RNJLj0p8=";
+    })
+    ./mealie-logs-to-stdout.patch
+  ];
+
+  nativeBuildInputs = [
+    pythonpkgs.poetry-core
+    pythonpkgs.pythonRelaxDepsHook
+    makeWrapper
+  ];
+
+  dontWrapPythonPrograms = true;
+
+  doCheck = false;
+  pythonRelaxDeps = true;
+
+  propagatedBuildInputs = with pythonpkgs; [
+    aiofiles
+    alembic
+    aniso8601
+    appdirs
+    apprise
+    bcrypt
+    extruct
+    fastapi
+    gunicorn
+    html2text
+    httpx
+    jinja2
+    lxml
+    orjson
+    paho-mqtt
+    passlib
+    pillow
+    psycopg2
+    pyhumps
+    pytesseract
+    python-dotenv
+    python-jose
+    python-ldap
+    python-multipart
+    python-slugify
+    pyyaml
+    rapidfuzz
+    recipe-scrapers
+    sqlalchemy
+    tzdata
+    uvicorn
+  ];
+
+  postPatch = ''
+    substituteInPlace mealie/__init__.py \
+      --replace-fail '__version__ = ' '__version__ = "${version}" #'
+  '';
+
+  postInstall = let
+    start_script = writeShellScript "start-mealie" ''
+      ${lib.getExe pythonpkgs.gunicorn} "$@" -k uvicorn.workers.UvicornWorker mealie.app:app;
+    '';
+    init_db = writeShellScript "init-mealie-db" ''
+      ${python.interpreter} $OUT/${python.sitePackages}/mealie/scripts/install_model.py
+      ${python.interpreter} $OUT/${python.sitePackages}/mealie/db/init_db.py
+    '';
+  in ''
+    mkdir -p $out/config $out/bin $out/libexec
+    rm -f $out/bin/*
+
+    substitute ${src}/alembic.ini $out/config/alembic.ini \
+      --replace-fail 'script_location = alembic' 'script_location = ${src}/alembic'
+
+    makeWrapper ${start_script} $out/bin/mealie \
+      --set PYTHONPATH "$out/${python.sitePackages}:${python.pkgs.makePythonPath propagatedBuildInputs}" \
+      --set LD_LIBRARY_PATH "${crfpp}/lib" \
+      --set STATIC_FILES "${frontend}" \
+      --set PATH "${lib.makeBinPath [ crfpp ]}"
+
+    makeWrapper ${init_db} $out/libexec/init_db \
+      --set PYTHONPATH "$out/${python.sitePackages}:${python.pkgs.makePythonPath propagatedBuildInputs}" \
+      --set OUT "$out"
+  '';
+
+  checkInputs = with python.pkgs; [
+    pytestCheckHook
+  ];
+
+  passthru.tests = {
+    inherit (nixosTests) mealie;
+  };
+
+  meta = with lib; {
+    description = "A self hosted recipe manager and meal planner";
+    longDescription = ''
+      Mealie is a self hosted recipe manager and meal planner with a REST API and a reactive frontend
+      application built in NuxtJS for a pleasant user experience for the whole family. Easily add recipes into your
+      database by providing the URL and Mealie will automatically import the relevant data or add a family recipe with
+      the UI editor.
+    '';
+    homepage = "https://mealie.io";
+    changelog = "https://github.com/mealie-recipes/mealie/releases/tag/${src.rev}";
+    license = licenses.agpl3Only;
+    maintainers = with maintainers; [ litchipi ];
+    mainProgram = "mealie";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/mf/mfcj880dwcupswrapper/package.nix b/nixpkgs/pkgs/by-name/mf/mfcj880dwcupswrapper/package.nix
new file mode 100644
index 000000000000..38ff80577071
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/mf/mfcj880dwcupswrapper/package.nix
@@ -0,0 +1,46 @@
+{ lib, stdenv, fetchurl, mfcj880dwlpr, makeWrapper, bash }:
+
+stdenv.mkDerivation rec {
+  pname = "mfcj880dw-cupswrapper";
+  version = "1.0.0-0";
+
+  src = fetchurl {
+    url = "https://download.brother.com/welcome/dlf102044/mfcj880dw_cupswrapper_GPL_source_${version}.tar.gz";
+    sha256 = "bf291fe31d64afeaefb5b0e606f4baf80c41d80009e34b32b77d56f759e9cf94";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    bash # shebang
+  ];
+
+  makeFlags = [ "-C" "brcupsconfig" "all" ];
+
+  installPhase = ''
+    runHook preInstall
+
+    TARGETFOLDER=$out/opt/brother/Printers/mfcj880dw/cupswrapper
+    mkdir -p $TARGETFOLDER
+    cp PPD/brother_mfcj880dw_printer_en.ppd $TARGETFOLDER
+    cp brcupsconfig/brcupsconfpt1 $TARGETFOLDER
+    cp cupswrapper/cupswrappermfcj880dw $TARGETFOLDER
+    sed -i -e '26,306d' $TARGETFOLDER/cupswrappermfcj880dw
+    substituteInPlace $TARGETFOLDER/cupswrappermfcj880dw \
+      --replace-fail "\$ppd_file_name" "$TARGETFOLDER/brother_mfcj880dw_printer_en.ppd"
+
+    CPUSFILTERFOLDER=$out/lib/cups/filter
+    mkdir -p $TARGETFOLDER $CPUSFILTERFOLDER
+    ln -s ${mfcj880dwlpr}/lib/cups/filter/brother_lpdwrapper_mfcj880dw $out/lib/cups/filter/brother_lpdwrapper_mfcj880dw
+
+    runHook postInstall
+    '';
+
+  meta = with lib; {
+    homepage = "http://www.brother.com/";
+    description = "Brother MFC-J880DW CUPS wrapper driver";
+    license = with licenses; gpl2;
+    platforms = with platforms; linux;
+    downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj880dw_us_eu_as&os=128";
+    maintainers = with maintainers; [ _6543 ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/mf/mfcj880dwlpr/package.nix b/nixpkgs/pkgs/by-name/mf/mfcj880dwlpr/package.nix
new file mode 100644
index 000000000000..8b69c85c7240
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/mf/mfcj880dwlpr/package.nix
@@ -0,0 +1,94 @@
+{ lib, stdenv, fetchurl, pkgsi686Linux, dpkg, makeWrapper, coreutils, gnused, gawk, file, cups, util-linux, xxd, runtimeShell
+, ghostscript, a2ps, bash }:
+
+# Why:
+# The executable "brprintconf_mfcj880dw" binary is looking for "/opt/brother/Printers/%s/inf/br%sfunc" and "/opt/brother/Printers/%s/inf/br%src".
+# Whereby, %s is printf(3) string substitution for stdin's arg0 (the command's own filename) from the 10th char forwards, as a runtime dependency.
+# e.g. Say the filename is "0123456789ABCDE", the runtime will be looking for /opt/brother/Printers/ABCDE/inf/brABCDEfunc.
+# Presumably, the binary was designed to be deployed under the filename "printconf_mfcj880dw", whereby it will search for "/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwfunc".
+# For NixOS, we want to change the string to the store path of brmfcj880dwfunc and brmfcj880dwrc but we're faced with two complications:
+# 1. Too little room to specify the nix store path. We can't even take advantage of %s by renaming the file to the store path hash since the variable is too short and can't contain the whole hash.
+# 2. The binary needs the directory it's running from to be r/w.
+# What:
+# As such, we strip the path and substitution altogether, leaving only "brmfcj880dwfunc" and "brmfcj880dwrc", while filling the leftovers with nulls.
+# Fully null terminating the cstrings is necessary to keep the array the same size and preventing overflows.
+# We then use a shell script to link and execute the binary, func and rc files in a temporary directory.
+# How:
+# In the package, we dump the raw binary as a string of search-able hex values using hexdump. We execute the substitution with sed. We then convert the hex values back to binary form using xxd.
+# We also write a shell script that invoked "mktemp -d" to produce a r/w temporary directory and link what we need in the temporary directory.
+# Result:
+# The user can run brprintconf_mfcj880dw in the shell.
+
+stdenv.mkDerivation rec {
+  pname = "mfcj880dwlpr";
+  version = "1.0.0-0";
+
+  src = fetchurl {
+    url = "https://download.brother.com/welcome/dlf102038/mfcj880dwlpr-${version}.i386.deb";
+    sha256 = "1680b301f660a407fe0b69f5de59c7473d2d66dc472a1589b0cd9f51736bfea7";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ cups ghostscript dpkg a2ps ];
+
+  dontUnpack = true;
+
+  brprintconf_mfcj880dw_script = ''
+    #!${runtimeShell}
+    cd $(mktemp -d)
+    ln -s @out@/usr/bin/brprintconf_mfcj880dw_patched brprintconf_mfcj880dw_patched
+    ln -s @out@/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwfunc brmfcj880dwfunc
+    ln -s @out@/opt/brother/Printers/mfcj880dw/inf/brmfcj880dwrc brmfcj880dwrc
+    ./brprintconf_mfcj880dw_patched "$@"
+  '';
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    substituteInPlace $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw \
+      --replace-fail /opt "$out/opt"
+    substituteInPlace $out/opt/brother/Printers/mfcj880dw/lpd/psconvertij2 \
+      --replace-fail "GHOST_SCRIPT=`which gs`" "GHOST_SCRIPT=${ghostscript}/bin/gs"
+    substituteInPlace $out/opt/brother/Printers/mfcj880dw/inf/setupPrintcapij \
+      --replace-fail "/opt/brother/Printers" "$out/opt/brother/Printers" \
+      --replace-fail "printcap.local" "printcap"
+
+    patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 \
+      --set-rpath $out/opt/brother/Printers/mfcj880dw/inf:$out/opt/brother/Printers/mfcj880dw/lpd \
+      $out/opt/brother/Printers/mfcj880dw/lpd/brmfcj880dwfilter
+    patchelf --set-interpreter ${pkgsi686Linux.stdenv.cc.libc.out}/lib/ld-linux.so.2 $out/usr/bin/brprintconf_mfcj880dw
+
+    #stripping the hardcoded path.
+    # /opt/brother/Printers/%s/inf/br%sfunc -> brmfcj880dwfunc
+    # /opt/brother/Printers/%s/inf/br%src -> brmfcj880dwrc
+    ${util-linux}/bin/hexdump -ve '1/1 "%.2X"' $out/usr/bin/brprintconf_mfcj880dw | \
+    sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F6272257366756E63.62726d66636a383830647766756e6300000000000000000000000000000000000000000000.' | \
+    sed 's.2F6F70742F62726F746865722F5072696E746572732F25732F696E662F627225737263.62726d66636a3838306477726300000000000000000000000000000000000000000000.' | \
+    ${xxd}/bin/xxd -r -p > $out/usr/bin/brprintconf_mfcj880dw_patched
+    chmod +x $out/usr/bin/brprintconf_mfcj880dw_patched
+    #executing from current dir. segfaults if it's not r\w.
+    mkdir -p $out/bin
+    echo -n "$brprintconf_mfcj880dw_script" > $out/bin/brprintconf_mfcj880dw
+    chmod +x $out/bin/brprintconf_mfcj880dw
+    substituteInPlace $out/bin/brprintconf_mfcj880dw --replace-fail @out@ $out
+
+    # NOTE: opt/brother/Printers/mfcj880dw/lpd/brmfcj880dwfilter also has cardcoded paths, but we can not simply replace them
+
+    mkdir -p $out/lib/cups/filter/
+    ln -s $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw $out/lib/cups/filter/brother_lpdwrapper_mfcj880dw
+
+    wrapProgram $out/opt/brother/Printers/mfcj880dw/lpd/psconvertij2 \
+      --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused gawk ] }
+    wrapProgram $out/opt/brother/Printers/mfcj880dw/lpd/filtermfcj880dw \
+      --prefix PATH ":" ${ lib.makeBinPath [ coreutils gnused file ghostscript a2ps ] }
+    '';
+
+  meta = with lib; {
+    description  = "Brother MFC-J880DW LPR driver";
+    downloadPage = "https://support.brother.com/g/b/downloadlist.aspx?c=us&lang=en&prod=mfcj880dw_us_eu_as&os=128";
+    homepage     = "http://www.brother.com/";
+    sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    license      = with licenses; unfree;
+    maintainers  = with maintainers; [ _6543 ];
+    platforms    = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/ms/msolve/package.nix b/nixpkgs/pkgs/by-name/ms/msolve/package.nix
index 03dd75785872..3a8fe18b063c 100644
--- a/nixpkgs/pkgs/by-name/ms/msolve/package.nix
+++ b/nixpkgs/pkgs/by-name/ms/msolve/package.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "msolve";
-  version = "0.6.4";
+  version = "0.6.5";
 
   src = fetchFromGitHub {
     owner = "algebraic-solving";
     repo = "msolve";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-XSV279cw1svAF+uyVmkUodX4FkltDesXsge4QKHqM1o=";
+    hash = "sha256-qCquagxj31ih0r5kE4x/jsIBI+KBgrMa3HcBGuhlufk=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/by-name/my/mycelium/Cargo.lock b/nixpkgs/pkgs/by-name/my/mycelium/Cargo.lock
new file mode 100644
index 000000000000..8979931acce8
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/my/mycelium/Cargo.lock
@@ -0,0 +1,2544 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "addr2line"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+dependencies = [
+ "gimli",
+]
+
+[[package]]
+name = "adler"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+
+[[package]]
+name = "aead"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0"
+dependencies = [
+ "crypto-common",
+ "generic-array",
+]
+
+[[package]]
+name = "aes"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
+dependencies = [
+ "cfg-if",
+ "cipher",
+ "cpufeatures",
+]
+
+[[package]]
+name = "aes-gcm"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1"
+dependencies = [
+ "aead",
+ "aes",
+ "cipher",
+ "ctr",
+ "ghash",
+ "subtle",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "anstream"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
+dependencies = [
+ "anstyle",
+ "anstyle-parse",
+ "anstyle-query",
+ "anstyle-wincon",
+ "colorchoice",
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+
+[[package]]
+name = "anstyle-parse"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
+dependencies = [
+ "utf8parse",
+]
+
+[[package]]
+name = "anstyle-query"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
+dependencies = [
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anstyle-wincon"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
+dependencies = [
+ "anstyle",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+
+[[package]]
+name = "arrayref"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+
+[[package]]
+name = "async-trait"
+version = "0.1.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "axum"
+version = "0.6.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+dependencies = [
+ "async-trait",
+ "axum-core",
+ "bitflags 1.3.2",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "itoa",
+ "matchit",
+ "memchr",
+ "mime",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustversion",
+ "serde",
+ "serde_json",
+ "serde_path_to_error",
+ "serde_urlencoded",
+ "sync_wrapper",
+ "tokio",
+ "tower",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "axum-core"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+dependencies = [
+ "async-trait",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "mime",
+ "rustversion",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "backtrace"
+version = "0.3.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+dependencies = [
+ "addr2line",
+ "cc",
+ "cfg-if",
+ "libc",
+ "miniz_oxide",
+ "object",
+ "rustc-demangle",
+]
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf"
+
+[[package]]
+name = "blake2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
+dependencies = [
+ "digest",
+]
+
+[[package]]
+name = "blake3"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87"
+dependencies = [
+ "arrayref",
+ "arrayvec",
+ "cc",
+ "cfg-if",
+ "constant_time_eq",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+
+[[package]]
+name = "c2rust-bitfields"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b43c3f07ab0ef604fa6f595aa46ec2f8a22172c975e186f6f5bf9829a3b72c41"
+dependencies = [
+ "c2rust-bitfields-derive",
+]
+
+[[package]]
+name = "c2rust-bitfields-derive"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3cbc102e2597c9744c8bd8c15915d554300601c91a079430d309816b0912545"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "cipher"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
+dependencies = [
+ "crypto-common",
+ "inout",
+]
+
+[[package]]
+name = "clap"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c"
+dependencies = [
+ "clap_builder",
+ "clap_derive",
+]
+
+[[package]]
+name = "clap_builder"
+version = "4.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7"
+dependencies = [
+ "anstream",
+ "anstyle",
+ "clap_lex",
+ "strsim",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+dependencies = [
+ "heck",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+
+[[package]]
+name = "colorchoice"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+
+[[package]]
+name = "constant_time_eq"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "rand_core",
+ "typenum",
+]
+
+[[package]]
+name = "ctr"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835"
+dependencies = [
+ "cipher",
+]
+
+[[package]]
+name = "curve25519-dalek"
+version = "4.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "curve25519-dalek-derive",
+ "fiat-crypto",
+ "platforms",
+ "rustc_version",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "curve25519-dalek-derive"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "deranged"
+version = "0.3.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
+dependencies = [
+ "powerfmt",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "env_logger"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
+dependencies = [
+ "humantime",
+ "is-terminal",
+ "log",
+ "regex",
+ "termcolor",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+
+[[package]]
+name = "errno"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+dependencies = [
+ "libc",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "etherparse"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "827292ea592108849932ad8e30218f8b1f21c0dfd0696698a18b5d0aed62d990"
+dependencies = [
+ "arrayvec",
+]
+
+[[package]]
+name = "faster-hex"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "239f7bfb930f820ab16a9cd95afc26f88264cf6905c960b340a615384aa3338a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "fiat-crypto"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7"
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "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-macro"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+
+[[package]]
+name = "futures-task"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+
+[[package]]
+name = "futures-util"
+version = "0.3.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "generator"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e"
+dependencies = [
+ "cc",
+ "libc",
+ "log",
+ "rustversion",
+ "windows 0.48.0",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "ghash"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40"
+dependencies = [
+ "opaque-debug",
+ "polyval",
+]
+
+[[package]]
+name = "gimli"
+version = "0.28.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+
+[[package]]
+name = "h2"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http",
+ "indexmap",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.14.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "hermit-abi"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
+
+[[package]]
+name = "http"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
+dependencies = [
+ "bytes",
+ "http",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+
+[[package]]
+name = "httpdate"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+
+[[package]]
+name = "humantime"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "hyper"
+version = "0.14.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+ "want",
+]
+
+[[package]]
+name = "hyper-rustls"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
+dependencies = [
+ "futures-util",
+ "http",
+ "hyper",
+ "rustls",
+ "tokio",
+ "tokio-rustls",
+]
+
+[[package]]
+name = "idna"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
+name = "inout"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "ioctl-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8bd11f3a29434026f5ff98c730b668ba74b1033637b8817940b54d040696133c"
+
+[[package]]
+name = "ip_network_table-deps-treebitmap"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e537132deb99c0eb4b752f0346b6a836200eaaa3516dd7e5514b63930a09e5d"
+
+[[package]]
+name = "ipnet"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+
+[[package]]
+name = "is-terminal"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455"
+dependencies = [
+ "hermit-abi",
+ "rustix",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
+
+[[package]]
+name = "js-sys"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "left-right"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cabfddf3ad712b726484562039aa6fc2014bc1b5c088bb211b208052cf0439e6"
+dependencies = [
+ "loom",
+ "slab",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.152"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
+
+[[package]]
+name = "libloading"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+
+[[package]]
+name = "log"
+version = "0.4.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+
+[[package]]
+name = "loom"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
+dependencies = [
+ "cfg-if",
+ "generator",
+ "scoped-tls",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[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 = "matchit"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+
+[[package]]
+name = "memchr"
+version = "2.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+
+[[package]]
+name = "memoffset"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
+dependencies = [
+ "autocfg",
+]
+
+[[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.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "mio"
+version = "0.8.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "mycelium"
+version = "0.4.2"
+dependencies = [
+ "aes-gcm",
+ "axum",
+ "base64",
+ "blake2",
+ "blake3",
+ "bytes",
+ "clap",
+ "digest",
+ "etherparse",
+ "faster-hex",
+ "futures",
+ "ip_network_table-deps-treebitmap",
+ "ipnet",
+ "left-right",
+ "libc",
+ "log",
+ "network-interface",
+ "nix 0.27.1",
+ "pretty_env_logger",
+ "quinn",
+ "rand",
+ "rcgen",
+ "reqwest",
+ "rtnetlink",
+ "rustls",
+ "serde",
+ "serde_json",
+ "tokio",
+ "tokio-stream",
+ "tokio-tun",
+ "tokio-util",
+ "toml",
+ "tun",
+ "wintun 0.4.0",
+ "x25519-dalek",
+]
+
+[[package]]
+name = "netlink-packet-core"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4"
+dependencies = [
+ "anyhow",
+ "byteorder",
+ "netlink-packet-utils",
+]
+
+[[package]]
+name = "netlink-packet-route"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66"
+dependencies = [
+ "anyhow",
+ "bitflags 1.3.2",
+ "byteorder",
+ "libc",
+ "netlink-packet-core",
+ "netlink-packet-utils",
+]
+
+[[package]]
+name = "netlink-packet-utils"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34"
+dependencies = [
+ "anyhow",
+ "byteorder",
+ "paste",
+ "thiserror",
+]
+
+[[package]]
+name = "netlink-proto"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "842c6770fc4bb33dd902f41829c61ef872b8e38de1405aa0b938b27b8fba12c3"
+dependencies = [
+ "bytes",
+ "futures",
+ "log",
+ "netlink-packet-core",
+ "netlink-sys",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "netlink-sys"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411"
+dependencies = [
+ "bytes",
+ "futures",
+ "libc",
+ "log",
+ "tokio",
+]
+
+[[package]]
+name = "network-interface"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68759ef97fe9c9e46f79ea8736c19f1d28992e24c8dc8ce86752918bfeaae7"
+dependencies = [
+ "cc",
+ "libc",
+ "thiserror",
+ "winapi",
+]
+
+[[package]]
+name = "nix"
+version = "0.26.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+dependencies = [
+ "bitflags 1.3.2",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
+name = "nix"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+dependencies = [
+ "bitflags 2.4.2",
+ "cfg-if",
+ "libc",
+ "memoffset",
+]
+
+[[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_cpus"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "object"
+version = "0.32.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+
+[[package]]
+name = "opaque-debug"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "paste"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+
+[[package]]
+name = "pem"
+version = "3.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310"
+dependencies = [
+ "base64",
+ "serde",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "pin-project"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+dependencies = [
+ "pin-project-internal",
+]
+
+[[package]]
+name = "pin-project-internal"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "platforms"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c"
+
+[[package]]
+name = "polyval"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "opaque-debug",
+ "universal-hash",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+
+[[package]]
+name = "pretty_env_logger"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c"
+dependencies = [
+ "env_logger",
+ "log",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quinn"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cc2c5017e4b43d5995dcea317bc46c1e09404c0a9664d2908f7f02dfe943d75"
+dependencies = [
+ "bytes",
+ "pin-project-lite",
+ "quinn-proto",
+ "quinn-udp",
+ "rustc-hash",
+ "rustls",
+ "thiserror",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-proto"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "141bf7dfde2fbc246bfd3fe12f2455aa24b0fbd9af535d8c86c7bd1381ff2b1a"
+dependencies = [
+ "bytes",
+ "rand",
+ "ring 0.16.20",
+ "rustc-hash",
+ "rustls",
+ "slab",
+ "thiserror",
+ "tinyvec",
+ "tracing",
+]
+
+[[package]]
+name = "quinn-udp"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7"
+dependencies = [
+ "bytes",
+ "libc",
+ "socket2",
+ "tracing",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom",
+]
+
+[[package]]
+name = "rcgen"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d918c80c5a4c7560db726763020bd16db179e4d5b828078842274a443addb5d"
+dependencies = [
+ "pem",
+ "ring 0.17.7",
+ "time",
+ "yasna",
+]
+
+[[package]]
+name = "regex"
+version = "1.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata 0.4.4",
+ "regex-syntax 0.8.2",
+]
+
+[[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.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax 0.8.2",
+]
+
+[[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.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
+name = "reqwest"
+version = "0.11.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41"
+dependencies = [
+ "base64",
+ "bytes",
+ "encoding_rs",
+ "futures-core",
+ "futures-util",
+ "h2",
+ "http",
+ "http-body",
+ "hyper",
+ "hyper-rustls",
+ "ipnet",
+ "js-sys",
+ "log",
+ "mime",
+ "once_cell",
+ "percent-encoding",
+ "pin-project-lite",
+ "rustls",
+ "rustls-pemfile",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "system-configuration",
+ "tokio",
+ "tokio-rustls",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "webpki-roots",
+ "winreg",
+]
+
+[[package]]
+name = "ring"
+version = "0.16.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc"
+dependencies = [
+ "cc",
+ "libc",
+ "once_cell",
+ "spin 0.5.2",
+ "untrusted 0.7.1",
+ "web-sys",
+ "winapi",
+]
+
+[[package]]
+name = "ring"
+version = "0.17.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
+dependencies = [
+ "cc",
+ "getrandom",
+ "libc",
+ "spin 0.9.8",
+ "untrusted 0.9.0",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "rtnetlink"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a552eb82d19f38c3beed3f786bd23aa434ceb9ac43ab44419ca6d67a7e186c0"
+dependencies = [
+ "futures",
+ "log",
+ "netlink-packet-core",
+ "netlink-packet-route",
+ "netlink-packet-utils",
+ "netlink-proto",
+ "netlink-sys",
+ "nix 0.26.4",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "rustc-demangle"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "0.38.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
+dependencies = [
+ "bitflags 2.4.2",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rustls"
+version = "0.21.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba"
+dependencies = [
+ "log",
+ "ring 0.17.7",
+ "rustls-webpki",
+ "sct",
+]
+
+[[package]]
+name = "rustls-pemfile"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
+dependencies = [
+ "base64",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.101.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
+dependencies = [
+ "ring 0.17.7",
+ "untrusted 0.9.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+
+[[package]]
+name = "ryu"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "sct"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
+dependencies = [
+ "ring 0.17.7",
+ "untrusted 0.9.0",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+
+[[package]]
+name = "serde"
+version = "1.0.195"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.195"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_path_to_error"
+version = "0.1.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c"
+dependencies = [
+ "itoa",
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+
+[[package]]
+name = "socket2"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "spin"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
+
+[[package]]
+name = "spin"
+version = "0.9.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "subtle"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+
+[[package]]
+name = "system-configuration"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
+dependencies = [
+ "bitflags 1.3.2",
+ "core-foundation",
+ "system-configuration-sys",
+]
+
+[[package]]
+name = "system-configuration-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.56"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e"
+dependencies = [
+ "deranged",
+ "powerfmt",
+ "serde",
+ "time-core",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.36.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+dependencies = [
+ "backtrace",
+ "bytes",
+ "libc",
+ "mio",
+ "num_cpus",
+ "pin-project-lite",
+ "signal-hook-registry",
+ "socket2",
+ "tokio-macros",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "tokio-macros"
+version = "2.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tokio-rustls"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
+dependencies = [
+ "rustls",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-stream"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+ "tokio",
+ "tokio-util",
+]
+
+[[package]]
+name = "tokio-tun"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf2efaf33e86779a3a68b1f1d6e9e13a346c1c75ee3cab7a4293235c463b2668"
+dependencies = [
+ "libc",
+ "nix 0.27.1",
+ "thiserror",
+ "tokio",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+ "tracing",
+]
+
+[[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",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "winnow",
+]
+
+[[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 = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+dependencies = [
+ "once_cell",
+ "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 = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "tun"
+version = "0.6.1"
+source = "git+https://github.com/LeeSmet/rust-tun#eaad3340ef74475def7e080dedff77f7d830f3b8"
+dependencies = [
+ "byteorder",
+ "bytes",
+ "futures-core",
+ "ioctl-sys",
+ "libc",
+ "log",
+ "thiserror",
+ "tokio",
+ "tokio-util",
+ "wintun 0.3.2",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "universal-hash"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea"
+dependencies = [
+ "crypto-common",
+ "subtle",
+]
+
+[[package]]
+name = "untrusted"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "url"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf8parse"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.90"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
+
+[[package]]
+name = "web-sys"
+version = "0.3.67"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.25.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-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.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca229916c5ee38c2f2bc1e9d8f04df975b4bd93f9955dc69fabb5d91270045c9"
+dependencies = [
+ "windows-core 0.51.1",
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be"
+dependencies = [
+ "windows-core 0.52.0",
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.51.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
+name = "winnow"
+version = "0.5.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7cf47b659b318dccbd69cc4797a39ae128f533dce7902a1096044d1967b9c16"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.50.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "wintun"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29b83b0eca06dd125dbcd48a45327c708a6da8aada3d95a3f06db0ce4b17e0d4"
+dependencies = [
+ "c2rust-bitfields",
+ "libloading",
+ "log",
+ "thiserror",
+ "windows 0.51.1",
+]
+
+[[package]]
+name = "wintun"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b3c8c8876c686f8a2d6376999ac1c9a24c74d2968551c9394f7e89127783685"
+dependencies = [
+ "c2rust-bitfields",
+ "libloading",
+ "log",
+ "thiserror",
+ "windows 0.52.0",
+]
+
+[[package]]
+name = "x25519-dalek"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
+dependencies = [
+ "curve25519-dalek",
+ "rand_core",
+ "serde",
+ "zeroize",
+]
+
+[[package]]
+name = "yasna"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd"
+dependencies = [
+ "time",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+dependencies = [
+ "zeroize_derive",
+]
+
+[[package]]
+name = "zeroize_derive"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.48",
+]
diff --git a/nixpkgs/pkgs/by-name/my/mycelium/package.nix b/nixpkgs/pkgs/by-name/my/mycelium/package.nix
new file mode 100644
index 000000000000..d5b66705d15a
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/my/mycelium/package.nix
@@ -0,0 +1,39 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, stdenv
+, darwin
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "mycelium";
+  version = "0.4.2";
+
+  src = fetchFromGitHub {
+    owner = "threefoldtech";
+    repo = "mycelium";
+    rev = "v${version}";
+    hash = "sha256-VWrWg9UpBSug0cvY/zuzGFI6Y0CRFcrh1Cy4mbYtg9Q=";
+  };
+
+  cargoLock = {
+    lockFile = ./Cargo.lock;
+    outputHashes = {
+      "tun-0.6.1" = "sha256-DelNPCOWvVSMS2BNGA2Gw/Mn9c7RdFNR21/jo1xf+xk=";
+    };
+  };
+
+  buildInputs = lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
+  ];
+
+  meta = with lib; {
+    description = "End-2-end encrypted IPv6 overlay network";
+    homepage = "https://github.com/threefoldtech/mycelium";
+    changelog = "https://github.com/threefoldtech/mycelium/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ matthewcroughan ];
+    mainProgram = "mycelium";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/my/mystmd/package.nix b/nixpkgs/pkgs/by-name/my/mystmd/package.nix
index a5452e9a51cf..c24678f83125 100644
--- a/nixpkgs/pkgs/by-name/my/mystmd/package.nix
+++ b/nixpkgs/pkgs/by-name/my/mystmd/package.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "mystmd";
-  version = "1.1.43";
+  version = "1.1.44";
 
   src = fetchFromGitHub {
     owner = "executablebooks";
     repo = "mystmd";
     rev = "mystmd@${version}";
-    hash = "sha256-NKb62xhmdqA/fLF2HIm/t+eiIiSLKvPDLlAdjWBKJrQ=";
+    hash = "sha256-cNpnXEcG7XGQO17HtgRYA0nn1LV8BWEbbzoeeHfh50Q=";
   };
 
-  npmDepsHash = "sha256-5PcGD5La3g9Gd9Me31nLZA+Pi9k+x0s8APXYVa6QSH8=";
+  npmDepsHash = "sha256-oflaxF4npCqS3k90G3kJkBkPy1xGL/orG5d4VMqMjlo=";
 
   dontNpmInstall = true;
 
diff --git a/nixpkgs/pkgs/by-name/ni/niri/Cargo.lock b/nixpkgs/pkgs/by-name/ni/niri/Cargo.lock
index bc8014e2499a..a44b513cfcbb 100644
--- a/nixpkgs/pkgs/by-name/ni/niri/Cargo.lock
+++ b/nixpkgs/pkgs/by-name/ni/niri/Cargo.lock
@@ -64,6 +64,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
 
 [[package]]
+name = "annotate-snippets"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e"
+dependencies = [
+ "unicode-width",
+ "yansi-term",
+]
+
+[[package]]
 name = "anstream"
 version = "0.6.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -79,9 +89,9 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.5"
+version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2faccea4cc4ab4a667ce676a30e8ec13922a692c99bb8f5b11f1502c72e04220"
+checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
 
 [[package]]
 name = "anstyle-parse"
@@ -156,13 +166,13 @@ dependencies = [
 
 [[package]]
 name = "async-channel"
-version = "2.1.1"
+version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c"
+checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3"
 dependencies = [
  "concurrent-queue",
- "event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener 5.0.0",
+ "event-listener-strategy 0.5.0",
  "futures-core",
  "pin-project-lite",
 ]
@@ -225,7 +235,7 @@ dependencies = [
  "futures-io",
  "futures-lite 2.2.0",
  "parking",
- "polling 3.3.2",
+ "polling 3.4.0",
  "rustix 0.38.31",
  "slab",
  "tracing",
@@ -248,7 +258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b"
 dependencies = [
  "event-listener 4.0.3",
- "event-listener-strategy",
+ "event-listener-strategy 0.4.0",
  "pin-project-lite",
 ]
 
@@ -335,16 +345,17 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
 
 [[package]]
 name = "bindgen"
-version = "0.66.1"
+version = "0.69.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7"
+checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0"
 dependencies = [
+ "annotate-snippets",
  "bitflags 2.4.2",
  "cexpr",
  "clang-sys",
+ "itertools",
  "lazy_static",
  "lazycell",
- "peeking_take_while",
  "proc-macro2",
  "quote",
  "regex",
@@ -438,9 +449,9 @@ checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
 name = "bytemuck"
-version = "1.14.1"
+version = "1.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed2490600f404f2b94c167e31d3ed1d5f3c225a0f3b80230053b3e0b7b962bd9"
+checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
 dependencies = [
  "bytemuck_derive",
 ]
@@ -470,23 +481,22 @@ checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
 name = "cairo-rs"
-version = "0.18.5"
+version = "0.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+checksum = "bc1c415b7088381c53c575420899c34c9e6312df5ac5defd05614210e9fd6e1b"
 dependencies = [
  "bitflags 2.4.2",
  "cairo-sys-rs",
  "glib",
  "libc",
- "once_cell",
  "thiserror",
 ]
 
 [[package]]
 name = "cairo-sys-rs"
-version = "0.18.2"
+version = "0.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+checksum = "75b6a5fefce2eadb8333e3c604ac964ba6573ec4f28bdd17f67032c4a2831831"
 dependencies = [
  "glib-sys",
  "libc",
@@ -503,7 +513,7 @@ dependencies = [
  "bitflags 2.4.2",
  "futures-io",
  "log",
- "polling 3.3.2",
+ "polling 3.4.0",
  "rustix 0.38.31",
  "slab",
  "thiserror",
@@ -548,9 +558,9 @@ dependencies = [
 
 [[package]]
 name = "cfg-expr"
-version = "0.15.6"
+version = "0.15.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6100bc57b6209840798d95cb2775684849d332f7bd788db2a8c8caf7ef82a41a"
+checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d"
 dependencies = [
  "smallvec",
  "target-lexicon",
@@ -897,6 +907,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2ab5fa33485cd85ac354df485819a63360fefa312fe04cffe65e6f175be1522c"
 
 [[package]]
+name = "either"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+
+[[package]]
 name = "enumflags2"
 version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -962,6 +978,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "event-listener"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b72557800024fabbaa2449dd4bf24e37b93702d457a4d4f2b0dd1f0f039f20c1"
+dependencies = [
+ "concurrent-queue",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "event-listener-strategy"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -972,6 +999,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "event-listener-strategy"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+dependencies = [
+ "event-listener 5.0.0",
+ "pin-project-lite",
+]
+
+[[package]]
 name = "fastrand"
 version = "1.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -996,6 +1033,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset 0.9.0",
+ "rustc_version",
+]
+
+[[package]]
 name = "flate2"
 version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1149,9 +1196,9 @@ dependencies = [
 
 [[package]]
 name = "gbm"
-version = "0.14.0"
+version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65dffaf38d96aa22cb748ccd9b1ffe624931e899f54c0225815ef7ac757a409f"
+checksum = "f177420f6650dcd50042121adf7ff7ab265abdaf4862fe2624066e36e3a9ef34"
 dependencies = [
  "bitflags 1.3.2",
  "drm",
@@ -1172,6 +1219,63 @@ dependencies = [
 ]
 
 [[package]]
+name = "gdk-pixbuf"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c311c47800051b87de1335e8792774d7cec551c91a0a3d109ab21d76b36f208f"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dcbd04c1b2c4834cc008b4828bc917d062483b88d26effde6342e5622028f96"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk4"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6771942f85a2beaa220c64739395e4401b9fab4a52aba9b503fa1e6ed4d4d806"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk4-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk4-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1eb95854fab65072023a7814434f003db571d6e45c287c0b0c540c1c78bdf6ae"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
 name = "generator"
 version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1217,9 +1321,9 @@ dependencies = [
 
 [[package]]
 name = "gio"
-version = "0.18.4"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+checksum = "b3d1aaa2d926710a27f3b35822806b1513b393b71174dd2601c9d02fdab0cb82"
 dependencies = [
  "futures-channel",
  "futures-core",
@@ -1228,7 +1332,6 @@ dependencies = [
  "gio-sys",
  "glib",
  "libc",
- "once_cell",
  "pin-project-lite",
  "smallvec",
  "thiserror",
@@ -1236,15 +1339,15 @@ dependencies = [
 
 [[package]]
 name = "gio-sys"
-version = "0.18.1"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+checksum = "bcf8e1d9219bb294636753d307b030c1e8a032062cba74f493c431a5c8b81ce4"
 dependencies = [
  "glib-sys",
  "gobject-sys",
  "libc",
  "system-deps",
- "winapi",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -1280,9 +1383,9 @@ dependencies = [
 
 [[package]]
 name = "glib"
-version = "0.18.5"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+checksum = "170ee82b9b44b3b5fd1cf4971d6cf0eadec38303bb84c7bcc4e6b95a18934e71"
 dependencies = [
  "bitflags 2.4.2",
  "futures-channel",
@@ -1296,20 +1399,18 @@ dependencies = [
  "gobject-sys",
  "libc",
  "memchr",
- "once_cell",
  "smallvec",
  "thiserror",
 ]
 
 [[package]]
 name = "glib-macros"
-version = "0.18.5"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+checksum = "2ff52fff7e4d1bb8598ae744e9bb90c8c76271712483c3f0ce931bee9814de85"
 dependencies = [
  "heck",
- "proc-macro-crate 2.0.2",
- "proc-macro-error",
+ "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
  "syn 2.0.48",
@@ -1317,9 +1418,9 @@ dependencies = [
 
 [[package]]
 name = "glib-sys"
-version = "0.18.1"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+checksum = "630f097773d7c7a0bb3258df4e8157b47dc98bbfa0e60ad9ab56174813feced4"
 dependencies = [
  "libc",
  "system-deps",
@@ -1333,12 +1434,120 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "gobject-sys"
-version = "0.18.0"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c85e2b1080b9418dd0c58b498da3a5c826030343e0ef07bde6a955d28de54979"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "graphene-rs"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147827e4f506f8073ac3ec5b28cc2255bdf3abc30f5b4e101a80506eebe11d2c"
+dependencies = [
+ "glib",
+ "graphene-sys",
+ "libc",
+]
+
+[[package]]
+name = "graphene-sys"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+checksum = "236ed66cc9b18d8adf233716f75de803d0bf6fc806f60d14d948974a12e240d0"
 dependencies = [
  "glib-sys",
  "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gsk4"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e8ce8dee0fd87a11002214b1204ff18c9272fbd530408f0884a0f9b25dc31de"
+dependencies = [
+ "cairo-rs",
+ "gdk4",
+ "glib",
+ "graphene-rs",
+ "gsk4-sys",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gsk4-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2660a652da5b662d43924df19ba40d73f015ed427329ef51d2b1360a4e0dc0e4"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk4-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk4"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d26ffa3ec6316ccaa1df62d3e7f5bae1637c0acbb43f250fabef38319f73c64"
+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.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c8b86439e9896f6f3f47c3d8077c5c8205174078760afdabd9098a8e9e937d97"
+dependencies = [
+ "anyhow",
+ "proc-macro-crate 3.1.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+]
+
+[[package]]
+name = "gtk4-sys"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2abc0a6d356d59a3806021829ce6ed3e70bba3509b41a535fedcb09fae13fbc0"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk4-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "graphene-sys",
+ "gsk4-sys",
+ "libc",
+ "pango-sys",
  "system-deps",
 ]
 
@@ -1363,9 +1572,9 @@ dependencies = [
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.4"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
+checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3"
 
 [[package]]
 name = "hex"
@@ -1414,6 +1623,7 @@ dependencies = [
  "input-sys",
  "io-lifetimes 1.0.11",
  "libc",
+ "log",
  "udev",
 ]
 
@@ -1450,6 +1660,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c"
 
 [[package]]
+name = "itertools"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569"
+dependencies = [
+ "either",
+]
+
+[[package]]
 name = "itoa"
 version = "1.0.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1479,18 +1698,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
 
 [[package]]
 name = "jobserver"
-version = "0.1.27"
+version = "0.1.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
+checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.67"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
+checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -1550,6 +1769,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
 
 [[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.153"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1615,9 +1866,9 @@ dependencies = [
 
 [[package]]
 name = "libspa"
-version = "0.7.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0434617020ddca18b86067912970c55410ca654cdafd775480322f50b857a8c4"
+checksum = "65f3a4b81b2a2d8c7f300643676202debd1b7c929dbf5c9bb89402ea11d19810"
 dependencies = [
  "bitflags 2.4.2",
  "cc",
@@ -1625,16 +1876,16 @@ dependencies = [
  "cookie-factory",
  "libc",
  "libspa-sys",
- "nix",
+ "nix 0.27.1",
  "nom",
  "system-deps",
 ]
 
 [[package]]
 name = "libspa-sys"
-version = "0.7.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3e70ca3f3e70f858ef363046d06178c427b4e0b63d210c95fd87d752679d345"
+checksum = "bf0d9716420364790e85cbb9d3ac2c950bde16a7dd36f3209b7dfdfc4a24d01f"
 dependencies = [
  "bindgen",
  "cc",
@@ -1676,16 +1927,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
-name = "logind-zbus"
-version = "3.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c07a2542f6e91ea92780158654852190edb2ba0b232d9d00d649d0c691cb7eb3"
-dependencies = [
- "serde",
- "zbus",
-]
-
-[[package]]
 name = "loom"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1802,9 +2043,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.1"
+version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7"
 dependencies = [
  "adler",
  "simd-adler32",
@@ -1842,7 +2083,7 @@ dependencies = [
 
 [[package]]
 name = "niri"
-version = "0.1.1"
+version = "0.1.2"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -1854,10 +2095,10 @@ dependencies = [
  "directories",
  "futures-util",
  "git-version",
+ "input",
  "keyframe",
  "libc",
  "log",
- "logind-zbus",
  "niri-config",
  "niri-ipc",
  "notify-rust",
@@ -1878,16 +2119,19 @@ dependencies = [
  "tracy-client",
  "url",
  "xcursor",
+ "xshell",
  "zbus",
 ]
 
 [[package]]
 name = "niri-config"
-version = "0.1.1"
+version = "0.1.2"
 dependencies = [
  "bitflags 2.4.2",
  "knuffel",
  "miette",
+ "niri-ipc",
+ "regex",
  "smithay",
  "tracing",
  "tracy-client",
@@ -1895,12 +2139,27 @@ dependencies = [
 
 [[package]]
 name = "niri-ipc"
-version = "0.1.1"
+version = "0.1.2"
 dependencies = [
+ "clap",
  "serde",
 ]
 
 [[package]]
+name = "niri-visual-tests"
+version = "0.1.2"
+dependencies = [
+ "anyhow",
+ "gtk4",
+ "libadwaita",
+ "niri",
+ "niri-config",
+ "smithay",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
 name = "nix"
 version = "0.26.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1910,7 +2169,17 @@ dependencies = [
  "cfg-if",
  "libc",
  "memoffset 0.7.1",
- "pin-utils",
+]
+
+[[package]]
+name = "nix"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+dependencies = [
+ "bitflags 2.4.2",
+ "cfg-if",
+ "libc",
 ]
 
 [[package]]
@@ -1954,9 +2223,9 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
 
 [[package]]
 name = "num-traits"
-version = "0.2.17"
+version = "0.2.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
 dependencies = [
  "autocfg",
  "libm",
@@ -1977,7 +2246,7 @@ version = "0.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
 dependencies = [
- "proc-macro-crate 2.0.2",
+ "proc-macro-crate 3.1.0",
  "proc-macro2",
  "quote",
  "syn 2.0.48",
@@ -2073,22 +2342,21 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
 
 [[package]]
 name = "pango"
-version = "0.18.3"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+checksum = "78d7f779b957728c74fd1a060dfa6d89a0bea792ebc50cc2da80e4e87282d69e"
 dependencies = [
  "gio",
  "glib",
  "libc",
- "once_cell",
  "pango-sys",
 ]
 
 [[package]]
 name = "pango-sys"
-version = "0.18.0"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+checksum = "f52ef6a881c19fbfe3b1484df5cad411acaaba29dbec843941c3110d19f340ea"
 dependencies = [
  "glib-sys",
  "gobject-sys",
@@ -2098,9 +2366,9 @@ dependencies = [
 
 [[package]]
 name = "pangocairo"
-version = "0.18.0"
+version = "0.19.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57036589a9cfcacf83f9e606d15813fc6bf03f0e9e69aa2b5e3bb85af86b38a5"
+checksum = "9615c6294903a6ea26fa63984b18e51275354d1fa91bbde68eeb7fa3ab61a72f"
 dependencies = [
  "cairo-rs",
  "glib",
@@ -2111,9 +2379,9 @@ dependencies = [
 
 [[package]]
 name = "pangocairo-sys"
-version = "0.18.0"
+version = "0.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc3c8ff676a37e7a72ec1d5fc029f91c407278083d2752784ff9f5188c108833"
+checksum = "01bd0597ae45983f9e8b7f73afc42238426cd3fbb44a9cf14fd881a4ae08f1e4"
 dependencies = [
  "cairo-sys-rs",
  "glib-sys",
@@ -2135,12 +2403,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
 
 [[package]]
-name = "peeking_take_while"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
-
-[[package]]
 name = "percent-encoding"
 version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2171,16 +2433,16 @@ dependencies = [
 
 [[package]]
 name = "pipewire"
-version = "0.7.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2d009c8dd65e890b515a71950f7e4c801523b8894ff33863a40830bf762e9e9"
+checksum = "08e645ba5c45109106d56610b3ee60eb13a6f2beb8b74f8dc8186cf261788dda"
 dependencies = [
  "anyhow",
  "bitflags 2.4.2",
  "libc",
  "libspa",
  "libspa-sys",
- "nix",
+ "nix 0.27.1",
  "once_cell",
  "pipewire-sys",
  "thiserror",
@@ -2188,9 +2450,9 @@ dependencies = [
 
 [[package]]
 name = "pipewire-sys"
-version = "0.7.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "890c084e7b737246cb4799c86b71a0e4da536031ff7473dd639eba9f95039f64"
+checksum = "849e188f90b1dda88fe2bfe1ad31fe5f158af2c98f80fb5d13726c44f3f01112"
 dependencies = [
  "bindgen",
  "libspa-sys",
@@ -2252,9 +2514,9 @@ dependencies = [
 
 [[package]]
 name = "polling"
-version = "3.3.2"
+version = "3.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41"
+checksum = "30054e72317ab98eddd8561db0f6524df3367636884b7b21b703e4b280a84a14"
 dependencies = [
  "cfg-if",
  "concurrent-queue",
@@ -2294,12 +2556,11 @@ dependencies = [
 
 [[package]]
 name = "proc-macro-crate"
-version = "2.0.2"
+version = "3.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
+checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
 dependencies = [
- "toml_datetime",
- "toml_edit 0.20.2",
+ "toml_edit 0.21.1",
 ]
 
 [[package]]
@@ -2544,6 +2805,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver",
+]
+
+[[package]]
 name = "rustix"
 version = "0.37.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2622,6 +2892,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "621e3680f3e07db4c9c2c3fb07c6223ab2fab2e54bd3c04c3ae037990f428c32"
 
 [[package]]
+name = "semver"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
+
+[[package]]
 name = "serde"
 version = "1.0.196"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2731,7 +3007,7 @@ checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 [[package]]
 name = "smithay"
 version = "0.3.0"
-source = "git+https://github.com/Smithay/smithay.git#0eac415ba2d9409cbc201955dc0fd306c116ae05"
+source = "git+https://github.com/Smithay/smithay.git#832dee8586d783d4c60a162ef8aabca2ba7fd499"
 dependencies = [
  "appendlist",
  "bitflags 2.4.2",
@@ -2777,9 +3053,9 @@ dependencies = [
 
 [[package]]
 name = "smithay-client-toolkit"
-version = "0.18.0"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60e3d9941fa3bacf7c2bf4b065304faa14164151254cd16ce1b1bc8fc381600f"
+checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a"
 dependencies = [
  "bitflags 2.4.2",
  "calloop",
@@ -2803,7 +3079,7 @@ dependencies = [
 [[package]]
 name = "smithay-drm-extras"
 version = "0.1.0"
-source = "git+https://github.com/Smithay/smithay.git#0eac415ba2d9409cbc201955dc0fd306c116ae05"
+source = "git+https://github.com/Smithay/smithay.git#832dee8586d783d4c60a162ef8aabca2ba7fd499"
 dependencies = [
  "drm",
  "edid-rs",
@@ -2893,13 +3169,12 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.9.0"
+version = "3.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67"
 dependencies = [
  "cfg-if",
  "fastrand 2.0.1",
- "redox_syscall 0.4.1",
  "rustix 0.38.31",
  "windows-sys 0.52.0",
 ]
@@ -2936,9 +3211,9 @@ dependencies = [
 
 [[package]]
 name = "time"
-version = "0.3.32"
+version = "0.3.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe80ced77cbfb4cb91a94bf72b378b4b6791a0d9b7f09d0be747d1bdff4e68bd"
+checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749"
 dependencies = [
  "deranged",
  "num-conv",
@@ -2970,21 +3245,21 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
 name = "toml"
-version = "0.8.2"
+version = "0.8.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
+checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290"
 dependencies = [
  "serde",
  "serde_spanned",
  "toml_datetime",
- "toml_edit 0.20.2",
+ "toml_edit 0.22.4",
 ]
 
 [[package]]
 name = "toml_datetime"
-version = "0.6.3"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
 dependencies = [
  "serde",
 ]
@@ -3002,9 +3277,20 @@ dependencies = [
 
 [[package]]
 name = "toml_edit"
-version = "0.20.2"
+version = "0.21.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
+checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951"
 dependencies = [
  "indexmap",
  "serde",
@@ -3152,9 +3438,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-segmentation"
-version = "1.10.1"
+version = "1.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
 
 [[package]]
 name = "unicode-width"
@@ -3230,9 +3516,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
+checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -3240,9 +3526,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
+checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
 dependencies = [
  "bumpalo",
  "log",
@@ -3255,9 +3541,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.40"
+version = "0.4.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bde2032aeb86bdfaecc8b261eef3cba735cc426c1f3a3416d1e0791be95fc461"
+checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -3267,9 +3553,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
+checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -3277,9 +3563,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
+checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3290,9 +3576,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.90"
+version = "0.2.91"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
+checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
 
 [[package]]
 name = "wayland-backend"
@@ -3446,9 +3732,9 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.67"
+version = "0.3.68"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed"
+checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -3770,9 +4056,9 @@ dependencies = [
 
 [[package]]
 name = "winnow"
-version = "0.5.36"
+version = "0.5.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "818ce546a11a9986bc24f93d0cdf38a8a1a400f1473ea8c82e59f6e0ffab9249"
+checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29"
 dependencies = [
  "memchr",
 ]
@@ -3817,11 +4103,11 @@ checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
 
 [[package]]
 name = "xdg-home"
-version = "1.0.0"
+version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e"
 dependencies = [
- "nix",
+ "libc",
  "winapi",
 ]
 
@@ -3862,10 +4148,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
 
 [[package]]
+name = "xshell"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce2107fe03e558353b4c71ad7626d58ed82efaf56c54134228608893c77023ad"
+dependencies = [
+ "xshell-macros",
+]
+
+[[package]]
+name = "xshell-macros"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e2c411759b501fb9501aac2b1b2d287a6e93e5bdcf13c25306b23e1b716dd0e"
+
+[[package]]
+name = "yansi-term"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
 name = "zbus"
-version = "3.14.1"
+version = "3.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+checksum = "c45d06ae3b0f9ba1fb2671268b975557d8f5a84bb5ec6e43964f87e763d8bca8"
 dependencies = [
  "async-broadcast",
  "async-executor",
@@ -3885,7 +4195,7 @@ dependencies = [
  "futures-sink",
  "futures-util",
  "hex",
- "nix",
+ "nix 0.26.4",
  "once_cell",
  "ordered-stream",
  "rand",
@@ -3904,9 +4214,9 @@ dependencies = [
 
 [[package]]
 name = "zbus_macros"
-version = "3.14.1"
+version = "3.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+checksum = "b4a1ba45ed0ad344b85a2bb5a1fe9830aed23d67812ea39a586e7d0136439c7d"
 dependencies = [
  "proc-macro-crate 1.3.1",
  "proc-macro2",
diff --git a/nixpkgs/pkgs/by-name/ni/niri/package.nix b/nixpkgs/pkgs/by-name/ni/niri/package.nix
index 17c0e6993340..f704155fe70d 100644
--- a/nixpkgs/pkgs/by-name/ni/niri/package.nix
+++ b/nixpkgs/pkgs/by-name/ni/niri/package.nix
@@ -20,19 +20,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "niri";
-  version = "0.1.1";
+  version = "0.1.2";
 
   src = fetchFromGitHub {
     owner = "YaLTeR";
     repo = "niri";
     rev = "v${version}";
-    hash = "sha256-+Y7dnq8gwVxefwvRnamqGneCTI4uUXgAo0SEffIvNB0=";
+    hash = "sha256-vO6ak5rT6ntBC20vYC36zcEcHv7Cki9y8A+c7ThfsUg=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
-      "smithay-0.3.0" = "sha256-TWq4L7Pe4/s0+hGjvTixoOFQ3P6tJXzV4/VgKcJ0tWU=";
+      "smithay-0.3.0" = "sha256-ZEWamojE5ZRlhPVv/DK2Mj+QIz7zudw9+AxFD7Onr9Q=";
     };
   };
 
@@ -64,6 +64,22 @@ rustPlatform.buildRustPackage rec {
 
   LIBCLANG_PATH = "${libclang.lib}/lib";
 
+  passthru.providedSessions = ["niri"];
+
+  postInstall = ''
+    mkdir -p $out/share/{systemd/user,wayland-sessions,xdg-desktop-portal}
+
+    cp ./resources/niri-session $out/bin/niri-session
+    cp ./resources/niri.service $out/share/systemd/user/niri.service
+    cp ./resources/niri-shutdown.target $out/share/systemd/user/niri-shutdown.target
+    cp ./resources/niri.desktop $out/share/wayland-sessions/niri.desktop
+    cp ./resources/niri-portals.conf $out/share/xdg-desktop-portal/niri-portals.conf
+  '';
+
+  postFixup = ''
+    sed -i "s#/usr#$out#" $out/share/systemd/user/niri.service
+  '';
+
   meta = with lib; {
     description = "A scrollable-tiling Wayland compositor";
     homepage = "https://github.com/YaLTeR/niri";
diff --git a/nixpkgs/pkgs/by-name/no/nosql-workbench/package.nix b/nixpkgs/pkgs/by-name/no/nosql-workbench/package.nix
index 5bba91c28584..9fb744fa6570 100644
--- a/nixpkgs/pkgs/by-name/no/nosql-workbench/package.nix
+++ b/nixpkgs/pkgs/by-name/no/nosql-workbench/package.nix
@@ -4,7 +4,7 @@
   fetchurl,
   jdk21,
   stdenv,
-  undmg
+  _7zz
 }:
 let
   pname = "nosql-workbench";
@@ -39,30 +39,19 @@ if stdenv.isDarwin then stdenv.mkDerivation {
 
   sourceRoot = ".";
 
+  nativeBuildInputs = [ _7zz ];
+
   buildInputs = [ jdk21 ];
 
   # DMG file is using APFS which is unsupported by "undmg".
-  # Fix found: https://discourse.nixos.org/t/help-with-error-only-hfs-file-systems-are-supported-on-ventura/25873/8
+  # Instead, use "7zz" to extract the contents.
   # "undmg" issue: https://github.com/matthewbauer/undmg/issues/4
   unpackCmd = ''
-    echo "Creating temp directory"
-    mnt=$(TMPDIR=/tmp mktemp -d -t nix-XXXXXXXXXX)
-
-    function finish {
-      echo "Ejecting temp directory"
-      /usr/bin/hdiutil detach $mnt -force
-      rm -rf $mnt
-    }
-    # Detach volume when receiving SIG "0"
-    trap finish EXIT
-
-    # Mount DMG file
-    echo "Mounting DMG file into \"$mnt\""
-    /usr/bin/hdiutil attach -nobrowse -mountpoint $mnt $curSrc
-
-    # Copy content to local dir for later use
-    echo 'Copying extracted content into "sourceRoot"'
-    cp -a $mnt/NoSQL\ Workbench.app $PWD/
+    runHook preUnpack
+
+    7zz x $curSrc
+
+    runHook postUnpack
   '';
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/by-name/oe/oelint-adv/package.nix b/nixpkgs/pkgs/by-name/oe/oelint-adv/package.nix
index 2b1b6f5f3ad6..32215b708f98 100644
--- a/nixpkgs/pkgs/by-name/oe/oelint-adv/package.nix
+++ b/nixpkgs/pkgs/by-name/oe/oelint-adv/package.nix
@@ -6,13 +6,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "oelint-adv";
-  version = "4.4.0";
+  version = "4.4.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "oelint_adv";
-    hash = "sha256-Sg7qn/yZUJEJdMmaGm27kyL+fKkUsZo25eExZPOem40=";
+    hash = "sha256-Yv0GCz0vZTVrnFjHFIl4XF/jbVD4DJ4J6V6+X5IllJ8=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/by-name/op/open-scq30/package.nix b/nixpkgs/pkgs/by-name/op/open-scq30/package.nix
new file mode 100644
index 000000000000..04d9b036d385
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/op/open-scq30/package.nix
@@ -0,0 +1,74 @@
+{ lib
+, rustPlatform
+, fetchFromGitHub
+, pkg-config
+, protobuf
+, wrapGAppsHook4
+, cairo
+, dbus
+, gdk-pixbuf
+, glib
+, gtk4
+, libadwaita
+, pango
+, stdenv
+, darwin
+, cargo-make
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "open-scq30";
+  version = "1.10.6";
+
+  src = fetchFromGitHub {
+    owner = "Oppzippy";
+    repo = "OpenSCQ30";
+    rev = "v${version}";
+    hash = "sha256-qYWLf0ns4YSq+yAspVTMvKQi861iUMJar2wjqm+BV/0=";
+  };
+
+  nativeBuildInputs = [
+    pkg-config
+    protobuf
+    wrapGAppsHook4
+    cargo-make
+  ];
+
+  buildInputs = [
+    cairo
+    dbus
+    gdk-pixbuf
+    glib
+    gtk4
+    libadwaita
+    pango
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.AppKit
+    darwin.apple_sdk.frameworks.CoreGraphics
+    darwin.apple_sdk.frameworks.Foundation
+  ];
+
+  cargoHash = "sha256-BQLNm+yyimBh7WomrccdQ2lvrQzCNXf4MEa1LlPhck0=";
+
+  INSTALL_PREFIX = placeholder "out";
+
+  # Requires headphones
+  doCheck = false;
+
+  buildPhase = ''
+    cargo make --profile release build
+  '';
+
+  installPhase = ''
+    cargo make --profile release install
+  '';
+
+  meta = with lib; {
+    description = "Cross platform application for controlling settings of Soundcore headphones.";
+    homepage = "https://github.com/Oppzippy/OpenSCQ30";
+    changelog = "https://github.com/Oppzippy/OpenSCQ30/blob/${src.rev}/CHANGELOG.md";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ mkg20001 ];
+    mainProgram = "open-scq30";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/misc/outils/default.nix b/nixpkgs/pkgs/by-name/ou/outils/package.nix
index 065d641f4f30..e29e6440edcb 100644
--- a/nixpkgs/pkgs/tools/misc/outils/default.nix
+++ b/nixpkgs/pkgs/by-name/ou/outils/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "outils";
-  version = "0.10";
+  version = "0.13";
 
   src = fetchFromGitHub {
     owner = "leahneukirchen";
-    repo = pname;
+    repo = "outils";
     rev = "v${version}";
-    sha256 = "sha256-xYjILa0Km57q/xNP+M34r29WLGC15tzUNoUgPzQTtIs=";
+    hash = "sha256-FokJytwQsbGsryBzyglpb1Hg3wti/CPQTOfIGIz9ThA=";
   };
 
   makeFlags = [ "PREFIX=$(out)" ];
diff --git a/nixpkgs/pkgs/by-name/pa/patch2pr/package.nix b/nixpkgs/pkgs/by-name/pa/patch2pr/package.nix
new file mode 100644
index 000000000000..67b5f227bcd4
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/pa/patch2pr/package.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+, testers
+, patch2pr
+}:
+
+buildGoModule rec {
+  pname = "patch2pr";
+  version = "0.22.0";
+
+  src = fetchFromGitHub {
+    owner = "bluekeyes";
+    repo = "patch2pr";
+    rev = "v${version}";
+    hash = "sha256-tG0pSXmrWT5PCcR25XngbKAS3q9jKdDKqWdPqA62omE=";
+  };
+
+  vendorHash = "sha256-Z6BHUD7WrEpUmCaLvrFYCQCSbhPhee+gR5ep1oLzqbE=";
+
+  ldflags = [
+    "-X main.version=${version}"
+    "-X main.commit=${src.rev}"
+  ];
+
+  passthru.tests.patch2pr-version = testers.testVersion {
+    package = patch2pr;
+    command = "${patch2pr.meta.mainProgram} --version";
+    version = version;
+  };
+
+  meta = with lib; {
+    description = "Create pull requests from patches without cloning the repository";
+    homepage = "https://github.com/bluekeyes/patch2pr";
+    changelog = "https://github.com/bluekeyes/patch2pr/releases/tag/v${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ katrinafyi ];
+    mainProgram = "patch2pr";
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/py/pyprland/package.nix b/nixpkgs/pkgs/by-name/py/pyprland/package.nix
index 82598f8e533f..501049665bc8 100644
--- a/nixpkgs/pkgs/by-name/py/pyprland/package.nix
+++ b/nixpkgs/pkgs/by-name/py/pyprland/package.nix
@@ -2,7 +2,7 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "pyprland";
-  version = "2.0.3";
+  version = "2.0.4";
   format = "pyproject";
 
   disabled = python3Packages.pythonOlder "3.10";
@@ -11,7 +11,7 @@ python3Packages.buildPythonApplication rec {
     owner = "hyprland-community";
     repo = "pyprland";
     rev = "refs/tags/${version}";
-    hash = "sha256-9adWd3UizJReftp7riMq4Fyp2dnmv+xtHoEQ2cycYFM=";
+    hash = "sha256-5N1kDD3ZDQMgO2mwggzfonUa/iXW19uBarrtzeWFS3I=";
   };
 
   nativeBuildInputs = with python3Packages; [ poetry-core ];
diff --git a/nixpkgs/pkgs/by-name/ra/raspberrypi-eeprom/package.nix b/nixpkgs/pkgs/by-name/ra/raspberrypi-eeprom/package.nix
index 533ce4847317..afad529c8261 100644
--- a/nixpkgs/pkgs/by-name/ra/raspberrypi-eeprom/package.nix
+++ b/nixpkgs/pkgs/by-name/ra/raspberrypi-eeprom/package.nix
@@ -12,13 +12,13 @@
 }:
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "raspberrypi-eeprom";
-  version = "2024.01.05-2712";
+  version = "2024.02.16-2712";
 
   src = fetchFromGitHub {
     owner = "raspberrypi";
     repo = "rpi-eeprom";
-    rev = "refs/tags/v.${finalAttrs.version}";
-    hash = "sha256-/DWnGtNyN9DEDNdz+mOBWu38bGj7YIbbgqUVN/B2VcM=";
+    rev = "refs/tags/v${finalAttrs.version}";
+    hash = "sha256-R3X7JaS8Ob6KwN1KYaJDZA8aI4Hv6Y3R+nOMSPjt2ew=";
   };
 
   buildInputs = [ python3 ];
diff --git a/nixpkgs/pkgs/by-name/re/redocly-cli/package.nix b/nixpkgs/pkgs/by-name/re/redocly-cli/package.nix
index aa1c49cae249..fd3606c1e4c8 100644
--- a/nixpkgs/pkgs/by-name/re/redocly-cli/package.nix
+++ b/nixpkgs/pkgs/by-name/re/redocly-cli/package.nix
@@ -6,16 +6,16 @@
 
 buildNpmPackage rec {
   pname = "redocly-cli";
-  version = "1.5.0";
+  version = "1.6.0";
 
   src = fetchFromGitHub {
     owner = "Redocly";
     repo = "redocly-cli";
     rev = "@redocly/cli@${version}";
-    hash = "sha256-Wi3IxPeNqD1s1Q0Pi9cCus6jCQM0noBTHIAp9HUSpZk=";
+    hash = "sha256-xoehTTpXT/9tlL0VoDQwKbyUnNGeMyH+VBIVLiz69ko=";
   };
 
-  npmDepsHash = "sha256-BcjQ9z2i1YBt6lBqgkRcv29P/WZeuGjVSeVmekaFugM=";
+  npmDepsHash = "sha256-9fI9P96iNmHrhjbgjePpRnknFe3yIjkirOoIMkVGkH4=";
 
   npmBuildScript = "prepare";
 
diff --git a/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix b/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
index c39103910f62..82d0ce4dbda5 100644
--- a/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
+++ b/nixpkgs/pkgs/by-name/re/renode-dts2repl/package.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication {
   pname = "renode-dts2repl";
-  version = "unstable-2024-02-23";
+  version = "unstable-2024-02-26";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "antmicro";
     repo = "dts2repl";
-    rev = "ae616f4f6a70a2f497c2a9ce8c9c64b34238e553";
-    hash = "sha256-2Q7hfXf9nCrmHxJ0S8njF5zIgcGXaRPPVogtsPgLLsI=";
+    rev = "de8d8b276ceaae79ea90ed67065e9616e06b2558";
+    hash = "sha256-uiS/zzAf4lCg/yUAoci2JXrmwb3xsObuzSi1U08lSjo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix b/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
index 1eafcf30a34e..6f53c1c45045 100644
--- a/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
+++ b/nixpkgs/pkgs/by-name/re/renode-unstable/package.nix
@@ -7,10 +7,10 @@
   inherit buildUnstable;
 }).overrideAttrs (finalAttrs: _: {
   pname = "renode-unstable";
-  version = "1.14.0+20240222git83285cc63";
+  version = "1.14.0+20240226git732d357b4";
 
   src = fetchurl {
     url = "https://builds.renode.io/renode-${finalAttrs.version}.linux-portable.tar.gz";
-    hash = "sha256-RFZdl2t1356h4Hvab6Gn3LZZnCWlQlK6C0otlXzVlMI=";
+    hash = "sha256-08xV/6ch6dWA4pwg8tuDywYhQ4ZIFRD5zegojDZtAHE=";
   };
 })
diff --git a/nixpkgs/pkgs/by-name/rq/rqbit/Cargo.lock b/nixpkgs/pkgs/by-name/rq/rqbit/Cargo.lock
index 4e4072d44157..571545d740e3 100644
--- a/nixpkgs/pkgs/by-name/rq/rqbit/Cargo.lock
+++ b/nixpkgs/pkgs/by-name/rq/rqbit/Cargo.lock
@@ -175,18 +175,18 @@ dependencies = [
 
 [[package]]
 name = "axum"
-version = "0.7.3"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d09dbe0e490df5da9d69b36dca48a76635288a82f92eca90024883a56202026d"
+checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e"
 dependencies = [
  "async-trait",
- "axum-core 0.4.2",
+ "axum-core 0.4.3",
  "bytes",
  "futures-util",
  "http 1.0.0",
  "http-body 1.0.0",
  "http-body-util",
- "hyper 1.1.0",
+ "hyper 1.2.0",
  "hyper-util",
  "itoa",
  "matchit",
@@ -226,9 +226,9 @@ dependencies = [
 
 [[package]]
 name = "axum-core"
-version = "0.4.2"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e87c8503f93e6d144ee5690907ba22db7ba79ab001a932ab99034f0fe836b3df"
+checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
 dependencies = [
  "async-trait",
  "bytes",
@@ -868,9 +868,9 @@ dependencies = [
 
 [[package]]
 name = "h2"
-version = "0.4.0"
+version = "0.4.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1d308f63daf4181410c242d34c11f928dcb3aa105852019e043c9d1f4e4368a"
+checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943"
 dependencies = [
  "bytes",
  "fnv",
@@ -1034,20 +1034,21 @@ dependencies = [
 
 [[package]]
 name = "hyper"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75"
+checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a"
 dependencies = [
  "bytes",
  "futures-channel",
  "futures-util",
- "h2 0.4.0",
+ "h2 0.4.2",
  "http 1.0.0",
  "http-body 1.0.0",
  "httparse",
  "httpdate",
  "itoa",
  "pin-project-lite",
+ "smallvec",
  "tokio",
 ]
 
@@ -1101,7 +1102,7 @@ dependencies = [
  "futures-util",
  "http 1.0.0",
  "http-body 1.0.0",
- "hyper 1.1.0",
+ "hyper 1.2.0",
  "pin-project-lite",
  "socket2",
  "tokio",
@@ -1253,10 +1254,10 @@ dependencies = [
 
 [[package]]
 name = "librqbit"
-version = "5.4.2"
+version = "5.5.0"
 dependencies = [
  "anyhow",
- "axum 0.7.3",
+ "axum 0.7.4",
  "backoff",
  "base64",
  "bincode",
@@ -2025,7 +2026,7 @@ dependencies = [
 
 [[package]]
 name = "rqbit"
-version = "5.4.2"
+version = "5.5.0"
 dependencies = [
  "anyhow",
  "bytes",
@@ -2291,9 +2292,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.11.2"
+version = "1.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
 
 [[package]]
 name = "socket2"
diff --git a/nixpkgs/pkgs/by-name/rq/rqbit/package.nix b/nixpkgs/pkgs/by-name/rq/rqbit/package.nix
index 42b3c9e61aa6..2553acc39631 100644
--- a/nixpkgs/pkgs/by-name/rq/rqbit/package.nix
+++ b/nixpkgs/pkgs/by-name/rq/rqbit/package.nix
@@ -2,13 +2,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rqbit";
-  version = "5.4.2";
+  version = "5.5.0";
 
   src = fetchFromGitHub {
     owner = "ikatson";
     repo = "rqbit";
     rev = "v${version}";
-    hash = "sha256-ZC68RQi0UcdALKVgwRUyO0+ZmKtGMjudYQabsAnghzg=";
+    hash = "sha256-3Wqej2Zb/RxxOOhWscZiyafGftl3ShozqVkUF7V0fP4=";
   };
 
   cargoLock = {
diff --git a/nixpkgs/pkgs/by-name/sc/scitokens-cpp/package.nix b/nixpkgs/pkgs/by-name/sc/scitokens-cpp/package.nix
index 691e89fa2b80..56cc5ba18bb8 100644
--- a/nixpkgs/pkgs/by-name/sc/scitokens-cpp/package.nix
+++ b/nixpkgs/pkgs/by-name/sc/scitokens-cpp/package.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   pname = "scitokens-cpp";
-  version = "1.1.0";
+  version = "1.1.1";
 
   src = fetchFromGitHub {
     owner = "scitokens";
     repo = "scitokens-cpp";
 
-    rev = "v1.1.0";
-    hash = "sha256-g97Ah5Oob0iOvMQegpG/AACLZCW37kA0RpSIcKOyQnE=";
+    rev = "v1.1.1";
+    hash = "sha256-G3z9DYYWCNeA/rufNHQP3SwT5WS2AvUWm1rd8lx6XxA=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
diff --git a/nixpkgs/pkgs/by-name/se/searxng/package.nix b/nixpkgs/pkgs/by-name/se/searxng/package.nix
index c0d6cd63036d..6f541d8a3b38 100644
--- a/nixpkgs/pkgs/by-name/se/searxng/package.nix
+++ b/nixpkgs/pkgs/by-name/se/searxng/package.nix
@@ -73,6 +73,7 @@ python3.pkgs.toPythonModule (python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/searxng/searxng";
     description = "A fork of Searx, a privacy-respecting, hackable metasearch engine";
     license = licenses.agpl3Plus;
+    mainProgram = "searxng-run";
     maintainers = with maintainers; [ SuperSandro2000 _999eagle ];
   };
 })
diff --git a/nixpkgs/pkgs/tools/security/sn0int/default.nix b/nixpkgs/pkgs/by-name/sn/sn0int/package.nix
index 66f89f77e8ea..2410fa0cc230 100644
--- a/nixpkgs/pkgs/tools/security/sn0int/default.nix
+++ b/nixpkgs/pkgs/by-name/sn/sn0int/package.nix
@@ -7,6 +7,7 @@
 , pkgs
 , sqlite
 , stdenv
+, installShellFiles
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -24,6 +25,7 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [
     pkg-config
+    installShellFiles
   ];
 
   buildInputs = [
@@ -39,6 +41,13 @@ rustPlatform.buildRustPackage rec {
   # in "checkPhase", hence fails in sandbox of "nix".
   doCheck = false;
 
+  postInstall = ''
+    installShellCompletion --cmd sn0int \
+      --bash <($out/bin/sn0int completions bash) \
+      --fish <($out/bin/sn0int completions fish) \
+      --zsh  <($out/bin/sn0int completions zsh)
+  '';
+
   meta = with lib; {
     description = "Semi-automatic OSINT framework and package manager";
     homepage = "https://github.com/kpcyrd/sn0int";
@@ -46,5 +55,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab xrelkd ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "sn0int";
   };
 }
diff --git a/nixpkgs/pkgs/by-name/sp/spicetify-cli/package.nix b/nixpkgs/pkgs/by-name/sp/spicetify-cli/package.nix
index d0fe744b23f6..b7dddb8ad7e7 100644
--- a/nixpkgs/pkgs/by-name/sp/spicetify-cli/package.nix
+++ b/nixpkgs/pkgs/by-name/sp/spicetify-cli/package.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "spicetify-cli";
-  version = "2.32.1";
+  version = "2.33.0";
 
   src = fetchFromGitHub {
     owner = "spicetify";
     repo = "spicetify-cli";
     rev = "v${version}";
-    hash = "sha256-GUtQwSiC/2wzJmPE0uqJHvLyrIM+5B2YARK9WAQex8k=";
+    hash = "sha256-1bakWUhB47o37pV6cbfDRdHdqreGKFhU7LFajIM5mhw=";
   };
 
   vendorHash = "sha256-9rYShpUVI3KSY6UgGmoXo899NkUezkAAkTgFPdq094E=";
diff --git a/nixpkgs/pkgs/by-name/sq/squirreldisk/Cargo.lock b/nixpkgs/pkgs/by-name/sq/squirreldisk/Cargo.lock
new file mode 100644
index 000000000000..667c8b758091
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/sq/squirreldisk/Cargo.lock
@@ -0,0 +1,4060 @@
+# 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 = "aho-corasick"
+version = "0.7.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.68"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
+
+[[package]]
+name = "assert-cmp"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "737bf4aa6df38f69a17efc233b4d0343cc5aa0d2c3b53e7007bd4c9866038ffd"
+
+[[package]]
+name = "atk"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd"
+dependencies = [
+ "atk-sys",
+ "bitflags",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "attohttpc"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fcf00bc6d5abb29b5f97e3c61a90b6d3caa12f3faf897d4a3e3607c050a35a7"
+dependencies = [
+ "flate2",
+ "http",
+ "log",
+ "native-tls",
+ "serde",
+ "serde_json",
+ "serde_urlencoded",
+ "url",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "block"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+
+[[package]]
+name = "block-buffer"
+version = "0.10.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "brotli"
+version = "3.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "2.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bstr"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b45ea9b00a7b3f2988e9a65ad3917e62123c38dba709b666506207be96d1790b"
+dependencies = [
+ "memchr",
+ "serde",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+
+[[package]]
+name = "bytemuck"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c041d3eab048880cb0b86b256447da3f18859a163c3b8d8893f4e6368abe6393"
+
+[[package]]
+name = "byteorder"
+version = "1.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+
+[[package]]
+name = "bytes"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
+
+[[package]]
+name = "cairo-rs"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc"
+dependencies = [
+ "bitflags",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "cargo_toml"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497049e9477329f8f6a559972ee42e117487d01d1e8c2cc9f836ea6fa23a9e1a"
+dependencies = [
+ "serde",
+ "toml",
+]
+
+[[package]]
+name = "cc"
+version = "1.0.78"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfb"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74f89d248799e3f15f91b70917f65381062a01bb8e222700ea0e5a7ff9785f9c"
+dependencies = [
+ "byteorder",
+ "uuid 0.8.2",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clap"
+version = "4.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
+dependencies = [
+ "bitflags",
+ "clap_derive",
+ "clap_lex",
+ "is-terminal",
+ "once_cell",
+ "strsim",
+ "termcolor",
+]
+
+[[package]]
+name = "clap-utilities"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "15bcff807ef65113605e59223ac0ce77adc2cc0976e3ece014e0f2c17e4a7798"
+dependencies = [
+ "clap",
+ "clap_complete",
+ "pipe-trait",
+ "thiserror",
+]
+
+[[package]]
+name = "clap_complete"
+version = "4.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6540eedc41f8a5a76cf3d8d458057dcdf817be4158a55b5f861f7a5483de75"
+dependencies = [
+ "clap",
+]
+
+[[package]]
+name = "clap_derive"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "clap_lex"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
+dependencies = [
+ "os_str_bytes",
+]
+
+[[package]]
+name = "cocoa"
+version = "0.24.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
+dependencies = [
+ "bitflags",
+ "block",
+ "cocoa-foundation",
+ "core-foundation",
+ "core-graphics",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "cocoa-foundation"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318"
+dependencies = [
+ "bitflags",
+ "block",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+ "objc",
+]
+
+[[package]]
+name = "color_quant"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
+
+[[package]]
+name = "combine"
+version = "4.6.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "convert_case"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
+
+[[package]]
+name = "core-foundation"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
+
+[[package]]
+name = "core-graphics"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"
+dependencies = [
+ "cfg-if",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"
+dependencies = [
+ "cfg-if",
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "crossbeam-utils",
+ "memoffset 0.7.1",
+ "scopeguard",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crypto-common"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cssparser"
+version = "0.27.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "754b69d351cdc2d8ee09ae203db831e005560fc6030da058f86ad60c92a9cb0a"
+dependencies = [
+ "cssparser-macros",
+ "dtoa-short",
+ "itoa 0.4.8",
+ "matches",
+ "phf 0.8.0",
+ "proc-macro2",
+ "quote",
+ "smallvec",
+ "syn",
+]
+
+[[package]]
+name = "cssparser-macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "ctor"
+version = "0.1.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096"
+dependencies = [
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "cty"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35"
+
+[[package]]
+name = "darling"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c"
+dependencies = [
+ "darling_core 0.12.4",
+ "darling_macro 0.12.4",
+]
+
+[[package]]
+name = "darling"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c"
+dependencies = [
+ "darling_core 0.13.4",
+ "darling_macro 0.13.4",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e91455b86830a1c21799d94524df0845183fa55bafd9aa137b01c7d1065fa36"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.12.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a"
+dependencies = [
+ "darling_core 0.12.4",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
+dependencies = [
+ "darling_core 0.13.4",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "dbus"
+version = "0.9.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "winapi",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d13202debe11181040ae9063d739fa32cfcaaebe2275fe387703460ae2365b30"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66e616858f6187ed828df7c64a6d71720d83767a7f19740b2d1b6fe6327b36e5"
+dependencies = [
+ "darling 0.12.4",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58a94ace95092c5acb1e97a7e846b310cfbd499652f72297da7493f618a98d73"
+dependencies = [
+ "derive_builder_core",
+ "syn",
+]
+
+[[package]]
+name = "derive_more"
+version = "0.99.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321"
+dependencies = [
+ "convert_case",
+ "proc-macro2",
+ "quote",
+ "rustc_version 0.4.0",
+ "syn",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
+]
+
+[[package]]
+name = "dirs-sys-next"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
+dependencies = [
+ "libc",
+ "redox_users",
+ "winapi",
+]
+
+[[package]]
+name = "dispatch"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
+
+[[package]]
+name = "dtoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0"
+
+[[package]]
+name = "dtoa-short"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6"
+dependencies = [
+ "dtoa",
+]
+
+[[package]]
+name = "dunce"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bd4b30a6560bbd9b4620f4de34c3f14f60848e58a9b7216801afcb4c7b31c3c"
+
+[[package]]
+name = "either"
+version = "1.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+
+[[package]]
+name = "embed_plist"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
+
+[[package]]
+name = "encoding_rs"
+version = "0.8.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "errno"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+dependencies = [
+ "errno-dragonfly",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "errno-dragonfly"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "fastrand"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499"
+dependencies = [
+ "instant",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e1c54951450cbd39f3dbcf1005ac413b49487dabf18a720ad2383eccfeffb92"
+dependencies = [
+ "memoffset 0.6.5",
+ "rustc_version 0.3.3",
+]
+
+[[package]]
+name = "filetime"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e884668cd0c7480504233e951174ddc3b382f7c2666e3b7310b5c4e7b0c37f9"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "flate2"
+version = "1.0.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fmt-iter"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0b9289d76691c7084d8830f1d0a29ddefbad768f8b5f276e012840bb0fca610"
+dependencies = [
+ "derive_more",
+ "itertools",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futf"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
+dependencies = [
+ "mac",
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-task"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea"
+
+[[package]]
+name = "futures-util"
+version = "0.3.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-task",
+ "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"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a"
+dependencies = [
+ "bitflags",
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gdkx11-sys"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+ "x11",
+]
+
+[[package]]
+name = "generator"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d266041a359dfa931b370ef684cceb84b166beb14f7f0421f4a6a3d0c446d12e"
+dependencies = [
+ "cc",
+ "libc",
+ "log",
+ "rustversion",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.9.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.0+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "gio"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "gio-sys",
+ "glib",
+ "libc",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.15.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d"
+dependencies = [
+ "bitflags",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64"
+dependencies = [
+ "anyhow",
+ "heck 0.4.0",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4"
+dependencies = [
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+
+[[package]]
+name = "globset"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc"
+dependencies = [
+ "aho-corasick",
+ "bstr",
+ "fnv",
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "gobject-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gtk"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0"
+dependencies = [
+ "atk",
+ "bitflags",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "once_cell",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.15.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24f518afe90c23fba585b2d7697856f9e6a7bbc62f65588035e66f6afb01a2e9"
+dependencies = [
+ "anyhow",
+ "proc-macro-crate",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "heck"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+dependencies = [
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "heck"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
+
+[[package]]
+name = "hermit-abi"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "html5ever"
+version = "0.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5c13fb08e5d4dfc151ee5e88bae63f7773d61852f3bdc73c9f4b9e1bde03148"
+dependencies = [
+ "log",
+ "mac",
+ "markup5ever",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "http"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa 1.0.5",
+]
+
+[[package]]
+name = "http-range"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
+
+[[package]]
+name = "ico"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd"
+dependencies = [
+ "byteorder",
+ "png",
+]
+
+[[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.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+dependencies = [
+ "unicode-bidi",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "ignore"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
+dependencies = [
+ "crossbeam-utils",
+ "globset",
+ "lazy_static",
+ "log",
+ "memchr",
+ "regex",
+ "same-file",
+ "thread_local",
+ "walkdir",
+ "winapi-util",
+]
+
+[[package]]
+name = "image"
+version = "0.24.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69b7ea949b537b0fd0af141fff8c77690f2ce96f4f41f042ccb6c69c6c965945"
+dependencies = [
+ "bytemuck",
+ "byteorder",
+ "color_quant",
+ "num-rational",
+ "num-traits",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "infer"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20b2b533137b9cad970793453d4f921c2e91312a6d88b1085c07bc15fc51bb3b"
+dependencies = [
+ "cfb",
+]
+
+[[package]]
+name = "instant"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "io-lifetimes"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
+dependencies = [
+ "libc",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189"
+dependencies = [
+ "hermit-abi",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "itertools"
+version = "0.10.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
+
+[[package]]
+name = "itoa"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
+
+[[package]]
+name = "javascriptcore-rs"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c"
+dependencies = [
+ "bitflags",
+ "glib",
+ "javascriptcore-rs-sys",
+]
+
+[[package]]
+name = "javascriptcore-rs-sys"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 5.0.0",
+]
+
+[[package]]
+name = "jni"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c"
+dependencies = [
+ "cesu8",
+ "combine",
+ "jni-sys",
+ "log",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+
+[[package]]
+name = "js-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47"
+dependencies = [
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "json-patch"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce"
+dependencies = [
+ "serde",
+ "serde_json",
+ "treediff",
+]
+
+[[package]]
+name = "kuchiki"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ea8e9c6e031377cff82ee3001dc8026cdf431ed4e2e6b51f98ab8c73484a358"
+dependencies = [
+ "cssparser",
+ "html5ever",
+ "matches",
+ "selectors",
+]
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "libc"
+version = "0.2.139"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2264f9d90a9b4e60a2dc722ad899ea0374f03c2e96e755fe22a8f551d4d5fb3c"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "line-wrap"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
+dependencies = [
+ "safemem",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4"
+
+[[package]]
+name = "lock_api"
+version = "0.4.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+dependencies = [
+ "autocfg",
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "loom"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5"
+dependencies = [
+ "cfg-if",
+ "generator",
+ "scoped-tls",
+ "serde",
+ "serde_json",
+ "tracing",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "mac"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
+
+[[package]]
+name = "mac-notification-sys"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e72d50edb17756489e79d52eb146927bec8eba9dd48faadf9ef08bca3791ad5"
+dependencies = [
+ "cc",
+ "dirs-next",
+ "objc-foundation",
+ "objc_id",
+ "time",
+]
+
+[[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.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd"
+dependencies = [
+ "log",
+ "phf 0.8.0",
+ "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",
+]
+
+[[package]]
+name = "matches"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+
+[[package]]
+name = "memchr"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+
+[[package]]
+name = "memoffset"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "memoffset"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "minisign-verify"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
+dependencies = [
+ "adler",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
+dependencies = [
+ "lazy_static",
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndk"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4"
+dependencies = [
+ "bitflags",
+ "jni-sys",
+ "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.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97"
+dependencies = [
+ "jni-sys",
+]
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54"
+
+[[package]]
+name = "nodrop"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
+
+[[package]]
+name = "nom8"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "notify-rust"
+version = "4.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ce656bb6d22a93ae276a23de52d1aec5ba4db3ece3c0eb79dfd5add7384db6a"
+dependencies = [
+ "dbus",
+ "mac-notification-sys",
+ "tauri-winrt-notification",
+]
+
+[[package]]
+name = "ntapi"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc"
+dependencies = [
+ "winapi",
+]
+
+[[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-integer"
+version = "0.1.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+dependencies = [
+ "autocfg",
+ "num-traits",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
+dependencies = [
+ "autocfg",
+ "num-integer",
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_cpus"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
+dependencies = [
+ "hermit-abi",
+ "libc",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d829733185c1ca374f17e52b762f24f535ec625d2cc1f070e34c8a9068f341b"
+dependencies = [
+ "num_enum_derive",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.5.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2be1598bf1c313dcdd12092e3f1920f463462525a21b7b4e11b4168353d0123e"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "objc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
+dependencies = [
+ "malloc_buf",
+ "objc_exception",
+]
+
+[[package]]
+name = "objc-foundation"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
+dependencies = [
+ "block",
+ "objc",
+ "objc_id",
+]
+
+[[package]]
+name = "objc_exception"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc_id"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
+dependencies = [
+ "objc",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66"
+
+[[package]]
+name = "open"
+version = "3.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8"
+dependencies = [
+ "pathdiff",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7"
+dependencies = [
+ "autocfg",
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "os_info"
+version = "3.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4750134fb6a5d49afc80777394ad5d95b04bc12068c6abb92fae8f43817270f"
+dependencies = [
+ "log",
+ "serde",
+ "winapi",
+]
+
+[[package]]
+name = "os_pipe"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6a252f1f8c11e84b3ab59d7a488e48e4478a93937e027076638c49536204639"
+dependencies = [
+ "libc",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "os_str_bytes"
+version = "6.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee"
+
+[[package]]
+name = "overload"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
+
+[[package]]
+name = "pango"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f"
+dependencies = [
+ "bitflags",
+ "glib",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.15.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "parallel-disk-usage"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e42b33f85d6d5a345c243fff616265c2b8263a44641e88e4afd80f32dbd7279b"
+dependencies = [
+ "assert-cmp",
+ "clap",
+ "clap-utilities",
+ "clap_complete",
+ "derive_more",
+ "fmt-iter",
+ "itertools",
+ "pipe-trait",
+ "rayon",
+ "rounded-div",
+ "serde",
+ "serde_json",
+ "smart-default",
+ "terminal_size",
+ "text-block-macros",
+ "thiserror",
+ "zero-copy-pads",
+]
+
+[[package]]
+name = "parking_lot"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba"
+
+[[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.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+
+[[package]]
+name = "pest"
+version = "2.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f"
+dependencies = [
+ "thiserror",
+ "ucd-trie",
+]
+
+[[package]]
+name = "phf"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12"
+dependencies = [
+ "phf_macros 0.8.0",
+ "phf_shared 0.8.0",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259"
+dependencies = [
+ "phf_macros 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815"
+dependencies = [
+ "phf_generator 0.8.0",
+ "phf_shared 0.8.0",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526"
+dependencies = [
+ "phf_shared 0.8.0",
+ "rand 0.7.3",
+]
+
+[[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 0.8.5",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c"
+dependencies = [
+ "phf_generator 0.8.0",
+ "phf_shared 0.8.0",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0"
+dependencies = [
+ "phf_generator 0.10.0",
+ "phf_shared 0.10.0",
+ "proc-macro-hack",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pipe-trait"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1be1ec9e59f0360aefe84efa6f699198b685ab0d5718081e9f72aa2344289e2"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+
+[[package]]
+name = "plist"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5329b8f106a176ab0dce4aae5da86bfcb139bb74fb00882859e03745011f3635"
+dependencies = [
+ "base64",
+ "indexmap",
+ "line-wrap",
+ "quick-xml 0.26.0",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "png"
+version = "0.17.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638"
+dependencies = [
+ "bitflags",
+ "crc32fast",
+ "flate2",
+ "miniz_oxide",
+]
+
+[[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 = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66618389e4ec1c7afe67d51a9bf34ff9236480f8d51e7489b7d5ab0303c13f34"
+dependencies = [
+ "once_cell",
+ "toml_edit",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-hack"
+version = "0.5.20+deprecated"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.50"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11bafc859c6815fbaffbbbf4229ecb767ac913fecb27f9ad4343662e9ef099ea"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quick-xml"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f50b1c63b38611e7d4d7f68b82d3ad0cc71a2ad2e7f61fc10f1328d917c93cd"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "rand"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
+dependencies = [
+ "getrandom 0.1.16",
+ "libc",
+ "rand_chacha 0.2.2",
+ "rand_core 0.5.1",
+ "rand_hc",
+ "rand_pcg",
+]
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.5.1",
+]
+
+[[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 0.6.4",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
+dependencies = [
+ "getrandom 0.1.16",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.8",
+]
+
+[[package]]
+name = "rand_hc"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "rand_pcg"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429"
+dependencies = [
+ "rand_core 0.5.1",
+]
+
+[[package]]
+name = "raw-window-handle"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a"
+dependencies = [
+ "cty",
+]
+
+[[package]]
+name = "rayon"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b"
+dependencies = [
+ "crossbeam-channel",
+ "crossbeam-deque",
+ "crossbeam-utils",
+ "num_cpus",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+dependencies = [
+ "bitflags",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+dependencies = [
+ "getrandom 0.2.8",
+ "redox_syscall",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
+
+[[package]]
+name = "remove_dir_all"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "rfd"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea"
+dependencies = [
+ "block",
+ "dispatch",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "js-sys",
+ "lazy_static",
+ "log",
+ "objc",
+ "objc-foundation",
+ "objc_id",
+ "raw-window-handle",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "windows 0.37.0",
+]
+
+[[package]]
+name = "rounded-div"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "464c8fb0a126d6a0326baf6abf1aa62c2da0d5780aa781a81451d64f543f5e2f"
+
+[[package]]
+name = "rustc_version"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+dependencies = [
+ "semver 0.11.0",
+]
+
+[[package]]
+name = "rustc_version"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
+dependencies = [
+ "semver 1.0.16",
+]
+
+[[package]]
+name = "rustix"
+version = "0.36.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
+dependencies = [
+ "bitflags",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70"
+
+[[package]]
+name = "ryu"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
+
+[[package]]
+name = "safemem"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+
+[[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 = "schannel"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3"
+dependencies = [
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
+
+[[package]]
+name = "scopeguard"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+
+[[package]]
+name = "security-framework"
+version = "2.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c4437699b6d34972de58652c68b98cb5b53a4199ab126db8e20ec8ded29a721"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "selectors"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df320f1889ac4ba6bc0cdc9c9af7af4bd64bb927bccdf32d81140dc1f9be12fe"
+dependencies = [
+ "bitflags",
+ "cssparser",
+ "derive_more",
+ "fxhash",
+ "log",
+ "matches",
+ "phf 0.8.0",
+ "phf_codegen",
+ "precomputed-hash",
+ "servo_arc",
+ "smallvec",
+ "thin-slice",
+]
+
+[[package]]
+name = "semver"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
+dependencies = [
+ "semver-parser",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "semver-parser"
+version = "0.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
+dependencies = [
+ "pest",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.152"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.152"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.91"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
+dependencies = [
+ "itoa 1.0.5",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a5ec9fa74a20ebbe5d9ac23dac1fc96ba0ecfe9f50f2843b52e537b10fbcb4e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
+dependencies = [
+ "form_urlencoded",
+ "itoa 1.0.5",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "serde_with"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "678b5a069e50bf00ecd22d0cd8ddf7c236f68581b03db652061ed5eb13a312ff"
+dependencies = [
+ "serde",
+ "serde_with_macros",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "1.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
+dependencies = [
+ "darling 0.13.4",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serialize-to-javascript"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c9823f2d3b6a81d98228151fdeaf848206a7855a7a042bbf9bf870449a66cafb"
+dependencies = [
+ "serde",
+ "serde_json",
+ "serialize-to-javascript-impl",
+]
+
+[[package]]
+name = "serialize-to-javascript-impl"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74064874e9f6a15f04c1f3cb627902d0e6b410abbf36668afa873c61889f1763"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "servo_arc"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432"
+dependencies = [
+ "nodrop",
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "sharded-slab"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
+dependencies = [
+ "lazy_static",
+]
+
+[[package]]
+name = "shared_child"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "siphasher"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de"
+
+[[package]]
+name = "slab"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+
+[[package]]
+name = "smart-default"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "soup2"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0"
+dependencies = [
+ "bitflags",
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+ "soup2-sys",
+]
+
+[[package]]
+name = "soup2-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf"
+dependencies = [
+ "bitflags",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps 5.0.0",
+]
+
+[[package]]
+name = "squirreldisk-tauri"
+version = "0.0.0"
+dependencies = [
+ "cocoa",
+ "objc",
+ "parallel-disk-usage",
+ "raw-window-handle",
+ "regex",
+ "serde",
+ "serde_json",
+ "sysinfo",
+ "tauri",
+ "tauri-build",
+ "walkdir",
+ "window-shadows",
+ "window-vibrancy",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
+name = "state"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b"
+dependencies = [
+ "loom",
+]
+
+[[package]]
+name = "string_cache"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08"
+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 = "strum"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f7ac893c7d471c8a21f31cfe213ec4f6d9afeed25537c772e08ef3f005f8729e"
+dependencies = [
+ "strum_macros",
+]
+
+[[package]]
+name = "strum_macros"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339f799d8b549e3744c7ac7feb216383e4005d94bdb22561b3ab8f3b808ae9fb"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.107"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sysinfo"
+version = "0.27.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "975fe381e0ecba475d4acff52466906d95b153a40324956552e027b2a9eaa89e"
+dependencies = [
+ "cfg-if",
+ "core-foundation-sys",
+ "libc",
+ "ntapi",
+ "once_cell",
+ "rayon",
+ "winapi",
+]
+
+[[package]]
+name = "system-deps"
+version = "5.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e"
+dependencies = [
+ "cfg-expr 0.9.1",
+ "heck 0.3.3",
+ "pkg-config",
+ "toml",
+ "version-compare 0.0.11",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff"
+dependencies = [
+ "cfg-expr 0.11.0",
+ "heck 0.4.0",
+ "pkg-config",
+ "toml",
+ "version-compare 0.1.1",
+]
+
+[[package]]
+name = "tao"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac8e6399427c8494f9849b58694754d7cc741293348a6836b6c8d2c5aa82d8e6"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "cc",
+ "cocoa",
+ "core-foundation",
+ "core-graphics",
+ "crossbeam-channel",
+ "dispatch",
+ "gdk",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gdkx11-sys",
+ "gio",
+ "glib",
+ "glib-sys",
+ "gtk",
+ "image",
+ "instant",
+ "jni",
+ "lazy_static",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-context",
+ "ndk-sys",
+ "objc",
+ "once_cell",
+ "parking_lot",
+ "paste",
+ "png",
+ "raw-window-handle",
+ "scopeguard",
+ "serde",
+ "unicode-segmentation",
+ "uuid 1.2.2",
+ "windows 0.39.0",
+ "windows-implement",
+ "x11-dl",
+]
+
+[[package]]
+name = "tar"
+version = "0.4.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b55807c0344e1e6c04d7c965f5289c39a8d94ae23ed5c0b57aabac549f871c6"
+dependencies = [
+ "filetime",
+ "libc",
+ "xattr",
+]
+
+[[package]]
+name = "tauri"
+version = "1.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe7e0f1d535e7cbbbab43c82be4fc992b84f9156c16c160955617e0260ebc449"
+dependencies = [
+ "anyhow",
+ "attohttpc",
+ "base64",
+ "cocoa",
+ "dirs-next",
+ "embed_plist",
+ "encoding_rs",
+ "flate2",
+ "futures-util",
+ "glib",
+ "glob",
+ "gtk",
+ "heck 0.4.0",
+ "http",
+ "ignore",
+ "minisign-verify",
+ "notify-rust",
+ "objc",
+ "once_cell",
+ "open",
+ "os_info",
+ "os_pipe",
+ "percent-encoding",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "regex",
+ "rfd",
+ "semver 1.0.16",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "serialize-to-javascript",
+ "shared_child",
+ "state",
+ "tar",
+ "tauri-macros",
+ "tauri-runtime",
+ "tauri-runtime-wry",
+ "tauri-utils",
+ "tempfile",
+ "thiserror",
+ "time",
+ "tokio",
+ "url",
+ "uuid 1.2.2",
+ "webkit2gtk",
+ "webview2-com",
+ "windows 0.39.0",
+ "zip",
+]
+
+[[package]]
+name = "tauri-build"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8807c85d656b2b93927c19fe5a5f1f1f348f96c2de8b90763b3c2d561511f9b4"
+dependencies = [
+ "anyhow",
+ "cargo_toml",
+ "heck 0.4.0",
+ "json-patch",
+ "semver 1.0.16",
+ "serde_json",
+ "tauri-utils",
+ "winres",
+]
+
+[[package]]
+name = "tauri-codegen"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14388d484b6b1b5dc0f6a7d6cc6433b3b230bec85eaa576adcdf3f9fafa49251"
+dependencies = [
+ "base64",
+ "brotli",
+ "ico",
+ "json-patch",
+ "plist",
+ "png",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "semver 1.0.16",
+ "serde",
+ "serde_json",
+ "sha2",
+ "tauri-utils",
+ "thiserror",
+ "time",
+ "uuid 1.2.2",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-macros"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "069319e5ecbe653a799b94b0690d9f9bf5d00f7b1d3989aa331c524d4e354075"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "tauri-codegen",
+ "tauri-utils",
+]
+
+[[package]]
+name = "tauri-runtime"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c507d954d08ac8705d235bc70ec6975b9054fb95ff7823af72dbb04186596f3b"
+dependencies = [
+ "gtk",
+ "http",
+ "http-range",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "thiserror",
+ "uuid 1.2.2",
+ "webview2-com",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tauri-runtime-wry"
+version = "0.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36b1c5764a41a13176a4599b5b7bd0881bea7d94dfe45e1e755f789b98317e30"
+dependencies = [
+ "cocoa",
+ "gtk",
+ "percent-encoding",
+ "rand 0.8.5",
+ "raw-window-handle",
+ "tauri-runtime",
+ "tauri-utils",
+ "uuid 1.2.2",
+ "webkit2gtk",
+ "webview2-com",
+ "windows 0.39.0",
+ "wry",
+]
+
+[[package]]
+name = "tauri-utils"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5abbc109a6eb45127956ffcc26ef0e875d160150ac16cfa45d26a6b2871686f1"
+dependencies = [
+ "brotli",
+ "ctor",
+ "glob",
+ "heck 0.4.0",
+ "html5ever",
+ "infer",
+ "json-patch",
+ "kuchiki",
+ "memchr",
+ "phf 0.10.1",
+ "proc-macro2",
+ "quote",
+ "semver 1.0.16",
+ "serde",
+ "serde_json",
+ "serde_with",
+ "thiserror",
+ "url",
+ "walkdir",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tauri-winrt-notification"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c58de036c4d2e20717024de2a3c4bf56c301f07b21bc8ef9b57189fce06f1f3b"
+dependencies = [
+ "quick-xml 0.23.1",
+ "strum",
+ "windows 0.39.0",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "libc",
+ "redox_syscall",
+ "remove_dir_all",
+ "winapi",
+]
+
+[[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 = "termcolor"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "terminal_size"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb20089a8ba2b69debd491f8d2d023761cbf196e999218c591fa1e7e15a21907"
+dependencies = [
+ "rustix",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "text-block-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f8b59b4da1c1717deaf1de80f0179a9d8b4ac91c986d5fd9f4a8ff177b84049"
+
+[[package]]
+name = "thin-slice"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c"
+
+[[package]]
+name = "thiserror"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "thread_local"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "time"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376"
+dependencies = [
+ "itoa 1.0.5",
+ "serde",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+
+[[package]]
+name = "time-macros"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2"
+dependencies = [
+ "time-core",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
+
+[[package]]
+name = "tokio"
+version = "1.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb"
+dependencies = [
+ "autocfg",
+ "bytes",
+ "memchr",
+ "num_cpus",
+ "pin-project-lite",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5"
+
+[[package]]
+name = "toml_edit"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b"
+dependencies = [
+ "indexmap",
+ "nom8",
+ "toml_datetime",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+dependencies = [
+ "cfg-if",
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
+dependencies = [
+ "once_cell",
+ "valuable",
+]
+
+[[package]]
+name = "tracing-log"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922"
+dependencies = [
+ "lazy_static",
+ "log",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-subscriber"
+version = "0.3.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
+dependencies = [
+ "matchers",
+ "nu-ansi-term",
+ "once_cell",
+ "regex",
+ "sharded-slab",
+ "smallvec",
+ "thread_local",
+ "tracing",
+ "tracing-core",
+ "tracing-log",
+]
+
+[[package]]
+name = "treediff"
+version = "3.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff"
+dependencies = [
+ "serde_json",
+]
+
+[[package]]
+name = "typenum"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+
+[[package]]
+name = "ucd-trie"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81"
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc"
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"
+
+[[package]]
+name = "unicode-width"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+
+[[package]]
+name = "url"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "uuid"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+
+[[package]]
+name = "uuid"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c"
+dependencies = [
+ "getrandom 0.2.8",
+]
+
+[[package]]
+name = "valuable"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version-compare"
+version = "0.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
+
+[[package]]
+name = "version-compare"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "walkdir"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
+dependencies = [
+ "same-file",
+ "winapi",
+ "winapi-util",
+]
+
+[[package]]
+name = "wasi"
+version = "0.9.0+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
+
+[[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.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268"
+dependencies = [
+ "cfg-if",
+ "wasm-bindgen-macro",
+]
+
+[[package]]
+name = "wasm-bindgen-backend"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142"
+dependencies = [
+ "bumpalo",
+ "log",
+ "once_cell",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d"
+dependencies = [
+ "cfg-if",
+ "js-sys",
+ "wasm-bindgen",
+ "web-sys",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-backend",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.83"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+
+[[package]]
+name = "web-sys"
+version = "0.3.60"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webkit2gtk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370"
+dependencies = [
+ "bitflags",
+ "cairo-rs",
+ "gdk",
+ "gdk-sys",
+ "gio",
+ "gio-sys",
+ "glib",
+ "glib-sys",
+ "gobject-sys",
+ "gtk",
+ "gtk-sys",
+ "javascriptcore-rs",
+ "libc",
+ "once_cell",
+ "soup2",
+ "webkit2gtk-sys",
+]
+
+[[package]]
+name = "webkit2gtk-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3"
+dependencies = [
+ "atk-sys",
+ "bitflags",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "javascriptcore-rs-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "soup2-sys",
+ "system-deps 6.0.3",
+]
+
+[[package]]
+name = "webview2-com"
+version = "0.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178"
+dependencies = [
+ "webview2-com-macros",
+ "webview2-com-sys",
+ "windows 0.39.0",
+ "windows-implement",
+]
+
+[[package]]
+name = "webview2-com-macros"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "webview2-com-sys"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7"
+dependencies = [
+ "regex",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "windows 0.39.0",
+ "windows-bindgen",
+ "windows-metadata",
+]
+
+[[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.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "window-shadows"
+version = "0.2.1"
+source = "git+https://github.com/adileo/window-shadows#753bcdfe39d65f1267f623f70ed9a9e9be21e2e0"
+dependencies = [
+ "cocoa",
+ "objc",
+ "raw-window-handle",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "window-vibrancy"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f762d9cc392fb85e6b1b5eed1ef13d73fed5149a5cbb017a7137497d14ef612"
+dependencies = [
+ "cocoa",
+ "objc",
+ "raw-window-handle",
+ "windows-sys 0.42.0",
+]
+
+[[package]]
+name = "windows"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647"
+dependencies = [
+ "windows_aarch64_msvc 0.37.0",
+ "windows_i686_gnu 0.37.0",
+ "windows_i686_msvc 0.37.0",
+ "windows_x86_64_gnu 0.37.0",
+ "windows_x86_64_msvc 0.37.0",
+]
+
+[[package]]
+name = "windows"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a"
+dependencies = [
+ "windows-implement",
+ "windows_aarch64_msvc 0.39.0",
+ "windows_i686_gnu 0.39.0",
+ "windows_i686_msvc 0.39.0",
+ "windows_x86_64_gnu 0.39.0",
+ "windows_x86_64_msvc 0.39.0",
+]
+
+[[package]]
+name = "windows-bindgen"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41"
+dependencies = [
+ "windows-metadata",
+ "windows-tokens",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7"
+dependencies = [
+ "syn",
+ "windows-tokens",
+]
+
+[[package]]
+name = "windows-metadata"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278"
+
+[[package]]
+name = "windows-sys"
+version = "0.42.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc 0.42.1",
+ "windows_i686_gnu 0.42.1",
+ "windows_i686_msvc 0.42.1",
+ "windows_x86_64_gnu 0.42.1",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-tokens"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.39.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
+
+[[package]]
+name = "winres"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b68db261ef59e9e52806f688020631e987592bd83619edccda9c47d42cde4f6c"
+dependencies = [
+ "toml",
+]
+
+[[package]]
+name = "wry"
+version = "0.23.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c1ad8e2424f554cc5bdebe8aa374ef5b433feff817aebabca0389961fc7ef98"
+dependencies = [
+ "base64",
+ "block",
+ "cocoa",
+ "core-graphics",
+ "crossbeam-channel",
+ "dunce",
+ "gdk",
+ "gio",
+ "glib",
+ "gtk",
+ "html5ever",
+ "http",
+ "kuchiki",
+ "libc",
+ "log",
+ "objc",
+ "objc_id",
+ "once_cell",
+ "serde",
+ "serde_json",
+ "sha2",
+ "soup2",
+ "tao",
+ "thiserror",
+ "url",
+ "webkit2gtk",
+ "webkit2gtk-sys",
+ "webview2-com",
+ "windows 0.39.0",
+ "windows-implement",
+]
+
+[[package]]
+name = "x11"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11-dl"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
+dependencies = [
+ "libc",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "xattr"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d1526bbe5aaeb5eb06885f4d987bcdfa5e23187055de9b83fe00156a821fabc"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "zero-copy-pads"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5649a5dce1370c707880332f781f6566883736a41861a5749890f4671d5746b6"
+dependencies = [
+ "derive_builder",
+ "derive_more",
+ "fmt-iter",
+ "unicode-width",
+]
+
+[[package]]
+name = "zip"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "537ce7411d25e54e8ae21a7ce0b15840e7bfcff15b51d697ec3266cc76bdf080"
+dependencies = [
+ "byteorder",
+ "crc32fast",
+ "crossbeam-utils",
+]
diff --git a/nixpkgs/pkgs/by-name/sq/squirreldisk/package.json b/nixpkgs/pkgs/by-name/sq/squirreldisk/package.json
new file mode 100644
index 000000000000..b3b80859ef64
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/sq/squirreldisk/package.json
@@ -0,0 +1,40 @@
+{
+  "name": "squirreldisk-tauri",
+  "private": true,
+  "version": "0.0.0",
+  "type": "module",
+  "scripts": {
+    "dev": "vite",
+    "build": "tsc && vite build",
+    "preview": "vite preview",
+    "tauri": "tauri"
+  },
+  "dependencies": {
+    "@tauri-apps/api": "^1.2.0",
+    "d3": "^7.8.2",
+    "mongoid-js": "^1.3.0",
+    "pretty-bytes": "^6.0.0",
+    "react": "^18.2.0",
+    "react-beautiful-dnd": "^13.1.1",
+    "react-dom": "^18.2.0",
+    "react-router-dom": "^6.8.0",
+    "shade-blend-color": "^1.0.0",
+    "uuid": "^9.0.0",
+    "vscode-icons-js": "^11.6.1"
+  },
+  "devDependencies": {
+    "@tauri-apps/cli": "^1.2.2",
+    "@types/d3": "^7.4.0",
+    "@types/node": "^18.7.10",
+    "@types/react": "^18.0.15",
+    "@types/react-beautiful-dnd": "^13.1.3",
+    "@types/react-dom": "^18.0.6",
+    "@types/uuid": "^9.0.0",
+    "@vitejs/plugin-react": "^3.0.0",
+    "autoprefixer": "^10.4.13",
+    "postcss": "^8.4.21",
+    "tailwindcss": "^3.2.4",
+    "typescript": "^4.6.4",
+    "vite": "^4.0.0"
+  }
+}
diff --git a/nixpkgs/pkgs/by-name/sq/squirreldisk/package.nix b/nixpkgs/pkgs/by-name/sq/squirreldisk/package.nix
new file mode 100644
index 000000000000..6a0f2a639e56
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/sq/squirreldisk/package.nix
@@ -0,0 +1,89 @@
+{
+  dbus,
+  openssl,
+  freetype,
+  libsoup,
+  gtk3,
+  webkitgtk,
+  pkg-config,
+  wrapGAppsHook,
+  parallel-disk-usage,
+  fetchFromGitHub,
+  buildNpmPackage,
+  rustPlatform,
+  lib,
+  stdenv,
+}: let
+  pname = "squirreldisk";
+  version = "0.3.4";
+
+  src = fetchFromGitHub {
+    owner = "adileo";
+    repo = "squirreldisk";
+    rev = "v${version}";
+    hash = "sha256-As2nvc68knjeLPuX0QLBoybj8vuvkpS5Vr+7U7E5CjA=";
+  };
+  frontend-build = buildNpmPackage {
+    inherit version src;
+    pname = "squirreldisk-ui";
+
+    npmDepsHash = "sha256-Japcn0KYP7aYIDK8+Ns+mrnbbAb0fLWXHIV2+yltI6I=";
+
+    packageJSON = ./package.json;
+    postBuild = ''
+      cp -r dist/ $out
+    '';
+    distPhase = "true";
+    dontInstall = true;
+  };
+in
+  rustPlatform.buildRustPackage {
+    inherit version src pname;
+
+    sourceRoot = "${src.name}/src-tauri";
+
+    cargoLock = {
+      lockFile = ./Cargo.lock;
+      outputHashes = {
+        "window-shadows-0.2.1" = "sha256-3meM04TG63PvB0M5wUH1cDMBo7ObcB0zdgwGt2aKHMs=";
+      };
+    };
+
+    # copy the frontend static resources to final build directory
+    # Also modify tauri.conf.json so that it expects the resources at the new location
+    postPatch = ''
+      cp ${./Cargo.lock} Cargo.lock
+
+      mkdir -p frontend-build
+      cp -r ${frontend-build}/* frontend-build
+
+      substituteInPlace tauri.conf.json --replace-fail '"distDir": "../dist"' '"distDir": "./frontend-build"'
+
+      # Copy pdu binary from nixpkgs, since the default packaged binary has issues.
+      cp ${parallel-disk-usage}/bin/pdu bin/pdu-${stdenv.hostPlatform.config}
+    '';
+
+    nativeBuildInputs = [pkg-config wrapGAppsHook];
+    buildInputs = [dbus openssl freetype libsoup gtk3 webkitgtk];
+
+    # Disable checkPhase, since the project doesn't contain tests
+    doCheck = false;
+
+    postInstall = ''
+      mv $out/bin/squirreldisk-tauri $out/bin/squirreldisk
+    '';
+
+    # WEBKIT_DISABLE_COMPOSITING_MODE essential in NVIDIA + compositor https://github.com/NixOS/nixpkgs/issues/212064#issuecomment-1400202079
+    postFixup = ''
+      wrapProgram "$out/bin/squirreldisk" \
+        --set WEBKIT_DISABLE_COMPOSITING_MODE 1
+    '';
+
+    meta = with lib; {
+      description = "Cross-platform disk usage analysis tool";
+      homepage = "https://www.squirreldisk.com/";
+      license = licenses.agpl3Only;
+      maintainers = with maintainers; [peret];
+      mainProgram = "squirreldisk";
+    };
+  }
diff --git a/nixpkgs/pkgs/by-name/st/stereotool/package.nix b/nixpkgs/pkgs/by-name/st/stereotool/package.nix
new file mode 100644
index 000000000000..f1c4ea0d8e52
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/st/stereotool/package.nix
@@ -0,0 +1,171 @@
+{ lib
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, libX11
+, libXpm
+, alsa-lib
+, bzip2
+, zlib
+, libsForQt5
+, libgcc
+, makeWrapper
+, copyDesktopItems
+, makeDesktopItem
+}:
+
+stdenv.mkDerivation rec {
+  pname = "stereotool";
+  version = "10.21";
+
+  srcs =
+    let
+      versionNoPoint = lib.replaceStrings [ "." ] [ "" ] version;
+    in
+    [
+      (fetchurl {
+        name = "stereo-tool-icon.png";
+        url = "https://download.thimeo.com/stereo_tool_icon_${versionNoPoint}.png";
+        hash = "sha256-dcivH6Cc7pdQ99m80vS4E5mp/SHtTlNu1EHc+0ALIGM=";
+      })
+    ] ++ (
+      {
+        # Alsa version for 64bits.
+        x86_64-linux = [
+          (fetchurl {
+            name = "alsa";
+            url = "https://download.thimeo.com/stereo_tool_gui_64_${versionNoPoint}";
+            hash = "sha256-ByRguhZ29ertQM3q+TPUUT1BMnAJGbwNe8WbNxLhcmk=";
+          })
+          # Jack version for 64bits.
+          (fetchurl {
+            name = "jack";
+            url = "https://download.thimeo.com/stereo_tool_gui_jack_64_${versionNoPoint}";
+            hash = "sha256-ByRguhZ29ertQM3q+TPUUT1BMnAJGbwNe8WbNxLhcmk=";
+          })
+          # Cmd version for 64bits
+          (fetchurl {
+            name = "cmd";
+            url = "https://download.thimeo.com/stereo_tool_cmd_64_${versionNoPoint}";
+            hash = "sha256-PGheJfOQJzI1gs05qW9vcAMoVnCPIHR2qS0GIg5V6vw=";
+          })
+        ];
+        # Sources if the system is aarch64-linux
+        aarch64-linux = [
+          (fetchurl {
+            name = "alsa";
+            url = "https://download.thimeo.com/stereo_tool_gui_pi2_64_${versionNoPoint}";
+            hash = "sha256-iwoc6c+ox+2DSqmiz8mpDotDjqki7iL0jgqc7Z1htNI=";
+          })
+          (fetchurl {
+            name = "jack";
+            url = "https://download.thimeo.com/stereo_tool_gui_jack_pi2_64_${versionNoPoint}";
+            hash = "sha256-iwoc6c+ox+2DSqmiz8mpDotDjqki7iL0jgqc7Z1htNI==";
+          })
+          (fetchurl {
+            name = "cmd";
+            url = "https://download.thimeo.com/stereo_tool_pi2_64_${versionNoPoint}";
+            hash = "sha256-bIFnQkJB9XoEKo7IG+MSMvx/ia1C8i97Cw7EX4EDizk=";
+          })
+        ];
+        # Sources if the system is aarch32-linux
+        aarch32-linux = [
+          (fetchurl {
+            name = "alsa";
+            url = "https://download.thimeo.com/stereo_tool_gui_pi2_${versionNoPoint}";
+            hash = "sha256-922yqmis5acvASU2rEi5YzFLAUuDO7BiEiW49RKfcoU=";
+          })
+          (fetchurl {
+            name = "jack";
+            url = "https://download.thimeo.com/stereo_tool_gui_jack_pi2_${versionNoPoint}";
+            hash = "sha256-922yqmis5acvASU2rEi5YzFLAUuDO7BiEiW49RKfcoU=";
+          })
+          (fetchurl {
+            name = "cmd";
+            url = "https://download.thimeo.com/stereo_tool_pi2_${versionNoPoint}";
+            hash = "sha256-xKM5Mg6gEAvbp63rd81ssnx2Bj1hUylCo36mQBYwIvg=";
+          })
+        ];
+        # Sources if the system is 32bits i686
+        i686-linux = [
+          (fetchurl {
+            # The name is the name of this source in the build directory
+            name = "alsa";
+            url = "https://download.thimeo.com/stereo_tool_gui_${versionNoPoint}";
+            hash = "sha256-iEPqJvmXKXD4AVbM+1QZeUOwpMjMT7ROYNQpmhRVZyw=";
+          })
+          (fetchurl {
+            name = "jack";
+            url = "https://download.thimeo.com/stereo_tool_gui_jack_${versionNoPoint}";
+            hash = "sha256-iEPqJvmXKXD4AVbM+1QZeUOwpMjMT7ROYNQpmhRVZyw=";
+          })
+          (fetchurl {
+            name = "cmd";
+            url = "https://download.thimeo.com/stereo_tool_cmd_${versionNoPoint}";
+            hash = "sha256-sk13wj7XvuwTDWWW6tMYHdTV9XjPeHe6hHv2JPBxBLA=";
+          })
+        ];
+      }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"));
+
+  unpackPhase = ''
+    for srcFile in $srcs; do
+      cp $srcFile $(stripHash $srcFile)
+    done
+  '';
+
+  nativeBuildInputs = [
+    autoPatchelfHook
+    makeWrapper
+    copyDesktopItems
+  ];
+
+  desktopItems = [
+    (makeDesktopItem {
+      name = "stereotool-alsa";
+      desktopName = "Stereotool-Alsa";
+      exec = "stereo_tool_gui";
+      icon = "stereo-tool-icon";
+      comment = "Broadcast Audio Processing";
+      categories = [ "AudioVideo" "Audio" "AudioVideoEditing" ];
+    })
+    (makeDesktopItem {
+      name = "stereotool-jack";
+      desktopName = "Stereotool-Jack";
+      exec = "stereo_tool_gui_jack";
+      icon = "stereo-tool-icon";
+      comment = "Broadcast Audio Processing";
+      categories = [ "AudioVideo" "Audio" "AudioVideoEditing" ];
+    })
+  ];
+
+  buildInputs = [
+    libX11
+    alsa-lib
+    bzip2
+    zlib
+    libXpm
+    libgcc
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 alsa $out/bin/stereo_tool_gui
+    wrapProgram $out/bin/stereo_tool_gui --prefix PATH : ${lib.makeBinPath [ libsForQt5.kdialog ]}
+    install -Dm755 jack $out/bin/stereo_tool_gui_jack
+    wrapProgram $out/bin/stereo_tool_gui_jack --prefix PATH : ${lib.makeBinPath [ libsForQt5.kdialog ]}
+    install -Dm755 cmd $out/bin/stereo_tool_cmd
+    mkdir -p $out/share/icons/hicolor/48x48/apps
+    cp stereo-tool-icon.png $out/share/icons/hicolor/48x48/apps/stereo-tool-icon.png
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.thimeo.com/stereo-tool/";
+    description = "Stereo Tool is a software-based audio processor which offers outstanding audio quality and comes with many unique features.";
+    license = licenses.unfree;
+    mainProgram = "stereo_tool_gui";
+    platforms = [ "aarch64-linux" "aarch32-linux" "x86_64-linux" "i686-linux" ];
+    maintainers = with maintainers; [ RudiOnTheAir ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix b/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix
index 452925beeabb..89af07a9af3d 100644
--- a/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix
+++ b/nixpkgs/pkgs/by-name/sw/sway-unwrapped/package.nix
@@ -2,7 +2,7 @@
 , meson, ninja, pkg-config, wayland-scanner, scdoc
 , libGL, wayland, libxkbcommon, pcre2, json_c, libevdev
 , pango, cairo, libinput, gdk-pixbuf, librsvg
-, wlroots_0_16, wayland-protocols, libdrm
+, wlroots, wayland-protocols, libdrm
 , nixosTests
 # Used by the NixOS module:
 , isNixOS ? false
@@ -11,19 +11,16 @@
 , trayEnabled ? systemdSupport
 }:
 
-let
-  wlroots = wlroots_0_16;
-in
 stdenv.mkDerivation (finalAttrs: {
   pname = "sway-unwrapped";
-  version = "1.8.1";
+  version = "1.9";
 
   inherit enableXWayland isNixOS systemdSupport trayEnabled;
   src = fetchFromGitHub {
     owner = "swaywm";
     repo = "sway";
     rev = finalAttrs.version;
-    hash = "sha256-WxnT+le9vneQLFPz2KoBduOI+zfZPhn1fKlaqbPL6/g=";
+    hash = "sha256-/6+iDkQfdLcL/pTJaqNc6QdP4SRVOYLjfOItEu/bZtg=";
   };
 
   patches = [
@@ -34,11 +31,6 @@ stdenv.mkDerivation (finalAttrs: {
       inherit swaybg;
     })
 
-    (fetchpatch {
-      name = "LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch";
-      url = "https://github.com/swaywm/sway/commit/dee032d0a0ecd958c902b88302dc59703d703c7f.diff";
-      hash = "sha256-dx+7MpEiAkxTBnJcsT3/1BO8rYRfNLecXmpAvhqGMD0=";
-    })
   ] ++ lib.optionals (!finalAttrs.isNixOS) [
     # References to /nix/store/... will get GC'ed which causes problems when
     # copying the default configuration:
diff --git a/nixpkgs/pkgs/by-name/sw/swaycons/package.nix b/nixpkgs/pkgs/by-name/sw/swaycons/package.nix
index c990a2bb5186..33e5ab3666d4 100644
--- a/nixpkgs/pkgs/by-name/sw/swaycons/package.nix
+++ b/nixpkgs/pkgs/by-name/sw/swaycons/package.nix
@@ -20,7 +20,7 @@ rustPlatform.buildRustPackage rec {
     description = "Window Icons in Sway with Nerd Fonts!";
     homepage = "https://github.com/ActuallyAllie/swaycons";
     license = licenses.asl20;
-    platforms = [ "x86_64-linux" ];
+    platforms = platforms.linux;
     maintainers = with maintainers; [ aacebedo ];
   };
 }
diff --git a/nixpkgs/pkgs/by-name/sw/swayfx-unwrapped/package.nix b/nixpkgs/pkgs/by-name/sw/swayfx-unwrapped/package.nix
index b49496f1383d..dfbb2e540c53 100644
--- a/nixpkgs/pkgs/by-name/sw/swayfx-unwrapped/package.nix
+++ b/nixpkgs/pkgs/by-name/sw/swayfx-unwrapped/package.nix
@@ -4,6 +4,7 @@
   sway-unwrapped,
   stdenv,
   systemd,
+  wlroots_0_16,
   # Used by the NixOS module:
   isNixOS ? false,
   enableXWayland ? true,
@@ -18,6 +19,8 @@
     systemdSupport
     trayEnabled
     ;
+
+  wlroots = wlroots_0_16;
 }).overrideAttrs (oldAttrs: rec {
   pname = "swayfx-unwrapped";
   version = "0.3.2";
@@ -29,18 +32,6 @@
     sha256 = "sha256-Gwewb0yDVhEBrefSSGDf1hLtpWcntzifPCPJQhqLqI0=";
   };
 
-  # This patch was backported into SwayFX
-  # remove when next release is rebased on Sway 1.9
-  patches =
-    let
-      removePatches = [
-        "LIBINPUT_CONFIG_ACCEL_PROFILE_CUSTOM.patch"
-      ];
-    in
-    builtins.filter
-      (patch: !builtins.elem (patch.name or null) removePatches)
-      (oldAttrs.patches or [ ]);
-
   meta = with lib; {
     description = "Sway, but with eye candy!";
     homepage = "https://github.com/WillPower3309/swayfx";
diff --git a/nixpkgs/pkgs/by-name/ta/tabby/package.nix b/nixpkgs/pkgs/by-name/ta/tabby/package.nix
new file mode 100644
index 000000000000..b89434a8fc48
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ta/tabby/package.nix
@@ -0,0 +1,73 @@
+{ lib
+, fetchFromGitHub
+, gcc12
+, cmake
+, git
+, openssl
+, pkg-config
+, protobuf
+, rustPlatform
+, addOpenGLRunpath
+, cudatoolkit
+, nvidia ? true
+}:
+
+rustPlatform.buildRustPackage rec {
+  version = "0.7.0";
+  pname = "tabby";
+
+  src = fetchFromGitHub {
+    owner = "TabbyML";
+    repo = "tabby";
+    rev = "v${version}";
+    hash = "sha256-BTPJWvqO4IuQAiUEER9PYfu4aQsz5RI77WsA/gQu5Jc=";
+    fetchSubmodules = true;
+  };
+
+  cargoHash = "sha256-Du0ya9J+0tz72mSid5If0VFX2lLC7YtwNQ/MALpFv2M=";
+
+  # https://github.com/TabbyML/tabby/blob/v0.7.0/.github/workflows/release.yml#L39
+  cargoBuildFlags = [
+    "--release"
+    "--package" "tabby"
+  ] ++ lib.optional nvidia [
+    "--features" "cuda"
+  ];
+
+  OPENSSL_NO_VENDOR = 1;
+
+  nativeBuildInputs = [
+    pkg-config
+    protobuf
+    git
+    cmake
+    gcc12
+
+  ] ++ lib.optional nvidia [
+    addOpenGLRunpath
+  ];
+
+  buildInputs = [ openssl ]
+    ++ lib.optional nvidia cudatoolkit
+  ;
+
+  postInstall = ''
+    ${if nvidia then ''
+    addOpenGLRunpath "$out/bin/tabby"
+    '' else ''
+    ''}
+  '';
+
+  # Fails with:
+  # file cannot create directory: /var/empty/local/lib64/cmake/Llama
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/TabbyML/tabby";
+    changelog = "https://github.com/TabbyML/tabby/releases/tag/v${version}";
+    description = "Self-hosted AI coding assistant";
+    mainProgram = "tabby";
+    license = licenses.asl20;
+    maintainers = [ maintainers.ghthor ];
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/ta/taschenrechner/package.nix b/nixpkgs/pkgs/by-name/ta/taschenrechner/package.nix
index eeb2b841abff..1b45c783830d 100644
--- a/nixpkgs/pkgs/by-name/ta/taschenrechner/package.nix
+++ b/nixpkgs/pkgs/by-name/ta/taschenrechner/package.nix
@@ -5,17 +5,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "taschenrechner";
-  version = "1.3.0";
+  version = "1.4.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.fem-net.de";
     owner = "mabl";
     repo = "taschenrechner";
     rev = version;
-    hash = "sha256-PF9VCdlgA4c4Qw8Ih3JT29/r2e7i162lVAbW1QSOlWo=";
+    hash = "sha256-5Vml6UeiWz7fNA+vEQ/Ita2YI8dGgDclqkzQ848AwVk=";
   };
 
-  cargoHash = "sha256-SFgStvpcqEwus1JBs5ZyMHO1UD0oWV7mvS6o4v5gIFc=";
+  cargoHash = "sha256-BZGkdHR66O3GjKl9yM/bKxdGdvWFB/YO2Egg6V/wuB8=";
 
   meta = with lib; {
     description = "A cli-calculator written in Rust";
diff --git a/nixpkgs/pkgs/applications/networking/browsers/telescope/default.nix b/nixpkgs/pkgs/by-name/te/telescope/package.nix
index 92124531691d..610a93ce84cc 100644
--- a/nixpkgs/pkgs/applications/networking/browsers/telescope/default.nix
+++ b/nixpkgs/pkgs/by-name/te/telescope/package.nix
@@ -4,6 +4,7 @@
 , pkg-config
 , bison
 , libevent
+, libgrapheme
 , libressl
 , ncurses
 , autoreconfHook
@@ -13,15 +14,20 @@
 
 stdenv.mkDerivation rec {
   pname = "telescope";
-  version = "0.8.1";
+  version = "0.9";
 
   src = fetchFromGitHub {
     owner = "omar-polo";
     repo = pname;
     rev = version;
-    sha256 = "sha256-9gZeBAC7AGU5vb+692npjKbbqFEAr9iGLu1u68EJ0W8=";
+    hash = "sha256-eGntAAaKSwusm3e0zDXZmV9D5uX/uThPvQ5OjPNsxZ8=";
   };
 
+  postPatch = ''
+    # Remove bundled libraries
+    rm -r libgrapheme
+  '';
+
   nativeBuildInputs = [
     autoreconfHook
     pkg-config
@@ -30,6 +36,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [
     libevent
+    libgrapheme
     libressl
     ncurses
   ] ++ lib.optional stdenv.isDarwin memstreamHook;
diff --git a/nixpkgs/pkgs/by-name/ti/tigerbeetle/package.nix b/nixpkgs/pkgs/by-name/ti/tigerbeetle/package.nix
index 80ae5b89862d..7a2876b7705c 100644
--- a/nixpkgs/pkgs/by-name/ti/tigerbeetle/package.nix
+++ b/nixpkgs/pkgs/by-name/ti/tigerbeetle/package.nix
@@ -14,13 +14,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "tigerbeetle";
-  version = "0.14.180";
+  version = "0.14.181";
 
   src = fetchFromGitHub {
     owner = "tigerbeetle";
     repo = "tigerbeetle";
     rev = "refs/tags/${finalAttrs.version}";
-    hash = "sha256-6rZWV88cGNLnyQCF2zU+MYH+MTEx9cjSorDdO754ZU0=";
+    hash = "sha256-BtaPSMQn6Rq6wiYQZb1f+vM9sjrV9HVrvQ9DAQFE+zk=";
   };
 
   nativeBuildInputs = [ custom_zig_hook ];
diff --git a/nixpkgs/pkgs/applications/misc/tippecanoe/default.nix b/nixpkgs/pkgs/by-name/ti/tippecanoe/package.nix
index 990b2495ce97..3a949234c65a 100644
--- a/nixpkgs/pkgs/applications/misc/tippecanoe/default.nix
+++ b/nixpkgs/pkgs/by-name/ti/tippecanoe/package.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "tippecanoe";
-  version = "2.45.0";
+  version = "2.46.0";
 
   src = fetchFromGitHub {
     owner = "felt";
     repo = "tippecanoe";
     rev = finalAttrs.version;
-    hash = "sha256-LsXK3qcS7x0FHJH5QQ0rM/h+jFSnkwa8mUbHKgcQ6NU=";
+    hash = "sha256-UsQb90DKK05JByF3rh6kcvSaugEemU2Gg4c/owImNVs=";
   };
 
   buildInputs = [ sqlite zlib ];
diff --git a/nixpkgs/pkgs/by-name/tu/tuleap-cli/package.nix b/nixpkgs/pkgs/by-name/tu/tuleap-cli/package.nix
index baa98eb53264..73abdd14db75 100644
--- a/nixpkgs/pkgs/by-name/tu/tuleap-cli/package.nix
+++ b/nixpkgs/pkgs/by-name/tu/tuleap-cli/package.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "tuleap-cli";
-  version = "1.0.0";
+  version = "1.1.0";
 
   src = fetchFromGitLab {
     owner = "csgroup-oss";
     repo = "tuleap-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ZNAMhKszly2C+ljFGbP8xqUplQaxqaoArRJykuPNrkY=";
+    hash = "sha256-hL0mGWXzvHYFc8u4RXCDys3Fe/cgsGljfhSkPAjzt4o=";
   };
 
-  vendorHash = "sha256-T5GA9IqH3PPQV2b0uJq2O4Nzu82Q5y/LgKAVJV/XqC4=";
+  vendorHash = "sha256-N9Hmxw/70Cgc790AVRn7lmuhMtDhI94CTUlqHU4VbaY=";
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -24,6 +24,8 @@ buildGoModule rec {
     "-w"
   ];
 
+  subPackages = [ "." ];
+
   postInstall = ''
     installShellCompletion --cmd tuleap-cli \
       --bash <($out/bin/tuleap-cli -s tuleap.example.com completion bash) \
diff --git a/nixpkgs/pkgs/tools/graphics/ueberzugpp/default.nix b/nixpkgs/pkgs/by-name/ue/ueberzugpp/package.nix
index 815983126451..a06923904d2f 100644
--- a/nixpkgs/pkgs/tools/graphics/ueberzugpp/default.nix
+++ b/nixpkgs/pkgs/by-name/ue/ueberzugpp/package.nix
@@ -3,7 +3,6 @@
 , fetchFromGitHub
 , cmake
 , pkg-config
-, cli11
 , openssl
 , zeromq
 , cppzmq
@@ -16,6 +15,9 @@
 , libsixel
 , microsoft-gsl
 , chafa
+, cli11
+, libexif
+, range-v3
 , enableOpencv ? stdenv.isLinux
 , opencv
 , enableWayland ? stdenv.isLinux
@@ -28,13 +30,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ueberzugpp";
-  version = "2.9.2";
+  version = "2.9.4";
 
   src = fetchFromGitHub {
     owner = "jstkdng";
     repo = "ueberzugpp";
     rev = "v${version}";
-    hash = "sha256-yIohpJRytmwt+6DLCWpmBiuCm9GcCHsGmpTI64/3d8U=";
+    hash = "sha256-D+7a+3Vxrt+XUq7c2F2eqi8ZGQ2eZd37aTqighWEKPs=";
   };
 
   strictDeps = true;
@@ -58,6 +60,8 @@ stdenv.mkDerivation rec {
     microsoft-gsl
     chafa
     cli11
+    libexif
+    range-v3
   ] ++ lib.optionals enableOpencv [
     opencv
   ] ++ lib.optionals enableWayland [
diff --git a/nixpkgs/pkgs/by-name/ui/uiua/package.nix b/nixpkgs/pkgs/by-name/ui/uiua/package.nix
index 8b11104cb9a0..52d364fb7fbd 100644
--- a/nixpkgs/pkgs/by-name/ui/uiua/package.nix
+++ b/nixpkgs/pkgs/by-name/ui/uiua/package.nix
@@ -14,16 +14,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "uiua";
-  version = "0.8.0";
+  version = "0.9.5";
 
   src = fetchFromGitHub {
     owner = "uiua-lang";
     repo = "uiua";
     rev = version;
-    hash = "sha256-JilYPIeJbVf9wgGpLTy8pbMwFRrW7Od+8y0tWwAXU84=";
+    hash = "sha256-629hJLSGf0LJ+P1j1b87RV6XGgsDaWif1a6+Eo3NmMw=";
   };
 
-  cargoHash = "sha256-oXO2TBdKmVIpZD0jLI1CK9b48r3SwdeygcJoUG6HGXo=";
+  cargoHash = "sha256-ZRiDlsSZ5jjTrOrB/bg2xOcOTsCNFdP0jY0SwZ1zwGU=";
 
   nativeBuildInputs = lib.optionals stdenv.isDarwin [
     rustPlatform.bindgenHook
@@ -41,6 +41,7 @@ rustPlatform.buildRustPackage rec {
 
   buildFeatures = lib.optional audioSupport "audio";
 
+  passthru.updateScript = ./update.sh;
   passthru.tests.run = runCommand "uiua-test-run" { nativeBuildInputs = [ uiua ]; } ''
     uiua init
     diff -U3 --color=auto <(uiua run main.ua) <(echo '"Hello, World!"')
diff --git a/nixpkgs/pkgs/by-name/ui/uiua/update.sh b/nixpkgs/pkgs/by-name/ui/uiua/update.sh
new file mode 100755
index 000000000000..389ba4867198
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ui/uiua/update.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq nix-update common-updater-scripts
+
+nix-update uiua
+
+EXT_VER=$(curl https://raw.githubusercontent.com/uiua-lang/uiua-vscode/main/package.json | jq -r .version)
+update-source-version vscode-extensions.uiua-lang.uiua-vscode $EXT_VER
diff --git a/nixpkgs/pkgs/applications/networking/sync/unison/default.nix b/nixpkgs/pkgs/by-name/un/unison/package.nix
index 5245030fd7f3..2d68ba5799b4 100644
--- a/nixpkgs/pkgs/applications/networking/sync/unison/default.nix
+++ b/nixpkgs/pkgs/by-name/un/unison/package.nix
@@ -2,50 +2,37 @@
 , stdenv
 , fetchFromGitHub
 , ocamlPackages
-, ncurses
 , copyDesktopItems
 , makeDesktopItem
 , wrapGAppsHook
 , gsettings-desktop-schemas
-, zlib
-, enableX11 ? true
-, Cocoa
+, enableX11 ? !stdenv.isDarwin
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "unison";
-  version = "2.53.2";
+  version = "2.53.4";
 
   src = fetchFromGitHub {
     owner = "bcpierce00";
     repo = "unison";
     rev = "v${finalAttrs.version}";
-    sha256 = "sha256-H+70NZZP0cUsxetFcsjWEx2kENsgMdo/41wBwwaX6zg=";
+    hash = "sha256-nFT6FjlQjh6qx0fepmT4aiQj2SxA7U/as+IU9xXNok0=";
   };
 
   strictDeps = true;
 
-  nativeBuildInputs = [ ocamlPackages.ocaml ]
-    ++ lib.optionals enableX11 [ copyDesktopItems wrapGAppsHook ];
-  buildInputs = [ ncurses zlib ]
-    ++ lib.optionals enableX11 [ gsettings-desktop-schemas ]
-    ++ lib.optionals stdenv.isDarwin [ Cocoa ];
-
-  preBuild = lib.optionalString enableX11 ''
-    sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${ocamlPackages.lablgtk3}"/lib/ocaml/*/site-lib/lablgtk3)|" src/Makefile.OCaml
-    sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${ocamlPackages.cairo2}"/lib/ocaml/*/site-lib/cairo2)|" src/Makefile.OCaml
-  '' + ''
-    echo -e '\ninstall:\n\tcp $(FSMONITOR)$(EXEC_EXT) $(INSTALLDIR)' >> src/fsmonitor/linux/Makefile
+  # uimac requires xcode
+  postPatch = ''
+    sed -i -e 's/ macuimaybe//' src/Makefile
   '';
 
-  makeFlags = [
-    "INSTALLDIR=$(out)/bin/"
-    "UISTYLE=${if enableX11 then "gtk3" else "text"}"
-  ] ++ lib.optional (!ocamlPackages.ocaml.nativeCompilers) "NATIVE=false";
+  nativeBuildInputs = [ ocamlPackages.ocaml ocamlPackages.findlib ]
+    ++ lib.optionals enableX11 [ copyDesktopItems wrapGAppsHook ];
+  buildInputs = lib.optionals enableX11 [ gsettings-desktop-schemas ocamlPackages.lablgtk3 ];
 
-  preInstall = ''
-    mkdir -p $out/bin
-  '';
+  makeFlags = [ "PREFIX=$(out)" ]
+    ++ lib.optionals (!ocamlPackages.ocaml.nativeCompilers) [ "NATIVE=false" ];
 
   postInstall = lib.optionalString enableX11 ''
     install -D $src/icons/U.svg $out/share/icons/hicolor/scalable/apps/unison.svg
@@ -58,7 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
     desktopName = "Unison";
     comment = "Bidirectional file synchronizer";
     genericName = "File synchronization tool";
-    exec = "unison";
+    exec = "unison-gui";
     icon = "unison";
     categories = [ "Utility" "FileTools" "GTK" ];
     startupNotify = true;
@@ -69,8 +56,9 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://www.cis.upenn.edu/~bcpierce/unison/";
     description = "Bidirectional file synchronizer";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ viric ];
+    maintainers = with maintainers; [ viric nevivurn ];
     platforms = platforms.unix;
-    mainProgram = "unison";
+    broken = stdenv.isDarwin && enableX11; # unison-gui and uimac are broken on darwin
+    mainProgram = if enableX11 then "unison-gui" else "unison";
   };
 })
diff --git a/nixpkgs/pkgs/by-name/uv/uv/Cargo.lock b/nixpkgs/pkgs/by-name/uv/uv/Cargo.lock
index 67320ec94f25..3baa252aa5d4 100644
--- a/nixpkgs/pkgs/by-name/uv/uv/Cargo.lock
+++ b/nixpkgs/pkgs/by-name/uv/uv/Cargo.lock
@@ -75,9 +75,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
 
 [[package]]
 name = "anstream"
-version = "0.6.11"
+version = "0.6.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
+checksum = "96b09b5178381e0874812a9b157f7fe84982617e48f71f4e3235482775e5b540"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -123,9 +123,9 @@ dependencies = [
 
 [[package]]
 name = "anyhow"
-version = "1.0.79"
+version = "1.0.80"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
+checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
 
 [[package]]
 name = "arc-swap"
@@ -147,9 +147,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
 
 [[package]]
 name = "assert_cmd"
-version = "2.0.13"
+version = "2.0.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00ad3f3a942eee60335ab4342358c161ee296829e0d16ff42fc1d6cb07815467"
+checksum = "ed72493ac66d5804837f480ab3766c72bdfab91a65e565fc54fa9e42db0073a8"
 dependencies = [
  "anstyle",
  "bstr",
@@ -1564,14 +1564,15 @@ checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8"
 
 [[package]]
 name = "insta"
-version = "1.34.0"
+version = "1.35.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc"
+checksum = "7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2"
 dependencies = [
  "console",
  "lazy_static",
  "linked-hash-map",
  "regex",
+ "serde",
  "similar",
  "yaml-rust",
 ]
@@ -1586,25 +1587,21 @@ dependencies = [
  "data-encoding",
  "distribution-filename",
  "fs-err",
- "fs2",
- "goblin",
  "indoc",
  "mailparse",
  "once_cell",
+ "pathdiff",
  "pep440_rs",
  "platform-host",
  "platform-info",
  "plist",
- "pyo3",
  "pypi-types",
- "rayon",
  "reflink-copy",
  "regex",
  "rustc-hash",
  "serde",
  "serde_json",
  "sha2",
- "target-lexicon",
  "tempfile",
  "thiserror",
  "tracing",
@@ -2193,6 +2190,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
 
 [[package]]
+name = "pathdiff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+
+[[package]]
 name = "pep440_rs"
 version = "0.5.0"
 dependencies = [
@@ -2469,15 +2472,16 @@ dependencies = [
 
 [[package]]
 name = "pyo3"
-version = "0.20.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0"
+checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233"
 dependencies = [
  "cfg-if",
  "indoc",
  "libc",
  "memoffset",
  "parking_lot",
+ "portable-atomic",
  "pyo3-build-config",
  "pyo3-ffi",
  "pyo3-macros",
@@ -2486,9 +2490,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-build-config"
-version = "0.20.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be"
+checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7"
 dependencies = [
  "once_cell",
  "target-lexicon",
@@ -2496,9 +2500,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-ffi"
-version = "0.20.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1"
+checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa"
 dependencies = [
  "libc",
  "pyo3-build-config",
@@ -2517,9 +2521,9 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros"
-version = "0.20.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3"
+checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158"
 dependencies = [
  "proc-macro2",
  "pyo3-macros-backend",
@@ -2529,12 +2533,13 @@ dependencies = [
 
 [[package]]
 name = "pyo3-macros-backend"
-version = "0.20.2"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f"
+checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185"
 dependencies = [
  "heck",
  "proc-macro2",
+ "pyo3-build-config",
  "quote",
  "syn 2.0.48",
 ]
@@ -2772,7 +2777,7 @@ dependencies = [
  "fs-err",
  "indoc",
  "insta",
- "itertools 0.10.5",
+ "itertools 0.12.1",
  "once_cell",
  "pep440_rs",
  "pep508_rs",
@@ -3186,18 +3191,18 @@ dependencies = [
 
 [[package]]
 name = "serde"
-version = "1.0.196"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32"
+checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.196"
+version = "1.0.197"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67"
+checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -3206,9 +3211,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.113"
+version = "1.0.114"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79"
+checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0"
 dependencies = [
  "itoa",
  "ryu",
@@ -3493,9 +3498,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
 
 [[package]]
 name = "target-lexicon"
-version = "0.12.13"
+version = "0.12.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
+checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f"
 
 [[package]]
 name = "task-local-extensions"
@@ -3578,9 +3583,9 @@ dependencies = [
 
 [[package]]
 name = "textwrap"
-version = "0.16.0"
+version = "0.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
+checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9"
 dependencies = [
  "smawk",
  "unicode-linebreak",
@@ -4128,7 +4133,7 @@ checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a"
 
 [[package]]
 name = "uv"
-version = "0.1.10"
+version = "0.1.12"
 dependencies = [
  "anstream",
  "anyhow",
@@ -4148,6 +4153,7 @@ dependencies = [
  "fs-err",
  "futures",
  "gourgeist",
+ "indexmap 2.2.3",
  "indicatif",
  "indoc",
  "insta",
@@ -4168,6 +4174,8 @@ dependencies = [
  "requirements-txt",
  "reqwest",
  "rustc-hash",
+ "serde",
+ "serde_json",
  "tempfile",
  "textwrap",
  "thiserror",
@@ -4178,6 +4186,7 @@ dependencies = [
  "tracing-durations-export",
  "tracing-subscriber",
  "tracing-tree",
+ "unicode-width",
  "url",
  "uv-build",
  "uv-cache",
@@ -4429,6 +4438,7 @@ dependencies = [
  "tokio",
  "tokio-tar",
  "tokio-util",
+ "tracing",
  "zip",
 ]
 
@@ -4454,6 +4464,7 @@ dependencies = [
  "base64 0.21.7",
  "cache-key",
  "cargo-util",
+ "fs-err",
  "git2",
  "glob",
  "hex",
@@ -4485,12 +4496,15 @@ dependencies = [
  "pep508_rs",
  "platform-tags",
  "pypi-types",
+ "pyproject-toml",
  "rayon",
  "requirements-txt",
  "rustc-hash",
+ "serde",
  "tempfile",
  "thiserror",
  "tokio",
+ "toml",
  "tracing",
  "url",
  "uv-cache",
@@ -4510,9 +4524,11 @@ version = "0.0.1"
 dependencies = [
  "anyhow",
  "cache-key",
+ "configparser",
  "fs-err",
  "indoc",
  "insta",
+ "install-wheel-rs",
  "itertools 0.12.1",
  "once_cell",
  "pep440_rs",
diff --git a/nixpkgs/pkgs/by-name/uv/uv/package.nix b/nixpkgs/pkgs/by-name/uv/uv/package.nix
index 9fe7c128f0d6..be273cae8916 100644
--- a/nixpkgs/pkgs/by-name/uv/uv/package.nix
+++ b/nixpkgs/pkgs/by-name/uv/uv/package.nix
@@ -1,31 +1,25 @@
 { lib
-, cargo
 , cmake
 , darwin
 , fetchFromGitHub
-, libgit2
 , openssl
 , pkg-config
-, python3
 , rustPlatform
-, rustc
 , stdenv
-, zlib
 }:
 
-python3.pkgs.buildPythonApplication rec {
+rustPlatform.buildRustPackage rec {
   pname = "uv";
-  version = "0.1.10";
-  pyproject = true;
+  version = "0.1.12";
 
   src = fetchFromGitHub {
     owner = "astral-sh";
     repo = "uv";
     rev = version;
-    hash = "sha256-ppUx6yLTmMElUqiW766AG5k2g6pnPxZc6hpiPdwQeyQ=";
+    hash = "sha256-tM8NX4BPGm8Xxlau+qpKSljTdSJutipsYFsZAdtmZuo=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
+  cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
       "async_zip-0.0.16" = "sha256-M94ceTCtyQc1AtPXYrVGplShQhItqZZa/x5qLiL+gs0=";
@@ -34,25 +28,20 @@ python3.pkgs.buildPythonApplication rec {
   };
 
   nativeBuildInputs = [
-    cargo
     cmake
     pkg-config
-    rustPlatform.cargoSetupHook
-    rustPlatform.maturinBuildHook
-    rustc
   ];
 
   buildInputs = [
-    libgit2
     openssl
-    zlib
   ] ++ lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.SystemConfiguration
   ];
 
-  dontUseCmakeConfigure = true;
+  cargoBuildFlags = [ "--package" "uv" ];
 
-  pythonImportsCheck = [ "uv" ];
+  # Tests require network access
+  doCheck = false;
 
   env = {
     OPENSSL_NO_VENDOR = true;
@@ -61,7 +50,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     description = "An extremely fast Python package installer and resolver, written in Rust";
     homepage = "https://github.com/astral-sh/uv";
-    changelog = "https://github.com/astral-sh/uv/releases/tag/${version}";
+    changelog = "https://github.com/astral-sh/uv/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ marsam ];
     mainProgram = "uv";
diff --git a/nixpkgs/pkgs/by-name/ux/uxn/package.nix b/nixpkgs/pkgs/by-name/ux/uxn/package.nix
index 8ac219beccac..2dc429a126bd 100644
--- a/nixpkgs/pkgs/by-name/ux/uxn/package.nix
+++ b/nixpkgs/pkgs/by-name/ux/uxn/package.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "uxn";
-  version = "unstable-2024-02-15";
+  version = "1.0-unstable-2024-02-15";
 
   src = fetchFromSourcehut {
     owner = "~rabbits";
@@ -64,5 +64,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with lib.maintainers; [ AndersonTorres ];
     mainProgram = "uxnemu";
     inherit (SDL2.meta) platforms;
+    broken = stdenv.isDarwin;
   };
 })
diff --git a/nixpkgs/pkgs/by-name/va/vault-unseal/package.nix b/nixpkgs/pkgs/by-name/va/vault-unseal/package.nix
new file mode 100644
index 000000000000..30aed5612623
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/va/vault-unseal/package.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildGoModule
+, fetchFromGitHub
+}:
+
+let
+  version = "0.5.1";
+in
+buildGoModule {
+  pname = "vault-unseal";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "lrstanley";
+    repo = "vault-unseal";
+    rev = "v${version}";
+    hash = "sha256-vjU4080uCId/73F7CJKDtk9b1siCPIZOaSczKMNf0LE=";
+  };
+
+  vendorHash = "sha256-SEA74Tk0R3BHyLMZEgKatfLGbX7l8Zyn/JkQVfEckI4=";
+
+  meta = {
+    changelog = "https://github.com/lrstanley/vault-unseal/releases/tag/v${version}";
+    description = "Auto-unseal utility for Hashicorp Vault";
+    homepage = "https://github.com/lrstanley/vault-unseal";
+    license = lib.licenses.mit;
+    mainProgram = "vault-unseal";
+    maintainers = with lib.maintainers; [ mjm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/video/vlc/default.nix b/nixpkgs/pkgs/by-name/vl/vlc/package.nix
index 2b5c86b0efb2..9b89cca9a192 100644
--- a/nixpkgs/pkgs/applications/video/vlc/default.nix
+++ b/nixpkgs/pkgs/by-name/vl/vlc/package.nix
@@ -1,8 +1,4 @@
 { lib
-, stdenv
-, pkgsBuildBuild
-, fetchurl
-, fetchpatch
 , SDL
 , SDL_image
 , a52dec
@@ -11,6 +7,8 @@
 , avahi
 , dbus
 , faad2
+, fetchpatch
+, fetchurl
 , ffmpeg
 , flac
 , fluidsynth
@@ -48,6 +46,7 @@
 , libpulseaudio
 , libraw1394
 , librsvg
+, libsForQt5
 , libsamplerate
 , libspatialaudio
 , libssh2
@@ -65,23 +64,20 @@
 , ncurses
 , perl
 , pkg-config
+, pkgsBuildBuild
 , protobuf
-, qtbase
-, qtsvg
-, qtwayland
-, qtx11extras
 , removeReferencesTo
 , samba
 , schroedinger
 , speex
 , srt
+, stdenv
 , systemd
 , taglib
 , unzip
 , wayland
 , wayland-protocols
 , wrapGAppsHook
-, wrapQtAppsHook
 , xcbutilkeysyms
 , zlib
 
@@ -98,7 +94,7 @@
 #   networking.firewall.allowedTCPPorts = [ 8010 ];
 
 let
-  inherit (lib) optionalString optional optionals;
+  inherit (lib) optionalString optionals;
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "${optionalString onlyLibVLC "lib"}vlc";
@@ -118,8 +114,8 @@ stdenv.mkDerivation (finalAttrs: {
     unzip
     wrapGAppsHook
   ]
-  ++ optional chromecastSupport protobuf
-  ++ optionals withQt5 [ wrapQtAppsHook ]
+  ++ optionals chromecastSupport [ protobuf ]
+  ++ optionals withQt5 [ libsForQt5.wrapQtAppsHook ]
   ++ optionals waylandSupport [
     wayland
     wayland-protocols
@@ -191,8 +187,8 @@ stdenv.mkDerivation (finalAttrs: {
     xcbutilkeysyms
     zlib
   ]
-  ++ optional (!stdenv.hostPlatform.isAarch && !onlyLibVLC) live555
-  ++ optional jackSupport libjack2
+  ++ optionals (!stdenv.hostPlatform.isAarch && !onlyLibVLC) [ live555 ]
+  ++ optionals jackSupport [ libjack2 ]
   ++ optionals chromecastSupport [ libmicrodns protobuf ]
   ++ optionals skins2Support [
     freetype
@@ -201,8 +197,12 @@ stdenv.mkDerivation (finalAttrs: {
     libXpm
   ]
   ++ optionals waylandSupport [ wayland wayland-protocols ]
-  ++ optionals withQt5 [ qtbase qtsvg qtx11extras ]
-  ++ optional (waylandSupport && withQt5) qtwayland;
+  ++ optionals withQt5 (with libsForQt5; [
+    qtbase
+    qtsvg
+    qtx11extras
+  ])
+  ++ optionals (waylandSupport && withQt5) [ libsForQt5.qtwayland ];
 
   env = {
     # vlc depends on a c11-gcc wrapper script which we don't have so we need to
@@ -218,51 +218,37 @@ stdenv.mkDerivation (finalAttrs: {
     # upstream issue: https://code.videolan.org/videolan/vlc/-/issues/25473
     (fetchpatch {
       url = "https://code.videolan.org/videolan/vlc/uploads/eb1c313d2d499b8a777314f789794f9d/0001-Add-lssl-and-lcrypto-to-liblive555_plugin_la_LIBADD.patch";
-      sha256 = "0kyi8q2zn2ww148ngbia9c7qjgdrijf4jlvxyxgrj29cb5iy1kda";
+      hash = "sha256-qs3gY1ksCZlf931TSZyMuT2JD0sqrmcRCZwL+wVG0U8=";
     })
   ];
 
   postPatch = ''
-    substituteInPlace modules/text_renderer/freetype/platform_fonts.h --replace \
-      /usr/share/fonts/truetype/freefont ${freefont_ttf}/share/fonts/truetype
-  '' + lib.optionalString (!stdenv.hostPlatform.canExecute stdenv.buildPlatform) ''
-    # Upstream luac can't cross compile, so we have to install the lua
-    # sources, not bytecode:
-    # https://www.lua.org/wshop13/Jericke.pdf#page=39
-    substituteInPlace share/Makefile.am --replace $'.luac \\\n' $'.lua \\\n'
+    substituteInPlace modules/text_renderer/freetype/platform_fonts.h \
+      --replace \
+        /usr/share/fonts/truetype/freefont \
+        ${freefont_ttf}/share/fonts/truetype
+  ''
+  # Upstream luac can't cross compile, so we have to install the lua sources
+  # instead of bytecode:
+  # https://www.lua.org/wshop13/Jericke.pdf#page=39
+  + lib.optionalString (!stdenv.hostPlatform.canExecute stdenv.buildPlatform) ''
+      substituteInPlace share/Makefile.am \
+        --replace $'.luac \\\n' $'.lua \\\n'
   '';
 
   enableParallelBuilding = true;
 
   dontWrapGApps = true; # to prevent double wrapping of Qtwrap and Gwrap
 
-  preFixup = ''
-    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
-  '';
-
-  # - Touch plugins (plugins cache keyed off mtime and file size:
-  #     https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
-  # - Remove references to the Qt development headers (used in error messages)
-  #
-  # pkgsBuildBuild is used here because buildPackages.libvlc somehow
-  # depends on a qt5.qttranslations that doesn't build, even though it
-  # should be the same as pkgsBuildBuild.qt5.qttranslations.
-  postFixup = ''
-    find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
-    ${if stdenv.buildPlatform.canExecute stdenv.hostPlatform then "$out" else pkgsBuildBuild.libvlc}/lib/vlc/vlc-cache-gen $out/vlc/plugins
-  '' + optionalString withQt5 ''
-    remove-references-to -t "${qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
-  '';
-
   # Most of the libraries are auto-detected so we don't need to set a bunch of
   # "--enable-foo" flags here
   configureFlags = [
     "--enable-srt" # Explicit enable srt to ensure the patch is applied.
     "--with-kde-solid=$out/share/apps/solid/actions"
   ]
-  ++ optional onlyLibVLC "--disable-vlc"
-  ++ optional skins2Support "--enable-skins2"
-  ++ optional waylandSupport "--enable-wayland"
+  ++ optionals onlyLibVLC [ "--disable-vlc" ]
+  ++ optionals skins2Support [ "--enable-skins2" ]
+  ++ optionals waylandSupport [ "--enable-wayland" ]
   ++ optionals chromecastSupport [
     "--enable-sout"
     "--enable-chromecast"
@@ -285,6 +271,24 @@ stdenv.mkDerivation (finalAttrs: {
     cp -R share/hrtfs $out/share/vlc
   '';
 
+  preFixup = ''
+    qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
+  '';
+
+  # - Touch plugins (plugins cache keyed off mtime and file size:
+  #     https://github.com/NixOS/nixpkgs/pull/35124#issuecomment-370552830
+  # - Remove references to the Qt development headers (used in error messages)
+  #
+  # pkgsBuildBuild is used here because buildPackages.libvlc somehow
+  # depends on a qt5.qttranslations that doesn't build, even though it
+  # should be the same as pkgsBuildBuild.qt5.qttranslations.
+  postFixup = ''
+    find $out/lib/vlc/plugins -exec touch -d @1 '{}' ';'
+    ${if stdenv.buildPlatform.canExecute stdenv.hostPlatform then "$out" else pkgsBuildBuild.libvlc}/lib/vlc/vlc-cache-gen $out/vlc/plugins
+  '' + optionalString withQt5 ''
+    remove-references-to -t "${libsForQt5.qtbase.dev}" $out/lib/vlc/plugins/gui/libqt_plugin.so
+  '';
+
   meta = {
     description = "Cross-platform media player and streaming server";
     homepage = "https://www.videolan.org/vlc/";
diff --git a/nixpkgs/pkgs/by-name/wa/warp-terminal/package.nix b/nixpkgs/pkgs/by-name/wa/warp-terminal/package.nix
index 8544439986dd..e2f0b4d275ef 100644
--- a/nixpkgs/pkgs/by-name/wa/warp-terminal/package.nix
+++ b/nixpkgs/pkgs/by-name/wa/warp-terminal/package.nix
@@ -1,15 +1,74 @@
 { lib
 , stdenvNoCC
+, stdenv
 , fetchurl
+, autoPatchelfHook
 , undmg
+, zstd
+, curl
+, fontconfig
+, libglvnd
+, libxkbcommon
+, vulkan-loader
+, xdg-utils
+, xorg
+, zlib
 }:
-stdenvNoCC.mkDerivation (finalAttrs: {
-  pname = "warp-terminal";
-  version = "0.2023.12.05.08.02.stable_00";
 
+let
+pname = "warp-terminal";
+version = "0.2024.02.20.08.01.stable_01";
+
+linux = stdenv.mkDerivation (finalAttrs:  {
+  inherit pname version meta;
+  src = fetchurl {
+    url = "https://releases.warp.dev/stable/v${finalAttrs.version}/warp-terminal-v${finalAttrs.version}-1-x86_64.pkg.tar.zst";
+    hash = "sha256-L8alnqSE4crrDozRfPaAAMkLc+5+8d9XBKd5ddsxmD0=";
+  };
+
+  sourceRoot = ".";
+
+  postPatch = ''
+    substituteInPlace usr/bin/warp-terminal \
+      --replace-fail /opt/ $out/opt/
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook zstd ];
+
+  buildInputs = [
+    curl
+    fontconfig
+    stdenv.cc.cc.lib # libstdc++.so libgcc_s.so
+    zlib
+  ];
+
+  runtimeDependencies = [
+    libglvnd # for libegl
+    libxkbcommon
+    stdenv.cc.libc
+    vulkan-loader
+    xdg-utils
+    xorg.libX11
+    xorg.libxcb
+    xorg.libXcursor
+    xorg.libXi
+  ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir $out
+    cp -r opt usr/* $out
+
+    runHook postInstall
+  '';
+});
+
+darwin = stdenvNoCC.mkDerivation (finalAttrs: {
+  inherit pname version meta;
   src = fetchurl {
     url = "https://releases.warp.dev/stable/v${finalAttrs.version}/Warp.dmg";
-    hash = "sha256-9olAmczIPRXV15NYCOYmwuEmJ7lMeaQRTTfukaYXMR0=";
+    hash = "sha256-tFtoD8URMFfJ3HRkyKStuDStFkoRIV97y9kV4pbDPro=";
   };
 
   sourceRoot = ".";
@@ -24,13 +83,18 @@ stdenvNoCC.mkDerivation (finalAttrs: {
 
     runHook postInstall
   '';
+});
 
-  meta = with lib; {
-    description = "Rust-based terminal";
-    homepage = "https://www.warp.dev";
-    license = licenses.unfree;
-    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    maintainers = with maintainers; [ emilytrau Enzime ];
-    platforms = platforms.darwin;
-  };
-})
+meta = with lib; {
+  description = "Rust-based terminal";
+  homepage = "https://www.warp.dev";
+  license = licenses.unfree;
+  sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
+  maintainers = with maintainers; [ emilytrau Enzime ];
+  platforms = platforms.darwin ++ [ "x86_64-linux" ];
+};
+
+in
+if stdenvNoCC.isDarwin
+then darwin
+else linux
diff --git a/nixpkgs/pkgs/by-name/wa/wayland-pipewire-idle-inhibit/package.nix b/nixpkgs/pkgs/by-name/wa/wayland-pipewire-idle-inhibit/package.nix
index e6f159786210..849b7c7a090e 100644
--- a/nixpkgs/pkgs/by-name/wa/wayland-pipewire-idle-inhibit/package.nix
+++ b/nixpkgs/pkgs/by-name/wa/wayland-pipewire-idle-inhibit/package.nix
@@ -1,6 +1,4 @@
-{ clang
-, lib
-, libclang
+{ lib
 , fetchFromGitHub
 , pipewire
 , pkg-config
@@ -22,8 +20,8 @@ rustPlatform.buildRustPackage rec {
   cargoSha256 = "sha256-7XuDZ57+F8Ot5oNO9/BXjFljNmoMgNgURfmPEIy2PHo=";
 
   nativeBuildInputs = [
-    clang
     pkg-config
+    rustPlatform.bindgenHook
   ];
 
   buildInputs = [
@@ -32,8 +30,6 @@ rustPlatform.buildRustPackage rec {
     wayland-protocols
   ];
 
-  LIBCLANG_PATH = "${libclang.lib}/lib";
-
   meta = with lib; {
     description = "Suspends automatic idling of Wayland compositors when media is being played through Pipewire.";
     homepage = "https://github.com/rafaelrc7/wayland-pipewire-idle-inhibit/";
diff --git a/nixpkgs/pkgs/by-name/wh/whistle/package.nix b/nixpkgs/pkgs/by-name/wh/whistle/package.nix
index 3cf9fc45dc9c..3963889583ec 100644
--- a/nixpkgs/pkgs/by-name/wh/whistle/package.nix
+++ b/nixpkgs/pkgs/by-name/wh/whistle/package.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "whistle";
-  version = "2.9.64";
+  version = "2.9.65";
 
   src = fetchFromGitHub {
     owner = "avwo";
     repo = "whistle";
     rev = "v${version}";
-    hash = "sha256-dK9oaTm4l170COZ8Gm6Suc821DPUYg8euIo6l+EQYEo=";
+    hash = "sha256-vF81Nt0gx3k7b6VO6aBpeUSnZ8Op91dYOGZRO9cdleM=";
   };
 
-  npmDepsHash = "sha256-0YnWmCI0UVQPegwHEKiCmow5LA4kjQVKctWRwHW0Ufg=";
+  npmDepsHash = "sha256-LzetbeIqfcFbLzie4GXkNOGLTdwqYMnwZ236V5R2TNc=";
 
   dontNpmBuild = true;
 
diff --git a/nixpkgs/pkgs/by-name/wi/wiremock/package.nix b/nixpkgs/pkgs/by-name/wi/wiremock/package.nix
index 73b6e121b5bc..5f5d4aa00955 100644
--- a/nixpkgs/pkgs/by-name/wi/wiremock/package.nix
+++ b/nixpkgs/pkgs/by-name/wi/wiremock/package.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "wiremock";
-  version = "3.4.1";
+  version = "3.4.2";
 
   src = fetchurl {
     url = "mirror://maven/org/wiremock/wiremock-standalone/${version}/wiremock-standalone-${version}.jar";
-    hash = "sha256-SqyPd6eHDzNFn7vzIPOW3l/KtpaiiLC6uMIKqL3GN3s=";
+    hash = "sha256-Btf7oQRmfQnHdl5DawF2xOczDrR/5Po/9NytgqTLkVQ=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix b/nixpkgs/pkgs/by-name/wi/wit-bindgen/package.nix
index 9f0fbe1f4565..4407ecbdcc53 100644
--- a/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix
+++ b/nixpkgs/pkgs/by-name/wi/wit-bindgen/package.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wit-bindgen";
-  version = "0.17.0";
+  version = "0.19.1";
 
   src = fetchFromGitHub {
     owner = "bytecodealliance";
     repo = "wit-bindgen";
-    rev = "wit-bindgen-cli-${version}";
-    hash = "sha256-eFJkr/RqQdULPquCVbjhR8843aGjeEnUCF/Ws2U5fQk=";
+    rev = "v${version}";
+    hash = "sha256-vJqJ+qDoU6W5S4mhBG6YQoVvvXqcqm7WXwypCS36z6c=";
   };
 
-  cargoHash = "sha256-934lHOXzE2cLW6LMM0AQl/GJt4wSIKZlY1C7gmjGVrc=";
+  cargoHash = "sha256-uDqXG/OyFyJbwrZzQVRDLxreKdyOEvenE8MNnLFs9CA=";
 
   # Some tests fail because they need network access to install the `wasm32-unknown-unknown` target.
   # However, GitHub Actions ensures a proper build.
diff --git a/nixpkgs/pkgs/by-name/xc/xclicker/package.nix b/nixpkgs/pkgs/by-name/xc/xclicker/package.nix
new file mode 100644
index 000000000000..3a6597dc4832
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/xc/xclicker/package.nix
@@ -0,0 +1,63 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchpatch
+, meson
+, ninja
+, pkg-config
+, wrapGAppsHook
+, gtk3
+, libXtst
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "xclicker";
+  version = "1.5.0";
+
+  src = fetchFromGitHub {
+    owner = "robiot";
+    repo = "xclicker";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-3D49iMzCCT9Z2Pf5INHYFZusG0BQI7La7lLaSVM/4mc=";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "fix-malloc-size.patch";
+      url = "https://github.com/robiot/xclicker/commit/c99f69a747e9df75fb3676be20a3ec805526d022.patch";
+      hash = "sha256-ESbMBusJVNfbGxlEn1Kby00mnXvM5H0r03bX5ofC6Fg=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3
+    libXtst
+  ];
+
+  mesonBuildType = "release";
+
+  installPhase = ''
+    runHook preInstall
+    install -Dm755 ./src/xclicker $out/bin/xclicker
+    install -Dm644 $src/assets/xclicker.desktop $out/share/applications/xclicker.desktop
+    install -Dm644 $src/assets/icon.png $out/share/pixmaps/xclicker.png
+    runHook postInstall
+  '';
+
+  meta = {
+    changelog = "https://github.com/robiot/xclicker/releases/tag/${finalAttrs.src.rev}";
+    description = "Fast gui autoclicker for x11 linux desktops";
+    homepage = "https://xclicker.xyz/";
+    license = lib.licenses.gpl3Only;
+    mainProgram = "xclicker";
+    maintainers = with lib.maintainers; [ tomasajt ];
+    platforms = lib.platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/by-name/xd/xdg-utils-cxx/package.nix b/nixpkgs/pkgs/by-name/xd/xdg-utils-cxx/package.nix
new file mode 100644
index 000000000000..d5c9e7c9aff8
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/xd/xdg-utils-cxx/package.nix
@@ -0,0 +1,30 @@
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  cmake,
+}:
+stdenv.mkDerivation rec {
+  pname = "xdg-utils-cxx";
+  version = "1.0.1";
+
+  src = fetchFromGitHub {
+    owner = "azubieta";
+    repo = "xdg-utils-cxx";
+    rev = "v${version}";
+    hash = "sha256-hEN0xqZUNfMOIrw3q+x4kEFhYoqmyn7W3f2w8AGw2wI=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  meta = with lib; {
+    description = "Implementation of the FreeDesktop specifications to be used in c++ projects";
+    homepage = "https://github.com/azubieta/xdg-utils-cxx";
+    license = licenses.mit;
+    maintainers = with maintainers; [ k900 ];
+    mainProgram = "xdg-utils-cxx";
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/xr/xr-hardware/package.nix b/nixpkgs/pkgs/by-name/xr/xr-hardware/package.nix
new file mode 100644
index 000000000000..b2359c2673df
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/xr/xr-hardware/package.nix
@@ -0,0 +1,27 @@
+{
+  lib,
+  stdenvNoCC,
+  fetchFromGitLab
+}: stdenvNoCC.mkDerivation {
+  pname = "xr-hardware";
+  version = "unstable-2023-11-08";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "monado/utilities";
+    repo = "xr-hardware";
+    rev = "9204de323210d2a5ab8635c2ee52127100de67b1";
+    hash = "sha256-ZS15WODms/WKsPu+WbfILO2BOwnxrhCY/SoF8jzOX5Q=";
+  };
+
+  installTargets = "install_package";
+  installFlagsArray = "DESTDIR=${placeholder "out"}";
+
+  meta = with lib; {
+    description = "Hardware description for XR devices";
+    homepage = "https://gitlab.freedesktop.org/monado/utilities/xr-hardware";
+    license = licenses.boost;
+    maintainers = with maintainers; [ Scrumplex ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/za/zapzap/package.nix b/nixpkgs/pkgs/by-name/za/zapzap/package.nix
index e41a099f4f32..fabde8cd0cd4 100644
--- a/nixpkgs/pkgs/by-name/za/zapzap/package.nix
+++ b/nixpkgs/pkgs/by-name/za/zapzap/package.nix
@@ -6,14 +6,14 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "zapzap";
-  version = "5.2";
+  version = "5.2.1";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "zapzap-linux";
     repo = "zapzap";
-    rev = version;
-    hash = "sha256-vG8yDW0+scImPWHyVJs2QkiSWbjPLR9Z01zkOWZi/BI=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-Jswt/SWsrrXdJtaT3FAOuOCkrwlpy+lSJa6/gquMiwY=";
   };
 
   nativeBuildInputs = with python3Packages; [
diff --git a/nixpkgs/pkgs/by-name/zb/zbus-xmlgen/package.nix b/nixpkgs/pkgs/by-name/zb/zbus-xmlgen/package.nix
index 2e0dc5715f51..5e226e3b711e 100644
--- a/nixpkgs/pkgs/by-name/zb/zbus-xmlgen/package.nix
+++ b/nixpkgs/pkgs/by-name/zb/zbus-xmlgen/package.nix
@@ -2,16 +2,17 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "zbus_xmlgen";
-  version = "3.1.1";
+  version = "4.0.1";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-vaefyfasOLFFYWPjSJFgjIFkvnRiJVe/GLYUQxUYlt0=";
+    hash = "sha256-GkNxlfwLIBfAAcwQnwJHjcviB8tiNVNDZNDib1FQcvs=";
   };
 
-  cargoHash = "sha256-WXJ49X4B2aNy1zPbTllIzRhZJvF+RwfQ0Hhm/D+LQfk=";
+  cargoHash = "sha256-dKoxLEdLZ8B8kTJj3tHcFJzY/Rv3NvwmZBAmHyNhOg8=";
 
   nativeBuildInputs = [ makeBinaryWrapper ];
+  nativeCheckInputs = [ rustfmt ];
 
   postInstall = ''
     wrapProgram $out/bin/zbus-xmlgen \
diff --git a/nixpkgs/pkgs/by-name/zc/zcfan/package.nix b/nixpkgs/pkgs/by-name/zc/zcfan/package.nix
index 4534a71fa3e4..c6bb42c286fb 100644
--- a/nixpkgs/pkgs/by-name/zc/zcfan/package.nix
+++ b/nixpkgs/pkgs/by-name/zc/zcfan/package.nix
@@ -6,13 +6,13 @@
 # Testing this requires a Thinkpad or the presence of /proc/acpi/ibm/fan
 stdenv.mkDerivation (finalAttrs: {
   pname = "zcfan";
-  version = "1.2.1";
+  version = "1.3.0";
 
   src = fetchFromGitHub {
     owner = "cdown";
     repo = "zcfan";
     rev = finalAttrs.version;
-    hash = "sha256-XngchR06HP2iExKJVe+XKBDgsv98AEYWOkl1a/Hktgs=";
+    hash = "sha256-zpYQEHXt8LBNX+luM4YxP0dKH+hb2c8Z0BEeGP09oZo=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix b/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix
index 36ab88861ae4..34450f55cbdf 100644
--- a/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix
+++ b/nixpkgs/pkgs/data/fonts/lxgw-neoxihei/default.nix
@@ -5,11 +5,11 @@
 
 stdenvNoCC.mkDerivation rec {
   pname = "lxgw-neoxihei";
-  version = "1.110";
+  version = "1.120";
 
   src = fetchurl {
     url = "https://github.com/lxgw/LxgwNeoXiHei/releases/download/v${version}/LXGWNeoXiHei.ttf";
-    hash = "sha256-6KeKz8lJBCc/sc5pCkS2mSwMAQ8XpwDIMCjSbVXuyH4=";
+    hash = "sha256-rQ+gbmUYr+iWm5WCUSqb+8+aMD5JZUsbPXZ0Nio2cl8=";
   };
 
   dontUnpack = true;
diff --git a/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix b/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix
index 57ab1ad0824f..a172f2da4b4b 100644
--- a/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix
+++ b/nixpkgs/pkgs/data/fonts/sketchybar-app-font/default.nix
@@ -5,11 +5,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "sketchybar-app-font";
-  version = "2.0.4";
+  version = "2.0.5";
 
   src = fetchurl {
     url = "https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v${finalAttrs.version}/sketchybar-app-font.ttf";
-    hash = "sha256-G3ceScZQT1rrjw+V9ALRo78lSVYsLymQLFfzSo/gA8U=";
+    hash = "sha256-nfJVICpaw1Q1jChc3feY39vjtS/fLJ3FKVGqOKhyzwA=";
   };
 
   dontUnpack = true;
@@ -28,7 +28,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
       A ligature-based symbol font and a mapping function for sketchybar, inspired by simple-bar's usage of community-contributed minimalistic app icons.
     '';
     homepage = "https://github.com/kvndrsslr/sketchybar-app-font";
-    license = lib.licenses.unlicense;
+    license = lib.licenses.cc0;
     maintainers = with lib.maintainers; [ khaneliman ];
   };
 })
diff --git a/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix b/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix
index 6933a0ecb928..cc3253e3b1fb 100644
--- a/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix
+++ b/nixpkgs/pkgs/data/icons/fluent-icon-theme/default.nix
@@ -16,13 +16,13 @@ lib.checkListOfEnum "${pname}: available color variants" [ "standard" "green" "g
 
 stdenvNoCC.mkDerivation rec {
   inherit pname;
-  version = "2023-06-07";
+  version = "2024-02-25";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    hash = "sha256-drEAjIY/lacqncSeVeNmeRX6v4PnLvGo66Na1fuFXRg=";
+    hash = "sha256-Cadp2+4kBZ74kdD5x0O85FszxvN6/sg6yccxughyX1Q";
   };
 
   nativeBuildInputs = [ gtk3 jdupes ];
diff --git a/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix b/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix
index 7a5c8fc0c3f4..1533cd089228 100644
--- a/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix
+++ b/nixpkgs/pkgs/data/misc/v2ray-domain-list-community/default.nix
@@ -3,12 +3,12 @@
 let
   generator = pkgsBuildBuild.buildGoModule rec {
     pname = "v2ray-domain-list-community";
-    version = "20240217140518";
+    version = "20240221053250";
     src = fetchFromGitHub {
       owner = "v2fly";
       repo = "domain-list-community";
       rev = version;
-      hash = "sha256-7Voepx8+tFWpugtUKoRJ55nSX3cWtXgPhYiNDhE3OGs=";
+      hash = "sha256-oPffStUx2CD4gfSNIYqCzLLj+IAhm3aGQknRsrauD+k=";
     };
     vendorHash = "sha256-azvMUi8eLNoNofRa2X4SKTTiMd6aOyO6H/rOiKjkpIY=";
     meta = with lib; {
diff --git a/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix b/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix
index f195597f72c4..d5fbc03b6301 100644
--- a/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix
+++ b/nixpkgs/pkgs/data/themes/alacritty-theme/default.nix
@@ -6,13 +6,13 @@
 
 stdenvNoCC.mkDerivation (self: {
   name = "alacritty-theme";
-  version = "unstable-2024-02-11";
+  version = "unstable-2024-02-28";
 
   src = fetchFromGitHub {
     owner = "alacritty";
     repo = "alacritty-theme";
-    rev = "0587019bac748dfb5cc1b768f89c88ad9291b66b";
-    hash = "sha256-WPatWpBCZYFCohUh3U9QzSTFJgtou8+861013jz49Lw=";
+    rev = "4aefb7c079721474078b28bbf9f582b592749ca6";
+    hash = "sha256-+35S6eQkxLBuS/fDKD5bglQDIuz2xeEc5KSaK6k7IjI=";
   };
 
   dontConfigure = true;
diff --git a/nixpkgs/pkgs/data/themes/whitesur/default.nix b/nixpkgs/pkgs/data/themes/whitesur/default.nix
index 11d7448047a4..8c1651fff231 100644
--- a/nixpkgs/pkgs/data/themes/whitesur/default.nix
+++ b/nixpkgs/pkgs/data/themes/whitesur/default.nix
@@ -40,13 +40,13 @@ lib.checkListOfEnum "${pname}: panel size" [ "default" "smaller" "bigger" ] (sin
 
 stdenv.mkDerivation rec {
   pname = "whitesur-gtk-theme";
-  version = "2023-10-13";
+  version = "2024-02-26";
 
   src = fetchFromGitHub {
     owner = "vinceliuice";
     repo = pname;
     rev = version;
-    sha256 = "sha256-H8QdKCX6C36J7AfFd0VV9Rnm8LGXSfkxj5Yp2p+PduE=";
+    sha256 = "sha256-9HYsORTd5n0jUYmwiObPZ90mOGhR2j+tzs6Y1NNnrn4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/2000-Support-wrapping-for-Nixpkgs.patch b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/2000-Support-wrapping-for-Nixpkgs.patch
new file mode 100644
index 000000000000..8e39ea5fdfc0
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/2000-Support-wrapping-for-Nixpkgs.patch
@@ -0,0 +1,160 @@
+From 8e21cf46551091c884014985d3e0dd9704d6dc04 Mon Sep 17 00:00:00 2001
+From: OPNA2608 <opna2608@protonmail.com>
+Date: Wed, 14 Feb 2024 16:00:24 +0100
+Subject: [PATCH] Support wrapping for Nixpkgs
+
+---
+ src/CMakeLists.txt   | 24 +++++++++++++++++++-----
+ src/main.cpp         |  8 +++++---
+ src/plugin.cpp       | 19 +++++++++++++++++--
+ tests/CMakeLists.txt | 18 ++++++++++++++----
+ 4 files changed, 55 insertions(+), 14 deletions(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index cd3131d0..fcd78bdf 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,13 +1,27 @@
+ include_directories(${GLIB_INCLUDE_DIRS})
+ 
+-add_definitions(-DI18N_DIRECTORY="${CMAKE_INSTALL_FULL_LOCALEDIR}")
+ add_definitions(-DI18N_DOMAIN="lomiri-system-settings")
+-add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")
++
++add_definitions(-DNIX_FALLBACK_PREFIX="${CMAKE_INSTALL_PREFIX}")
++
++set(I18N_DIRECTORY "${CMAKE_INSTALL_FULL_LOCALEDIR}")
++
++list(APPEND NIX_LOCATION_VARIABLES
++    I18N_DIRECTORY
++    PLUGIN_PRIVATE_MODULE_DIR
++    PLUGIN_MANIFEST_DIR
++    PLUGIN_QML_DIR
++    PLUGIN_MODULE_DIR
++)
++
++foreach(locvar IN LISTS NIX_LOCATION_VARIABLES)
++    string(REPLACE "${CMAKE_INSTALL_PREFIX}" "" NIX_${locvar}_RELATIVE "${${locvar}}")
++    add_definitions(-D${locvar}=do_not_use_me)
++    add_definitions(-DNIX_${locvar}_RELATIVE="${NIX_${locvar}_RELATIVE}")
++endforeach()
++
+ add_definitions(-DMANIFEST_DIR="${MANIFEST_DIR}")
+-add_definitions(-DPLUGIN_MANIFEST_DIR="${PLUGIN_MANIFEST_DIR}")
+ add_definitions(-DQML_DIR="${QML_DIR}")
+-add_definitions(-DPLUGIN_QML_DIR="${PLUGIN_QML_DIR}")
+-add_definitions(-DPLUGIN_MODULE_DIR="${PLUGIN_MODULE_DIR}")
+ 
+ add_subdirectory(SystemSettings)
+ 
+diff --git a/src/main.cpp b/src/main.cpp
+index 64441da3..cfcabe42 100644
+--- a/src/main.cpp
++++ b/src/main.cpp
+@@ -42,6 +42,8 @@ int main(int argc, char **argv)
+     QByteArray mountPoint = qEnvironmentVariableIsSet("SNAP") ? qgetenv("SNAP") : "";
+     bool isSnap = !mountPoint.isEmpty();
+ 
++    QByteArray dataPrefix = qEnvironmentVariableIsSet("NIX_LSS_PREFIX") ? qgetenv("NIX_LSS_PREFIX") : NIX_FALLBACK_PREFIX;
++
+     // Ensure printing environment is correct.
+     qputenv("QT_PRINTER_MODULE", "cupsprintersupport");
+ 
+@@ -78,12 +80,12 @@ int main(int argc, char **argv)
+     qmlRegisterType<LomiriSystemSettings::PluginManager>("SystemSettings", 1, 0, "PluginManager");
+     view.engine()->rootContext()->setContextProperty("Utilities", &utils);
+     view.setResizeMode(QQuickView::SizeRootObjectToView);
+-    view.engine()->addImportPath(mountPoint + PLUGIN_PRIVATE_MODULE_DIR);
+-    view.engine()->addImportPath(mountPoint + PLUGIN_QML_DIR);
++    view.engine()->addImportPath(mountPoint + dataPrefix + "/" + NIX_PLUGIN_PRIVATE_MODULE_DIR_RELATIVE);
++    view.engine()->addImportPath(mountPoint + dataPrefix + "/" + NIX_PLUGIN_QML_DIR_RELATIVE);
+     view.rootContext()->setContextProperty("defaultPlugin", defaultPlugin);
+     view.rootContext()->setContextProperty("mountPoint", mountPoint);
+     view.rootContext()->setContextProperty("isSnap", isSnap);
+-    view.rootContext()->setContextProperty("i18nDirectory", mountPoint + I18N_DIRECTORY);
++    view.rootContext()->setContextProperty("i18nDirectory", mountPoint + dataPrefix + "/" + NIX_I18N_DIRECTORY_RELATIVE);
+     view.rootContext()->setContextProperty("pluginOptions", pluginOptions);
+     view.rootContext()->setContextProperty("view", &view);
+     view.setSource(QUrl("qrc:/qml/MainWindow.qml"));
+diff --git a/src/plugin.cpp b/src/plugin.cpp
+index 133821af..6a1a152c 100644
+--- a/src/plugin.cpp
++++ b/src/plugin.cpp
+@@ -36,9 +36,16 @@
+ #include <LomiriSystemSettings/ItemBase>
+ #include <LomiriSystemSettings/PluginInterface>
+ 
++#include <libintl.h>
++
+ using namespace LomiriSystemSettings;
+ 
+-static const QLatin1String pluginModuleDir{PLUGIN_MODULE_DIR};
++const QLatin1String getWrapperPrefix()
++{
++    const QLatin1String pluginWrapperPrefix {qEnvironmentVariableIsSet("NIX_LSS_PREFIX") ? qgetenv("NIX_LSS_PREFIX") : NIX_FALLBACK_PREFIX};
++    return pluginWrapperPrefix;
++}
++static const QLatin1String pluginModuleDirRelative{NIX_PLUGIN_MODULE_DIR_RELATIVE};
+ static const QLatin1String pluginQmlDir{QML_DIR};
+ 
+ namespace LomiriSystemSettings {
+@@ -89,6 +96,11 @@ PluginPrivate::PluginPrivate(Plugin *q, const QFileInfo &manifest):
+ 
+     m_data = json.toVariant().toMap();
+     m_dataPath = manifest.absolutePath();
++
++    QString textDomain = m_data.value(keyTranslations).toString();
++    QString textDomainDir = QString("%1/%2")
++        .arg(getWrapperPrefix()).arg(NIX_I18N_DIRECTORY_RELATIVE);
++    bindtextdomain(qPrintable(textDomain), qPrintable(textDomainDir));
+ }
+ 
+ bool PluginPrivate::ensureLoaded() const
+@@ -110,8 +122,11 @@ bool PluginPrivate::ensureLoaded() const
+         ctx->contextProperty("mountPoint").value<QByteArray>() :
+         "";
+ 
++    QString wrapperModuleDir = QString("%1/%2")
++        .arg(getWrapperPrefix()).arg(pluginModuleDirRelative);
++
+     QString name = QString("%1%2/lib%3.so")
+-        .arg(mountPoint).arg(pluginModuleDir).arg(plugin);
++        .arg(mountPoint).arg(wrapperModuleDir).arg(plugin);
+ 
+     m_loader.setFileName(name);
+     if (Q_UNLIKELY(!m_loader.load())) {
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index c10b2e2d..a998b641 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -9,13 +9,23 @@ include_directories(
+ set(XVFB_CMD xvfb-run -a -s "-screen 0 640x480x24")
+ 
+ add_definitions(-DI18N_DOMAIN="lomiri-system-settings")
+-add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR="${PLUGIN_PRIVATE_MODULE_DIR}")
+-add_definitions(-DPLUGIN_MODULE_DIR="${CMAKE_CURRENT_BINARY_DIR}")
++
++add_definitions(-DNIX_FALLBACK_PREFIX="${CMAKE_CURRENT_BINARY_DIR}")
++
++add_definitions(-DI18N_DIRECTORY=do_not_use_me)
++add_definitions(-DNIX_I18N_DIRECTORY_RELATIVE="")
++add_definitions(-DPLUGIN_PRIVATE_MODULE_DIR=do_not_use_me)
++add_definitions(-DNIX_PLUGIN_PRIVATE_MODULE_DIR_RELATIVE="")
++add_definitions(-DPLUGIN_MODULE_DIR=do_not_use_me)
++add_definitions(-DNIX_PLUGIN_MODULE_DIR_RELATIVE="")
++add_definitions(-DPLUGIN_MANIFEST_DIR=do_not_use_me)
++add_definitions(-DNIX_PLUGIN_MANIFEST_DIR_RELATIVE="../../tests/data")
++add_definitions(-DPLUGIN_QML_DIR=do_not_use_me)
++add_definitions(-DNIX_PLUGIN_QML_DIR_RELATIVE="")
++
+ add_definitions(-DMANIFEST_DIR="data")
+-add_definitions(-DPLUGIN_MANIFEST_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data")
+ add_definitions(-DQML_TEST_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
+ add_definitions(-DQML_DIR="${CMAKE_CURRENT_BINARY_DIR}")
+-add_definitions(-DPLUGIN_QML_DIR="${CMAKE_CURRENT_BINARY_DIR}")
+ add_definitions(-DSYSTEM_IMAGE_DBUS_TEMPLATE="${CMAKE_SOURCE_DIR}/tests/autopilot/lomiri_system_settings/tests/systemimage.py")
+ 
+ add_library(test-plugin SHARED test-plugin.cpp test-plugin.h)
+-- 
+2.42.0
+
diff --git a/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/default.nix b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/default.nix
new file mode 100644
index 000000000000..82ffce3fd247
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/default.nix
@@ -0,0 +1,253 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, fetchpatch
+, gitUpdater
+, testers
+, accountsservice
+, ayatana-indicator-datetime
+, cmake
+, cmake-extras
+, content-hub
+, dbus
+, deviceinfo
+, geonames
+, gettext
+, glib
+, gnome-desktop
+, gsettings-qt
+, gtk3
+, icu
+, intltool
+, json-glib
+, libqofono
+, libqtdbustest
+, libqtdbusmock
+, lomiri-indicator-network
+, lomiri-schemas
+, lomiri-settings-components
+, lomiri-ui-toolkit
+, maliit-keyboard
+, pkg-config
+, python3
+, qmenumodel
+, qtbase
+, qtdeclarative
+, qtmultimedia
+, ubports-click
+, upower
+, validatePkgConfig
+, wrapGAppsHook
+, wrapQtAppsHook
+, xvfb-run
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "lomiri-system-settings-unwrapped";
+  version = "1.0.2";
+
+  src = fetchFromGitLab {
+    owner = "ubports";
+    repo = "development/core/lomiri-system-settings";
+    rev = finalAttrs.version;
+    hash = "sha256-gi6ZujIs0AEDLsqcTNlRNSS8SyqEU6q0+xaDf55XwuM=";
+  };
+
+  outputs = [
+    "out"
+    "dev"
+  ];
+
+  patches = [
+    # Remove when https://gitlab.com/ubports/development/core/lomiri-system-settings/-/merge_requests/433 merged & in release
+    (fetchpatch {
+      name = "0001-lomiri-system-settings-plugins-language-Fix-linking-against-accountsservice.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/75763ae2f9669f5f7f29aec3566606e6f6cb7478.patch";
+      hash = "sha256-2CE0yizkaz93kK82DhaaFjKmGnMoaikrwFj4k7RN534=";
+    })
+
+    # Remove when https://gitlab.com/ubports/development/core/lomiri-system-settings/-/merge_requests/434 merged & in release
+    (fetchpatch {
+      name = "0002-lomiri-system-settings-GNUInstallDirs-and-fix-absolute-path-handling.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/93ee84423f3677a608ef73addcd3ddcbe7dc1d32.patch";
+      hash = "sha256-lSKAhtE3oSSv7USvDbbcfBZWAtWMmuKneWawKQABIiM=";
+    })
+
+    # Remove when version > 1.0.2
+    (fetchpatch {
+      name = "0003-lomiri-system-settings-Use-GSettings-for-DT2W-value.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/29e2533efcac23e41b083b11c540c9221b71de7e.patch";
+      hash = "sha256-d52d/b1ZdafaqhOljCg5E3I12XWtFAfG4rmn8CYngB4=";
+    })
+  ] ++ lib.optionals (lib.strings.versionOlder python3.pkgs.python-dbusmock.version "0.30.1") [
+    # Makes tests work with newer dbusmock, but breaks with much-newer dbusmock
+    # See for details:
+    # - https://gitlab.com/ubports/development/core/lomiri-system-settings/-/merge_requests/354
+    # - https://gitlab.com/ubports/development/core/lomiri-system-settings/-/merge_requests/426
+    # Remove/adjust based on merges & next LSS release, and packaged version of dbusmock
+    (fetchpatch {
+      name = "0101-lomiri-system-settings-Pass-missing-parameters-to-dbusmock.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/b9aacd88e3789dbb7578f32b31ad5b239db227a2.patch";
+      hash = "sha256-jf+jMc+6QxONavlX5C9UZyX23jb6fZnYV8mWFyQGGbU=";
+    })
+    (fetchpatch {
+      name = "0102-lomiri-system-settings-Fix-BT-plugin-testIsPaired.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/e39b9728e18635413f07f9c9f6ddc73208260b2a.patch";
+      hash = "sha256-YUtdlQ2XcanXzsxD40SbML7fSxG75yMKz/XnaQN9YP8=";
+    })
+    (fetchpatch {
+      name = "0103-lomiri-system-settings-Fix-BT-plugin-testGet-IconName-Type.patch";
+      url = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/commit/9ad5d9324945f06f764d3a963dbfc7bccefe574b.patch";
+      # Merge conflict, relevant change handled further down
+      excludes = [ "CMakeLists.txt" ];
+      hash = "sha256-QCgkVos9Q9/8jd25rqzdEKdnBw0Re47X7B9nLH8QOQU=";
+    })
+  ] ++ [
+
+    ./2000-Support-wrapping-for-Nixpkgs.patch
+
+    # Make it work with regular accountsservice
+    # https://gitlab.com/ubports/development/core/lomiri-system-settings/-/issues/341
+    (fetchpatch {
+      name = "2001-lomiri-system-settings-disable-current-language-switching.patch";
+      url = "https://sources.debian.org/data/main/l/lomiri-system-settings/1.0.1-2/debian/patches/2001_disable-current-language-switching.patch";
+      hash = "sha256-ZOFYwxS8s6+qMFw8xDCBv3nLBOBm86m9d/VhbpOjamY=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace CMakeLists.txt \
+      --replace-fail "\''${CMAKE_INSTALL_LIBDIR}/qt5/qml" "\''${CMAKE_INSTALL_PREFIX}/${qtbase.qtQmlPrefix}" \
+
+    # Port from lomiri-keyboard to maliit-keyboard
+    substituteInPlace plugins/language/CMakeLists.txt \
+      --replace-fail 'LOMIRI_KEYBOARD_PLUGIN_PATH=\"''${CMAKE_INSTALL_FULL_LIBDIR}/lomiri-keyboard/plugins\"' 'LOMIRI_KEYBOARD_PLUGIN_PATH=\"${lib.getLib maliit-keyboard}/lib/maliit/keyboard2/languages\"'
+    substituteInPlace plugins/language/{PageComponent,SpellChecking,ThemeValues}.qml plugins/language/onscreenkeyboard-plugin.cpp plugins/sound/PageComponent.qml \
+      --replace-fail 'com.lomiri.keyboard.maliit' 'org.maliit.keyboard.maliit'
+
+    # Decide which entries should be visible based on the current system
+    substituteInPlace plugins/*/*.settings \
+      --replace-warn '/etc' '/run/current-system/sw/etc'
+
+    # Don't use absolute paths in desktop file
+    substituteInPlace lomiri-system-settings.desktop.in.in \
+      --replace-fail 'Icon=@SETTINGS_SHARE_DIR@/system-settings.svg' 'Icon=lomiri-system-settings' \
+      --replace-fail 'X-Lomiri-Splash-Image=@SETTINGS_SHARE_DIR@/system-settings-app-splash.svg' 'X-Lomiri-Splash-Image=lomiri-app-launch/splash/lomiri-system-settings.svg' \
+      --replace-fail 'X-Screenshot=@SETTINGS_SHARE_DIR@/screenshot.png' 'X-Screenshot=lomiri-app-launch/screenshot/lomiri-system-settings.png'
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    cmake
+    gettext
+    glib # glib-compile-schemas
+    intltool
+    pkg-config
+    validatePkgConfig
+  ];
+
+  buildInputs = [
+    accountsservice
+    cmake-extras
+    deviceinfo
+    geonames
+    gnome-desktop
+    gsettings-qt
+    gtk3
+    icu
+    json-glib
+    qtbase
+    ubports-click
+    upower
+  ];
+
+  # QML components and schemas the wrapper needs
+  propagatedBuildInputs = [
+    ayatana-indicator-datetime
+    content-hub
+    libqofono
+    lomiri-indicator-network
+    lomiri-schemas
+    lomiri-settings-components
+    lomiri-ui-toolkit
+    maliit-keyboard
+    qmenumodel
+    qtdeclarative
+    qtmultimedia
+  ];
+
+  nativeCheckInputs = [
+    dbus
+    (python3.withPackages (ps: with ps; [
+      python-dbusmock
+    ]))
+    xvfb-run
+  ];
+
+  checkInputs = [
+    libqtdbustest
+    libqtdbusmock
+  ];
+
+  # Not wrapping in this derivation
+  dontWrapQtApps = true;
+
+  cmakeFlags = [
+    (lib.cmakeBool "ENABLE_LIBDEVICEINFO" true)
+    (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
+    (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" (lib.concatStringsSep ";" [
+      # Exclude tests
+      "-E" (lib.strings.escapeShellArg "(${lib.concatStringsSep "|" [
+        # Hits OpenGL context issue inside lomiri-ui-toolkit, see derivation of that on details
+        "^testmouse"
+        "^tst_notifications"
+      ]})")
+    ]))
+  ];
+
+  # CMake option had to be excluded from earlier patchset
+  env.NIX_CFLAGS_COMPILE = lib.optionalString (lib.strings.versionOlder python3.pkgs.python-dbusmock.version "0.30.1") "-DMODERN_PYTHON_DBUSMOCK";
+
+  # The linking for this normally ignores missing symbols, which is inconvenient for figuring out why subpages may be
+  # failing to load their library modules. Force it to report them at linktime instead of runtime.
+  env.NIX_LDFLAGS = "--unresolved-symbols=report-all";
+
+  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+  # Parallelism breaks D-Bus tests
+  enableParallelChecking = false;
+
+  preCheck = ''
+    export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
+    export QML2_IMPORT_PATH=${lib.makeSearchPathOutput "bin" qtbase.qtQmlPrefix ([ qtdeclarative lomiri-ui-toolkit lomiri-settings-components ] ++ lomiri-ui-toolkit.propagatedBuildInputs)}
+  '';
+
+  postInstall = ''
+    glib-compile-schemas $out/share/glib-2.0/schemas
+
+    mkdir -p $out/share/{icons/hicolor/scalable/apps,lomiri-app-launch/{splash,screenshot}}
+
+    ln -s $out/share/lomiri-system-settings/system-settings.svg $out/share/icons/hicolor/scalable/apps/lomiri-system-settings.svg
+    ln -s $out/share/lomiri-system-settings/system-settings-app-splash.svg $out/share/lomiri-app-launch/splash/lomiri-system-settings.svg
+    ln -s $out/share/lomiri-system-settings/screenshot.png $out/share/lomiri-app-launch/screenshot/lomiri-system-settings.png
+  '';
+
+  passthru = {
+    tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
+    updateScript = gitUpdater { };
+  };
+
+  meta = with lib; {
+    description = "System Settings application for Lomiri";
+    homepage = "https://gitlab.com/ubports/development/core/lomiri-system-settings";
+    changelog = "https://gitlab.com/ubports/development/core/lomiri-system-settings/-/blob/${finalAttrs.version}/ChangeLog";
+    license = licenses.gpl3Only;
+    mainProgram = "lomiri-system-settings";
+    maintainers = teams.lomiri.members;
+    platforms = platforms.linux;
+    pkgConfigModules = [
+      "LomiriSystemSettings"
+    ];
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix
new file mode 100644
index 000000000000..29a10f12a829
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix
@@ -0,0 +1,89 @@
+{ stdenv
+, lib
+, fetchFromGitLab
+, biometryd
+, cmake
+, libqtdbusmock
+, libqtdbustest
+, lomiri-system-settings-unwrapped
+, pkg-config
+, polkit
+, python3
+, qtbase
+, qtdeclarative
+, trust-store
+, xvfb-run
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "lomiri-system-settings-security-privacy";
+  version = "1.0.2";
+
+  src = fetchFromGitLab {
+    owner = "ubports";
+    repo = "development/core/lomiri-system-settings-security-privacy";
+    rev = finalAttrs.version;
+    hash = "sha256-d7OgxV362gJ3t5N+DEFgwyK+m6Ij6juRPuxfmbCg68Y=";
+  };
+
+  postPatch = ''
+    # CMake pkg_get_variable cannot replace prefix variable yet
+    for pcvar in plugin_manifest_dir plugin_private_module_dir plugin_qml_dir; do
+      pcvarname=$(echo $pcvar | tr '[:lower:]' '[:upper:]')
+      substituteInPlace CMakeLists.txt \
+        --replace-fail "pkg_get_variable($pcvarname LomiriSystemSettings $pcvar)" "set($pcvarname $(pkg-config LomiriSystemSettings --define-variable=prefix=$out --define-variable=libdir=$out/lib --variable=$pcvar))"
+    done
+  '';
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    cmake
+    pkg-config
+    python3
+  ];
+
+  buildInputs = [
+    lomiri-system-settings-unwrapped
+    polkit
+    qtbase
+    qtdeclarative
+    trust-store
+  ];
+
+  # QML components and schemas the wrapper needs
+  propagatedBuildInputs = [
+    biometryd
+  ];
+
+  nativeCheckInputs = [
+    xvfb-run
+  ];
+
+  checkInputs = [
+    libqtdbusmock
+    libqtdbustest
+  ];
+
+  # Plugin library & modules for LSS
+  dontWrapQtApps = true;
+
+  cmakeFlags = [
+    (lib.cmakeBool "ENABLE_TESTS" finalAttrs.finalPackage.doCheck)
+  ];
+
+  doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+
+  preCheck = ''
+    export QT_PLUGIN_PATH=${lib.getBin qtbase}/${qtbase.qtPluginPrefix}
+  '';
+
+  meta = with lib; {
+    description = "Security and privacy settings plugin for Lomiri system settings";
+    homepage = "https://gitlab.com/ubports/development/core/lomiri-system-settings-security-privacy";
+    changelog = "https://gitlab.com/ubports/development/core/lomiri-system-settings-security-privacy/-/blob/${finalAttrs.version}/ChangeLog";
+    license = licenses.gpl3Only;
+    maintainers = teams.lomiri.members;
+    platforms = platforms.linux;
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/wrapper.nix b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/wrapper.nix
new file mode 100644
index 000000000000..74767f41d9ec
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/lomiri/applications/lomiri-system-settings/wrapper.nix
@@ -0,0 +1,70 @@
+{ stdenvNoCC
+, lib
+, nixosTests
+, glib
+, lndir
+, lomiri-system-settings-unwrapped
+, lomiri-system-settings-security-privacy
+, wrapGAppsHook
+, wrapQtAppsHook
+, plugins ? [ lomiri-system-settings-security-privacy ]
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs: {
+  pname = "lomiri-system-settings";
+  inherit (lomiri-system-settings-unwrapped) version;
+
+  dontUnpack = true;
+  dontConfigure = true;
+  dontBuild = true;
+
+  strictDeps = true;
+
+  nativeBuildInputs = [
+    lndir
+    wrapGAppsHook
+    wrapQtAppsHook
+  ];
+
+  buildInputs = [
+    glib # schema hook
+    lomiri-system-settings-unwrapped
+  ] ++ plugins;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin
+    ln -s ${lib.getExe lomiri-system-settings-unwrapped} $out/bin/${finalAttrs.meta.mainProgram}
+
+    for inheritedPath in share/lomiri-app-launch share/lomiri-url-dispatcher share/applications share/icons; do
+      mkdir -p $out/$inheritedPath
+      lndir ${lomiri-system-settings-unwrapped}/$inheritedPath $out/$inheritedPath
+    done
+
+    for mergedPath in lib/lomiri-system-settings share/lomiri-system-settings share/locale; do
+      mkdir -p $out/$mergedPath
+      for lssPart in ${lomiri-system-settings-unwrapped} ${lib.strings.concatStringsSep " " plugins}; do
+        lndir $lssPart/$mergedPath $out/$mergedPath
+      done
+    done
+
+    runHook postInstall
+  '';
+
+  dontWrapGApps = true;
+
+  preFixup = ''
+    qtWrapperArgs+=(
+      "''${gappsWrapperArgs[@]}"
+      --set NIX_LSS_PREFIX "$out"
+    )
+  '';
+
+  passthru.tests.standalone = nixosTests.lomiri-system-settings;
+
+  meta = lomiri-system-settings-unwrapped.meta // {
+    description = "System Settings application for Lomiri (wrapped)";
+    priority = (lomiri-system-settings-unwrapped.meta.priority or 0) - 1;
+  };
+})
diff --git a/nixpkgs/pkgs/desktops/lomiri/data/suru-icon-theme/default.nix b/nixpkgs/pkgs/desktops/lomiri/data/suru-icon-theme/default.nix
index 796dc05d819a..32b2cef1f021 100644
--- a/nixpkgs/pkgs/desktops/lomiri/data/suru-icon-theme/default.nix
+++ b/nixpkgs/pkgs/desktops/lomiri/data/suru-icon-theme/default.nix
@@ -9,13 +9,13 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "suru-icon-theme";
-  version = "20.05.1";
+  version = "2024.02.1";
 
   src = fetchFromGitLab {
     owner = "ubports";
     repo = "development/core/suru-icon-theme";
     rev = finalAttrs.version;
-    hash = "sha256-jJ6J+SjSABZCgnCF9cIFBpeSXX2LMnV+nPLPpoXQv30=";
+    hash = "sha256-7T9FILhZrs5bbdBEV/FszCOwUd/C1Rl9tbDt77SIzRk=";
   };
 
   strictDeps = true;
@@ -50,6 +50,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
   meta = with lib; {
     description = "Suru Icon Theme for Lomiri Operating Environment";
     homepage = "https://gitlab.com/ubports/development/core/suru-icon-theme";
+    changelog = "https://gitlab.com/ubports/development/core/suru-icon-theme/-/blob/${finalAttrs.version}/ChangeLog";
     license = licenses.cc-by-sa-30;
     maintainers = teams.lomiri.members;
     platforms = platforms.all;
diff --git a/nixpkgs/pkgs/desktops/lomiri/default.nix b/nixpkgs/pkgs/desktops/lomiri/default.nix
index 1936e436f35f..4ac9a72eb7fb 100644
--- a/nixpkgs/pkgs/desktops/lomiri/default.nix
+++ b/nixpkgs/pkgs/desktops/lomiri/default.nix
@@ -8,6 +8,9 @@ let
     inherit (self) callPackage;
   in {
     #### Core Apps
+    lomiri-system-settings-unwrapped = callPackage ./applications/lomiri-system-settings { };
+    lomiri-system-settings-security-privacy = callPackage ./applications/lomiri-system-settings/plugins/lomiri-system-settings-security-privacy.nix { };
+    lomiri-system-settings = callPackage ./applications/lomiri-system-settings/wrapper.nix { };
     lomiri-terminal-app = callPackage ./applications/lomiri-terminal-app { };
     morph-browser = callPackage ./applications/morph-browser { };
 
diff --git a/nixpkgs/pkgs/development/compilers/factor-lang/factor99.nix b/nixpkgs/pkgs/development/compilers/factor-lang/factor99.nix
index 85ff98a28ba1..59595210dd1a 100644
--- a/nixpkgs/pkgs/development/compilers/factor-lang/factor99.nix
+++ b/nixpkgs/pkgs/development/compilers/factor-lang/factor99.nix
@@ -57,7 +57,7 @@ let
     # Defined in gdk-pixbuf setup hook
     findGdkPixbufLoaders "${librsvg}"
 
-    ${if to then "makeWrapper ${from} ${to}" else "wrapProgram ${from}"} \
+    ${if (builtins.isString to) then "makeWrapper ${from} ${to}" else "wrapProgram ${from}"} \
       --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
       --argv0 factor \
       --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs} \
@@ -72,7 +72,7 @@ let
         passthru.runtimeLibs = runtimeLibs ++ interpreter.runtimeLibs;
       }
       (wrapFactorScript {
-        from = "${interpreter}/lib/factor/.factor.wrapped";
+        from = "${interpreter}/lib/factor/.factor-wrapped";
         to = "$out/bin/factor";
         runtimeLibs = (runtimeLibs ++ interpreter.runtimeLibs);
       });
diff --git a/nixpkgs/pkgs/development/compilers/intel-graphics-compiler/default.nix b/nixpkgs/pkgs/development/compilers/intel-graphics-compiler/default.nix
index 54a8e82e27ee..599fe53a74a6 100644
--- a/nixpkgs/pkgs/development/compilers/intel-graphics-compiler/default.nix
+++ b/nixpkgs/pkgs/development/compilers/intel-graphics-compiler/default.nix
@@ -20,8 +20,8 @@ let
   vc_intrinsics_src = fetchFromGitHub {
     owner = "intel";
     repo = "vc-intrinsics";
-    rev = "v0.14.0";
-    hash = "sha256-t7m2y+DiZf0xum1vneXvoCyH767SKMOq4YzMIuZngR8=";
+    rev = "v0.16.0";
+    hash = "sha256-d197m80vSICdv4VKnyqdy3flzbKLKmB8jroY2difA7o=";
   };
 
   inherit (llvmPackages_14) lld llvm;
@@ -31,13 +31,13 @@ in
 
 stdenv.mkDerivation rec {
   pname = "intel-graphics-compiler";
-  version = "1.0.15610.11";
+  version = "1.0.15985.7";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = "intel-graphics-compiler";
     rev = "igc-${version}";
-    hash = "sha256-Fu1g5M2lpcnLw6aSHI5gx47VOfx+rIdIhBlwe/Dv8bk=";
+    hash = "sha256-NXShD6M5OeKi0+Jszvoos+wjHZ9lWh/LIUFLFq8dzFM=";
   };
 
   nativeBuildInputs = [ bison cmake flex (python3.withPackages (ps : with ps; [ mako ])) ];
@@ -79,8 +79,9 @@ stdenv.mkDerivation rec {
   };
 
   meta = with lib; {
-    homepage = "https://github.com/intel/intel-graphics-compiler";
     description = "LLVM-based compiler for OpenCL targeting Intel Gen graphics hardware";
+    homepage = "https://github.com/intel/intel-graphics-compiler";
+    changelog = "https://github.com/intel/intel-graphics-compiler/releases/tag/${src.rev}";
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/nixpkgs/pkgs/development/compilers/tinycc/default.nix b/nixpkgs/pkgs/development/compilers/tinycc/default.nix
index 906df89b2117..a848accf1666 100644
--- a/nixpkgs/pkgs/development/compilers/tinycc/default.nix
+++ b/nixpkgs/pkgs/development/compilers/tinycc/default.nix
@@ -1,20 +1,16 @@
 { lib
-, stdenv
-, fetchFromRepoOrCz
 , copyPkgconfigItems
+, fetchFromRepoOrCz
 , makePkgconfigItem
 , perl
+, stdenv
 , texinfo
 , which
 }:
 
-let
-  # avoid "malformed 32-bit x.y.z" error on mac when using clang
-  isCleanVer = version: builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
-in
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: {
   pname = "tcc";
-  version = "unstable-2022-07-15";
+  version = "0.9.27-unstable-2022-07-15";
 
   src = fetchFromRepoOrCz {
     repo = "tinycc";
@@ -22,6 +18,8 @@ stdenv.mkDerivation rec {
     hash = "sha256-jY0P2GErmo//YBaz6u4/jj/voOE3C2JaIDRmo0orXN8=";
   };
 
+  outputs = [ "out" "info" "man" ];
+
   nativeBuildInputs = [
     copyPkgconfigItems
     perl
@@ -29,23 +27,27 @@ stdenv.mkDerivation rec {
     which
   ];
 
-  pkgconfigItems = [
-    (makePkgconfigItem rec {
+  strictDeps = true;
+
+  pkgconfigItems = let
+    libtcc-pcitem = {
       name = "libtcc";
-      inherit version;
-      cflags = [ "-I${variables.includedir}" ];
+      inherit (finalAttrs) version;
+      cflags = [ "-I${libtcc-pcitem.variables.includedir}" ];
       libs = [
-        "-L${variables.libdir}"
-        "-Wl,--rpath ${variables.libdir}"
+        "-L${libtcc-pcitem.variables.libdir}"
+        "-Wl,--rpath ${libtcc-pcitem.variables.libdir}"
         "-ltcc"
       ];
-      variables = rec {
+      variables = {
         prefix = "${placeholder "out"}";
-        includedir = "${prefix}/include";
-        libdir = "${prefix}/lib";
+        includedir = "${placeholder "dev"}/include";
+        libdir = "${placeholder "lib"}/lib";
       };
       description = "Tiny C compiler backend";
-    })
+    };
+  in [
+    (makePkgconfigItem libtcc-pcitem)
   ];
 
   postPatch = ''
@@ -64,17 +66,19 @@ stdenv.mkDerivation rec {
     "--config-musl"
   ];
 
-  preConfigure = ''
+  preConfigure = let
+    # To avoid "malformed 32-bit x.y.z" error on mac when using clang
+    versionIsClean = version:
+      builtins.match "^[0-9]\\.+[0-9]+\\.[0-9]+" version != null;
+  in ''
     ${
-      if stdenv.isDarwin && ! isCleanVer version
+      if stdenv.isDarwin && ! versionIsClean finalAttrs.version
       then "echo 'not overwriting VERSION since it would upset ld'"
-      else "echo ${version} > VERSION"
+      else "echo ${finalAttrs.version} > VERSION"
     }
     configureFlagsArray+=("--elfinterp=$(< $NIX_CC/nix-support/dynamic-linker)")
   '';
 
-  outputs = [ "out" "info" "man" ];
-
   # Test segfault for static build
   doCheck = !stdenv.hostPlatform.isStatic;
 
@@ -84,7 +88,7 @@ stdenv.mkDerivation rec {
     rm tests/tests2/{108,114}*
   '';
 
-  meta = with lib; {
+  meta = {
     homepage = "https://repo.or.cz/tinycc.git";
     description = "Small, fast, and embeddable C compiler and interpreter";
     longDescription = ''
@@ -108,13 +112,13 @@ stdenv.mkDerivation rec {
 
       With libtcc, you can use TCC as a backend for dynamic code generation.
     '';
-    license = licenses.lgpl21Only;
-    maintainers = with maintainers; [ joachifm AndersonTorres ];
-    platforms = platforms.unix;
+    license = with lib.licenses; [ lgpl21Only ];
+    mainProgram = "tcc";
+    maintainers = with lib.maintainers; [ joachifm AndersonTorres ];
+    platforms = lib.platforms.unix;
     # https://www.mail-archive.com/tinycc-devel@nongnu.org/msg10199.html
     broken = stdenv.isDarwin && stdenv.isAarch64;
   };
-}
+})
 # TODO: more multiple outputs
 # TODO: self-compilation
-# TODO: provide expression for stable release
diff --git a/nixpkgs/pkgs/development/embedded/svdtools/default.nix b/nixpkgs/pkgs/development/embedded/svdtools/default.nix
index c2b86d7bd66a..5611c3005a1e 100644
--- a/nixpkgs/pkgs/development/embedded/svdtools/default.nix
+++ b/nixpkgs/pkgs/development/embedded/svdtools/default.nix
@@ -5,14 +5,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "svdtools";
-  version = "0.3.9";
+  version = "0.3.10";
 
   src = fetchCrate {
     inherit version pname;
-    hash = "sha256-agIr2jM0BqLSXod5V+p//bxcnrXe2+wW5RMq8GAAwnI=";
+    hash = "sha256-VEGLUc8ThhD/R+K2IFGvE800euz8oF0kuekGO627rvU=";
   };
 
-  cargoHash = "sha256-z9GmFjABgvh2xf4nujnZUgHvKvChfP4Guox89PuuxV8=";
+  cargoHash = "sha256-T0yTGCDgRQUySUHNkoB4kqoKS/0kJWDi04ysPGO79HY=";
 
   meta = with lib; {
     description = "Tools to handle vendor-supplied, often buggy SVD files";
diff --git a/nixpkgs/pkgs/development/haskell-modules/configuration-common.nix b/nixpkgs/pkgs/development/haskell-modules/configuration-common.nix
index 711bb3ac2d23..482abb918e02 100644
--- a/nixpkgs/pkgs/development/haskell-modules/configuration-common.nix
+++ b/nixpkgs/pkgs/development/haskell-modules/configuration-common.nix
@@ -393,22 +393,22 @@ self: super: {
 
   # Manually maintained
   cachix-api = overrideCabal (drv: {
-    version = "1.7.1";
+    version = "1.7";
     src = pkgs.fetchFromGitHub {
       owner = "cachix";
       repo = "cachix";
-      rev = "v1.7.1";
-      sha256 = "sha256-neN8zGZuGXnLVdQw468z67o96mn8o1p4WGqPINl+NjU=";
+      rev = "v1.7";
+      sha256 = "sha256-d9BohugsKajvjNgt+VyXHuDdLOFKr9mhwpdUNkpIP3s=";
     };
     postUnpack = "sourceRoot=$sourceRoot/cachix-api";
   }) super.cachix-api;
   cachix = (overrideCabal (drv: {
-    version = "1.7.1";
+    version = "1.7";
     src = pkgs.fetchFromGitHub {
       owner = "cachix";
       repo = "cachix";
-      rev = "v1.7.1";
-      sha256 = "sha256-neN8zGZuGXnLVdQw468z67o96mn8o1p4WGqPINl+NjU=";
+      rev = "v1.7";
+      sha256 = "sha256-d9BohugsKajvjNgt+VyXHuDdLOFKr9mhwpdUNkpIP3s=";
     };
     postUnpack = "sourceRoot=$sourceRoot/cachix";
   }) (lib.pipe
diff --git a/nixpkgs/pkgs/development/interpreters/bats/libraries.nix b/nixpkgs/pkgs/development/interpreters/bats/libraries.nix
index a7d5e2b87747..9ee0942e7e69 100644
--- a/nixpkgs/pkgs/development/interpreters/bats/libraries.nix
+++ b/nixpkgs/pkgs/development/interpreters/bats/libraries.nix
@@ -53,12 +53,12 @@
 
   bats-detik = stdenv.mkDerivation (finalAttrs: {
     pname = "bats-detik";
-    version = "1.2.1";
+    version = "1.3.0";
     src = fetchFromGitHub {
       owner = "bats-core";
       repo = "bats-detik";
       rev = "v${finalAttrs.version}";
-      hash = "sha256-2BEIqRSc21oPjd9BgTLg5mGyAdNJYA2b7gZe7Nj2dks=";
+      hash = "sha256-cbWNZ9a/Q9reJLQxUyTdqfLykOJcJKnoKB123ao8/xM=";
     };
     dontBuild = true;
     installPhase = ''
diff --git a/nixpkgs/pkgs/development/interpreters/micropython/default.nix b/nixpkgs/pkgs/development/interpreters/micropython/default.nix
index 53d2130d28cc..6437e942ae34 100644
--- a/nixpkgs/pkgs/development/interpreters/micropython/default.nix
+++ b/nixpkgs/pkgs/development/interpreters/micropython/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "micropython";
-  version = "1.22.1";
+  version = "1.22.2";
 
   src = fetchFromGitHub {
     owner = "micropython";
     repo = "micropython";
     rev = "v${version}";
-    sha256 = "sha256-NU/C0rxiA/DTbUXZG/RTsq7tGgxtLUUilMhsc8DPA7g=";
+    sha256 = "sha256-sdok17HvKub/sI+8cAIIDaLD/3mu8yXXqrTOej8/UfU=";
     fetchSubmodules = true;
   };
 
diff --git a/nixpkgs/pkgs/development/libraries/SDL2/default.nix b/nixpkgs/pkgs/development/libraries/SDL2/default.nix
index 167f0cbe7638..1aac55d6ef9e 100644
--- a/nixpkgs/pkgs/development/libraries/SDL2/default.nix
+++ b/nixpkgs/pkgs/development/libraries/SDL2/default.nix
@@ -48,8 +48,8 @@
 , OpenGL
 , audiofile
 , libiconv
-, withStatic ? false
-# passthru.tests
+, withStatic ? stdenv.hostPlatform.isMinGW
+  # passthru.tests
 , testers
 }:
 
@@ -172,7 +172,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   passthru = {
     inherit openglSupport;
-    updateScript = nix-update-script { extraArgs = ["--version-regex" "release-(.*)"]; };
+    updateScript = nix-update-script { extraArgs = [ "--version-regex" "release-(.*)" ]; };
     tests.pkg-config = testers.hasPkgConfigModules {
       package = finalAttrs.finalPackage;
     };
diff --git a/nixpkgs/pkgs/development/libraries/accounts-qt/default.nix b/nixpkgs/pkgs/development/libraries/accounts-qt/default.nix
index 7549f02fc56c..7d2617a6ee60 100644
--- a/nixpkgs/pkgs/development/libraries/accounts-qt/default.nix
+++ b/nixpkgs/pkgs/development/libraries/accounts-qt/default.nix
@@ -1,14 +1,15 @@
 { stdenv, lib, fetchFromGitLab, doxygen, glib, libaccounts-glib, pkg-config, qmake, qtbase, wrapQtAppsHook }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "accounts-qt";
-  version = "1.16";
+  version = "1.16-unstable-2023-11-24";
 
+  # pinned to fork with Qt6 support
   src = fetchFromGitLab {
-    sha256 = "1vmpjvysm0ld8dqnx8msa15hlhrkny02cqycsh4k2azrnijg0xjz";
-    rev = "VERSION_${version}";
+    owner = "nicolasfella";
     repo = "libaccounts-qt";
-    owner = "accounts-sso";
+    rev = "18557f7def9af8f4a9e0e93e9f575ae11e5066aa";
+    hash = "sha256-8FGZmg2ljSh1DYZfklMTrWN7Sdlk/Atw0qfpbb+GaBc=";
   };
 
   propagatedBuildInputs = [ glib libaccounts-glib ];
diff --git a/nixpkgs/pkgs/development/libraries/duckdb/default.nix b/nixpkgs/pkgs/development/libraries/duckdb/default.nix
index 801ad7979aee..e6645480d2b2 100644
--- a/nixpkgs/pkgs/development/libraries/duckdb/default.nix
+++ b/nixpkgs/pkgs/development/libraries/duckdb/default.nix
@@ -1,10 +1,13 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, fetchpatch
+, substituteAll
 , cmake
 , ninja
 , openssl
 , openjdk11
+, python3
 , unixODBC
 , withJdbc ? false
 , withOdbc ? false
@@ -15,22 +18,31 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "duckdb";
-  version = "0.9.2";
+  version = "0.10.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-QFK8mEMcqQwALFNvAdD8yWixwMYHSbeo6xqx86PvejU=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-qGUq0iYTaLNHKqbXNLRmvqHMqunvIlP991IKb4qdSt4=";
   };
 
-  patches = [ ./version.patch ];
-
-  postPatch = ''
-    substituteInPlace CMakeLists.txt --subst-var-by DUCKDB_VERSION "v${version}"
-  '';
+  patches = [
+    # remove calls to git and set DUCKDB_VERSION to version
+    (substituteAll {
+      src = ./version.patch;
+      version = "v${version}";
+    })
+    # add missing file needed for httpfs compile
+    # remove on next update
+    (fetchpatch {
+      name = "missing-httpfs-file.patch";
+      url = "https://github.com/duckdb/duckdb/commit/3d7aa3ed46ecf5f18122559e385b75f1f5e9aba8.patch";
+      hash = "sha256-Q4IHCpMpxn86OquUZdEF7P0nHEPOcWS0TQijTkvBYbQ=";
+    })
+  ];
 
-  nativeBuildInputs = [ cmake ninja ];
+  nativeBuildInputs = [ cmake ninja python3 ];
   buildInputs = [ openssl ]
     ++ lib.optionals withJdbc [ openjdk11 ]
     ++ lib.optionals withOdbc [ unixODBC ];
@@ -54,7 +66,7 @@ stdenv.mkDerivation rec {
 
   installCheckPhase =
     let
-      excludes = map (pattern: "exclude:'${pattern}'") [
+      excludes = map (pattern: "exclude:'${pattern}'") ([
         "[s3]"
         "Test closing database during long running query"
         "Test using a remote optimizer pass in case thats important to someone"
@@ -91,16 +103,22 @@ stdenv.mkDerivation rec {
         "[!hide]"
         # this test apparently never terminates
         "test/sql/copy/csv/auto/test_csv_auto.test"
+        # test expects installed file timestamp to be > 2024
+        "test/sql/table_function/read_text_and_blob.test"
+        # can re-enable next update (broken for 0.10.0)
+        "test/sql/secrets/create_secret_non_writable_persistent_dir.test"
+        # https://github.com/duckdb/duckdb/issues/10722
+        "test/sql/types/nested/list/list_aggregate_dict.test"
       ] ++ lib.optionals stdenv.isAarch64 [
         "test/sql/aggregate/aggregates/test_kurtosis.test"
         "test/sql/aggregate/aggregates/test_skewness.test"
         "test/sql/function/list/aggregates/skewness.test"
-      ];
+      ]);
     in
     ''
       runHook preInstallCheck
 
-      $PWD/test/unittest ${lib.concatStringsSep " " excludes}
+      ./test/unittest ${toString excludes}
 
       runHook postInstallCheck
     '';
diff --git a/nixpkgs/pkgs/development/libraries/duckdb/version.patch b/nixpkgs/pkgs/development/libraries/duckdb/version.patch
index f40785b43079..122ad4295d41 100644
--- a/nixpkgs/pkgs/development/libraries/duckdb/version.patch
+++ b/nixpkgs/pkgs/development/libraries/duckdb/version.patch
@@ -52,7 +52,7 @@ index 2b49e11288..0a4a69b9a0 100644
 -  set(DUCKDB_DEV_ITERATION 0)
 -  set(DUCKDB_VERSION "v${DUCKDB_MAJOR_VERSION}.${DUCKDB_MINOR_VERSION}.${DUCKDB_PATCH_VERSION}-dev${DUCKDB_DEV_ITERATION}")
 -endif()
-+set(DUCKDB_VERSION "@DUCKDB_VERSION@")
++set(DUCKDB_VERSION "@version@")
  
  message(STATUS "git hash ${GIT_COMMIT_HASH}, version ${DUCKDB_VERSION}")
  
diff --git a/nixpkgs/pkgs/development/libraries/fcft/default.nix b/nixpkgs/pkgs/development/libraries/fcft/default.nix
index 37084705d6ee..faf5906f7a98 100644
--- a/nixpkgs/pkgs/development/libraries/fcft/default.nix
+++ b/nixpkgs/pkgs/development/libraries/fcft/default.nix
@@ -17,14 +17,14 @@ in
 
 stdenv.mkDerivation rec {
   pname = "fcft";
-  version = "3.1.7";
+  version = "3.1.8";
 
   src = fetchFromGitea {
     domain = "codeberg.org";
     owner = "dnkl";
     repo = "fcft";
     rev = version;
-    sha256 = "sha256-QS39vbf2JowovTBtT4DKDRbLXieOrzbO4cQObOdE788=";
+    sha256 = "sha256-Wgm2QdW4rg573soF/8HhDmlyN4S2cA0VWOejow464gU=";
   };
 
   depsBuildBuild = [ pkg-config ];
diff --git a/nixpkgs/pkgs/development/libraries/gegl/default.nix b/nixpkgs/pkgs/development/libraries/gegl/default.nix
index 914d72a7fe8a..93035b373eb4 100644
--- a/nixpkgs/pkgs/development/libraries/gegl/default.nix
+++ b/nixpkgs/pkgs/development/libraries/gegl/default.nix
@@ -1,13 +1,10 @@
 { lib
 , stdenv
 , fetchurl
-, fetchpatch2
 , pkg-config
 , vala
+, gi-docgen
 , gobject-introspection
-, gtk-doc
-, docbook-xsl-nons
-, docbook_xml_dtd_43
 , glib
 , babl
 , libpng
@@ -38,25 +35,16 @@
 
 stdenv.mkDerivation rec {
   pname = "gegl";
-  version = "0.4.46";
+  version = "0.4.48";
 
   outputs = [ "out" "dev" "devdoc" ];
   outputBin = "dev";
 
   src = fetchurl {
     url = "https://download.gimp.org/pub/gegl/${lib.versions.majorMinor version}/gegl-${version}.tar.xz";
-    hash = "sha256-0LOySBvId0xfPQpIdhGRAWbRju+COoWfuR54Grex6JI=";
+    hash = "sha256-QYwm2UvogF19mPbeDGglyia9dPystsGI2kdTPZ7igkc=";
   };
 
-  patches = [
-    # https://gitlab.gnome.org/GNOME/gegl/-/merge_requests/136
-    # Fix missing libm dependency.
-    (fetchpatch2 {
-      url = "https://gitlab.gnome.org/GNOME/gegl/-/commit/ee970f10f4fe442cbf8a4f5cb94049deab33e786.patch";
-      hash = "sha256-0LLKH+Gg+1H83kN7hJGK2u+oLrw7Hxed7R4tTwT3C5s=";
-    })
-  ];
-
   nativeBuildInputs = [
     pkg-config
     gettext
@@ -64,9 +52,7 @@ stdenv.mkDerivation rec {
     ninja
     vala
     gobject-introspection
-    gtk-doc
-    docbook-xsl-nons
-    docbook_xml_dtd_43
+    gi-docgen
   ];
 
   buildInputs = [
@@ -102,7 +88,6 @@ stdenv.mkDerivation rec {
   ];
 
   mesonFlags = [
-    "-Dgtk-doc=true"
     "-Dmrg=disabled" # not sure what that is
     "-Dsdl2=disabled"
     "-Dpygobject=disabled"
@@ -119,6 +104,11 @@ stdenv.mkDerivation rec {
     patchShebangs tests/ff-load-save/tests_ff_load_save.sh tests/opencl/opencl_test.sh tools/xml_insert.sh
   '';
 
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    moveToOutput "share/doc" "$devdoc"
+  '';
+
   # tests fail to connect to the com.apple.fonts daemon in sandboxed mode
   doCheck = !stdenv.isDarwin;
 
diff --git a/nixpkgs/pkgs/development/libraries/google-cloud-cpp/default.nix b/nixpkgs/pkgs/development/libraries/google-cloud-cpp/default.nix
index 0a6be882120b..4d8ef6821240 100644
--- a/nixpkgs/pkgs/development/libraries/google-cloud-cpp/default.nix
+++ b/nixpkgs/pkgs/development/libraries/google-cloud-cpp/default.nix
@@ -28,7 +28,6 @@ let
     rev = googleapisRev;
     hash = "sha256-4Qiz0pBgW3OZi+Z8Zq6k9E94+8q6/EFMwPh8eQxDjdI=";
   };
-  excludedTests = builtins.fromTOML (builtins.readFile ./skipped_tests.toml);
 in
 stdenv.mkDerivation rec {
   pname = "google-cloud-cpp";
@@ -106,16 +105,17 @@ stdenv.mkDerivation rec {
     lib.optionalString doInstallCheck (
       lib.optionalString (!staticOnly) ''
         export ${ldLibraryPathName}=${lib.concatStringsSep ":" additionalLibraryPaths}
-      '' + ''
-        export GTEST_FILTER="-${lib.concatStringsSep ":" excludedTests.cases}"
       ''
     );
 
   installCheckPhase = lib.optionalString doInstallCheck ''
     runHook preInstallCheck
 
-    # disable tests that contact the internet
-    ctest --exclude-regex '^(${lib.concatStringsSep "|" excludedTests.whole})'
+    # Disable any integration tests, which need to contact the internet.
+    # Also disable the `storage_benchmark_*` tests.
+    # With Protobuf < 23.x they require -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_WORKAROUND=ON.
+    # With Protobuf >= 23.x they require They require setting -DGOOGLE_CLOUD_CPP_ENABLE_CTYPE_WORKAROUND=OFF
+    ctest --label-exclude integration-test --exclude-regex storage_benchmarks_
 
     runHook postInstallCheck
   '';
diff --git a/nixpkgs/pkgs/development/libraries/google-cloud-cpp/skipped_tests.toml b/nixpkgs/pkgs/development/libraries/google-cloud-cpp/skipped_tests.toml
deleted file mode 100644
index d4ac469fbcff..000000000000
--- a/nixpkgs/pkgs/development/libraries/google-cloud-cpp/skipped_tests.toml
+++ /dev/null
@@ -1,139 +0,0 @@
-whole = [
-  "common_samples_samples",
-  "common_internal_grpc_impersonate_service_account_integration_test",
-  "common_internal_unified_rest_credentials_integration_test",
-  "iam_samples_iam_credentials_samples",
-  "iam_samples_iam_samples",
-  "iam_admin_v1_samples_iam_client_samples",
-  "iam_credentials_v1_samples_iam_credentials_client_samples",
-  "iam_v1_samples_iam_policy_client_samples",
-  "iam_v2_samples_policies_client_samples",
-  "bigtable_admin_admin_iam_policy_integration_test",
-  "bigtable_bigtable_instance_admin_client_samples",
-  "bigtable_bigtable_table_admin_client_samples",
-  "bigtable_apply_read_latency_benchmark",
-  "bigtable_endurance_benchmark",
-  "bigtable_mutation_batcher_throughput_benchmark",
-  "bigtable_read_sync_vs_async_benchmark",
-  "bigtable_scan_throughput_benchmark",
-  "bigtable_admin_iam_policy_integration_test",
-  "bigtable_data_async_future_integration_test",
-  "bigtable_data_integration_test",
-  "bigtable_filters_integration_test",
-  "bigtable_mutations_integration_test",
-  "bigtable_table_sample_rows_integration_test",
-  "bigquery_samples_bigquery_read_samples",
-  "bigquery_analyticshub_v1_samples_analytics_hub_client_samples",
-  "bigquery_biglake_v1_samples_metastore_client_samples",
-  "bigquery_connection_v1_samples_connection_client_samples",
-  "bigquery_datapolicies_v1_samples_data_policy_client_samples",
-  "bigquery_datatransfer_v1_samples_data_transfer_client_samples",
-  "bigquery_migration_v2_samples_migration_client_samples",
-  "bigquery_reservation_v1_samples_reservation_client_samples",
-  "bigquery_storage_v1_samples_bigquery_read_client_samples",
-  "bigquery_storage_v1_samples_bigquery_write_client_samples",
-  "logging_quickstart",
-  "logging_v2_samples_config_service_v2_client_samples",
-  "logging_v2_samples_logging_service_v2_client_samples",
-  "logging_v2_samples_metrics_service_v2_client_samples",
-  "pubsub_endurance",
-  "pubsub_throughput",
-  "pubsub_subscriber_integration_test",
-  "pubsub_subscription_admin_integration_test",
-  "pubsub_topic_admin_integration_test",
-  "spanner_client_integration_test",
-  "spanner_client_stress_test",
-  "spanner_data_types_integration_test",
-  "spanner_database_admin_integration_test",
-  "spanner_instance_admin_integration_test",
-  "spanner_session_pool_integration_test",
-  "spanner_admin_database_admin_integration_test",
-  "spanner_admin_instance_admin_integration_test",
-  "spanner_database_admin_client_samples",
-  "spanner_instance_admin_client_samples",
-  "spanner_multiple_rows_cpu_benchmark",
-  "spanner_single_row_throughput_benchmark",
-  "storage_alternative_endpoint_integration_test",
-  "storage_auto_finalize_integration_test",
-  "storage_bucket_integration_test",
-  "storage_create_client_integration_test",
-  "storage_curl_sign_blob_integration_test",
-  "storage_decompressive_transcoding_integration_test",
-  "storage_grpc_bucket_acl_integration_test",
-  "storage_grpc_bucket_metadata_integration_test",
-  "storage_grpc_default_object_acl_integration_test",
-  "storage_grpc_integration_test",
-  "storage_grpc_object_acl_integration_test",
-  "storage_grpc_object_media_integration_test",
-  "storage_grpc_object_metadata_integration_test",
-  "storage_key_file_integration_test",
-  "storage_minimal_iam_credentials_rest_integration_test",
-  "storage_object_basic_crud_integration_test",
-  "storage_object_checksum_integration_test",
-  "storage_object_compose_many_integration_test",
-  "storage_object_file_integration_test",
-  "storage_object_hash_integration_test",
-  "storage_object_insert_integration_test",
-  "storage_object_insert_preconditions_integration_test",
-  "storage_object_integration_test",
-  "storage_object_list_objects_versions_integration_test",
-  "storage_object_media_integration_test",
-  "storage_object_parallel_upload_integration_test",
-  "storage_object_plenty_clients_serially_integration_test",
-  "storage_object_plenty_clients_simultaneously_integration_test",
-  "storage_object_read_headers_integration_test",
-  "storage_object_read_preconditions_integration_test",
-  "storage_object_read_range_integration_test",
-  "storage_object_read_stream_integration_test",
-  "storage_object_resumable_parallel_upload_integration_test",
-  "storage_object_resumable_write_integration_test",
-  "storage_object_rewrite_integration_test",
-  "storage_object_write_preconditions_integration_test",
-  "storage_object_write_stream_integration_test",
-  "storage_object_write_streambuf_integration_test",
-  "storage_service_account_integration_test",
-  "storage_signed_url_integration_test",
-  "storage_small_reads_integration_test",
-  "storage_thread_integration_test",
-  "storage_tracing_integration_test",
-  "storage_unified_credentials_integration_test",
-  "storage_aggregate_download_throughput_benchmark",
-  "storage_aggregate_upload_throughput_benchmark",
-  "storage_create_dataset",
-  "storage_storage_file_transfer_benchmark",
-  "storage_storage_parallel_uploads_benchmark",
-  "storage_storage_throughput_vs_cpu_benchmark",
-  "storage_throughput_experiment_test"
-]
-cases = [
-  "BackupExtraIntegrationTest.CreateBackupWithExpiredVersionTime",
-  "BackupExtraIntegrationTest.BackupWithExpiredVersionTime",
-  "BackupExtraIntegrationTest.BackupWithFutureVersionTime",
-  "BackupExtraIntegrationTest.CreateBackupWithFutureVersionTime",
-  "BlockingPublisherIntegrationTest.Basic",
-  "DatabaseAdminClientTest.CreateWithEncryptionKey",
-  "DatabaseAdminClientTest.CreateWithNonexistentEncryptionKey",
-  "DatabaseAdminClientTest.DatabaseBasicCRUD",
-  "DatabaseAdminClientTest.VersionRetentionPeriodCreate",
-  "DatabaseAdminClientTest.VersionRetentionPeriodCreateFailure",
-  "DatabaseAdminClientTest.VersionRetentionPeriodUpdate",
-  "DatabaseAdminClientTest.VersionRetentionPeriodUpdateFailure",
-  "ErrorParsingIntegrationTest.FailureContainsErrorInfo",
-  "GrpcServiceAccountIntegrationTest.GetServiceAccount",
-  "GrpcBucketMetadataIntegrationTest.ObjectMetadataCRUD",
-  "InstanceAdminClientTest.InstanceConfig",
-  "InstanceAdminClientTest.InstanceIam",
-  "InstanceAdminClientTest.InstanceReadOperations",
-  "LoggingIntegrationTest.ListMonitoredResourceDescriptors",
-  "LoggingIntegrationTest.WriteLogEntries",
-  "ObjectFileMultiThreadedTest.Download",
-  "ObjectReadLargeIntegrationTest.LimitedMemoryGrowth",
-  "SubscriberIntegrationTest.FireAndForget",
-  "SubscriberIntegrationTest.PublishOrdered",
-  "SubscriberIntegrationTest.PublishPullAck",
-  "SubscriberIntegrationTest.RawStub",
-  "SubscriberIntegrationTest.ReportNotFound",
-  "SubscriberIntegrationTest.StreamingSubscriptionBatchSource",
-  "SubscriptionAdminIntegrationTest.SubscriptionCRUD",
-  "TopicAdminIntegrationTest.TopicCRUD"
-]
diff --git a/nixpkgs/pkgs/development/libraries/hunspell/dictionaries.nix b/nixpkgs/pkgs/development/libraries/hunspell/dictionaries.nix
index dbaa4888922c..d62f672f0660 100644
--- a/nixpkgs/pkgs/development/libraries/hunspell/dictionaries.nix
+++ b/nixpkgs/pkgs/development/libraries/hunspell/dictionaries.nix
@@ -828,14 +828,14 @@ rec {
   th_TH = th-th;
   th-th = mkDict {
     pname = "hunspell-dict-th-th";
-    version = "experimental-2023-03-01";
+    version = "experimental-2024-02-27";
     dictFileName = "th_TH";
     readmeFile = "README.md";
     src = fetchFromGitHub {
       owner = "SyafiqHadzir";
       repo = "Hunspell-TH";
-      rev = "9c09f1b7c0eb4d04b9f6f427901686c5c3d9fa54";
-      sha256 = "1wszpnbgj31k72x1vvcfkzcpmxsncdpqsi3zagah7swilpi7cqm4";
+      rev = "62d35f9211ca1eb4c367eac2ae57193efe6e88d2";
+      sha256 = "sha256-t4m4u+qIgJPrKz58Cu2Q+knYm/+cvrNLzQsiiSRTB1A=";
     };
     meta = with lib; {
       description = "Hunspell dictionary for Central Thai (Thailand)";
diff --git a/nixpkgs/pkgs/development/libraries/imgui/default.nix b/nixpkgs/pkgs/development/libraries/imgui/default.nix
index a9ce7358447d..275d44e88dd9 100644
--- a/nixpkgs/pkgs/development/libraries/imgui/default.nix
+++ b/nixpkgs/pkgs/development/libraries/imgui/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "imgui";
-  version = "1.90.3";
+  version = "1.90.4";
 
   src = fetchFromGitHub {
     owner = "ocornut";
     repo = "imgui";
     rev = "v${version}";
-    sha256 = "sha256-dmCQ7p9gpQiBb2hPhzX+/Y0ZiYX01cRNQYXC1KTRYck=";
+    sha256 = "sha256-7+Ay7H97tIO6CUsEyaQv4i9q2FCw98eQUq/KYZyfTAw=";
   };
 
   dontBuild = true;
diff --git a/nixpkgs/pkgs/development/libraries/kcolorpicker/default.nix b/nixpkgs/pkgs/development/libraries/kcolorpicker/default.nix
index 4647d65882cd..9a96b92c1258 100644
--- a/nixpkgs/pkgs/development/libraries/kcolorpicker/default.nix
+++ b/nixpkgs/pkgs/development/libraries/kcolorpicker/default.nix
@@ -1,19 +1,29 @@
-{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase }:
+{ lib, stdenv, fetchFromGitHub, cmake, qtbase }:
 
-mkDerivation rec {
+let
+  isQt6 = lib.versions.major qtbase.version == "6";
+in stdenv.mkDerivation rec {
   pname = "kcolorpicker";
-  version = "0.2.0";
+  version = "0.3.0";
 
   src = fetchFromGitHub {
     owner = "ksnip";
     repo = "kColorPicker";
     rev = "v${version}";
-    sha256 = "sha256-ahmMj/yzQiRP9oJwDuhJGxe849kxNsoGFDZ2CGQNhKs=";
+    hash = "sha256-gkjlIiLB3/074EEFrQUa0djvVt/C44O3afqqNis64P0=";
   };
 
   nativeBuildInputs = [ cmake ];
   buildInputs = [ qtbase ];
 
+  cmakeFlags = [
+    (lib.cmakeBool "BUILD_WITH_QT6" isQt6)
+    (lib.cmakeBool "BUILD_SHARED_LIBS" true)
+  ];
+
+  # Library only
+  dontWrapQtApps = true;
+
   meta = with lib; {
     description = "Qt based Color Picker with popup menu";
     homepage = "https://github.com/ksnip/kColorPicker";
diff --git a/nixpkgs/pkgs/development/libraries/kimageannotator/default.nix b/nixpkgs/pkgs/development/libraries/kimageannotator/default.nix
index ce1be1d18062..e32247a488a3 100644
--- a/nixpkgs/pkgs/development/libraries/kimageannotator/default.nix
+++ b/nixpkgs/pkgs/development/libraries/kimageannotator/default.nix
@@ -1,18 +1,29 @@
-{ lib, mkDerivation, fetchFromGitHub, cmake, qtbase, kcolorpicker, qttools }:
+{ lib, stdenv, fetchFromGitHub, cmake, qttools, qtbase, qtsvg, kcolorpicker }:
 
-mkDerivation rec {
+let
+  isQt6 = lib.versions.major qtbase.version == "6";
+in stdenv.mkDerivation rec {
   pname = "kimageannotator";
-  version = "0.6.1";
+  version = "0.7.0";
 
   src = fetchFromGitHub {
     owner = "ksnip";
     repo = "kImageAnnotator";
     rev = "v${version}";
-    sha256 = "sha256-lNoYAJ5yTC5H0gWPVkBGhLroRhFCPyC1DsVBy0IrqL4=";
+    hash = "sha256-Dq9CM/D3nA7MaY9rfwqF/UAw/+1ptKLf3P8jhFdngKk=";
   };
 
   nativeBuildInputs = [ cmake qttools ];
-  buildInputs = [ qtbase kcolorpicker ];
+  buildInputs = [ qtbase qtsvg ];
+  propagatedBuildInputs = [ kcolorpicker ];
+
+  cmakeFlags = [
+    (lib.cmakeBool "BUILD_WITH_QT6" isQt6)
+    (lib.cmakeBool "BUILD_SHARED_LIBS" true)
+  ];
+
+  # Library only
+  dontWrapQtApps = true;
 
   meta = with lib; {
     description = "Tool for annotating images";
diff --git a/nixpkgs/pkgs/development/libraries/level-zero/default.nix b/nixpkgs/pkgs/development/libraries/level-zero/default.nix
index 50cbe4a18cc3..fb5c3ba283b6 100644
--- a/nixpkgs/pkgs/development/libraries/level-zero/default.nix
+++ b/nixpkgs/pkgs/development/libraries/level-zero/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "level-zero";
-  version = "1.15.8";
+  version = "1.16.1";
 
   src = fetchFromGitHub {
     owner = "oneapi-src";
     repo = "level-zero";
     rev = "refs/tags/v${version}";
-    hash = "sha256-n1dcsI2sLeB68HpI5oQ5p3zdAcSvnSY+qpHL9vp6FOk=";
+    hash = "sha256-iPWEZ9aJ3uI4cAKRgur78zdVwGtD6q1TqwNpK+mg5hw=";
   };
 
   nativeBuildInputs = [ cmake addOpenGLRunpath ];
diff --git a/nixpkgs/pkgs/development/libraries/libgbinder/default.nix b/nixpkgs/pkgs/development/libraries/libgbinder/default.nix
index 4a4a0ee6bf21..c0f4577078e2 100644
--- a/nixpkgs/pkgs/development/libraries/libgbinder/default.nix
+++ b/nixpkgs/pkgs/development/libraries/libgbinder/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "libgbinder";
-  version = "1.1.36";
+  version = "1.1.37";
 
   src = fetchFromGitHub {
     owner = "mer-hybris";
     repo = pname;
     rev = version;
-    sha256 = "sha256-QTlOiZG6qpNeicMJpOTMSTk2WwKbOzkaLulgmsxYaVI=";
+    sha256 = "sha256-/XxWOaT2f6+0apv0NzMsPoYBf3GLuaXyPkmTMTDtOes=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/development/libraries/libshumate/default.nix b/nixpkgs/pkgs/development/libraries/libshumate/default.nix
index 4722781c1933..9639ac34a01b 100644
--- a/nixpkgs/pkgs/development/libraries/libshumate/default.nix
+++ b/nixpkgs/pkgs/development/libraries/libshumate/default.nix
@@ -32,6 +32,11 @@ stdenv.mkDerivation rec {
     sha256 = "+h0dKLECtvfsxwD5aRTIgiNI9jG/tortUJYFiYMe60g=";
   };
 
+  depsBuildBuild = [
+    # required to find native gi-docgen when cross compiling
+    pkg-config
+  ];
+
   nativeBuildInputs = [
     gi-docgen
     meson
diff --git a/nixpkgs/pkgs/development/libraries/lightgbm/default.nix b/nixpkgs/pkgs/development/libraries/lightgbm/default.nix
index 55d04fb4f374..09ac8b8fa863 100644
--- a/nixpkgs/pkgs/development/libraries/lightgbm/default.nix
+++ b/nixpkgs/pkgs/development/libraries/lightgbm/default.nix
@@ -23,14 +23,14 @@ stdenv.mkDerivation rec {
   #   in \
   #   rWrapper.override{ packages = [ lgbm ]; }"
   pname = lib.optionalString rLibrary "r-" + pnameBase;
-  version = "4.1.0";
+  version = "4.3.0";
 
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = pnameBase;
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-AhXe/Mlor/i0y84wI9jVPKSnyVbSyAV52Y4yiNm7yLQ=";
+    hash = "sha256-hEoGdzC6n8t14ZUFWFrdljEkQRo9qaDGYTamvIAgrbg=";
   };
 
   nativeBuildInputs = [ cmake ]
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   propagatedBuildInputs = lib.optionals rLibrary [
     rPackages.data_table
+    rPackages.markdown
     rPackages.rmarkdown
     rPackages.jsonlite
     rPackages.Matrix
@@ -70,6 +71,9 @@ stdenv.mkDerivation rec {
       --replace \
         "install_args <- c(\"CMD\", \"INSTALL\", \"--no-multiarch\", \"--with-keep.source\", tarball)" \
         "install_args <- c(\"CMD\", \"INSTALL\", \"--no-multiarch\", \"--with-keep.source\", \"-l $out/library\", tarball)"
+
+    # Retry this test in next release. Something fails in the setup, so GTEST_FILTER is not enough
+    rm tests/cpp_tests/test_arrow.cpp
   '';
 
   cmakeFlags = lib.optionals doCheck [ "-DBUILD_CPP_TEST=ON" ]
diff --git a/nixpkgs/pkgs/development/libraries/lucene++/default.nix b/nixpkgs/pkgs/development/libraries/lucene++/default.nix
index 7755692d2c04..41aadfcdc747 100644
--- a/nixpkgs/pkgs/development/libraries/lucene++/default.nix
+++ b/nixpkgs/pkgs/development/libraries/lucene++/default.nix
@@ -29,9 +29,12 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  # Don't use the built in gtest - but the nixpkgs one requires C++14.
   postPatch = ''
     substituteInPlace src/test/CMakeLists.txt \
       --replace "add_subdirectory(gtest)" ""
+    substituteInPlace CMakeLists.txt \
+      --replace "set(CMAKE_CXX_STANDARD 11)" "set(CMAKE_CXX_STANDARD 14)"
   '';
 
   doCheck = true;
diff --git a/nixpkgs/pkgs/development/libraries/paho-mqtt-c/default.nix b/nixpkgs/pkgs/development/libraries/paho-mqtt-c/default.nix
index 149432788221..0f345eb5134f 100644
--- a/nixpkgs/pkgs/development/libraries/paho-mqtt-c/default.nix
+++ b/nixpkgs/pkgs/development/libraries/paho-mqtt-c/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, cmake, openssl }:
+{ lib, stdenv, fetchFromGitHub, cmake, openssl, enableStatic ? stdenv.hostPlatform.isStatic, enableShared ? !stdenv.hostPlatform.isStatic }:
 
 stdenv.mkDerivation rec {
   pname = "paho.mqtt.c";
@@ -21,7 +21,11 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ openssl ];
 
-  cmakeFlags = [ "-DPAHO_WITH_SSL=TRUE" ];
+  cmakeFlags = [
+    (lib.cmakeBool "PAHO_WITH_SSL" true)
+    (lib.cmakeBool "PAHO_BUILD_STATIC" enableStatic)
+    (lib.cmakeBool "PAHO_BUILD_SHARED" enableShared)
+  ];
 
   meta = with lib; {
     description = "Eclipse Paho MQTT C Client Library";
diff --git a/nixpkgs/pkgs/development/libraries/paho-mqtt-cpp/default.nix b/nixpkgs/pkgs/development/libraries/paho-mqtt-cpp/default.nix
index 62d9aa597792..6f1b9b215e26 100644
--- a/nixpkgs/pkgs/development/libraries/paho-mqtt-cpp/default.nix
+++ b/nixpkgs/pkgs/development/libraries/paho-mqtt-cpp/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchFromGitHub, cmake, openssl, paho-mqtt-c }:
+{ lib, stdenv, fetchFromGitHub, cmake, openssl, paho-mqtt-c, enableStatic ? stdenv.hostPlatform.isStatic, enableShared ? !stdenv.hostPlatform.isStatic }:
 
 stdenv.mkDerivation rec {
   pname = "paho.mqtt.cpp";
@@ -15,6 +15,12 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ openssl paho-mqtt-c ];
 
+  cmakeFlags = [
+    (lib.cmakeBool "PAHO_WITH_SSL" true)
+    (lib.cmakeBool "PAHO_BUILD_STATIC" enableStatic)
+    (lib.cmakeBool "PAHO_BUILD_SHARED" enableShared)
+  ];
+
   meta = with lib; {
     description = "Eclipse Paho MQTT C++ Client Library";
     homepage = "https://www.eclipse.org/paho/";
diff --git a/nixpkgs/pkgs/development/libraries/qt-6/default.nix b/nixpkgs/pkgs/development/libraries/qt-6/default.nix
index 8acc044894bc..ea65e5f3ae82 100644
--- a/nixpkgs/pkgs/development/libraries/qt-6/default.nix
+++ b/nixpkgs/pkgs/development/libraries/qt-6/default.nix
@@ -42,7 +42,7 @@ let
       qtModule = callPackage ./qtModule.nix { };
 
       qtbase = callPackage ./modules/qtbase.nix {
-        withGtk3 = true;
+        withGtk3 = !stdenv.hostPlatform.isMinGW;
         inherit (srcs.qtbase) src version;
         inherit developerBuild;
         inherit (darwin.apple_sdk_11_0.frameworks)
@@ -69,47 +69,49 @@ let
         ];
       };
       env = callPackage ./qt-env.nix { };
-      full = callPackage ({ env, qtbase }: env "qt-full-${qtbase.version}"
-      # `with self` is ok to use here because having these spliced is unnecessary
-      ( with self;[
-        qt3d
-        qt5compat
-        qtcharts
-        qtconnectivity
-        qtdatavis3d
-        qtdeclarative
-        qtdoc
-        qtgraphs
-        qtgrpc
-        qthttpserver
-        qtimageformats
-        qtlanguageserver
-        qtlocation
-        qtlottie
-        qtmultimedia
-        qtmqtt
-        qtnetworkauth
-        qtpositioning
-        qtsensors
-        qtserialbus
-        qtserialport
-        qtshadertools
-        qtspeech
-        qtquick3d
-        qtquick3dphysics
-        qtquickeffectmaker
-        qtquicktimeline
-        qtremoteobjects
-        qtsvg
-        qtscxml
-        qttools
-        qttranslations
-        qtvirtualkeyboard
-        qtwebchannel
-        qtwebengine
-        qtwebsockets
-        qtwebview
-      ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [ qtwayland libglvnd ])) { };
+      full = callPackage
+        ({ env, qtbase }: env "qt-full-${qtbase.version}"
+          # `with self` is ok to use here because having these spliced is unnecessary
+          (with self;[
+            qt3d
+            qt5compat
+            qtcharts
+            qtconnectivity
+            qtdatavis3d
+            qtdeclarative
+            qtdoc
+            qtgraphs
+            qtgrpc
+            qthttpserver
+            qtimageformats
+            qtlanguageserver
+            qtlocation
+            qtlottie
+            qtmultimedia
+            qtmqtt
+            qtnetworkauth
+            qtpositioning
+            qtsensors
+            qtserialbus
+            qtserialport
+            qtshadertools
+            qtspeech
+            qtquick3d
+            qtquick3dphysics
+            qtquickeffectmaker
+            qtquicktimeline
+            qtremoteobjects
+            qtsvg
+            qtscxml
+            qttools
+            qttranslations
+            qtvirtualkeyboard
+            qtwebchannel
+            qtwebengine
+            qtwebsockets
+            qtwebview
+          ] ++ lib.optionals (!stdenv.isDarwin) [ qtwayland libglvnd ]))
+        { };
 
       qt3d = callPackage ./modules/qt3d.nix { };
       qt5compat = callPackage ./modules/qt5compat.nix { };
@@ -162,11 +164,14 @@ let
           GameController ImageCaptureCore LocalAuthentication
           MediaAccessibility MediaPlayer MetalKit Network OpenDirectory Quartz
           ReplayKit SecurityInterface Vision;
-        qtModule = callPackage ({ qtModule }: qtModule.override {
-          stdenv = if stdenv.hostPlatform.isDarwin
-            then overrideSDK stdenv { darwinMinVersion = "10.13"; darwinSdkVersion = "11.0"; }
-            else stdenv;
-        }) { };
+        qtModule = callPackage
+          ({ qtModule }: qtModule.override {
+            stdenv =
+              if stdenv.isDarwin
+              then overrideSDK stdenv { darwinMinVersion = "10.13"; darwinSdkVersion = "11.0"; }
+              else stdenv;
+          })
+          { };
         xcbuild = buildPackages.xcbuild.override {
           productBuildVer = "20A2408";
         };
@@ -176,21 +181,25 @@ let
         inherit (darwin.apple_sdk_11_0.frameworks) WebKit;
       };
 
-      wrapQtAppsHook = callPackage ({ makeBinaryWrapper }: makeSetupHook
-        {
-          name = "wrap-qt6-apps-hook";
-          propagatedBuildInputs = [ makeBinaryWrapper ];
-        } ./hooks/wrap-qt-apps-hook.sh) { };
+      wrapQtAppsHook = callPackage
+        ({ makeBinaryWrapper }: makeSetupHook
+          {
+            name = "wrap-qt6-apps-hook";
+            propagatedBuildInputs = [ makeBinaryWrapper ];
+          } ./hooks/wrap-qt-apps-hook.sh)
+        { };
 
-      qmake = callPackage ({ qtbase }: makeSetupHook
-        {
-          name = "qmake6-hook";
-          propagatedBuildInputs = [ qtbase.dev ];
-          substitutions = {
-            inherit debug;
-            fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh;
-          };
-        } ./hooks/qmake-hook.sh) { };
+      qmake = callPackage
+        ({ qtbase }: makeSetupHook
+          {
+            name = "qmake6-hook";
+            propagatedBuildInputs = [ qtbase.dev ];
+            substitutions = {
+              inherit debug;
+              fix_qmake_libtool = ./hooks/fix-qmake-libtool.sh;
+            };
+          } ./hooks/qmake-hook.sh)
+        { };
     } // lib.optionalAttrs config.allowAliases {
       # Convert to a throw on 03-01-2023 and backport the change.
       # Warnings show up in various cli tool outputs, throws do not.
@@ -203,12 +212,13 @@ let
     f = addPackages;
   };
 
-  bootstrapScope = baseScope.overrideScope(final: prev: {
+  bootstrapScope = baseScope.overrideScope (final: prev: {
     qtbase = prev.qtbase.override { qttranslations = null; };
     qtdeclarative = null;
   });
 
-  finalScope = baseScope.overrideScope(final: prev: {
+  finalScope = baseScope.overrideScope (final: prev: {
     qttranslations = bootstrapScope.qttranslations;
   });
-in finalScope
+in
+finalScope
diff --git a/nixpkgs/pkgs/development/libraries/qt-6/modules/qtbase.nix b/nixpkgs/pkgs/development/libraries/qt-6/modules/qtbase.nix
index 26fdeceda61f..0a16f725c477 100644
--- a/nixpkgs/pkgs/development/libraries/qt-6/modules/qtbase.nix
+++ b/nixpkgs/pkgs/development/libraries/qt-6/modules/qtbase.nix
@@ -4,6 +4,7 @@
 , patches ? [ ]
 , version
 , coreutils
+, buildPackages
 , bison
 , flex
 , gdb
@@ -79,6 +80,8 @@
 , EventKit
 , GSS
 , MetalKit
+  # mingw
+, pkgsBuildBuild
   # optional dependencies
 , cups
 , libmysqlclient
@@ -96,6 +99,7 @@
 
 let
   debugSymbols = debug || developerBuild;
+  isCrossBuild = !stdenv.buildPlatform.canExecute stdenv.hostPlatform;
 in
 stdenv.mkDerivation rec {
   pname = "qtbase";
@@ -110,7 +114,6 @@ stdenv.mkDerivation rec {
     openssl
     sqlite
     zlib
-    unixODBC
     # Text rendering
     harfbuzz
     icu
@@ -119,14 +122,16 @@ stdenv.mkDerivation rec {
     libpng
     pcre2
     pcre
-    libproxy
     zstd
-    double-conversion
     libb2
     md4c
+    double-conversion
+  ] ++ lib.optionals (!stdenv.hostPlatform.isMinGW) [
+    libproxy
     dbus
     glib
     # unixODBC drivers
+    unixODBC
     unixODBCDrivers.psql
     unixODBCDrivers.sqlite
     unixODBCDrivers.mariadb
@@ -174,11 +179,16 @@ stdenv.mkDerivation rec {
     EventKit
     GSS
     MetalKit
-  ] ++ lib.optional libGLSupported libGL;
+  ] ++ lib.optionals libGLSupported [
+    libGL
+  ] ++ lib.optionals stdenv.hostPlatform.isMinGW [
+    vulkan-headers
+    vulkan-loader
+  ];
 
-  buildInputs = [
+  buildInputs = lib.optionals (lib.meta.availableOn stdenv.hostPlatform at-spi2-core) [
     at-spi2-core
-  ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
+  ] ++ lib.optionals (lib.meta.availableOn stdenv.hostPlatform libinput) [
     libinput
   ] ++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64) [
     AppKit
@@ -186,9 +196,9 @@ stdenv.mkDerivation rec {
   ]
   ++ lib.optional withGtk3 gtk3
   ++ lib.optional developerBuild gdb
-  ++ lib.optional (cups != null) cups
-  ++ lib.optional (libmysqlclient != null) libmysqlclient
-  ++ lib.optional (postgresql != null) postgresql;
+  ++ lib.optional (cups != null && lib.meta.availableOn stdenv.hostPlatform cups) cups
+  ++ lib.optional (libmysqlclient != null && !stdenv.hostPlatform.isMinGW) libmysqlclient
+  ++ lib.optional (postgresql != null && lib.meta.availableOn stdenv.hostPlatform postgresql) postgresql;
 
   nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which cmake xmlstarlet ninja ]
     ++ lib.optionals stdenv.hostPlatform.isDarwin [ moveBuildTree ];
@@ -203,7 +213,7 @@ stdenv.mkDerivation rec {
 
   # https://bugreports.qt.io/browse/QTBUG-97568
   postPatch = ''
-    substituteInPlace src/corelib/CMakeLists.txt --replace-fail "/bin/ls" "${coreutils}/bin/ls"
+    substituteInPlace src/corelib/CMakeLists.txt --replace-fail "/bin/ls" "${buildPackages.coreutils}/bin/ls"
   '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
     substituteInPlace cmake/QtPublicAppleHelpers.cmake --replace-fail "/usr/bin/xcrun" "${xcbuild}/bin/xcrun"
   '';
@@ -232,7 +242,11 @@ stdenv.mkDerivation rec {
   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
     # error: 'path' is unavailable: introduced in macOS 10.15
     "-DQT_FEATURE_cxx17_filesystem=OFF"
-  ] ++ lib.optional (qttranslations != null) "-DINSTALL_TRANSLATIONSDIR=${qttranslations}/translations";
+  ] ++ lib.optionals isCrossBuild [
+    "-DQT_HOST_PATH=${pkgsBuildBuild.qt6.qtbase}"
+    "-DQt6HostInfo_DIR=${pkgsBuildBuild.qt6.qtbase}/lib/cmake/Qt6HostInfo"
+  ]
+  ++ lib.optional (qttranslations != null && !isCrossBuild) "-DINSTALL_TRANSLATIONSDIR=${qttranslations}/translations";
 
   env.NIX_LDFLAGS = toString (lib.optionals stdenv.hostPlatform.isDarwin [
     # Undefined symbols for architecture arm64: "___gss_c_nt_hostbased_service_oid_desc"
@@ -253,6 +267,8 @@ stdenv.mkDerivation rec {
 
   dontStrip = debugSymbols;
 
+  dontWrapQtApps = true;
+
   setupHook = ../hooks/qtbase-setup-hook.sh;
 
   meta = with lib; {
@@ -260,6 +276,6 @@ stdenv.mkDerivation rec {
     description = "A cross-platform application framework for C++";
     license = with licenses; [ fdl13Plus gpl2Plus lgpl21Plus lgpl3Plus ];
     maintainers = with maintainers; [ milahu nickcao LunNova ];
-    platforms = platforms.unix;
+    platforms = platforms.unix ++ platforms.windows;
   };
 }
diff --git a/nixpkgs/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch b/nixpkgs/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
index 22530f453536..cae39e879120 100644
--- a/nixpkgs/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
+++ b/nixpkgs/pkgs/development/libraries/qt-6/patches/0011-qtbase-derive-plugin-load-path-from-PATH.patch
@@ -1,19 +1,19 @@
-From f0c4d3860b75cb064d066045907622d536044096 Mon Sep 17 00:00:00 2001
+From 6f0e6fe1e13ca5844a93d3b97111b7ece7e60f0f Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Milan=20P=C3=A4ssler?= <me@pbb.lc>
 Date: Sun, 10 May 2020 12:47:28 +0200
 Subject: [PATCH 11/11] qtbase: derive plugin load path from PATH
 
 ---
- src/corelib/kernel/qcoreapplication.cpp | 10 ++++++++++
- 1 file changed, 10 insertions(+)
+ src/corelib/kernel/qcoreapplication.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
 
 diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
-index a80efbb5622..8cf9e85da43 100644
+index a80efbb5622..0d41dabeed3 100644
 --- a/src/corelib/kernel/qcoreapplication.cpp
 +++ b/src/corelib/kernel/qcoreapplication.cpp
-@@ -2991,6 +2991,16 @@ QStringList QCoreApplication::libraryPathsLocked()
-         QStringList *app_libpaths = new QStringList;
-         coreappdata()->app_libpaths.reset(app_libpaths);
+@@ -3032,6 +3032,15 @@ QStringList QCoreApplication::libraryPathsLocked()
+                 app_libpaths->append(installPathPlugins);
+         }
  
 +        // Add library paths derived from PATH
 +        const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(QStringLiteral(":"));
@@ -24,10 +24,9 @@ index a80efbb5622..8cf9e85da43 100644
 +            }
 +        }
 +
-+
-         auto setPathsFromEnv = [&](QString libPathEnv) {
-             if (!libPathEnv.isEmpty()) {
-                 QStringList paths = libPathEnv.split(QDir::listSeparator(), Qt::SkipEmptyParts);
+         // If QCoreApplication is not yet instantiated,
+         // make sure we add the application path when we construct the QCoreApplication
+         if (self) self->d_func()->appendApplicationPathToLibraryPaths();
 -- 
-2.42.0
+2.43.1
 
diff --git a/nixpkgs/pkgs/development/libraries/science/math/libamplsolver/default.nix b/nixpkgs/pkgs/development/libraries/science/math/libamplsolver/default.nix
index c0bc89b492ea..a40091bac8b5 100644
--- a/nixpkgs/pkgs/development/libraries/science/math/libamplsolver/default.nix
+++ b/nixpkgs/pkgs/development/libraries/science/math/libamplsolver/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   patches = [
     (substitute {
       src = ./libamplsolver-sharedlib.patch;
-      replacements = [ "--replace" "@sharedlibext@" "${stdenv.hostPlatform.extensions.sharedLibrary}" ];
+      substitutions = [ "--replace" "@sharedlibext@" "${stdenv.hostPlatform.extensions.sharedLibrary}" ];
     })
   ];
 
diff --git a/nixpkgs/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix b/nixpkgs/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
index 648e05376529..1995068ebd92 100644
--- a/nixpkgs/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
+++ b/nixpkgs/pkgs/development/libraries/science/math/suitesparse-graphblas/default.nix
@@ -7,7 +7,7 @@
 
 stdenv.mkDerivation rec {
   pname = "suitesparse-graphblas";
-  version = "9.0.1";
+  version = "9.0.2";
 
   outputs = [ "out" "dev" ];
 
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
     owner = "DrTimothyAldenDavis";
     repo = "GraphBLAS";
     rev = "v${version}";
-    hash = "sha256-eNd6jlpW3KiRvOCKvNP5ttpgjPPXt2M2vLhk1Zn4gTE=";
+    hash = "sha256-wPg5A1lwtRPDO5gPbllEFkRJFRIhkqqaVd4CBdPavKE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/libraries/signond/default.nix b/nixpkgs/pkgs/development/libraries/signond/default.nix
index ea57e872ab29..5e9e53855313 100644
--- a/nixpkgs/pkgs/development/libraries/signond/default.nix
+++ b/nixpkgs/pkgs/development/libraries/signond/default.nix
@@ -1,14 +1,15 @@
 { stdenv, lib, fetchFromGitLab, qmake, qtbase, wrapQtAppsHook, doxygen }:
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   pname = "signond";
-  version = "8.61";
+  version = "8.61-unstable-2023-11-24";
 
+  # pinned to fork with Qt6 support
   src = fetchFromGitLab {
-    owner = "accounts-sso";
-    repo = pname;
-    rev = "VERSION_${version}";
-    sha256 = "sha256-d7JZmGpjIvSN9l1nvKbBZjF0OR5L5frPTGHF/pNEqHE=";
+    owner = "nicolasfella";
+    repo = "signond";
+    rev = "c8ad98249af541514ff7a81634d3295e712f1a39";
+    hash = "sha256-0FcSVF6cPuFEU9h7JIbanoosW/B4rQhFPOq7iBaOdKw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/libraries/zimlib/default.nix b/nixpkgs/pkgs/development/libraries/zimlib/default.nix
index 40f8e670b526..fdcad63a279f 100644
--- a/nixpkgs/pkgs/development/libraries/zimlib/default.nix
+++ b/nixpkgs/pkgs/development/libraries/zimlib/default.nix
@@ -11,19 +11,19 @@
 
 stdenv.mkDerivation rec {
   pname = "zimlib";
-  version = "8.2.0";
+  version = "9.1.0";
 
   src = fetchFromGitHub {
     owner = "openzim";
     repo = "libzim";
     rev = version;
-    sha256 = "sha256-ab7UUF+I0/xaGChvdjylEQRHLOjmtg/wk+/JEGehGLE=";
+    hash = "sha256-yWnW/+CaQwbemrNLzvQpXw5yvW2Q6LtwDgvA58+fVUs=";
   };
 
   testData = fetchzip rec {
-    passthru.version = "0.4";
+    passthru.version = "0.5";
     url = "https://github.com/openzim/zim-testing-suite/releases/download/v${passthru.version}/zim-testing-suite-${passthru.version}.tar.gz";
-    sha256 = "sha256-2eJqmvs/GrvOD/pq8dTubaiO9ZpW2WqTNQByv354Z0w=";
+    hash = "sha256-hCIFT1WPDjhoZMlsR2cFbt4NhmIJ4DX1H/tDCIv4NjQ=";
   };
 
   nativeBuildInputs = [
@@ -47,6 +47,12 @@ stdenv.mkDerivation rec {
 
   mesonFlags = [  "-Dtest_data_dir=${testData}" ];
 
+  env.NIX_CFLAGS_COMPILE = toString (
+    lib.optionals (stdenv.cc.isGNU) [
+      "-Wno-error=mismatched-new-delete"
+    ]
+  );
+
   nativeCheckInputs = [
     gtest
   ];
diff --git a/nixpkgs/pkgs/development/misc/brev-cli/default.nix b/nixpkgs/pkgs/development/misc/brev-cli/default.nix
index cd2b854d7955..05ef47ee2794 100644
--- a/nixpkgs/pkgs/development/misc/brev-cli/default.nix
+++ b/nixpkgs/pkgs/development/misc/brev-cli/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "brev-cli";
-  version = "0.6.276";
+  version = "0.6.277";
 
   src = fetchFromGitHub {
     owner = "brevdev";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-IAzsoKPFmhyBgd3jD6qEBav5ynQYrn8/cl6epsjrVKg=";
+    sha256 = "sha256-s80veDxN0GfHKOwDhxx1ArZXqk8OPSl+d/Ruxj0oLJA=";
   };
 
   vendorHash = "sha256-IR/tgqh8rS4uN5jSOcopCutbHCKHSU9icUfRhOgu4t8=";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/async.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/async.nix
index 328cf37986d2..22755be193df 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/async.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/async.nix
@@ -4,7 +4,7 @@ buildDunePackage {
   pname = "caqti-async";
   inherit (caqti) version src;
 
-  duneVersion = "3";
+  minimalOCamlVersion = "4.14";
 
   propagatedBuildInputs = [ async_kernel async_unix caqti core_kernel ];
 
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/default.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/default.nix
index 68eb2657b324..218f4cf3c120 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/default.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/default.nix
@@ -1,25 +1,34 @@
-{ lib, fetchurl, buildDunePackage, ocaml
-, cppo, logs, ptime, uri, bigstringaf
-, re, cmdliner, alcotest
+{ lib
+, fetchurl
+, buildDunePackage
+, angstrom
+, bigstringaf
+, domain-name
+, dune-site
+, ipaddr
+, logs
+, lwt-dllist
+, mtime
+, ptime
+, uri
 }:
 
 buildDunePackage rec {
   pname = "caqti";
-  version = "1.9.1";
+  version = "2.1.1";
 
-  minimalOCamlVersion = "4.04";
-  duneVersion = "3";
+  minimalOCamlVersion = "4.08";
 
   src = fetchurl {
     url = "https://github.com/paurkedal/ocaml-caqti/releases/download/v${version}/caqti-v${version}.tbz";
-    sha256 = "sha256-PQBgJBNx3IcE6/vyNIf26a2xStU22LBhff8eM6UPaJ4=";
+    hash = "sha256-SDpTX0HiZBkX/BgyzkrRX/w/ToKDsbMBiiYXNJWDCQo=";
   };
 
-  nativeBuildInputs = [ cppo ];
-  propagatedBuildInputs = [ logs ptime uri bigstringaf ];
-  checkInputs = [ re cmdliner alcotest ];
+  buildInputs = [ dune-site ];
+  propagatedBuildInputs = [ angstrom bigstringaf domain-name ipaddr logs lwt-dllist mtime ptime uri ];
 
-  doCheck = lib.versionAtLeast ocaml.version "4.08";
+  # Checks depend on caqti-driver-sqlite3 (circural dependency)
+  doCheck = false;
 
   meta = {
     description = "Unified interface to relational database libraries";
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-mariadb.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-mariadb.nix
index 859402d83ea1..bff515eff381 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-mariadb.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-mariadb.nix
@@ -6,8 +6,6 @@ buildDunePackage {
 
   propagatedBuildInputs = [ caqti mariadb ];
 
-  duneVersion = "3";
-
   meta = caqti.meta // {
     description = "MariaDB driver for Caqti using C bindings";
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-postgresql.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-postgresql.nix
index d48ae1186bf7..f33e38fab8df 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-postgresql.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-postgresql.nix
@@ -4,8 +4,6 @@ buildDunePackage {
   pname = "caqti-driver-postgresql";
   inherit (caqti) version src;
 
-  duneVersion = "3";
-
   propagatedBuildInputs = [ caqti postgresql ];
 
   meta = caqti.meta // {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-sqlite3.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-sqlite3.nix
index d6c230d9dbde..ddac07f7fcfb 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-sqlite3.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/driver-sqlite3.nix
@@ -1,13 +1,15 @@
-{ lib, buildDunePackage, caqti, ocaml_sqlite3 }:
+{ lib, buildDunePackage, caqti, ocaml_sqlite3, alcotest }:
 
 buildDunePackage {
   pname = "caqti-driver-sqlite3";
   inherit (caqti) version src;
 
-  duneVersion = "3";
-
   propagatedBuildInputs = [ caqti ocaml_sqlite3 ];
 
+  checkInputs = [ alcotest ];
+
+  doCheck = true;
+
   meta = caqti.meta // {
     description = "Sqlite3 driver for Caqti using C bindings";
   };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/dynload.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/dynload.nix
index dfd52e24dd1e..3dd94fc0e310 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/dynload.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/dynload.nix
@@ -4,8 +4,6 @@ buildDunePackage {
   pname = "caqti-dynload";
   inherit (caqti) version src;
 
-  duneVersion = "3";
-
   propagatedBuildInputs = [ caqti findlib ];
 
   meta = caqti.meta // {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/lwt.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/lwt.nix
index 66e5a7ce293d..d06421136280 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/lwt.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/lwt.nix
@@ -4,8 +4,6 @@ buildDunePackage {
   pname = "caqti-lwt";
   inherit (caqti) version src;
 
-  duneVersion = "3";
-
   propagatedBuildInputs = [ caqti logs lwt ];
 
   meta = caqti.meta // { description = "Lwt support for Caqti"; };
diff --git a/nixpkgs/pkgs/development/ocaml-modules/caqti/type-calendar.nix b/nixpkgs/pkgs/development/ocaml-modules/caqti/type-calendar.nix
index db4d5983aedf..26b0887f20e8 100644
--- a/nixpkgs/pkgs/development/ocaml-modules/caqti/type-calendar.nix
+++ b/nixpkgs/pkgs/development/ocaml-modules/caqti/type-calendar.nix
@@ -4,8 +4,6 @@ buildDunePackage {
   pname = "caqti-type-calendar";
   inherit (caqti) src version;
 
-  duneVersion = "3";
-
   propagatedBuildInputs = [ calendar caqti ];
 
   meta = caqti.meta // {
diff --git a/nixpkgs/pkgs/development/ocaml-modules/xxhash/default.nix b/nixpkgs/pkgs/development/ocaml-modules/xxhash/default.nix
new file mode 100644
index 000000000000..fe212dd0eb70
--- /dev/null
+++ b/nixpkgs/pkgs/development/ocaml-modules/xxhash/default.nix
@@ -0,0 +1,44 @@
+{ lib
+, fetchFromGitHub
+, buildDunePackage
+, xxHash
+, ctypes
+, dune-configurator
+, ppx_expect
+}:
+
+buildDunePackage rec {
+  pname = "xxhash";
+  version = "0.2";
+
+  minimalOCamlVersion = "4.08";
+
+  src = fetchFromGitHub {
+    owner = "314eter";
+    repo = "ocaml-xxhash";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-0+ac5EWV9DCVMT4wOcXC95GVEwsUIZzFn2laSzmK6jE=";
+  };
+
+  buildInputs = [
+    dune-configurator
+  ];
+
+  propagatedBuildInputs = [
+    ctypes
+    xxHash
+  ];
+
+  doCheck = true;
+
+  checkInputs = [
+    ppx_expect
+  ];
+
+  meta = {
+    homepage = "https://github.com/314eter/ocaml-xxhash";
+    description = "Bindings for xxHash, an extremely fast hash algorithm";
+    license = with lib.licenses; [ mit ];
+    maintainers = with lib.maintainers; [ toastal ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/php-packages/deployer/default.nix b/nixpkgs/pkgs/development/php-packages/deployer/default.nix
index bd15bb7db856..44a2e97f7ab7 100644
--- a/nixpkgs/pkgs/development/php-packages/deployer/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/deployer/default.nix
@@ -1,36 +1,26 @@
-{ mkDerivation, fetchurl, makeWrapper, installShellFiles, lib, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
-mkDerivation rec {
+php.buildComposerProject (finalAttrs: {
   pname = "deployer";
-  version = "6.8.0";
+  version = "7.3.3";
 
-  src = fetchurl {
-    url = "https://deployer.org/releases/v${version}/${pname}.phar";
-    sha256 = "09mxwfa7yszsiljbkxpsd4sghqngl08cn18v4g1fbsxp3ib3kxi5";
+  src = fetchFromGitHub {
+    owner = "deployphp";
+    repo = "deployer";
+    rev = "v${finalAttrs.version}^";
+    hash = "sha256-zvK7NwIACAhWN/7D8lVY1Bv8x6xKAp/L826SovQhDYg=";
   };
 
-  dontUnpack = true;
+  vendorHash = "sha256-BDq2uryNWC31AEAEZJL9zGaAPbhXZ6hmfpsnr4wlixE=";
 
-  nativeBuildInputs = [ makeWrapper installShellFiles ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/deployer/deployer.phar
-    makeWrapper ${php}/bin/php $out/bin/dep --add-flags "$out/libexec/deployer/deployer.phar"
-
-    # fish support currently broken: https://github.com/deployphp/deployer/issues/2527
-    installShellCompletion --cmd dep \
-      --bash <($out/bin/dep autocomplete --install) \
-      --zsh <($out/bin/dep autocomplete --install)
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    description = "A deployment tool for PHP";
-    license = licenses.mit;
+  meta = {
+    description = "The PHP deployment tool with support for popular frameworks out of the box";
     homepage = "https://deployer.org/";
+    license = lib.licenses.mit;
     mainProgram = "dep";
-    maintainers = with maintainers; teams.php.members;
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/phan/default.nix b/nixpkgs/pkgs/development/php-packages/phan/default.nix
index 82beda4ad00b..e390389eef22 100644
--- a/nixpkgs/pkgs/development/php-packages/phan/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/phan/default.nix
@@ -1,42 +1,30 @@
 { lib
+, fetchFromGitHub
 , php
-, mkDerivation
-, fetchurl
-, makeWrapper
 }:
-let
-  php' = php.withExtensions ({ enabled, all }: enabled ++ [ all.ast ]);
-in
-mkDerivation rec {
+
+(php.withExtensions({ enabled, all }: enabled ++ (with all; [ ast ]))).buildComposerProject (finalAttrs: {
   pname = "phan";
   version = "5.4.3";
 
-  src = fetchurl {
-    url = "https://github.com/phan/phan/releases/download/${version}/phan.phar";
-    hash = "sha256-wZU6YIlH0q18iD044y6Z5gSscBn7cI0AwRwZgT/YhOo=";
+  src = fetchFromGitHub {
+    owner = "phan";
+    repo = "phan";
+    rev = finalAttrs.version;
+    hash = "sha256-O0dtnDsz6X99B99VbRQf3Wr/xJfsJqd+2l5Z5iWxHyU=";
   };
 
-  dontUnpack = true;
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phan/phan.phar
-    makeWrapper ${php'}/bin/php $out/bin/phan \
-      --add-flags "$out/libexec/phan/phan.phar"
-    runHook postInstall
-  '';
+  vendorHash = "sha256-yE85MBseJa0VGV5EbjT0te4QT3697YvtumGkMMfZtxI=";
 
-  meta = with lib; {
+  meta = {
     description = "Static analyzer for PHP";
+    homepage = "https://github.com/phan/phan";
+    license = lib.licenses.mit;
     longDescription = ''
       Phan is a static analyzer for PHP. Phan prefers to avoid false-positives
       and attempts to prove incorrectness rather than correctness.
     '';
-    license = licenses.mit;
-    homepage = "https://github.com/phan/phan";
-    maintainers = [ maintainers.apeschar ];
+    mainProgram = "phan";
+    maintainers = with lib.maintainers; [ apeschar ] ++ lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/phing/composer.lock b/nixpkgs/pkgs/development/php-packages/phing/composer.lock
new file mode 100644
index 000000000000..6192f6283f9a
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phing/composer.lock
@@ -0,0 +1,7486 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "7e86eda0b257a035484cd3adbe76b555",
+    "packages": [
+        {
+            "name": "psr/container",
+            "version": "1.1.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.4.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/1.1.2"
+            },
+            "time": "2021-11-05T16:50:12+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "3.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "c6c1022351a901512170118436c764e473f6de8c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+                "reference": "c6c1022351a901512170118436c764e473f6de8c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/version/issues",
+                "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:39:44+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931",
+                "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php73": "^1.9",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/service-contracts": "^1.1|^2|^3",
+                "symfony/string": "^5.1|^6.0"
+            },
+            "conflict": {
+                "psr/log": ">=3",
+                "symfony/dependency-injection": "<4.4",
+                "symfony/dotenv": "<5.1",
+                "symfony/event-dispatcher": "<4.4",
+                "symfony/lock": "<4.4",
+                "symfony/process": "<4.4"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0|2.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2",
+                "symfony/config": "^4.4|^5.0|^6.0",
+                "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+                "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+                "symfony/lock": "^4.4|^5.0|^6.0",
+                "symfony/process": "^4.4|^5.0|^6.0",
+                "symfony/var-dumper": "^4.4|^5.0|^6.0"
+            },
+            "suggest": {
+                "psr/log": "For using the console logger",
+                "symfony/event-dispatcher": "",
+                "symfony/lock": "",
+                "symfony/process": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Eases the creation of beautiful and testable command line interfaces",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "cli",
+                "command-line",
+                "console",
+                "terminal"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/console/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:28:09+00:00"
+        },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:53:40+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-grapheme",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's grapheme_* functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "grapheme",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's Normalizer class and related functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "intl",
+                "normalizer",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php73",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php73.git",
+                "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
+                "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php73\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+                "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.1",
+                "symfony/deprecation-contracts": "^2.1|^3"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2"
+            },
+            "suggest": {
+                "symfony/service-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/service-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-05-30T19:17:29+00:00"
+        },
+        {
+            "name": "symfony/string",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/string.git",
+                "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2",
+                "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-intl-grapheme": "~1.0",
+                "symfony/polyfill-intl-normalizer": "~1.0",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/polyfill-php80": "~1.15"
+            },
+            "conflict": {
+                "symfony/translation-contracts": ">=3.0"
+            },
+            "require-dev": {
+                "symfony/error-handler": "^4.4|^5.0|^6.0",
+                "symfony/http-client": "^4.4|^5.0|^6.0",
+                "symfony/translation-contracts": "^1.1|^2",
+                "symfony/var-exporter": "^4.4|^5.0|^6.0"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\String\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "grapheme",
+                "i18n",
+                "string",
+                "unicode",
+                "utf-8",
+                "utf8"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/string/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4",
+                "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "symfony/console": "<5.3"
+            },
+            "require-dev": {
+                "symfony/console": "^5.3|^6.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "bin": [
+                "Resources/bin/yaml-lint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Loads and dumps YAML files",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/yaml/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "aws/aws-crt-php",
+            "version": "v1.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/awslabs/aws-crt-php.git",
+                "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2",
+                "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.5"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5",
+                "yoast/phpunit-polyfills": "^1.0"
+            },
+            "suggest": {
+                "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality."
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "AWS SDK Common Runtime Team",
+                    "email": "aws-sdk-common-runtime@amazon.com"
+                }
+            ],
+            "description": "AWS Common Runtime for PHP",
+            "homepage": "https://github.com/awslabs/aws-crt-php",
+            "keywords": [
+                "amazon",
+                "aws",
+                "crt",
+                "sdk"
+            ],
+            "support": {
+                "issues": "https://github.com/awslabs/aws-crt-php/issues",
+                "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4"
+            },
+            "time": "2023-11-08T00:42:13+00:00"
+        },
+        {
+            "name": "aws/aws-sdk-php",
+            "version": "3.300.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/aws/aws-sdk-php.git",
+                "reference": "67a0c22a70bdcc99ca41028b78be3d5496481c14"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/67a0c22a70bdcc99ca41028b78be3d5496481c14",
+                "reference": "67a0c22a70bdcc99ca41028b78be3d5496481c14",
+                "shasum": ""
+            },
+            "require": {
+                "aws/aws-crt-php": "^1.2.3",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-simplexml": "*",
+                "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5",
+                "guzzlehttp/promises": "^1.4.0 || ^2.0",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+                "mtdowling/jmespath.php": "^2.6",
+                "php": ">=7.2.5",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "require-dev": {
+                "andrewsville/php-token-reflection": "^1.4",
+                "aws/aws-php-sns-message-validator": "~1.0",
+                "behat/behat": "~3.0",
+                "composer/composer": "^1.10.22",
+                "dms/phpunit-arraysubset-asserts": "^0.4.0",
+                "doctrine/cache": "~1.4",
+                "ext-dom": "*",
+                "ext-openssl": "*",
+                "ext-pcntl": "*",
+                "ext-sockets": "*",
+                "nette/neon": "^2.3",
+                "paragonie/random_compat": ">= 2",
+                "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5",
+                "psr/cache": "^1.0",
+                "psr/simple-cache": "^1.0",
+                "sebastian/comparator": "^1.2.3 || ^4.0",
+                "yoast/phpunit-polyfills": "^1.0"
+            },
+            "suggest": {
+                "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications",
+                "doctrine/cache": "To use the DoctrineCacheAdapter",
+                "ext-curl": "To send requests using cURL",
+                "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages",
+                "ext-sockets": "To use client-side monitoring"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions.php"
+                ],
+                "psr-4": {
+                    "Aws\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Amazon Web Services",
+                    "homepage": "http://aws.amazon.com"
+                }
+            ],
+            "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project",
+            "homepage": "http://aws.amazon.com/sdkforphp",
+            "keywords": [
+                "amazon",
+                "aws",
+                "cloud",
+                "dynamodb",
+                "ec2",
+                "glacier",
+                "s3",
+                "sdk"
+            ],
+            "support": {
+                "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
+                "issues": "https://github.com/aws/aws-sdk-php/issues",
+                "source": "https://github.com/aws/aws-sdk-php/tree/3.300.0"
+            },
+            "time": "2024-02-19T19:08:33+00:00"
+        },
+        {
+            "name": "composer/pcre",
+            "version": "3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/pcre.git",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.4 || ^8.0"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.3",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Pcre\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+            "keywords": [
+                "PCRE",
+                "preg",
+                "regex",
+                "regular expression"
+            ],
+            "support": {
+                "issues": "https://github.com/composer/pcre/issues",
+                "source": "https://github.com/composer/pcre/tree/3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-11T07:11:09+00:00"
+        },
+        {
+            "name": "composer/semver",
+            "version": "3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/semver.git",
+                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
+                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.2 || ^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.4",
+                "symfony/phpunit-bridge": "^4.2 || ^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Semver\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
+                }
+            ],
+            "description": "Semver library that offers utilities, version constraint parsing and validation.",
+            "keywords": [
+                "semantic",
+                "semver",
+                "validation",
+                "versioning"
+            ],
+            "support": {
+                "irc": "ircs://irc.libera.chat:6697/composer",
+                "issues": "https://github.com/composer/semver/issues",
+                "source": "https://github.com/composer/semver/tree/3.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-08-31T09:50:34+00:00"
+        },
+        {
+            "name": "composer/xdebug-handler",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/xdebug-handler.git",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+                "shasum": ""
+            },
+            "require": {
+                "composer/pcre": "^1 || ^2 || ^3",
+                "php": "^7.2.5 || ^8.0",
+                "psr/log": "^1 || ^2 || ^3"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.0",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^6.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Composer\\XdebugHandler\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "John Stevenson",
+                    "email": "john-stevenson@blueyonder.co.uk"
+                }
+            ],
+            "description": "Restarts a process without Xdebug.",
+            "keywords": [
+                "Xdebug",
+                "performance"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.org/composer",
+                "issues": "https://github.com/composer/xdebug-handler/issues",
+                "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-02-25T21:32:43+00:00"
+        },
+        {
+            "name": "cweagans/composer-patches",
+            "version": "1.7.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/cweagans/composer-patches.git",
+                "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db",
+                "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0 || ^2.0",
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "composer/composer": "~1.0 || ~2.0",
+                "phpunit/phpunit": "~4.6"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "cweagans\\Composer\\Patches"
+            },
+            "autoload": {
+                "psr-4": {
+                    "cweagans\\Composer\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Cameron Eagans",
+                    "email": "me@cweagans.net"
+                }
+            ],
+            "description": "Provides a way to patch Composer packages.",
+            "support": {
+                "issues": "https://github.com/cweagans/composer-patches/issues",
+                "source": "https://github.com/cweagans/composer-patches/tree/1.7.3"
+            },
+            "time": "2022-12-20T22:53:13+00:00"
+        },
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9 || ^11",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.16 || ^1",
+                "phpstan/phpstan": "^1.4",
+                "phpstan/phpstan-phpunit": "^1",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.30 || ^5.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "https://ocramius.github.io/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/instantiator/issues",
+                "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-12-30T00:15:36+00:00"
+        },
+        {
+            "name": "ergebnis/composer-normalize",
+            "version": "2.42.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/composer-normalize.git",
+                "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/02cf2b69ad2a74c6f11a8c3f5f054b8f949df910",
+                "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^2.0.0",
+                "ergebnis/json": "^1.2.0",
+                "ergebnis/json-normalizer": "^4.5.0",
+                "ergebnis/json-printer": "^3.5.0",
+                "ext-json": "*",
+                "justinrainbow/json-schema": "^5.2.12",
+                "localheinz/diff": "^1.1.1",
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "composer/composer": "^2.6.6",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.2",
+                "symfony/filesystem": "^5.4.25",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin",
+                "composer-normalize": {
+                    "indent-size": 2,
+                    "indent-style": "space"
+                },
+                "plugin-optional": true
+            },
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Composer\\Normalize\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides a composer plugin for normalizing composer.json.",
+            "homepage": "https://github.com/ergebnis/composer-normalize",
+            "keywords": [
+                "composer",
+                "normalize",
+                "normalizer",
+                "plugin"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/composer-normalize/issues",
+                "security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/composer-normalize"
+            },
+            "time": "2024-01-30T11:54:02+00:00"
+        },
+        {
+            "name": "ergebnis/json",
+            "version": "1.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/json.git",
+                "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/json/zipball/a457f25a5ba7ea11fc94f84d53678c5211abfce0",
+                "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "ergebnis/data-provider": "^3.2.0",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.2",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "type": "library",
+            "extra": {
+                "composer-normalize": {
+                    "indent-size": 2,
+                    "indent-style": "space"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Json\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides a Json value object for representing a valid JSON string.",
+            "homepage": "https://github.com/ergebnis/json",
+            "keywords": [
+                "json"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/json/issues",
+                "security": "https://github.com/ergebnis/json/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/json"
+            },
+            "time": "2024-01-29T15:09:24+00:00"
+        },
+        {
+            "name": "ergebnis/json-normalizer",
+            "version": "4.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/json-normalizer.git",
+                "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/f0ee9e70739f121b27fac8b743e4a52b23de2152",
+                "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152",
+                "shasum": ""
+            },
+            "require": {
+                "ergebnis/json": "^1.2.0",
+                "ergebnis/json-pointer": "^3.4.0",
+                "ergebnis/json-printer": "^3.5.0",
+                "ergebnis/json-schema-validator": "^4.2.0",
+                "ext-json": "*",
+                "justinrainbow/json-schema": "^5.2.12",
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "composer/semver": "^3.4.0",
+                "ergebnis/data-provider": "^3.2.0",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.4",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "suggest": {
+                "composer/semver": "If you want to use ComposerJsonNormalizer or VersionConstraintNormalizer"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Json\\Normalizer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+            "homepage": "https://github.com/ergebnis/json-normalizer",
+            "keywords": [
+                "json",
+                "normalizer"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/json-normalizer/issues",
+                "security": "https://github.com/ergebnis/json-normalizer/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/json-normalizer"
+            },
+            "time": "2024-01-30T09:10:15+00:00"
+        },
+        {
+            "name": "ergebnis/json-pointer",
+            "version": "3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/json-pointer.git",
+                "reference": "b654757d873050622c2166f55ab25d04685261c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/b654757d873050622c2166f55ab25d04685261c5",
+                "reference": "b654757d873050622c2166f55ab25d04685261c5",
+                "shasum": ""
+            },
+            "require": {
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "ergebnis/data-provider": "^3.2.0",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.2",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "type": "library",
+            "extra": {
+                "composer-normalize": {
+                    "indent-size": 2,
+                    "indent-style": "space"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Json\\Pointer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides an abstraction of a JSON pointer.",
+            "homepage": "https://github.com/ergebnis/json-pointer",
+            "keywords": [
+                "RFC6901",
+                "json",
+                "pointer"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/json-pointer/issues",
+                "security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/json-pointer"
+            },
+            "time": "2024-01-29T16:37:15+00:00"
+        },
+        {
+            "name": "ergebnis/json-printer",
+            "version": "3.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/json-printer.git",
+                "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/549e16fe6de34b8c3aee7b421be12caa552f3ced",
+                "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-mbstring": "*",
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "ergebnis/data-provider": "^3.2.0",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.2",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Json\\Printer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides a JSON printer, allowing for flexible indentation.",
+            "homepage": "https://github.com/ergebnis/json-printer",
+            "keywords": [
+                "formatter",
+                "json",
+                "printer"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/json-printer/issues",
+                "security": "https://github.com/ergebnis/json-printer/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/json-printer"
+            },
+            "time": "2024-01-29T15:33:37+00:00"
+        },
+        {
+            "name": "ergebnis/json-schema-validator",
+            "version": "4.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ergebnis/json-schema-validator.git",
+                "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef",
+                "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef",
+                "shasum": ""
+            },
+            "require": {
+                "ergebnis/json": "^1.2.0",
+                "ergebnis/json-pointer": "^3.4.0",
+                "ext-json": "*",
+                "justinrainbow/json-schema": "^5.2.12",
+                "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0"
+            },
+            "require-dev": {
+                "ergebnis/data-provider": "^3.2.0",
+                "ergebnis/license": "^2.4.0",
+                "ergebnis/php-cs-fixer-config": "^6.20.0",
+                "ergebnis/phpunit-slow-test-detector": "^2.9.0",
+                "fakerphp/faker": "^1.23.1",
+                "infection/infection": "~0.26.6",
+                "phpunit/phpunit": "^9.6.16",
+                "psalm/plugin-phpunit": "~0.18.4",
+                "rector/rector": "~0.19.2",
+                "vimeo/psalm": "^5.20.0"
+            },
+            "type": "library",
+            "extra": {
+                "composer-normalize": {
+                    "indent-size": 2,
+                    "indent-style": "space"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Ergebnis\\Json\\SchemaValidator\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Andreas Möller",
+                    "email": "am@localheinz.com",
+                    "homepage": "https://localheinz.com"
+                }
+            ],
+            "description": "Provides a JSON schema validator, building on top of justinrainbow/json-schema.",
+            "homepage": "https://github.com/ergebnis/json-schema-validator",
+            "keywords": [
+                "json",
+                "schema",
+                "validator"
+            ],
+            "support": {
+                "issues": "https://github.com/ergebnis/json-schema-validator/issues",
+                "security": "https://github.com/ergebnis/json-schema-validator/blob/main/.github/SECURITY.md",
+                "source": "https://github.com/ergebnis/json-schema-validator"
+            },
+            "time": "2024-01-29T16:50:15+00:00"
+        },
+        {
+            "name": "friendsofphp/php-cs-fixer",
+            "version": "v3.49.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
+                "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8742f7aa6f72a399688b65e4f58992c2d4681fc2",
+                "reference": "8742f7aa6f72a399688b65e4f58992c2d4681fc2",
+                "shasum": ""
+            },
+            "require": {
+                "composer/semver": "^3.4",
+                "composer/xdebug-handler": "^3.0.3",
+                "ext-filter": "*",
+                "ext-json": "*",
+                "ext-tokenizer": "*",
+                "php": "^7.4 || ^8.0",
+                "sebastian/diff": "^4.0 || ^5.0",
+                "symfony/console": "^5.4 || ^6.0 || ^7.0",
+                "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
+                "symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
+                "symfony/finder": "^5.4 || ^6.0 || ^7.0",
+                "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0",
+                "symfony/polyfill-mbstring": "^1.28",
+                "symfony/polyfill-php80": "^1.28",
+                "symfony/polyfill-php81": "^1.28",
+                "symfony/process": "^5.4 || ^6.0 || ^7.0",
+                "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0"
+            },
+            "require-dev": {
+                "facile-it/paraunit": "^1.3 || ^2.0",
+                "justinrainbow/json-schema": "^5.2",
+                "keradus/cli-executor": "^2.1",
+                "mikey179/vfsstream": "^1.6.11",
+                "php-coveralls/php-coveralls": "^2.7",
+                "php-cs-fixer/accessible-object": "^1.1",
+                "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4",
+                "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4",
+                "phpunit/phpunit": "^9.6 || ^10.5.5",
+                "symfony/yaml": "^5.4 || ^6.0 || ^7.0"
+            },
+            "suggest": {
+                "ext-dom": "For handling output formats in XML",
+                "ext-mbstring": "For handling non-UTF8 characters."
+            },
+            "bin": [
+                "php-cs-fixer"
+            ],
+            "type": "application",
+            "autoload": {
+                "psr-4": {
+                    "PhpCsFixer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                }
+            ],
+            "description": "A tool to automatically fix PHP code style",
+            "keywords": [
+                "Static code analysis",
+                "fixer",
+                "standards",
+                "static analysis"
+            ],
+            "support": {
+                "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
+                "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.49.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/keradus",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-02-02T00:41:40+00:00"
+        },
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "7.8.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
+                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "ext-curl": "*",
+                "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
+                "php-http/message-factory": "^1.1",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
+            },
+            "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+                "psr/log": "Required for using the Log middleware"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Jeremy Lindblom",
+                    "email": "jeremeamia@gmail.com",
+                    "homepage": "https://github.com/jeremeamia"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "psr-18",
+                "psr-7",
+                "rest",
+                "web service"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:35:24+00:00"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
+                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/2.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:19:20+00:00"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "2.6.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
+                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-factory": "^1.0",
+                "psr/http-message": "^1.1 || ^2.0",
+                "ralouphie/getallheaders": "^3.0"
+            },
+            "provide": {
+                "psr/http-factory-implementation": "1.0",
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "http-interop/http-factory-tests": "^0.9",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+            },
+            "suggest": {
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://sagikazarmark.hu"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/2.6.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:05:35+00:00"
+        },
+        {
+            "name": "jawira/plantuml-client",
+            "version": "v1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/jawira/plantuml-client.git",
+                "reference": "28ca92b4e0825bd7f3a82fed10c7f3dbe0657fd5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/jawira/plantuml-client/zipball/28ca92b4e0825bd7f3a82fed10c7f3dbe0657fd5",
+                "reference": "28ca92b4e0825bd7f3a82fed10c7f3dbe0657fd5",
+                "shasum": ""
+            },
+            "require": {
+                "jawira/plantuml-encoding": "^1.0",
+                "php": ">=7.4"
+            },
+            "require-dev": {
+                "ergebnis/composer-normalize": "^2.13",
+                "ext-fileinfo": "*",
+                "jawira/skeleton": "^2.16",
+                "phpstan/phpstan": "^1.8",
+                "phpunit/phpunit": "^9.5"
+            },
+            "suggest": {
+                "pds/skeleton": "Standard PHP package skeleton."
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Jawira\\PlantUmlClient\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jawira Portugal",
+                    "email": "dev@tugal.be"
+                }
+            ],
+            "description": "Convert PlantUML diagrams into images.",
+            "keywords": [
+                "diagram",
+                "image",
+                "plantuml",
+                "uml"
+            ],
+            "support": {
+                "issues": "https://github.com/jawira/plantuml-client/issues",
+                "source": "https://github.com/jawira/plantuml-client/tree/v1.0.3"
+            },
+            "time": "2022-11-08T23:48:25+00:00"
+        },
+        {
+            "name": "jawira/plantuml-encoding",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/jawira/plantuml-encoding.git",
+                "reference": "cec097dfc062e7e13655d9594eacce5f9df639ad"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/jawira/plantuml-encoding/zipball/cec097dfc062e7e13655d9594eacce5f9df639ad",
+                "reference": "cec097dfc062e7e13655d9594eacce5f9df639ad",
+                "shasum": ""
+            },
+            "require": {
+                "ext-zlib": "*",
+                "php": ">=7.0"
+            },
+            "require-dev": {
+                "jawira/skeleton": "^2.14",
+                "phpstan/phpstan": "^1.0",
+                "vimeo/psalm": "^4.0"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/plantuml_functions.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jawira Portugal",
+                    "homepage": "https://jawira.com"
+                }
+            ],
+            "description": "PlantUML encoding functions",
+            "keywords": [
+                "encodep",
+                "encoding",
+                "functions",
+                "plantuml",
+                "uml"
+            ],
+            "support": {
+                "issues": "https://github.com/jawira/plantuml-encoding/issues",
+                "source": "https://github.com/jawira/plantuml-encoding/tree/v1.1.0"
+            },
+            "time": "2022-05-31T18:58:21+00:00"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "v5.2.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
+                "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+                "json-schema/json-schema-test-suite": "1.2.0",
+                "phpunit/phpunit": "^4.8.35"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "JsonSchema\\": "src/JsonSchema/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "support": {
+                "issues": "https://github.com/justinrainbow/json-schema/issues",
+                "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13"
+            },
+            "time": "2023-09-26T02:20:38+00:00"
+        },
+        {
+            "name": "localheinz/diff",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/localheinz/diff.git",
+                "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c",
+                "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^7.5 || ^8.0",
+                "symfony/process": "^4.2 || ^5"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                }
+            ],
+            "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize",
+            "homepage": "https://github.com/localheinz/diff",
+            "keywords": [
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
+            ],
+            "support": {
+                "source": "https://github.com/localheinz/diff/tree/main"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-07-06T04:49:32+00:00"
+        },
+        {
+            "name": "mehr-als-nix/parallel",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/MehrAlsNix/Parallel.git",
+                "reference": "14a71eb1a8f851108bed4a5b32d1c1027976e8f3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/MehrAlsNix/Parallel/zipball/14a71eb1a8f851108bed4a5b32d1c1027976e8f3",
+                "reference": "14a71eb1a8f851108bed4a5b32d1c1027976e8f3",
+                "shasum": ""
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.5"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "MehrAlsNix\\Parallel\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "siad007",
+                    "email": "siad.ardroumli@gmail.com"
+                }
+            ],
+            "description": "This package is a port of PhpDumentor/Parallel",
+            "support": {
+                "source": "https://github.com/MehrAlsNix/Parallel/tree/master"
+            },
+            "time": "2017-12-10T12:33:51+00:00"
+        },
+        {
+            "name": "mikey179/vfsstream",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bovigo/vfsStream.git",
+                "reference": "dd9277d9d27b5406f903e6b06df99825c32ea3b2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/dd9277d9d27b5406f903e6b06df99825c32ea3b2",
+                "reference": "dd9277d9d27b5406f903e6b06df99825c32ea3b2",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2|^8.0"
+            },
+            "require-dev": {
+                "bovigo/assert": "^6.2",
+                "bovigo/callmap": "^6.2.1",
+                "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1",
+                "doctrine/coding-standard": "^8.2.1",
+                "phpstan/phpstan": "^0.12.94",
+                "phpstan/phpstan-deprecation-rules": "^0.12.6",
+                "phpstan/phpstan-phpunit": "^0.12.21",
+                "phpunit/phpunit": "^9.5.8",
+                "squizlabs/php_codesniffer": "^3.6.0"
+            },
+            "default-branch": true,
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "bovigo\\vfs\\": "src",
+                    "org\\bovigo\\vfs\\": "org/bovigo/vfs"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Frank Kleine",
+                    "homepage": "http://frankkleine.de/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Virtual file system to mock the real file system in unit tests.",
+            "homepage": "http://vfs.bovigo.org/",
+            "support": {
+                "issues": "https://github.com/bovigo/vfsStream/issues",
+                "source": "https://github.com/bovigo/vfsStream/tree/master",
+                "wiki": "https://github.com/bovigo/vfsStream/wiki"
+            },
+            "time": "2022-07-26T07:37:46+00:00"
+        },
+        {
+            "name": "monolog/monolog",
+            "version": "2.9.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Seldaek/monolog.git",
+                "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
+                "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2",
+                "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
+            },
+            "require-dev": {
+                "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+                "doctrine/couchdb": "~1.0@dev",
+                "elasticsearch/elasticsearch": "^7 || ^8",
+                "ext-json": "*",
+                "graylog2/gelf-php": "^1.4.2 || ^2@dev",
+                "guzzlehttp/guzzle": "^7.4",
+                "guzzlehttp/psr7": "^2.2",
+                "mongodb/mongodb": "^1.8",
+                "php-amqplib/php-amqplib": "~2.4 || ^3",
+                "phpspec/prophecy": "^1.15",
+                "phpstan/phpstan": "^0.12.91",
+                "phpunit/phpunit": "^8.5.14",
+                "predis/predis": "^1.1 || ^2.0",
+                "rollbar/rollbar": "^1.3 || ^2 || ^3",
+                "ruflin/elastica": "^7",
+                "swiftmailer/swiftmailer": "^5.3|^6.0",
+                "symfony/mailer": "^5.4 || ^6",
+                "symfony/mime": "^5.4 || ^6"
+            },
+            "suggest": {
+                "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+                "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+                "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
+                "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+                "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
+                "ext-mbstring": "Allow to work properly with unicode symbols",
+                "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+                "ext-openssl": "Required to send log messages using SSL",
+                "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
+                "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+                "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
+                "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+                "rollbar/rollbar": "Allow sending log messages to Rollbar",
+                "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Monolog\\": "src/Monolog"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "https://seld.be"
+                }
+            ],
+            "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+            "homepage": "https://github.com/Seldaek/monolog",
+            "keywords": [
+                "log",
+                "logging",
+                "psr-3"
+            ],
+            "support": {
+                "issues": "https://github.com/Seldaek/monolog/issues",
+                "source": "https://github.com/Seldaek/monolog/tree/2.9.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/Seldaek",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-27T15:25:26+00:00"
+        },
+        {
+            "name": "mtdowling/jmespath.php",
+            "version": "2.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/jmespath/jmespath.php.git",
+                "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/bbb69a935c2cbb0c03d7f481a238027430f6440b",
+                "reference": "bbb69a935c2cbb0c03d7f481a238027430f6440b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0",
+                "symfony/polyfill-mbstring": "^1.17"
+            },
+            "require-dev": {
+                "composer/xdebug-handler": "^3.0.3",
+                "phpunit/phpunit": "^8.5.33"
+            },
+            "bin": [
+                "bin/jp.php"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.7-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/JmesPath.php"
+                ],
+                "psr-4": {
+                    "JmesPath\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                }
+            ],
+            "description": "Declaratively specify how to extract elements from a JSON document",
+            "keywords": [
+                "json",
+                "jsonpath"
+            ],
+            "support": {
+                "issues": "https://github.com/jmespath/jmespath.php/issues",
+                "source": "https://github.com/jmespath/jmespath.php/tree/2.7.0"
+            },
+            "time": "2023-08-25T10:54:48+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.11.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/collections": "<1.6.8",
+                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.6.8",
+                "doctrine/common": "^2.13.3 || ^3.2.2",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ],
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "support": {
+                "issues": "https://github.com/myclabs/DeepCopy/issues",
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-03-08T13:26:56+00:00"
+        },
+        {
+            "name": "nikic/php-parser",
+            "version": "v5.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nikic/PHP-Parser.git",
+                "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
+                "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-json": "*",
+                "ext-tokenizer": "*",
+                "php": ">=7.4"
+            },
+            "require-dev": {
+                "ircmaxell/php-yacc": "^0.0.7",
+                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+            },
+            "bin": [
+                "bin/php-parse"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpParser\\": "lib/PhpParser"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Nikita Popov"
+                }
+            ],
+            "description": "A PHP parser written in PHP",
+            "keywords": [
+                "parser",
+                "php"
+            ],
+            "support": {
+                "issues": "https://github.com/nikic/PHP-Parser/issues",
+                "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0"
+            },
+            "time": "2024-01-07T17:17:35+00:00"
+        },
+        {
+            "name": "pdepend/pdepend",
+            "version": "2.16.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pdepend/pdepend.git",
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.7",
+                "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/polyfill-mbstring": "^1.19"
+            },
+            "require-dev": {
+                "easy-doc/easy-doc": "0.0.0|^1.2.3",
+                "gregwar/rst": "^1.0",
+                "squizlabs/php_codesniffer": "^2.0.0"
+            },
+            "bin": [
+                "src/bin/pdepend"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PDepend\\": "src/main/php/PDepend"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Official version of pdepend to be handled with Composer",
+            "keywords": [
+                "PHP Depend",
+                "PHP_Depend",
+                "dev",
+                "pdepend"
+            ],
+            "support": {
+                "issues": "https://github.com/pdepend/pdepend/issues",
+                "source": "https://github.com/pdepend/pdepend/tree/2.16.2"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-17T18:09:59+00:00"
+        },
+        {
+            "name": "pear/archive_tar",
+            "version": "1.4.14",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Archive_Tar.git",
+                "reference": "4d761c5334c790e45ef3245f0864b8955c562caa"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa",
+                "reference": "4d761c5334c790e45ef3245f0864b8955c562caa",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "^1.10.0alpha2",
+                "php": ">=5.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "suggest": {
+                "ext-bz2": "Bz2 compression support.",
+                "ext-xz": "Lzma2 compression support.",
+                "ext-zlib": "Gzip compression support."
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Archive_Tar": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Vincent Blavet",
+                    "email": "vincent@phpconcept.net"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "greg@chiaraquartet.net"
+                },
+                {
+                    "name": "Michiel Rook",
+                    "email": "mrook@php.net"
+                }
+            ],
+            "description": "Tar file management class with compression support (gzip, bzip2, lzma2)",
+            "homepage": "https://github.com/pear/Archive_Tar",
+            "keywords": [
+                "archive",
+                "tar"
+            ],
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar",
+                "source": "https://github.com/pear/Archive_Tar"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/mrook",
+                    "type": "github"
+                },
+                {
+                    "url": "https://www.patreon.com/michielrook",
+                    "type": "patreon"
+                }
+            ],
+            "time": "2021-07-20T13:53:39+00:00"
+        },
+        {
+            "name": "pear/console_getopt",
+            "version": "v1.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Console_Getopt.git",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0",
+                "shasum": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Console": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Andrei Zmievski",
+                    "email": "andrei@php.net",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Stig Bakken",
+                    "email": "stig@php.net",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net",
+                    "role": "Helper"
+                }
+            ],
+            "description": "More info available on: http://pear.php.net/package/Console_Getopt",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt",
+                "source": "https://github.com/pear/Console_Getopt"
+            },
+            "time": "2019-11-20T18:27:48+00:00"
+        },
+        {
+            "name": "pear/mail",
+            "version": "v1.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Mail.git",
+                "reference": "4fda3292ac6bf226d8841cfd8ee3cf4e28395c01"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Mail/zipball/4fda3292ac6bf226d8841cfd8ee3cf4e28395c01",
+                "reference": "4fda3292ac6bf226d8841cfd8ee3cf4e28395c01",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "~1.9",
+                "php": ">=5.2.1"
+            },
+            "require-dev": {
+                "pear/pear": "*"
+            },
+            "suggest": {
+                "pear/net_smtp": "Install optionally via your project's composer.json"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Mail": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Chuck Hagenbuch",
+                    "email": "chuck@horde.org",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Armin Graefe",
+                    "email": "schengawegga@gmail.com",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Richard Heyes",
+                    "email": "richard@phpguru.org",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Aleksander Machniak",
+                    "email": "alec@alec.pl",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Class that provides multiple interfaces for sending emails.",
+            "homepage": "http://pear.php.net/package/Mail",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Mail",
+                "source": "https://github.com/pear/Mail"
+            },
+            "time": "2023-11-01T21:31:59+00:00"
+        },
+        {
+            "name": "pear/mail_mime",
+            "version": "1.10.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Mail_Mime.git",
+                "reference": "d4fb9ce61201593d0f8c6db629c45e29c3409c14"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Mail_Mime/zipball/d4fb9ce61201593d0f8c6db629c45e29c3409c14",
+                "reference": "d4fb9ce61201593d0f8c6db629c45e29c3409c14",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "*",
+                "php": ">=5.2.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Mail": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Cipriano Groenendal",
+                    "email": "cipri@php.net",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Aleksander Machniak",
+                    "email": "alec@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "Mail_Mime provides classes to create MIME messages",
+            "homepage": "http://pear.php.net/package/Mail_Mime",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Mail_Mime",
+                "source": "https://github.com/pear/Mail_Mime"
+            },
+            "time": "2021-09-05T08:42:45+00:00"
+        },
+        {
+            "name": "pear/net_ftp",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Net_FTP.git",
+                "reference": "b5bd376359df4b9ef9c3140a21d2d2e790c9bdb7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Net_FTP/zipball/b5bd376359df4b9ef9c3140a21d2d2e790c9bdb7",
+                "reference": "b5bd376359df4b9ef9c3140a21d2d2e790c9bdb7",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear_exception": "*"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "default-branch": true,
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Net": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "PHP License"
+            ],
+            "authors": [
+                {
+                    "name": "Jorrit Schippers",
+                    "email": "jschippers@php.net",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Tobias Schlitt",
+                    "email": "toby@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "More info available on: http://pear.php.net/package/Net_FTP",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Net_FTP",
+                "source": "https://github.com/pear/Net_FTP"
+            },
+            "time": "2023-10-18T12:09:44+00:00"
+        },
+        {
+            "name": "pear/net_growl",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/Net_Growl.git",
+                "reference": "9e828a6dde4f85337358209bd98bd260a558e4a9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/Net_Growl/zipball/9e828a6dde4f85337358209bd98bd260a558e4a9",
+                "reference": "9e828a6dde4f85337358209bd98bd260a558e4a9",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear_exception": "*",
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "<6.0"
+            },
+            "default-branch": true,
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Net": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD License"
+            ],
+            "authors": [
+                {
+                    "name": "Laurent Laville",
+                    "email": "pear@laurent-laville.org",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Bertrand Mansion",
+                    "email": "bmansion@mamasam.com",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Brian Dunnington",
+                    "role": "Helper"
+                }
+            ],
+            "description": "More info available on: http://pear.php.net/package/Net_Growl",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Net_Growl",
+                "source": "https://github.com/pear/Net_Growl"
+            },
+            "time": "2019-03-05T14:25:46+00:00"
+        },
+        {
+            "name": "pear/pear-core-minimal",
+            "version": "v1.10.14",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/pear-core-minimal.git",
+                "reference": "a86fc145edb5caedbf96527214ce3cadc9de4a32"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/a86fc145edb5caedbf96527214ce3cadc9de4a32",
+                "reference": "a86fc145edb5caedbf96527214ce3cadc9de4a32",
+                "shasum": ""
+            },
+            "require": {
+                "pear/console_getopt": "~1.4",
+                "pear/pear_exception": "~1.0",
+                "php": ">=5.4"
+            },
+            "replace": {
+                "rsky/pear-core-min": "self.version"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "src/"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Christian Weiske",
+                    "email": "cweiske@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "Minimal set of PEAR core files to be used as composer dependency",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR",
+                "source": "https://github.com/pear/pear-core-minimal"
+            },
+            "time": "2023-11-26T16:15:38+00:00"
+        },
+        {
+            "name": "pear/pear_exception",
+            "version": "v1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/PEAR_Exception.git",
+                "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0",
+                "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "<9"
+            },
+            "type": "class",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "PEAR/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "."
+            ],
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Helgi Thormar",
+                    "email": "dufuz@php.net"
+                },
+                {
+                    "name": "Greg Beaver",
+                    "email": "cellog@php.net"
+                }
+            ],
+            "description": "The PEAR Exception base class.",
+            "homepage": "https://github.com/pear/PEAR_Exception",
+            "keywords": [
+                "exception"
+            ],
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception",
+                "source": "https://github.com/pear/PEAR_Exception"
+            },
+            "time": "2021-03-21T15:43:46+00:00"
+        },
+        {
+            "name": "pear/versioncontrol_git",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/VersionControl_Git.git",
+                "reference": "c32d75d237974297f052ceb781dfc2eb817f7b59"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/VersionControl_Git/zipball/c32d75d237974297f052ceb781dfc2eb817f7b59",
+                "reference": "c32d75d237974297f052ceb781dfc2eb817f7b59",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "^1.9",
+                "pear/pear_exception": "~1.0.0",
+                "php": "^7.3 || ^7.4 || ^8.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.5"
+            },
+            "default-branch": true,
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "VersionControl": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Kousuke Ebihara",
+                    "email": "ebihara@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "VersionControl_Git is a library that provides OO interface to handle Git repository.",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=VersionControl_Git",
+                "source": "https://github.com/pear/VersionControl_Git"
+            },
+            "time": "2023-03-22T19:55:38+00:00"
+        },
+        {
+            "name": "pear/versioncontrol_svn",
+            "version": "0.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pear/VersionControl_SVN.git",
+                "reference": "226ec8cb136a88f5093f650193d9c1d2230d2938"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pear/VersionControl_SVN/zipball/226ec8cb136a88f5093f650193d9c1d2230d2938",
+                "reference": "226ec8cb136a88f5093f650193d9c1d2230d2938",
+                "shasum": ""
+            },
+            "require": {
+                "pear/pear-core-minimal": "^1.10",
+                "pear/pear_exception": "*@dev",
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "*"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "VersionControl_": "./"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "include-path": [
+                "./"
+            ],
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Clay Loveless",
+                    "email": "clay@loveless.net",
+                    "role": "Lead"
+                },
+                {
+                    "name": "Michiel Rook",
+                    "email": "mrook@php.net",
+                    "role": "Lead"
+                }
+            ],
+            "description": "More info available on: http://pear.php.net/package/VersionControl_SVN",
+            "support": {
+                "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=VersionControl_SVN",
+                "source": "https://github.com/pear/VersionControl_SVN"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/mrook",
+                    "type": "github"
+                },
+                {
+                    "url": "https://www.patreon.com/michielrook",
+                    "type": "patreon"
+                }
+            ],
+            "time": "2021-06-01T12:01:18+00:00"
+        },
+        {
+            "name": "phar-io/manifest",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/manifest.git",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-phar": "*",
+                "ext-xmlwriter": "*",
+                "phar-io/version": "^3.0.1",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+            "support": {
+                "issues": "https://github.com/phar-io/manifest/issues",
+                "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+            },
+            "time": "2021-07-20T11:28:43+00:00"
+        },
+        {
+            "name": "phar-io/version",
+            "version": "3.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/version.git",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Library for handling version information and constraints",
+            "support": {
+                "issues": "https://github.com/phar-io/version/issues",
+                "source": "https://github.com/phar-io/version/tree/3.2.1"
+            },
+            "time": "2022-02-21T01:04:05+00:00"
+        },
+        {
+            "name": "phing/phing-composer-configurator",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phingofficial/phing-composer-configurator.git",
+                "reference": "4ae5639bbecc82d849374139895092de528b8803"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phingofficial/phing-composer-configurator/zipball/4ae5639bbecc82d849374139895092de528b8803",
+                "reference": "4ae5639bbecc82d849374139895092de528b8803",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.1|^2.0",
+                "php": ">= 7.3"
+            },
+            "require-dev": {
+                "composer/composer": "~2.1.9 || ~2.3.0 || ~2.5.0",
+                "ergebnis/composer-normalize": "^2.0.2",
+                "ergebnis/phpstan-rules": "^0.14.2|^0.15.0",
+                "mikey179/vfsstream": "^1.6.8",
+                "pepakriz/phpstan-exception-rules": "^0.10.1|^0.11.0",
+                "phpstan/phpstan": "^0.12.4",
+                "phpstan/phpstan-beberlei-assert": "^0.12.2",
+                "phpstan/phpstan-deprecation-rules": "^0.12.1",
+                "phpstan/phpstan-phpunit": "^0.12.5",
+                "phpstan/phpstan-strict-rules": "^0.12.1",
+                "phpunit/phpunit": "^8.5.0|^9.4.2",
+                "roave/security-advisories": "dev-latest",
+                "squizlabs/php_codesniffer": "^3.5.3"
+            },
+            "default-branch": true,
+            "type": "composer-plugin",
+            "extra": {
+                "class": [
+                    "Phing\\PhingComposerConfigurator\\ExtensionInstallerPlugin"
+                ]
+            },
+            "autoload": {
+                "psr-4": {
+                    "Phing\\PhingComposerConfigurator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0-only"
+            ],
+            "authors": [
+                {
+                    "name": "Siad Ardroumli",
+                    "email": "siad.ardroumli@gmail.com"
+                },
+                {
+                    "name": "Phing Community",
+                    "homepage": "https://github.com/phingofficial/phing/blob/master/CREDITS.md"
+                }
+            ],
+            "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.",
+            "homepage": "https://www.phing.info/",
+            "keywords": [
+                "ant",
+                "build",
+                "build-automation",
+                "build-tool",
+                "make",
+                "phing",
+                "php",
+                "task",
+                "tool"
+            ],
+            "support": {
+                "docs": "https://www.phing.info/docs/guide/stable/",
+                "irc": "irc://irc.freenode.net/phing",
+                "issues": "https://github.com/phingofficial/phing-composer-configurator/issues",
+                "slack": "https://www.phing.info/slack",
+                "source": "https://github.com/phingofficial/phing-composer-configurator/"
+            },
+            "time": "2022-12-20T14:31:40+00:00"
+        },
+        {
+            "name": "phpmd/phpmd",
+            "version": "2.15.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpmd/phpmd.git",
+                "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0",
+                "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0",
+                "shasum": ""
+            },
+            "require": {
+                "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
+                "ext-xml": "*",
+                "pdepend/pdepend": "^2.16.1",
+                "php": ">=5.3.9"
+            },
+            "require-dev": {
+                "easy-doc/easy-doc": "0.0.0 || ^1.3.2",
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "gregwar/rst": "^1.0",
+                "mikey179/vfsstream": "^1.6.8",
+                "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
+            },
+            "bin": [
+                "src/bin/phpmd"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "PHPMD\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Manuel Pichler",
+                    "email": "github@manuel-pichler.de",
+                    "homepage": "https://github.com/manuelpichler",
+                    "role": "Project Founder"
+                },
+                {
+                    "name": "Marc Würth",
+                    "email": "ravage@bluewin.ch",
+                    "homepage": "https://github.com/ravage84",
+                    "role": "Project Maintainer"
+                },
+                {
+                    "name": "Other contributors",
+                    "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+                    "role": "Contributors"
+                }
+            ],
+            "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+            "homepage": "https://phpmd.org/",
+            "keywords": [
+                "dev",
+                "mess detection",
+                "mess detector",
+                "pdepend",
+                "phpmd",
+                "pmd"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.org/phpmd",
+                "issues": "https://github.com/phpmd/phpmd/issues",
+                "source": "https://github.com/phpmd/phpmd/tree/2.15.0"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-11T08:22:20+00:00"
+        },
+        {
+            "name": "phpstan/phpstan",
+            "version": "1.10.58",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpstan/phpstan.git",
+                "reference": "a23518379ec4defd9e47cbf81019526861623ec2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2",
+                "reference": "a23518379ec4defd9e47cbf81019526861623ec2",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2|^8.0"
+            },
+            "conflict": {
+                "phpstan/phpstan-shim": "*"
+            },
+            "bin": [
+                "phpstan",
+                "phpstan.phar"
+            ],
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "PHPStan - PHP Static Analysis Tool",
+            "keywords": [
+                "dev",
+                "static analysis"
+            ],
+            "support": {
+                "docs": "https://phpstan.org/user-guide/getting-started",
+                "forum": "https://github.com/phpstan/phpstan/discussions",
+                "issues": "https://github.com/phpstan/phpstan/issues",
+                "security": "https://github.com/phpstan/phpstan/security/policy",
+                "source": "https://github.com/phpstan/phpstan-src"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/ondrejmirtes",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/phpstan",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-02-12T20:02:57+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "9.2.30",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "ext-xmlwriter": "*",
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3",
+                "phpunit/php-file-iterator": "^3.0.3",
+                "phpunit/php-text-template": "^2.0.2",
+                "sebastian/code-unit-reverse-lookup": "^2.0.2",
+                "sebastian/complexity": "^2.0",
+                "sebastian/environment": "^5.1.2",
+                "sebastian/lines-of-code": "^1.0.3",
+                "sebastian/version": "^3.0.1",
+                "theseer/tokenizer": "^1.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-pcov": "PHP extension that provides line coverage",
+                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "9.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:47:57+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "3.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2021-12-02T12:48:52+00:00"
+        },
+        {
+            "name": "phpunit/php-invoker",
+            "version": "3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-invoker.git",
+                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "ext-pcntl": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-pcntl": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Invoke callables with a timeout",
+            "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+            "keywords": [
+                "process"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+                "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T05:58:55+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "2.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+                "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T05:33:50+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "5.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+                "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:16:10+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "9.6.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f",
+                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.3.1 || ^2",
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "ext-xmlwriter": "*",
+                "myclabs/deep-copy": "^1.10.1",
+                "phar-io/manifest": "^2.0.3",
+                "phar-io/version": "^3.0.2",
+                "php": ">=7.3",
+                "phpunit/php-code-coverage": "^9.2.28",
+                "phpunit/php-file-iterator": "^3.0.5",
+                "phpunit/php-invoker": "^3.1.1",
+                "phpunit/php-text-template": "^2.0.3",
+                "phpunit/php-timer": "^5.0.2",
+                "sebastian/cli-parser": "^1.0.1",
+                "sebastian/code-unit": "^1.0.6",
+                "sebastian/comparator": "^4.0.8",
+                "sebastian/diff": "^4.0.3",
+                "sebastian/environment": "^5.1.3",
+                "sebastian/exporter": "^4.0.5",
+                "sebastian/global-state": "^5.0.1",
+                "sebastian/object-enumerator": "^4.0.3",
+                "sebastian/resource-operations": "^3.0.3",
+                "sebastian/type": "^3.2",
+                "sebastian/version": "^3.0.2"
+            },
+            "suggest": {
+                "ext-soap": "To be able to generate mocks based on WSDL files",
+                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "9.6-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/Framework/Assert/Functions.php"
+                ],
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16"
+            },
+            "funding": [
+                {
+                    "url": "https://phpunit.de/sponsors.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-19T07:03:14+00:00"
+        },
+        {
+            "name": "psr/event-dispatcher",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/event-dispatcher.git",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\EventDispatcher\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Standard interfaces for event handling.",
+            "keywords": [
+                "events",
+                "psr",
+                "psr-14"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/event-dispatcher/issues",
+                "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+            },
+            "time": "2019-01-08T18:20:26+00:00"
+        },
+        {
+            "name": "psr/http-client",
+            "version": "1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-client.git",
+                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0 || ^8.0",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Client\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP clients",
+            "homepage": "https://github.com/php-fig/http-client",
+            "keywords": [
+                "http",
+                "http-client",
+                "psr",
+                "psr-18"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-client"
+            },
+            "time": "2023-09-23T14:17:50+00:00"
+        },
+        {
+            "name": "psr/http-factory",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-factory.git",
+                "reference": "e616d01114759c4c489f93b099585439f795fe35"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+                "reference": "e616d01114759c4c489f93b099585439f795fe35",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interfaces for PSR-7 HTTP message factories",
+            "keywords": [
+                "factory",
+                "http",
+                "message",
+                "psr",
+                "psr-17",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+            },
+            "time": "2023-04-10T20:10:41+00:00"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
+                "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-message/tree/1.1"
+            },
+            "time": "2023-04-04T09:50:52+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "1.1.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+                "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "Psr/Log/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/1.1.4"
+            },
+            "time": "2021-05-03T11:20:27+00:00"
+        },
+        {
+            "name": "ralouphie/getallheaders",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ralouphie/getallheaders.git",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/getallheaders.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
+                }
+            ],
+            "description": "A polyfill for getallheaders.",
+            "support": {
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+            },
+            "time": "2019-03-08T08:55:37+00:00"
+        },
+        {
+            "name": "roave/security-advisories",
+            "version": "dev-master",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Roave/SecurityAdvisories.git",
+                "reference": "624324975ceed0b788160bdec5b7f22125d8de14"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/624324975ceed0b788160bdec5b7f22125d8de14",
+                "reference": "624324975ceed0b788160bdec5b7f22125d8de14",
+                "shasum": ""
+            },
+            "conflict": {
+                "3f/pygmentize": "<1.2",
+                "admidio/admidio": "<4.2.13",
+                "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
+                "aheinze/cockpit": "<2.2",
+                "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
+                "airesvsg/acf-to-rest-api": "<=3.1",
+                "akaunting/akaunting": "<2.1.13",
+                "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
+                "alextselegidis/easyappointments": "<1.5",
+                "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1",
+                "amazing/media2click": ">=1,<1.3.3",
+                "amphp/artax": "<1.0.6|>=2,<2.0.6",
+                "amphp/http": "<1.0.1",
+                "amphp/http-client": ">=4,<4.4",
+                "anchorcms/anchor-cms": "<=0.12.7",
+                "andreapollastri/cipi": "<=3.1.15",
+                "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5",
+                "apache-solr-for-typo3/solr": "<2.8.3",
+                "apereo/phpcas": "<1.6",
+                "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3",
+                "appwrite/server-ce": "<=1.2.1",
+                "arc/web": "<3",
+                "area17/twill": "<1.2.5|>=2,<2.5.3",
+                "artesaos/seotools": "<0.17.2",
+                "asymmetricrypt/asymmetricrypt": "<9.9.99",
+                "athlon1600/php-proxy": "<=5.1",
+                "athlon1600/php-proxy-app": "<=3",
+                "austintoddj/canvas": "<=3.4.2",
+                "automad/automad": "<=1.10.9",
+                "awesome-support/awesome-support": "<=6.0.7",
+                "aws/aws-sdk-php": "<3.288.1",
+                "azuracast/azuracast": "<0.18.3",
+                "backdrop/backdrop": "<1.24.2",
+                "backpack/crud": "<3.4.9",
+                "bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
+                "badaso/core": "<2.7",
+                "bagisto/bagisto": "<1.3.2",
+                "barrelstrength/sprout-base-email": "<1.2.7",
+                "barrelstrength/sprout-forms": "<3.9",
+                "barryvdh/laravel-translation-manager": "<0.6.2",
+                "barzahlen/barzahlen-php": "<2.0.1",
+                "baserproject/basercms": "<4.8",
+                "bassjobsen/bootstrap-3-typeahead": ">4.0.2",
+                "bigfork/silverstripe-form-capture": ">=3,<3.1.1",
+                "billz/raspap-webgui": "<2.9.5",
+                "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
+                "bmarshall511/wordpress_zero_spam": "<5.2.13",
+                "bolt/bolt": "<3.7.2",
+                "bolt/core": "<=4.2",
+                "bottelet/flarepoint": "<2.2.1",
+                "bref/bref": "<2.1.13",
+                "brightlocal/phpwhois": "<=4.2.5",
+                "brotkrueml/codehighlight": "<2.7",
+                "brotkrueml/schema": "<1.13.1|>=2,<2.5.1",
+                "brotkrueml/typo3-matomo-integration": "<1.3.2",
+                "buddypress/buddypress": "<7.2.1",
+                "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
+                "bytefury/crater": "<6.0.2",
+                "cachethq/cachet": "<2.5.1",
+                "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
+                "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10",
+                "cardgate/magento2": "<2.0.33",
+                "cardgate/woocommerce": "<=3.1.15",
+                "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+                "cartalyst/sentry": "<=2.1.6",
+                "catfan/medoo": "<1.7.5",
+                "cecil/cecil": "<7.47.1",
+                "centreon/centreon": "<22.10.0.0-beta1",
+                "cesnet/simplesamlphp-module-proxystatistics": "<3.1",
+                "chriskacerguis/codeigniter-restserver": "<=2.7.1",
+                "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3",
+                "ckeditor/ckeditor": "<4.17",
+                "cockpit-hq/cockpit": "<=2.6.3",
+                "codeception/codeception": "<3.1.3|>=4,<4.1.22",
+                "codeigniter/framework": "<3.1.9",
+                "codeigniter4/framework": "<=4.4.2",
+                "codeigniter4/shield": "<1.0.0.0-beta8",
+                "codiad/codiad": "<=2.8.4",
+                "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7",
+                "concrete5/concrete5": "<9.2.5",
+                "concrete5/core": "<8.5.8|>=9,<9.1",
+                "contao-components/mediaelement": ">=2.14.2,<2.21.1",
+                "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
+                "contao/core": ">=2,<3.5.39",
+                "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10",
+                "contao/listing-bundle": ">=4,<4.4.8",
+                "contao/managed-edition": "<=1.5",
+                "corveda/phpsandbox": "<1.3.5",
+                "cosenary/instagram": "<=2.3",
+                "craftcms/cms": "<4.6.2",
+                "croogo/croogo": "<4",
+                "cuyz/valinor": "<0.12",
+                "czproject/git-php": "<4.0.3",
+                "darylldoyle/safe-svg": "<1.9.10",
+                "datadog/dd-trace": ">=0.30,<0.30.2",
+                "datatables/datatables": "<1.10.10",
+                "david-garcia/phpwhois": "<=4.3.1",
+                "dbrisinajumi/d2files": "<1",
+                "dcat/laravel-admin": "<=2.1.3.0-beta",
+                "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3",
+                "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
+                "desperado/xml-bundle": "<=0.1.7",
+                "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
+                "doctrine/annotations": "<1.2.7",
+                "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
+                "doctrine/common": "<2.4.3|>=2.5,<2.5.1",
+                "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
+                "doctrine/doctrine-bundle": "<1.5.2",
+                "doctrine/doctrine-module": "<=0.7.1",
+                "doctrine/mongodb-odm": "<1.0.2",
+                "doctrine/mongodb-odm-bundle": "<3.0.1",
+                "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
+                "dolibarr/dolibarr": "<18.0.2",
+                "dompdf/dompdf": "<2.0.4",
+                "doublethreedigital/guest-entries": "<3.1.2",
+                "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2",
+                "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+                "duncanmcclean/guest-entries": "<3.1.2",
+                "dweeves/magmi": "<=0.7.24",
+                "ec-cube/ec-cube": "<2.4.4",
+                "ecodev/newsletter": "<=4",
+                "ectouch/ectouch": "<=2.7.2",
+                "elefant/cms": "<2.0.7",
+                "elgg/elgg": "<3.3.24|>=4,<4.0.5",
+                "elijaa/phpmemcacheadmin": "<=1.3",
+                "encore/laravel-admin": "<=1.8.19",
+                "endroid/qr-code-bundle": "<3.4.2",
+                "enshrined/svg-sanitize": "<0.15",
+                "erusev/parsedown": "<1.7.2",
+                "ether/logs": "<3.0.4",
+                "evolutioncms/evolution": "<=3.2.3",
+                "exceedone/exment": "<4.4.3|>=5,<5.0.3",
+                "exceedone/laravel-admin": "<2.2.3|==3",
+                "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev",
+                "ezsystems/ez-support-tools": ">=2.2,<2.2.3",
+                "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev",
+                "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev",
+                "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
+                "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
+                "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
+                "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
+                "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34",
+                "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
+                "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
+                "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
+                "ezsystems/ezplatform-user": ">=1,<1.0.1",
+                "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31",
+                "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1",
+                "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
+                "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15",
+                "ezyang/htmlpurifier": "<4.1.1",
+                "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
+                "facturascripts/facturascripts": "<=2022.08",
+                "feehi/cms": "<=2.1.1",
+                "feehi/feehicms": "<=2.1.1",
+                "fenom/fenom": "<=2.12.1",
+                "filegator/filegator": "<7.8",
+                "firebase/php-jwt": "<6",
+                "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2",
+                "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6",
+                "flarum/core": "<1.8.5",
+                "flarum/framework": "<1.8.5",
+                "flarum/mentions": "<1.6.3",
+                "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
+                "flarum/tags": "<=0.1.0.0-beta13",
+                "floriangaerber/magnesium": "<0.3.1",
+                "fluidtypo3/vhs": "<5.1.1",
+                "fof/byobu": ">=0.3.0.0-beta2,<1.1.7",
+                "fof/upload": "<1.2.3",
+                "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1",
+                "fooman/tcpdf": "<6.2.22",
+                "forkcms/forkcms": "<5.11.1",
+                "fossar/tcpdf-parser": "<6.2.22",
+                "francoisjacquet/rosariosis": "<11",
+                "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2",
+                "friendsofsymfony/oauth2-php": "<1.3",
+                "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
+                "friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
+                "friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
+                "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
+                "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1",
+                "froxlor/froxlor": "<=2.1.1",
+                "fuel/core": "<1.8.1",
+                "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
+                "gaoming13/wechat-php-sdk": "<=1.10.2",
+                "genix/cms": "<=1.1.11",
+                "getgrav/grav": "<1.7.44",
+                "getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6",
+                "getkirby/kirby": "<=2.5.12",
+                "getkirby/panel": "<2.5.14",
+                "getkirby/starterkit": "<=3.7.0.2",
+                "gilacms/gila": "<=1.15.4",
+                "gleez/cms": "<=1.2|==2",
+                "globalpayments/php-sdk": "<2",
+                "gogentooss/samlbase": "<1.2.7",
+                "google/protobuf": "<3.15",
+                "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
+                "gree/jose": "<2.2.1",
+                "gregwar/rst": "<1.0.3",
+                "grumpydictator/firefly-iii": "<6.1.7",
+                "gugoan/economizzer": "<=0.9.0.0-beta1",
+                "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
+                "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
+                "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2",
+                "harvesthq/chosen": "<1.8.7",
+                "helloxz/imgurl": "<=2.31",
+                "hhxsv5/laravel-s": "<3.7.36",
+                "hillelcoren/invoice-ninja": "<5.3.35",
+                "himiklab/yii2-jqgrid-widget": "<1.0.8",
+                "hjue/justwriting": "<=1",
+                "hov/jobfair": "<1.0.13|>=2,<2.0.2",
+                "httpsoft/http-message": "<1.0.12",
+                "hyn/multi-tenant": ">=5.6,<5.7.2",
+                "ibexa/admin-ui": ">=4.2,<4.2.3",
+                "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4",
+                "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
+                "ibexa/post-install": "<=1.0.4",
+                "ibexa/solr": ">=4.5,<4.5.4",
+                "ibexa/user": ">=4,<4.4.3",
+                "icecoder/icecoder": "<=8.1",
+                "idno/known": "<=1.3.1",
+                "illuminate/auth": "<5.5.10",
+                "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4",
+                "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40",
+                "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15",
+                "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
+                "impresscms/impresscms": "<=1.4.5",
+                "impresspages/impresspages": "<=1.0.12",
+                "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
+                "in2code/ipandlanguageredirect": "<5.1.2",
+                "in2code/lux": "<17.6.1|>=18,<24.0.2",
+                "innologi/typo3-appointments": "<2.0.6",
+                "intelliants/subrion": "<4.2.2",
+                "islandora/islandora": ">=2,<2.4.1",
+                "ivankristianto/phpwhois": "<=4.3",
+                "jackalope/jackalope-doctrine-dbal": "<1.7.4",
+                "james-heinrich/getid3": "<1.9.21",
+                "james-heinrich/phpthumb": "<1.7.12",
+                "jasig/phpcas": "<1.3.3",
+                "jcbrand/converse.js": "<3.3.3",
+                "joomla/application": "<1.0.13",
+                "joomla/archive": "<1.1.12|>=2,<2.0.1",
+                "joomla/filesystem": "<1.6.2|>=2,<2.0.1",
+                "joomla/filter": "<1.4.4|>=2,<2.0.1",
+                "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12",
+                "joomla/input": ">=2,<2.0.2",
+                "joomla/joomla-cms": ">=2.5,<3.9.12",
+                "joomla/session": "<1.3.1",
+                "joyqi/hyper-down": "<=2.4.27",
+                "jsdecena/laracom": "<2.0.9",
+                "jsmitty12/phpwhois": "<5.1",
+                "juzaweb/cms": "<=3.4",
+                "kazist/phpwhois": "<=4.2.6",
+                "kelvinmo/simplexrd": "<3.1.1",
+                "kevinpapst/kimai2": "<1.16.7",
+                "khodakhah/nodcms": "<=3",
+                "kimai/kimai": "<2.1",
+                "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
+                "klaviyo/magento2-extension": ">=1,<3",
+                "knplabs/knp-snappy": "<=1.4.2",
+                "kohana/core": "<3.3.3",
+                "krayin/laravel-crm": "<1.2.2",
+                "kreait/firebase-php": ">=3.2,<3.8.1",
+                "la-haute-societe/tcpdf": "<6.2.22",
+                "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2",
+                "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
+                "laminas/laminas-http": "<2.14.2",
+                "laravel/fortify": "<1.11.1",
+                "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75",
+                "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+                "latte/latte": "<2.10.8",
+                "lavalite/cms": "<=9",
+                "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5",
+                "league/commonmark": "<0.18.3",
+                "league/flysystem": "<1.1.4|>=2,<2.1.1",
+                "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3",
+                "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
+                "librenms/librenms": "<2017.08.18",
+                "liftkit/database": "<2.13.2",
+                "limesurvey/limesurvey": "<3.27.19",
+                "livehelperchat/livehelperchat": "<=3.91",
+                "livewire/livewire": ">2.2.4,<2.2.6",
+                "lms/routes": "<2.1.1",
+                "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2",
+                "luyadev/yii-helpers": "<1.2.1",
+                "magento/community-edition": "<2.4.3.0-patch3|>=2.4.4,<2.4.5",
+                "magento/core": "<=1.9.4.5",
+                "magento/magento1ce": "<1.9.4.3-dev",
+                "magento/magento1ee": ">=1,<1.14.4.3-dev",
+                "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2",
+                "magneto/core": "<1.9.4.4-dev",
+                "maikuolan/phpmussel": ">=1,<1.6",
+                "mainwp/mainwp": "<=4.4.3.3",
+                "mantisbt/mantisbt": "<=2.25.7",
+                "marcwillmann/turn": "<0.3.3",
+                "matyhtf/framework": "<3.0.6",
+                "mautic/core": "<4.3",
+                "mediawiki/core": "<1.36.2",
+                "mediawiki/matomo": "<2.4.3",
+                "mediawiki/semantic-media-wiki": "<4.0.2",
+                "melisplatform/melis-asset-manager": "<5.0.1",
+                "melisplatform/melis-cms": "<5.0.1",
+                "melisplatform/melis-front": "<5.0.1",
+                "mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
+                "mgallegos/laravel-jqgrid": "<=1.3",
+                "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1",
+                "microsoft/microsoft-graph-beta": "<2.0.1",
+                "microsoft/microsoft-graph-core": "<2.0.2",
+                "microweber/microweber": "<=2.0.4",
+                "miniorange/miniorange-saml": "<1.4.3",
+                "mittwald/typo3_forum": "<1.2.1",
+                "mobiledetect/mobiledetectlib": "<2.8.32",
+                "modx/revolution": "<=2.8.3.0-patch",
+                "mojo42/jirafeau": "<4.4",
+                "mongodb/mongodb": ">=1,<1.9.2",
+                "monolog/monolog": ">=1.8,<1.12",
+                "moodle/moodle": "<4.3.0.0-RC2-dev",
+                "mos/cimage": "<0.7.19",
+                "movim/moxl": ">=0.8,<=0.10",
+                "mpdf/mpdf": "<=7.1.7",
+                "munkireport/comment": "<4.1",
+                "munkireport/managedinstalls": "<2.6",
+                "munkireport/munkireport": ">=2.5.3,<5.6.3",
+                "mustache/mustache": ">=2,<2.14.1",
+                "namshi/jose": "<2.2",
+                "neoan3-apps/template": "<1.1.1",
+                "neorazorx/facturascripts": "<2022.04",
+                "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+                "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3",
+                "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
+                "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2",
+                "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+                "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
+                "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
+                "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
+                "nilsteampassnet/teampass": "<3.0.10",
+                "nonfiction/nterchange": "<4.1.1",
+                "notrinos/notrinos-erp": "<=0.7",
+                "noumo/easyii": "<=0.9",
+                "nukeviet/nukeviet": "<4.5.02",
+                "nyholm/psr7": "<1.6.1",
+                "nystudio107/craft-seomatic": "<3.4.12",
+                "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
+                "october/backend": "<1.1.2",
+                "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1",
+                "october/october": "<=3.4.4",
+                "october/rain": "<1.0.472|>=1.1,<1.1.2",
+                "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2",
+                "omeka/omeka-s": "<4.0.3",
+                "onelogin/php-saml": "<2.10.4",
+                "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5",
+                "open-web-analytics/open-web-analytics": "<1.7.4",
+                "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
+                "openid/php-openid": "<2.3",
+                "openmage/magento-lts": "<20.2",
+                "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
+                "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
+                "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
+                "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
+                "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
+                "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
+                "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1",
+                "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8",
+                "oxid-esales/oxideshop-ce": "<4.5",
+                "packbackbooks/lti-1-3-php-library": "<5",
+                "padraic/humbug_get_contents": "<1.1.2",
+                "pagarme/pagarme-php": "<3",
+                "pagekit/pagekit": "<=1.0.18",
+                "paragonie/random_compat": "<2",
+                "passbolt/passbolt_api": "<2.11",
+                "paypal/merchant-sdk-php": "<3.12",
+                "pear/archive_tar": "<1.4.14",
+                "pear/auth": "<1.2.4",
+                "pear/crypt_gpg": "<1.6.7",
+                "pear/pear": "<=1.10.1",
+                "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
+                "personnummer/personnummer": "<3.0.2",
+                "phanan/koel": "<5.1.4",
+                "phenx/php-svg-lib": "<0.5.1",
+                "php-mod/curl": "<2.3.2",
+                "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
+                "phpems/phpems": ">=6,<=6.1.3",
+                "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
+                "phpmailer/phpmailer": "<6.5",
+                "phpmussel/phpmussel": ">=1,<1.6",
+                "phpmyadmin/phpmyadmin": "<5.2.1",
+                "phpmyfaq/phpmyfaq": "<3.2.5",
+                "phpoffice/phpexcel": "<1.8",
+                "phpoffice/phpspreadsheet": "<1.16",
+                "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34",
+                "phpservermon/phpservermon": "<3.6",
+                "phpsysinfo/phpsysinfo": "<3.4.3",
+                "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
+                "phpwhois/phpwhois": "<=4.2.5",
+                "phpxmlrpc/extras": "<0.6.1",
+                "phpxmlrpc/phpxmlrpc": "<4.9.2",
+                "pi/pi": "<=2.5",
+                "pimcore/admin-ui-classic-bundle": "<1.3.3",
+                "pimcore/customer-management-framework-bundle": "<4.0.6",
+                "pimcore/data-hub": "<1.2.4",
+                "pimcore/demo": "<10.3",
+                "pimcore/ecommerce-framework-bundle": "<1.0.10",
+                "pimcore/perspective-editor": "<1.5.1",
+                "pimcore/pimcore": "<11.1.1",
+                "pixelfed/pixelfed": "<0.11.11",
+                "plotly/plotly.js": "<2.25.2",
+                "pocketmine/bedrock-protocol": "<8.0.2",
+                "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
+                "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
+                "pressbooks/pressbooks": "<5.18",
+                "prestashop/autoupgrade": ">=4,<4.10.1",
+                "prestashop/blockreassurance": "<=5.1.3",
+                "prestashop/blockwishlist": ">=2,<2.1.1",
+                "prestashop/contactform": ">=1.0.1,<4.3",
+                "prestashop/gamification": "<2.3.2",
+                "prestashop/prestashop": "<8.1.3",
+                "prestashop/productcomments": "<5.0.2",
+                "prestashop/ps_emailsubscription": "<2.6.1",
+                "prestashop/ps_facetedsearch": "<3.4.1",
+                "prestashop/ps_linklist": "<3.1",
+                "privatebin/privatebin": "<1.4",
+                "processwire/processwire": "<=3.0.210",
+                "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
+                "propel/propel1": ">=1,<=1.7.1",
+                "pterodactyl/panel": "<1.7",
+                "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
+                "ptrofimov/beanstalk_console": "<1.7.14",
+                "pubnub/pubnub": "<6.1",
+                "pusher/pusher-php-server": "<2.2.1",
+                "pwweb/laravel-core": "<=0.3.6.0-beta",
+                "pyrocms/pyrocms": "<=3.9.1",
+                "rainlab/blog-plugin": "<1.4.1",
+                "rainlab/debugbar-plugin": "<3.1",
+                "rainlab/user-plugin": "<=1.4.5",
+                "rankmath/seo-by-rank-math": "<=1.0.95",
+                "rap2hpoutre/laravel-log-viewer": "<0.13",
+                "react/http": ">=0.7,<1.9",
+                "really-simple-plugins/complianz-gdpr": "<6.4.2",
+                "remdex/livehelperchat": "<3.99",
+                "reportico-web/reportico": "<=7.1.21",
+                "rhukster/dom-sanitizer": "<1.0.7",
+                "rmccue/requests": ">=1.6,<1.8",
+                "robrichards/xmlseclibs": ">=1,<3.0.4",
+                "roots/soil": "<4.1",
+                "rudloff/alltube": "<3.0.3",
+                "s-cart/core": "<6.9",
+                "s-cart/s-cart": "<6.9",
+                "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1",
+                "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9",
+                "scheb/two-factor-bundle": "<3.26|>=4,<4.11",
+                "sensiolabs/connect": "<4.2.3",
+                "serluck/phpwhois": "<=4.2.6",
+                "sfroemken/url_redirect": "<=1.2.1",
+                "sheng/yiicms": "<=1.2",
+                "shopware/core": "<=6.5.7.3",
+                "shopware/platform": "<=6.5.7.3",
+                "shopware/production": "<=6.3.5.2",
+                "shopware/shopware": "<=5.7.17",
+                "shopware/storefront": "<=6.4.8.1",
+                "shopxo/shopxo": "<2.2.6",
+                "showdoc/showdoc": "<2.10.4",
+                "silverstripe-australia/advancedreports": ">=1,<=2",
+                "silverstripe/admin": "<1.13.19|>=2,<2.1.8",
+                "silverstripe/assets": ">=1,<1.11.1",
+                "silverstripe/cms": "<4.11.3",
+                "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1",
+                "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
+                "silverstripe/framework": "<4.13.39|>=5,<5.1.11",
+                "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
+                "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
+                "silverstripe/recipe-cms": ">=4.5,<4.5.3",
+                "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
+                "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
+                "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
+                "silverstripe/subsites": ">=2,<2.6.1",
+                "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
+                "silverstripe/userforms": "<3",
+                "silverstripe/versioned-admin": ">=1,<1.11.1",
+                "simple-updates/phpwhois": "<=1",
+                "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
+                "simplesamlphp/simplesamlphp": "<1.18.6",
+                "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
+                "simplesamlphp/simplesamlphp-module-openid": "<1",
+                "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
+                "simplesamlphp/xml-security": "==1.6.11",
+                "simplito/elliptic-php": "<1.0.6",
+                "sitegeist/fluid-components": "<3.5",
+                "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
+                "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
+                "slim/slim": "<2.6",
+                "slub/slub-events": "<3.0.3",
+                "smarty/smarty": "<3.1.48|>=4,<4.3.1",
+                "snipe/snipe-it": "<=6.2.2",
+                "socalnick/scn-social-auth": "<1.15.2",
+                "socialiteproviders/steam": "<1.1",
+                "spatie/browsershot": "<3.57.4",
+                "spipu/html2pdf": "<5.2.8",
+                "spoon/library": "<1.4.1",
+                "spoonity/tcpdf": "<6.2.22",
+                "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
+                "ssddanbrown/bookstack": "<22.02.3",
+                "statamic/cms": "<4.46",
+                "stormpath/sdk": "<9.9.99",
+                "studio-42/elfinder": "<2.1.62",
+                "subhh/libconnect": "<7.0.8|>=8,<8.1",
+                "sukohi/surpass": "<1",
+                "sulu/sulu": "<1.6.44|>=2,<2.4.16|>=2.5,<2.5.12",
+                "sumocoders/framework-user-bundle": "<1.4",
+                "superbig/craft-audit": "<3.0.2",
+                "swag/paypal": "<5.4.4",
+                "swiftmailer/swiftmailer": ">=4,<5.4.5",
+                "swiftyedit/swiftyedit": "<1.2",
+                "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2",
+                "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+                "sylius/grid-bundle": "<1.10.1",
+                "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
+                "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+                "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2",
+                "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+                "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
+                "symbiote/silverstripe-seed": "<6.0.3",
+                "symbiote/silverstripe-versionedfiles": "<=2.0.3",
+                "symfont/process": ">=0",
+                "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8",
+                "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+                "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4",
+                "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1",
+                "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3",
+                "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7",
+                "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
+                "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13",
+                "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1",
+                "symfony/mime": ">=4.3,<4.3.8",
+                "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+                "symfony/polyfill": ">=1,<1.10",
+                "symfony/polyfill-php55": ">=1,<1.10",
+                "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7",
+                "symfony/routing": ">=2,<2.0.19",
+                "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8",
+                "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
+                "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9",
+                "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11",
+                "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8",
+                "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8",
+                "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
+                "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
+                "symfony/translation": ">=2,<2.0.17",
+                "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
+                "symfony/ux-autocomplete": "<2.11.2",
+                "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
+                "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8",
+                "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
+                "symfony/webhook": ">=6.3,<6.3.8",
+                "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2",
+                "symphonycms/symphony-2": "<2.6.4",
+                "t3/dce": "<0.11.5|>=2.2,<2.6.2",
+                "t3g/svg-sanitizer": "<1.0.3",
+                "t3s/content-consent": "<1.0.3|>=2,<2.0.2",
+                "tastyigniter/tastyigniter": "<3.3",
+                "tcg/voyager": "<=1.4",
+                "tecnickcom/tcpdf": "<6.2.22",
+                "terminal42/contao-tablelookupwizard": "<3.3.5",
+                "thelia/backoffice-default-template": ">=2.1,<2.1.2",
+                "thelia/thelia": ">=2.1,<2.1.3",
+                "theonedemon/phpwhois": "<=4.2.5",
+                "thinkcmf/thinkcmf": "<=5.1.7",
+                "thorsten/phpmyfaq": "<3.2.2",
+                "tikiwiki/tiki-manager": "<=17.1",
+                "tinymce/tinymce": "<5.10.9|>=6,<6.7.3",
+                "tinymighty/wiki-seo": "<1.2.2",
+                "titon/framework": "<9.9.99",
+                "tobiasbg/tablepress": "<=2.0.0.0-RC1",
+                "topthink/framework": "<6.0.14",
+                "topthink/think": "<=6.1.1",
+                "topthink/thinkphp": "<=3.2.3",
+                "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
+                "tribalsystems/zenario": "<=9.4.59197",
+                "truckersmp/phpwhois": "<=4.3.1",
+                "ttskch/pagination-service-provider": "<1",
+                "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
+                "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
+                "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+                "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13",
+                "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
+                "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
+                "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+                "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
+                "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
+                "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30",
+                "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6",
+                "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
+                "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3",
+                "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1",
+                "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5",
+                "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10",
+                "ua-parser/uap-php": "<3.8",
+                "uasoft-indonesia/badaso": "<=2.9.7",
+                "unisharp/laravel-filemanager": "<2.6.4",
+                "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
+                "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
+                "uvdesk/community-skeleton": "<=1.1.1",
+                "vanilla/safecurl": "<0.9.2",
+                "verot/class.upload.php": "<=2.1.6",
+                "vova07/yii2-fileapi-widget": "<0.1.9",
+                "vrana/adminer": "<4.8.1",
+                "waldhacker/hcaptcha": "<2.1.2",
+                "wallabag/tcpdf": "<6.2.22",
+                "wallabag/wallabag": "<2.6.7",
+                "wanglelecc/laracms": "<=1.0.3",
+                "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+                "webbuilders-group/silverstripe-kapost-bridge": "<0.4",
+                "webcoast/deferred-image-processing": "<1.0.2",
+                "webklex/laravel-imap": "<5.3",
+                "webklex/php-imap": "<5.3",
+                "webpa/webpa": "<3.1.2",
+                "wikibase/wikibase": "<=1.39.3",
+                "wikimedia/parsoid": "<0.12.2",
+                "willdurand/js-translation-bundle": "<2.1.1",
+                "winter/wn-backend-module": "<1.2.4",
+                "winter/wn-system-module": "<1.2.4",
+                "wintercms/winter": "<1.2.3",
+                "woocommerce/woocommerce": "<6.6",
+                "wp-cli/wp-cli": ">=0.12,<2.5",
+                "wp-graphql/wp-graphql": "<=1.14.5",
+                "wpanel/wpanel4-cms": "<=4.3.1",
+                "wpcloud/wp-stateless": "<3.2",
+                "wwbn/avideo": "<=12.4",
+                "xataface/xataface": "<3",
+                "xpressengine/xpressengine": "<3.0.15",
+                "yeswiki/yeswiki": "<4.1",
+                "yetiforce/yetiforce-crm": "<=6.4",
+                "yidashi/yii2cmf": "<=2",
+                "yii2mod/yii2-cms": "<1.9.2",
+                "yiisoft/yii": "<1.1.29",
+                "yiisoft/yii2": "<2.0.38",
+                "yiisoft/yii2-authclient": "<2.2.15",
+                "yiisoft/yii2-bootstrap": "<2.0.4",
+                "yiisoft/yii2-dev": "<2.0.43",
+                "yiisoft/yii2-elasticsearch": "<2.0.5",
+                "yiisoft/yii2-gii": "<=2.2.4",
+                "yiisoft/yii2-jui": "<2.0.4",
+                "yiisoft/yii2-redis": "<2.0.8",
+                "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
+                "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
+                "yourls/yourls": "<=1.8.2",
+                "yuan1994/tpadmin": "<=1.3.12",
+                "zencart/zencart": "<=1.5.7.0-beta",
+                "zendesk/zendesk_api_client_php": "<2.2.11",
+                "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
+                "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
+                "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
+                "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5",
+                "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
+                "zendframework/zend-diactoros": "<1.8.4",
+                "zendframework/zend-feed": "<2.10.3",
+                "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
+                "zendframework/zend-http": "<2.8.1",
+                "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+                "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
+                "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+                "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
+                "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
+                "zendframework/zend-validator": ">=2.3,<2.3.6",
+                "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
+                "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
+                "zendframework/zendframework": "<=3",
+                "zendframework/zendframework1": "<1.12.20",
+                "zendframework/zendopenid": "<2.0.2",
+                "zendframework/zendrest": "<2.0.2",
+                "zendframework/zendservice-amazon": "<2.0.3",
+                "zendframework/zendservice-api": "<1",
+                "zendframework/zendservice-audioscrobbler": "<2.0.2",
+                "zendframework/zendservice-nirvanix": "<2.0.2",
+                "zendframework/zendservice-slideshare": "<2.0.2",
+                "zendframework/zendservice-technorati": "<2.0.2",
+                "zendframework/zendservice-windowsazure": "<2.0.2",
+                "zendframework/zendxml": ">=1,<1.0.1",
+                "zenstruck/collection": "<0.2.1",
+                "zetacomponents/mail": "<1.8.2",
+                "zf-commons/zfc-user": "<1.2.2",
+                "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
+                "zfr/zfr-oauth2-server-module": "<0.1.2",
+                "zoujingli/thinkadmin": "<=6.1.53"
+            },
+            "type": "metapackage",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "role": "maintainer"
+                },
+                {
+                    "name": "Ilya Tribusean",
+                    "email": "slash3b@gmail.com",
+                    "role": "maintainer"
+                }
+            ],
+            "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it",
+            "keywords": [
+                "dev"
+            ],
+            "support": {
+                "issues": "https://github.com/Roave/SecurityAdvisories/issues",
+                "source": "https://github.com/Roave/SecurityAdvisories/tree/latest"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/Ocramius",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-02-19T06:05:04+00:00"
+        },
+        {
+            "name": "scssphp/scssphp",
+            "version": "v1.11.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/scssphp/scssphp.git",
+                "reference": "ace2503684bab0dcc817d7614c8a54b865122414"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/scssphp/scssphp/zipball/ace2503684bab0dcc817d7614c8a54b865122414",
+                "reference": "ace2503684bab0dcc817d7614c8a54b865122414",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-json": "*",
+                "php": ">=5.6.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.4",
+                "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3 || ^9.4",
+                "sass/sass-spec": "*",
+                "squizlabs/php_codesniffer": "~3.5",
+                "symfony/phpunit-bridge": "^5.1",
+                "thoughtbot/bourbon": "^7.0",
+                "twbs/bootstrap": "~5.0",
+                "twbs/bootstrap4": "4.6.1",
+                "zurb/foundation": "~6.7.0"
+            },
+            "suggest": {
+                "ext-iconv": "Can be used as fallback when ext-mbstring is not available",
+                "ext-mbstring": "For best performance, mbstring should be installed as it is faster than ext-iconv"
+            },
+            "bin": [
+                "bin/pscss"
+            ],
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "forward-command": false,
+                    "bin-links": false
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "ScssPhp\\ScssPhp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Anthon Pang",
+                    "email": "apang@softwaredevelopment.ca",
+                    "homepage": "https://github.com/robocoder"
+                },
+                {
+                    "name": "Cédric Morin",
+                    "email": "cedric@yterium.com",
+                    "homepage": "https://github.com/Cerdic"
+                }
+            ],
+            "description": "scssphp is a compiler for SCSS written in PHP.",
+            "homepage": "http://scssphp.github.io/scssphp/",
+            "keywords": [
+                "css",
+                "less",
+                "sass",
+                "scss",
+                "stylesheet"
+            ],
+            "support": {
+                "issues": "https://github.com/scssphp/scssphp/issues",
+                "source": "https://github.com/scssphp/scssphp/tree/v1.11.1"
+            },
+            "time": "2023-09-24T13:38:17+00:00"
+        },
+        {
+            "name": "sebastian/cli-parser",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/cli-parser.git",
+                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for parsing CLI options",
+            "homepage": "https://github.com/sebastianbergmann/cli-parser",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:08:49+00:00"
+        },
+        {
+            "name": "sebastian/code-unit",
+            "version": "1.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit.git",
+                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/code-unit",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:08:54+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T05:30:19+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "4.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/diff": "^4.0",
+                "sebastian/exporter": "^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "https://github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/comparator/issues",
+                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2022-09-14T12:41:17+00:00"
+        },
+        {
+            "name": "sebastian/complexity",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/complexity.git",
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for calculating the complexity of PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/complexity",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/complexity/issues",
+                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:19:30+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3",
+                "symfony/process": "^4.2 || ^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/diff/issues",
+                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-05-07T05:35:17+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "5.1.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-posix": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/environment/issues",
+                "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:03:51+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "https://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/exporter/issues",
+                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2022-09-14T06:03:37+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "5.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/object-reflector": "^2.0",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "ext-dom": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/global-state/issues",
+                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-08-02T09:26:13+00:00"
+        },
+        {
+            "name": "sebastian/lines-of-code",
+            "version": "1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for counting the lines of code in PHP source code",
+            "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:20:34+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "4.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/object-reflector": "^2.0",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:12:34+00:00"
+        },
+        {
+            "name": "sebastian/object-reflector",
+            "version": "2.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-reflector.git",
+                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Allows reflection of object attributes, including inherited and non-public ones",
+            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+                "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:14:26+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "https://github.com/sebastianbergmann/recursion-context",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:07:39+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:45:17+00:00"
+        },
+        {
+            "name": "sebastian/type",
+            "version": "3.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/type.git",
+                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the types of the PHP type system",
+            "homepage": "https://github.com/sebastianbergmann/type",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/type/issues",
+                "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:13:03+00:00"
+        },
+        {
+            "name": "siad007/versioncontrol_hg",
+            "version": "v1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/siad007/versioncontrol_hg.git",
+                "reference": "bdeb5515f14a6ccd1abdc69e8d0c9e8e0bb75ec3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/siad007/versioncontrol_hg/zipball/bdeb5515f14a6ccd1abdc69e8d0c9e8e0bb75ec3",
+                "reference": "bdeb5515f14a6ccd1abdc69e8d0c9e8e0bb75ec3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.4"
+            },
+            "require-dev": {
+                "codeclimate/php-test-reporter": "dev-master",
+                "mehr-als-nix/assumptions": "~1",
+                "phpunit/phpunit": "~4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Siad007\\VersionControl\\HG\\": "src",
+                    "Siad007\\VersionControl\\HG\\Tests\\": "tests"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Siad Ardroumli",
+                    "email": "siad.ardroumli@gmail.com",
+                    "role": "Lead"
+                }
+            ],
+            "description": "VersionControl_HG is a library that provides an OO interface to handle Mercurial repositories.",
+            "support": {
+                "issues": "https://github.com/siad007/versioncontrol_hg/issues",
+                "source": "https://github.com/siad007/versioncontrol_hg/tree/v1.0.3"
+            },
+            "time": "2021-01-22T20:43:06+00:00"
+        },
+        {
+            "name": "smarty/smarty",
+            "version": "v3.1.48",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/smarty-php/smarty.git",
+                "reference": "2fc443806cdcaee4441be4d0bb09f8fa56a17f2c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/smarty-php/smarty/zipball/2fc443806cdcaee4441be4d0bb09f8fa56a17f2c",
+                "reference": "2fc443806cdcaee4441be4d0bb09f8fa56a17f2c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.2 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^7.5 || ^6.5 || ^5.7 || ^4.8",
+                "smarty/smarty-lexer": "^3.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "libs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0"
+            ],
+            "authors": [
+                {
+                    "name": "Monte Ohrt",
+                    "email": "monte@ohrt.com"
+                },
+                {
+                    "name": "Uwe Tews",
+                    "email": "uwe.tews@googlemail.com"
+                },
+                {
+                    "name": "Rodney Rehm",
+                    "email": "rodney.rehm@medialize.de"
+                }
+            ],
+            "description": "Smarty - the compiling PHP template engine",
+            "homepage": "http://www.smarty.net",
+            "keywords": [
+                "templating"
+            ],
+            "support": {
+                "forum": "http://www.smarty.net/forums/",
+                "irc": "irc://irc.freenode.org/smarty",
+                "issues": "https://github.com/smarty-php/smarty/issues",
+                "source": "https://github.com/smarty-php/smarty/tree/v3.1.48"
+            },
+            "time": "2023-03-28T19:45:54+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "3.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+            },
+            "bin": [
+                "bin/phpcbf",
+                "bin/phpcs"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "Former lead"
+                },
+                {
+                    "name": "Juliette Reinders Folmer",
+                    "role": "Current lead"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+            "keywords": [
+                "phpcs",
+                "standards",
+                "static analysis"
+            ],
+            "support": {
+                "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+                "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+                "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+                "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/PHPCSStandards",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/jrfnl",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/php_codesniffer",
+                    "type": "open_collective"
+                }
+            ],
+            "time": "2024-02-16T15:06:51+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/6b763438a22a4f20885e994ad6702f6a3f25430e",
+                "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/filesystem": "^4.4|^5.0|^6.0",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/polyfill-php81": "^1.22"
+            },
+            "conflict": {
+                "symfony/finder": "<4.4"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+                "symfony/finder": "^4.4|^5.0|^6.0",
+                "symfony/messenger": "^4.4|^5.0|^6.0",
+                "symfony/service-contracts": "^1.1|^2|^3",
+                "symfony/yaml": "^4.4|^5.0|^6.0"
+            },
+            "suggest": {
+                "symfony/yaml": "To use the yaml reference dumper"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/config/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/dependency-injection.git",
+                "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/45474d527212ca67cdb93f6c5e6da68f4bc67118",
+                "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/container": "^1.1.1",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/polyfill-php80": "^1.16",
+                "symfony/polyfill-php81": "^1.22",
+                "symfony/service-contracts": "^1.1.6|^2"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2",
+                "symfony/config": "<5.3",
+                "symfony/finder": "<4.4",
+                "symfony/proxy-manager-bridge": "<4.4",
+                "symfony/yaml": "<4.4.26"
+            },
+            "provide": {
+                "psr/container-implementation": "1.0",
+                "symfony/service-implementation": "1.0|2.0"
+            },
+            "require-dev": {
+                "symfony/config": "^5.3|^6.0",
+                "symfony/expression-language": "^4.4|^5.0|^6.0",
+                "symfony/yaml": "^4.4.26|^5.0|^6.0"
+            },
+            "suggest": {
+                "symfony/config": "",
+                "symfony/expression-language": "For using expressions in service container configuration",
+                "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required",
+                "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+                "symfony/yaml": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/dependency-injection/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:37:36+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7a69a85c7ea5bdd1e875806a99c51a87d3a74b38",
+                "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/event-dispatcher-contracts": "^2|^3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<4.4"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "2.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^4.4|^5.0|^6.0",
+                "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+                "symfony/error-handler": "^4.4|^5.0|^6.0",
+                "symfony/expression-language": "^4.4|^5.0|^6.0",
+                "symfony/http-foundation": "^4.4|^5.0|^6.0",
+                "symfony/service-contracts": "^1.1|^2|^3",
+                "symfony/stopwatch": "^4.4|^5.0|^6.0"
+            },
+            "suggest": {
+                "symfony/dependency-injection": "",
+                "symfony/http-kernel": ""
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v2.5.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1",
+                "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "psr/event-dispatcher": "^1"
+            },
+            "suggest": {
+                "symfony/event-dispatcher-implementation": ""
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.5-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-01-02T09:53:40+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086",
+                "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-mbstring": "~1.8",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides basic utilities for the filesystem",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/filesystem/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/abe6d6f77d9465fed3cd2d029b29d03b56b56435",
+                "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Finds files and directories via an intuitive fluent interface",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/finder/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/options-resolver",
+            "version": "v5.4.21",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/options-resolver.git",
+                "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
+                "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/deprecation-contracts": "^2.1|^3",
+                "symfony/polyfill-php73": "~1.0",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\OptionsResolver\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an improved replacement for the array_replace PHP function",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "config",
+                "configuration",
+                "options"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/options-resolver/tree/v5.4.21"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-02-14T08:03:56+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php81",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php81.git",
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php81\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/process.git",
+                "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb",
+                "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/polyfill-php80": "^1.16"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Executes commands in sub-processes",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/process/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v5.4.35",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "887762aa99ff16f65dc8b48aafead415f942d407"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/887762aa99ff16f65dc8b48aafead415f942d407",
+                "reference": "887762aa99ff16f65dc8b48aafead415f942d407",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.5",
+                "symfony/service-contracts": "^1|^2|^3"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides a way to profile code",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/stopwatch/tree/v5.4.35"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T13:51:25+00:00"
+        },
+        {
+            "name": "symplify/monorepo-builder",
+            "version": "11.2.20",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symplify/monorepo-builder.git",
+                "reference": "444efe08701776cb1a03b9f3600e715697519aa6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symplify/monorepo-builder/zipball/444efe08701776cb1a03b9f3600e715697519aa6",
+                "reference": "444efe08701776cb1a03b9f3600e715697519aa6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2"
+            },
+            "bin": [
+                "bin/monorepo-builder"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "10.3-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Prefixed version of Not only Composer tools to build a Monorepo.",
+            "support": {
+                "issues": "https://github.com/symplify/monorepo-builder/issues",
+                "source": "https://github.com/symplify/monorepo-builder/tree/11.2.20"
+            },
+            "funding": [
+                {
+                    "url": "https://www.paypal.me/rectorphp",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/tomasvotruba",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-11-17T08:30:16+00:00"
+        },
+        {
+            "name": "tedivm/jshrink",
+            "version": "v1.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/tedious/JShrink.git",
+                "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/tedious/JShrink/zipball/7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e",
+                "reference": "7a35f5a4651ca2ce77295eb8a3b4e133ba47e19e",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0|^8.0"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^3.14",
+                "php-coveralls/php-coveralls": "^2.5.0",
+                "phpunit/phpunit": "^9|^10"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "JShrink": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Robert Hafner",
+                    "email": "tedivm@tedivm.com"
+                }
+            ],
+            "description": "Javascript Minifier built in PHP",
+            "homepage": "http://github.com/tedious/JShrink",
+            "keywords": [
+                "javascript",
+                "minifier"
+            ],
+            "support": {
+                "issues": "https://github.com/tedious/JShrink/issues",
+                "source": "https://github.com/tedious/JShrink/tree/v1.7.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/tedivm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/tedivm/jshrink",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-04T17:23:23+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+            "support": {
+                "issues": "https://github.com/theseer/tokenizer/issues",
+                "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-11-20T00:12:19+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": {
+        "mikey179/vfsstream": 20,
+        "pear/net_ftp": 20,
+        "pear/net_growl": 20,
+        "pear/versioncontrol_git": 20,
+        "phing/phing-composer-configurator": 20,
+        "roave/security-advisories": 20
+    },
+    "prefer-stable": true,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">= 7.4",
+        "ext-dom": "*",
+        "ext-json": "*",
+        "ext-libxml": "*",
+        "ext-simplexml": "*",
+        "ext-xml": "*"
+    },
+    "platform-dev": {
+        "ext-curl": "*",
+        "ext-iconv": "*",
+        "ext-openssl": "*",
+        "ext-pdo_sqlite": "*",
+        "ext-phar": "*",
+        "ext-sockets": "*",
+        "ext-xsl": "*",
+        "ext-zip": "*"
+    },
+    "platform-overrides": {
+        "php": "7.4"
+    },
+    "plugin-api-version": "2.6.0"
+}
diff --git a/nixpkgs/pkgs/development/php-packages/phing/default.nix b/nixpkgs/pkgs/development/php-packages/phing/default.nix
index 390904724e7b..9c0a155ff726 100644
--- a/nixpkgs/pkgs/development/php-packages/phing/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/phing/default.nix
@@ -1,34 +1,29 @@
-{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
-let
+(php.withExtensions({ enabled, all }: enabled ++ (with all; [ xsl ]))).buildComposerProject (finalAttrs: {
   pname = "phing";
-  version = "2.17.4";
-in
-mkDerivation {
-  inherit pname version;
+  version = "3.0.0-rc6";
 
-  src = fetchurl {
-    url = "https://github.com/phingofficial/phing/releases/download/v${version}/phing-${version}.phar";
-    sha256 = "sha256-3QZsl5QJkFX5Z4RovMtw2ELCp8Zl4xiZsIBikakJ474=";
+  src = fetchFromGitHub {
+    owner = "phingofficial";
+    repo = "phing";
+    rev = finalAttrs.version;
+    hash = "sha256-pOt6uQaz69WuHKYZhq6FFbjyHGrEc+Bf0Sw9uCS3Nrc=";
   };
 
-  dontUnpack = true;
+  # TODO: Open a PR against https://github.com/phingofficial/phing
+  # Their `composer.lock` is out of date therefore, we need to provide one
+  composerLock = ./composer.lock;
+  vendorHash = "sha256-ueTbbz3FGyRcRvlcJNirHdC77Tko4RKtYMFB3+4JdnQ=";
 
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phing/phing.phar
-    makeWrapper ${php}/bin/php $out/bin/phing \
-      --add-flags "$out/libexec/phing/phing.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
+  meta = {
     description = "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant";
-    license = licenses.lgpl3;
     homepage = "https://github.com/phingofficial/phing";
-    maintainers = with maintainers; teams.php.members;
+    license = lib.licenses.lgpl3;
+    mainProgram = "phing";
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/phive/default.nix b/nixpkgs/pkgs/development/php-packages/phive/default.nix
index f5670cdfcf23..f8efa3621ede 100644
--- a/nixpkgs/pkgs/development/php-packages/phive/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/phive/default.nix
@@ -1,32 +1,27 @@
-{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
-mkDerivation rec {
+php.buildComposerProject (finalAttrs: {
   pname = "phive";
   version = "0.15.2";
 
-  src = fetchurl {
-    url = "https://github.com/phar-io/phive/releases/download/${version}/phive-${version}.phar";
-    sha256 = "K7B2dT7F1nL14vlql6D+fo6ewkpDnu0A/SnvlCx5Bfk=";
+  src = fetchFromGitHub {
+    owner = "phar-io";
+    repo = "phive";
+    rev = finalAttrs.version;
+    hash = "sha256-K/YZOGANcefjfdFY1XYEQknm0bPRorlRnNGC7dEegZ0=";
   };
 
-  dontUnpack = true;
+  vendorHash = "sha256-0fJ+SyicvVONJ4FkOFTkBTekDAOjBfaLo0dZ2DYlGJU=";
 
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phive/phive.phar
-    makeWrapper ${php}/bin/php $out/bin/phive \
-      --add-flags "$out/libexec/phive/phive.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    changelog = "https://github.com/phar-io/phive/releases/tag/${version}";
+  meta = {
+    changelog = "https://github.com/phar-io/phive/releases/tag/${finalAttrs.version}";
     description = "The Phar Installation and Verification Environment (PHIVE)";
     homepage = "https://github.com/phar-io/phive";
-    license = licenses.bsd3;
-    maintainers = with maintainers; teams.php.members;
+    license = lib.licenses.bsd3;
+    mainProgram = "phive";
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/php-codesniffer/composer.lock b/nixpkgs/pkgs/development/php-packages/php-codesniffer/composer.lock
new file mode 100644
index 000000000000..79a3b1cf3091
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-codesniffer/composer.lock
@@ -0,0 +1,1349 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "380ff734679ff67031369af47d3378cd",
+    "packages": [],
+    "packages-dev": [
+        {
+            "name": "doctrine/instantiator",
+            "version": "1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^9 || ^11",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^0.16 || ^1",
+                "phpstan/phpstan": "^1.4",
+                "phpstan/phpstan-phpunit": "^1",
+                "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+                "vimeo/psalm": "^4.30 || ^5.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "https://ocramius.github.io/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/instantiator/issues",
+                "source": "https://github.com/doctrine/instantiator/tree/1.5.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-12-30T00:15:36+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.11.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/collections": "<1.6.8",
+                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.6.8",
+                "doctrine/common": "^2.13.3 || ^3.2.2",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ],
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "support": {
+                "issues": "https://github.com/myclabs/DeepCopy/issues",
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-03-08T13:26:56+00:00"
+        },
+        {
+            "name": "phpdocumentor/reflection-docblock",
+            "version": "2.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+                "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
+                "reference": "e6a969a640b00d8daa3c66518b0405fb41ae0c4b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "suggest": {
+                "dflydev/markdown": "~1.0",
+                "erusev/parsedown": "~1.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "phpDocumentor": [
+                        "src/"
+                    ]
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Mike van Riel",
+                    "email": "mike.vanriel@naenius.com"
+                }
+            ],
+            "support": {
+                "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+                "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/2.x"
+            },
+            "time": "2016-01-25T08:17:30+00:00"
+        },
+        {
+            "name": "phpspec/prophecy",
+            "version": "v1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phpspec/prophecy.git",
+                "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+                "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "phpdocumentor/reflection-docblock": "~2.0",
+                "sebastian/comparator": "~1.1"
+            },
+            "require-dev": {
+                "phpspec/phpspec": "~2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Prophecy\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Konstantin Kudryashov",
+                    "email": "ever.zet@gmail.com",
+                    "homepage": "http://everzet.com"
+                },
+                {
+                    "name": "Marcello Duarte",
+                    "email": "marcello.duarte@gmail.com"
+                }
+            ],
+            "description": "Highly opinionated mocking framework for PHP 5.3+",
+            "homepage": "https://github.com/phpspec/prophecy",
+            "keywords": [
+                "Double",
+                "Dummy",
+                "fake",
+                "mock",
+                "spy",
+                "stub"
+            ],
+            "support": {
+                "issues": "https://github.com/phpspec/prophecy/issues",
+                "source": "https://github.com/phpspec/prophecy/tree/master"
+            },
+            "time": "2015-08-13T10:07:40+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "85f5db2d0a0da79ad6a256eb54148ba383059ad9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85f5db2d0a0da79ad6a256eb54148ba383059ad9",
+                "reference": "85f5db2d0a0da79ad6a256eb54148ba383059ad9",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6",
+                "phpunit/php-file-iterator": "~1.3",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-token-stream": "~1.3",
+                "sebastian/code-unit-reverse-lookup": "~1.0",
+                "sebastian/environment": "^1.3.2",
+                "sebastian/version": "~1.0|~2.0"
+            },
+            "require-dev": {
+                "ext-xdebug": ">=2.1.4",
+                "phpunit/phpunit": "~5"
+            },
+            "suggest": {
+                "ext-dom": "*",
+                "ext-xdebug": ">=2.2.1",
+                "ext-xmlwriter": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.net/phpunit",
+                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/3.2.0"
+            },
+            "time": "2016-02-13T06:47:56+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "1.4.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.net/phpunit",
+                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5"
+            },
+            "time": "2017-11-27T13:52:08+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "1.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+                "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1"
+            },
+            "time": "2015-06-21T13:50:34+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "7.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8a59d9e25720482ee7fcdf296595e08795b84dc5",
+                "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^11.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "7.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+                "security": "https://github.com/sebastianbergmann/php-timer/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2024-02-02T06:08:01+00:00"
+        },
+        {
+            "name": "phpunit/php-token-stream",
+            "version": "1.4.12",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Wrapper around PHP's tokenizer extension.",
+            "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+            "keywords": [
+                "tokenizer"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
+                "source": "https://github.com/sebastianbergmann/php-token-stream/tree/1.4"
+            },
+            "abandoned": true,
+            "time": "2017-12-04T08:55:13+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "5.2.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "073701643835376cb2f15dc005ea8933f8d4edbd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/073701643835376cb2f15dc005ea8933f8d4edbd",
+                "reference": "073701643835376cb2f15dc005ea8933f8d4edbd",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-pcre": "*",
+                "ext-reflection": "*",
+                "ext-spl": "*",
+                "myclabs/deep-copy": "~1.3",
+                "php": ">=5.6",
+                "phpspec/prophecy": "^1.3.1",
+                "phpunit/php-code-coverage": "~3.2",
+                "phpunit/php-file-iterator": "~1.4",
+                "phpunit/php-text-template": "~1.2",
+                "phpunit/php-timer": ">=1.0.6",
+                "phpunit/phpunit-mock-objects": ">=3.0.5",
+                "sebastian/comparator": "~1.1",
+                "sebastian/diff": "~1.2",
+                "sebastian/environment": "~1.3",
+                "sebastian/exporter": "~1.2",
+                "sebastian/global-state": "~1.0",
+                "sebastian/resource-operations": "~1.0",
+                "sebastian/version": "~1.0|~2.0",
+                "symfony/yaml": "~2.1|~3.0"
+            },
+            "suggest": {
+                "phpunit/php-invoker": "~1.1"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.net/phpunit",
+                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/5.2.7"
+            },
+            "time": "2016-02-18T06:39:51+00:00"
+        },
+        {
+            "name": "phpunit/phpunit-mock-objects",
+            "version": "3.1.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+                "reference": "151c96874bff6fe61a25039df60e776613a61489"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/151c96874bff6fe61a25039df60e776613a61489",
+                "reference": "151c96874bff6fe61a25039df60e776613a61489",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.0.2",
+                "php": ">=5.6",
+                "phpunit/php-text-template": "~1.2",
+                "sebastian/exporter": "~1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~5"
+            },
+            "suggest": {
+                "ext-soap": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sb@sebastian-bergmann.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Mock Object library for PHPUnit",
+            "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+            "keywords": [
+                "mock",
+                "xunit"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.net/phpunit",
+                "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
+                "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.1"
+            },
+            "abandoned": true,
+            "time": "2016-04-20T14:39:26+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+                "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^8.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-11-30T08:15:22+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "1.2.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/diff": "~1.2",
+                "sebastian/exporter": "~1.2 || ~2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.2.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "http://www.github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/comparator/issues",
+                "source": "https://github.com/sebastianbergmann/comparator/tree/1.2"
+            },
+            "time": "2017-01-29T09:50:25+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e",
+                "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.8"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.4-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/diff/issues",
+                "source": "https://github.com/sebastianbergmann/diff/tree/master"
+            },
+            "time": "2015-12-08T07:14:41+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "1.3.7",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
+                "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/environment/issues",
+                "source": "https://github.com/sebastianbergmann/environment/tree/1.3.7"
+            },
+            "time": "2016-05-17T03:18:57+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
+                "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3",
+                "sebastian/recursion-context": "~1.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "http://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/exporter/issues",
+                "source": "https://github.com/sebastianbergmann/exporter/tree/master"
+            },
+            "time": "2016-06-17T09:04:28+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "1.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.2"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/global-state/issues",
+                "source": "https://github.com/sebastianbergmann/global-state/tree/1.1.1"
+            },
+            "time": "2015-10-12T03:26:01+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "1.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+                "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.4"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+                "source": "https://github.com/sebastianbergmann/recursion-context/tree/master"
+            },
+            "time": "2016-10-03T07:41:43+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+                "source": "https://github.com/sebastianbergmann/resource-operations/tree/master"
+            },
+            "time": "2015-07-28T20:34:47+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "2.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/version/issues",
+                "source": "https://github.com/sebastianbergmann/version/tree/master"
+            },
+            "time": "2016-10-03T07:35:21+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v3.4.47",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "88289caa3c166321883f67fe5130188ebbb47094"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094",
+                "reference": "88289caa3c166321883f67fe5130188ebbb47094",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.5.9|>=7.0.8",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/console": "<3.4"
+            },
+            "require-dev": {
+                "symfony/console": "~3.4|~4.0"
+            },
+            "suggest": {
+                "symfony/console": "For validating YAML files using the lint command"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony Yaml Component",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/yaml/tree/v3.4.47"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-10-24T10:57:07+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.4.0",
+        "ext-tokenizer": "*",
+        "ext-xmlwriter": "*",
+        "ext-simplexml": "*"
+    },
+    "platform-dev": [],
+    "plugin-api-version": "2.6.0"
+}
diff --git a/nixpkgs/pkgs/development/php-packages/php-codesniffer/default.nix b/nixpkgs/pkgs/development/php-packages/php-codesniffer/default.nix
new file mode 100644
index 000000000000..c3734cda47aa
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-codesniffer/default.nix
@@ -0,0 +1,27 @@
+{ fetchFromGitHub
+, lib
+, php
+}:
+
+php.buildComposerProject (finalAttrs: {
+  pname = "php-codesniffer";
+  version = "3.7.2";
+
+  src = fetchFromGitHub {
+    owner = "squizlabs";
+    repo = "PHP_CodeSniffer";
+    rev = "${finalAttrs.version}";
+    hash = "sha256-EJF9e8gyUy5SZ+lmyWFPAabqnP7Fy5t80gfXWWxLpk8=";
+  };
+
+  composerLock = ./composer.lock;
+  vendorHash = "sha256-svkQEKKFa0yFTiOihnAzVdi3oolq3r6JmlugyBZJATA=";
+
+  meta = {
+    changelog = "https://github.com/PHPCSStandards/PHP_CodeSniffer/releases/tag/${finalAttrs.version}";
+    description = "PHP coding standard tool";
+    license = lib.licenses.bsd3;
+    homepage = "https://github.com/PHPCSStandards/PHP_CodeSniffer/";
+    maintainers = with lib.maintainers; [ javaguirre ] ++ lib.teams.php.members;
+  };
+})
diff --git a/nixpkgs/pkgs/development/php-packages/php-cs-fixer/composer.lock b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/composer.lock
new file mode 100644
index 000000000000..a9d5505e1378
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/composer.lock
@@ -0,0 +1,4747 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "51f7af207f2db0d57a6e749c90fc8a2a",
+    "packages": [
+        {
+            "name": "composer/pcre",
+            "version": "3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/pcre.git",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.4 || ^8.0"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.3",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Pcre\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+            "keywords": [
+                "PCRE",
+                "preg",
+                "regex",
+                "regular expression"
+            ],
+            "support": {
+                "issues": "https://github.com/composer/pcre/issues",
+                "source": "https://github.com/composer/pcre/tree/3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-11T07:11:09+00:00"
+        },
+        {
+            "name": "composer/semver",
+            "version": "3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/semver.git",
+                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
+                "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.3.2 || ^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.4",
+                "symfony/phpunit-bridge": "^4.2 || ^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Semver\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nils Adermann",
+                    "email": "naderman@naderman.de",
+                    "homepage": "http://www.naderman.de"
+                },
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                },
+                {
+                    "name": "Rob Bast",
+                    "email": "rob.bast@gmail.com",
+                    "homepage": "http://robbast.nl"
+                }
+            ],
+            "description": "Semver library that offers utilities, version constraint parsing and validation.",
+            "keywords": [
+                "semantic",
+                "semver",
+                "validation",
+                "versioning"
+            ],
+            "support": {
+                "irc": "ircs://irc.libera.chat:6697/composer",
+                "issues": "https://github.com/composer/semver/issues",
+                "source": "https://github.com/composer/semver/tree/3.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-08-31T09:50:34+00:00"
+        },
+        {
+            "name": "composer/xdebug-handler",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/xdebug-handler.git",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+                "shasum": ""
+            },
+            "require": {
+                "composer/pcre": "^1 || ^2 || ^3",
+                "php": "^7.2.5 || ^8.0",
+                "psr/log": "^1 || ^2 || ^3"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.0",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^6.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Composer\\XdebugHandler\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "John Stevenson",
+                    "email": "john-stevenson@blueyonder.co.uk"
+                }
+            ],
+            "description": "Restarts a process without Xdebug.",
+            "keywords": [
+                "Xdebug",
+                "performance"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.org/composer",
+                "issues": "https://github.com/composer/xdebug-handler/issues",
+                "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-02-25T21:32:43+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/2.0.2"
+            },
+            "time": "2021-11-05T16:47:00+00:00"
+        },
+        {
+            "name": "psr/event-dispatcher",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/event-dispatcher.git",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\EventDispatcher\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "http://www.php-fig.org/"
+                }
+            ],
+            "description": "Standard interfaces for event handling.",
+            "keywords": [
+                "events",
+                "psr",
+                "psr-14"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/event-dispatcher/issues",
+                "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+            },
+            "time": "2019-01-08T18:20:26+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+                "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/2.0.0"
+            },
+            "time": "2021-07-14T16:41:46+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "5.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
+                "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0",
+                "symfony/process": "^4.2 || ^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "5.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/diff/issues",
+                "security": "https://github.com/sebastianbergmann/diff/security/policy",
+                "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T10:55:06+00:00"
+        },
+        {
+            "name": "symfony/console",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/console.git",
+                "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
+                "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/polyfill-mbstring": "~1.0",
+                "symfony/service-contracts": "^2.5|^3",
+                "symfony/string": "^5.4|^6.0|^7.0"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<5.4",
+                "symfony/dotenv": "<5.4",
+                "symfony/event-dispatcher": "<5.4",
+                "symfony/lock": "<5.4",
+                "symfony/process": "<5.4"
+            },
+            "provide": {
+                "psr/log-implementation": "1.0|2.0|3.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^5.4|^6.0|^7.0",
+                "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+                "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+                "symfony/http-foundation": "^6.4|^7.0",
+                "symfony/http-kernel": "^6.4|^7.0",
+                "symfony/lock": "^5.4|^6.0|^7.0",
+                "symfony/messenger": "^5.4|^6.0|^7.0",
+                "symfony/process": "^5.4|^6.0|^7.0",
+                "symfony/stopwatch": "^5.4|^6.0|^7.0",
+                "symfony/var-dumper": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Console\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Eases the creation of beautiful and testable command line interfaces",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "cli",
+                "command-line",
+                "console",
+                "terminal"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/console/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-05-23T14:45:45+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
+                "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae9d3a6f3003a6caf56acd7466d8d52378d44fef",
+                "reference": "ae9d3a6f3003a6caf56acd7466d8d52378d44fef",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/event-dispatcher-contracts": "^2.5|^3"
+            },
+            "conflict": {
+                "symfony/dependency-injection": "<5.4",
+                "symfony/service-contracts": "<2.5"
+            },
+            "provide": {
+                "psr/event-dispatcher-implementation": "1.0",
+                "symfony/event-dispatcher-implementation": "2.0|3.0"
+            },
+            "require-dev": {
+                "psr/log": "^1|^2|^3",
+                "symfony/config": "^5.4|^6.0|^7.0",
+                "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+                "symfony/error-handler": "^5.4|^6.0|^7.0",
+                "symfony/expression-language": "^5.4|^6.0|^7.0",
+                "symfony/http-foundation": "^5.4|^6.0|^7.0",
+                "symfony/service-contracts": "^2.5|^3",
+                "symfony/stopwatch": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\EventDispatcher\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/event-dispatcher-contracts",
+            "version": "v3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/event-dispatcher-contracts.git",
+                "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
+                "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "psr/event-dispatcher": "^1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\EventDispatcher\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to dispatching event",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-05-23T14:45:45+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+                "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-mbstring": "~1.8"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides basic utilities for the filesystem",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/filesystem/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/finder",
+            "version": "v6.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/finder.git",
+                "reference": "11d736e97f116ac375a81f96e662911a34cd50ce"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce",
+                "reference": "11d736e97f116ac375a81f96e662911a34cd50ce",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "symfony/filesystem": "^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Finder\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Finds files and directories via an intuitive fluent interface",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/finder/tree/v6.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-31T17:30:12+00:00"
+        },
+        {
+            "name": "symfony/options-resolver",
+            "version": "v6.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/options-resolver.git",
+                "reference": "22301f0e7fdeaacc14318928612dee79be99860e"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e",
+                "reference": "22301f0e7fdeaacc14318928612dee79be99860e",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\OptionsResolver\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an improved replacement for the array_replace PHP function",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "config",
+                "configuration",
+                "options"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/options-resolver/tree/v6.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-08-08T10:16:24+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-grapheme",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's grapheme_* functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "grapheme",
+                "intl",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-intl-normalizer",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for intl's Normalizer class and related functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "intl",
+                "normalizer",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php80",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+                "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php80\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-php81",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-php81.git",
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
+                "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Php81\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/process",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/process.git",
+                "reference": "31642b0818bfcff85930344ef93193f8c607e0a3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/process/zipball/31642b0818bfcff85930344ef93193f8c607e0a3",
+                "reference": "31642b0818bfcff85930344ef93193f8c607e0a3",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Process\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Executes commands in sub-processes",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/process/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v3.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "psr/container": "^1.1|^2.0"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Test/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-26T14:02:43+00:00"
+        },
+        {
+            "name": "symfony/stopwatch",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/stopwatch.git",
+                "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/stopwatch/zipball/416596166641f1f728b0a64f5b9dd07cceb410c1",
+                "reference": "416596166641f1f728b0a64f5b9dd07cceb410c1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/service-contracts": "^2.5|^3"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Stopwatch\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides a way to profile code",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/stopwatch/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:35:58+00:00"
+        },
+        {
+            "name": "symfony/string",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/string.git",
+                "reference": "7a14736fb179876575464e4658fce0c304e8c15b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/string/zipball/7a14736fb179876575464e4658fce0c304e8c15b",
+                "reference": "7a14736fb179876575464e4658fce0c304e8c15b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-intl-grapheme": "~1.0",
+                "symfony/polyfill-intl-normalizer": "~1.0",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "symfony/translation-contracts": "<2.5"
+            },
+            "require-dev": {
+                "symfony/error-handler": "^5.4|^6.0|^7.0",
+                "symfony/http-client": "^5.4|^6.0|^7.0",
+                "symfony/intl": "^6.2|^7.0",
+                "symfony/translation-contracts": "^2.5|^3.0",
+                "symfony/var-exporter": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\String\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "grapheme",
+                "i18n",
+                "string",
+                "unicode",
+                "utf-8",
+                "utf8"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/string/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-25T09:26:29+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "facile-it/paraunit",
+            "version": "2.3.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/facile-it/paraunit.git",
+                "reference": "73dfb78ade299e8262faa837ff1684feefdcc3e6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/facile-it/paraunit/zipball/73dfb78ade299e8262faa837ff1684feefdcc3e6",
+                "reference": "73dfb78ade299e8262faa837ff1684feefdcc3e6",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "jean85/pretty-package-versions": "^1.5.1||^2.0.1",
+                "php": "^8.1",
+                "phpunit/php-code-coverage": "^10.0||11.0",
+                "phpunit/php-file-iterator": "^4.0||5.0",
+                "phpunit/phpunit": "^10.5.4||^11.0",
+                "psr/event-dispatcher": "^1.0",
+                "symfony/console": "^4.4||^5.0||^6.0||^7.0",
+                "symfony/dependency-injection": "^4.4||^5.0||^6.0||^7.0",
+                "symfony/event-dispatcher": "^4.4||^5.0||^6.0||^7.0",
+                "symfony/process": "^4.4||^5.0||^6.0||^7.0",
+                "symfony/stopwatch": "^4.4||^5.0||^6.0||^7.0"
+            },
+            "conflict": {
+                "composer/package-versions-deprecated": "<1.11.99"
+            },
+            "require-dev": {
+                "facile-it/facile-coding-standard": "^1.0",
+                "jangregor/phpstan-prophecy": "^1.0.0",
+                "phpspec/prophecy": "dev-allow-phpunit-11 as 1.19",
+                "phpspec/prophecy-phpunit": "dev-allow-phpunit-11 as 2.2.0",
+                "phpstan/extension-installer": "^1.0",
+                "phpstan/phpstan": "^1.10.4",
+                "phpstan/phpstan-phpunit": "^1.1",
+                "phpunit/php-invoker": "^4.0||^5.0",
+                "psalm/plugin-phpunit": "^0.18",
+                "psalm/plugin-symfony": "^5.0",
+                "rector/rector": "^0.15",
+                "symfony/expression-language": "^4.4||^5.0||^6.0||^7.0",
+                "symfony/phpunit-bridge": "^6.4||^7.0",
+                "vimeo/psalm": "^5.5.0"
+            },
+            "suggest": {
+                "dama/doctrine-test-bundle": "Useful for Symfony+Doctrine functional testing, providing DB isolation",
+                "ext-pcov": "A coverage driver for faster collection"
+            },
+            "bin": [
+                "src/Bin/paraunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-0.12.x": "0.12-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Paraunit\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "Apache-2.0"
+            ],
+            "authors": [
+                {
+                    "name": "Francesco Panina",
+                    "email": "francesco.panina@gmail.com"
+                },
+                {
+                    "name": "Alessandro Lai",
+                    "email": "alessandro.lai85@gmail.com"
+                }
+            ],
+            "description": "paraunit",
+            "homepage": "https://github.com/facile-it/paraunit",
+            "keywords": [
+                "parallel test",
+                "phpunit",
+                "testing"
+            ],
+            "support": {
+                "issues": "https://github.com/facile-it/paraunit/issues",
+                "source": "https://github.com/facile-it/paraunit/tree/2.3.1"
+            },
+            "time": "2024-02-06T09:05:40+00:00"
+        },
+        {
+            "name": "guzzlehttp/guzzle",
+            "version": "7.8.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/guzzle.git",
+                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104",
+                "reference": "41042bc7ab002487b876a0683fc8dce04ddce104",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
+                "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-client": "^1.0",
+                "symfony/deprecation-contracts": "^2.2 || ^3.0"
+            },
+            "provide": {
+                "psr/http-client-implementation": "1.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "ext-curl": "*",
+                "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999",
+                "php-http/message-factory": "^1.1",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15",
+                "psr/log": "^1.1 || ^2.0 || ^3.0"
+            },
+            "suggest": {
+                "ext-curl": "Required for CURL handler support",
+                "ext-intl": "Required for Internationalized Domain Name (IDN) support",
+                "psr/log": "Required for using the Log middleware"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/functions_include.php"
+                ],
+                "psr-4": {
+                    "GuzzleHttp\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Jeremy Lindblom",
+                    "email": "jeremeamia@gmail.com",
+                    "homepage": "https://github.com/jeremeamia"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle is a PHP HTTP client library",
+            "keywords": [
+                "client",
+                "curl",
+                "framework",
+                "http",
+                "http client",
+                "psr-18",
+                "psr-7",
+                "rest",
+                "web service"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/guzzle/issues",
+                "source": "https://github.com/guzzle/guzzle/tree/7.8.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:35:24+00:00"
+        },
+        {
+            "name": "guzzlehttp/promises",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/promises.git",
+                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
+                "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Promise\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                }
+            ],
+            "description": "Guzzle promises library",
+            "keywords": [
+                "promise"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/promises/issues",
+                "source": "https://github.com/guzzle/promises/tree/2.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:19:20+00:00"
+        },
+        {
+            "name": "guzzlehttp/psr7",
+            "version": "2.6.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/guzzle/psr7.git",
+                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221",
+                "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2.5 || ^8.0",
+                "psr/http-factory": "^1.0",
+                "psr/http-message": "^1.1 || ^2.0",
+                "ralouphie/getallheaders": "^3.0"
+            },
+            "provide": {
+                "psr/http-factory-implementation": "1.0",
+                "psr/http-message-implementation": "1.0"
+            },
+            "require-dev": {
+                "bamarni/composer-bin-plugin": "^1.8.2",
+                "http-interop/http-factory-tests": "^0.9",
+                "phpunit/phpunit": "^8.5.36 || ^9.6.15"
+            },
+            "suggest": {
+                "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+            },
+            "type": "library",
+            "extra": {
+                "bamarni-bin": {
+                    "bin-links": true,
+                    "forward-command": false
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "GuzzleHttp\\Psr7\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Graham Campbell",
+                    "email": "hello@gjcampbell.co.uk",
+                    "homepage": "https://github.com/GrahamCampbell"
+                },
+                {
+                    "name": "Michael Dowling",
+                    "email": "mtdowling@gmail.com",
+                    "homepage": "https://github.com/mtdowling"
+                },
+                {
+                    "name": "George Mponos",
+                    "email": "gmponos@gmail.com",
+                    "homepage": "https://github.com/gmponos"
+                },
+                {
+                    "name": "Tobias Nyholm",
+                    "email": "tobias.nyholm@gmail.com",
+                    "homepage": "https://github.com/Nyholm"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://github.com/sagikazarmark"
+                },
+                {
+                    "name": "Tobias Schultze",
+                    "email": "webmaster@tubo-world.de",
+                    "homepage": "https://github.com/Tobion"
+                },
+                {
+                    "name": "Márk Sági-Kazár",
+                    "email": "mark.sagikazar@gmail.com",
+                    "homepage": "https://sagikazarmark.hu"
+                }
+            ],
+            "description": "PSR-7 message implementation that also provides common utility methods",
+            "keywords": [
+                "http",
+                "message",
+                "psr-7",
+                "request",
+                "response",
+                "stream",
+                "uri",
+                "url"
+            ],
+            "support": {
+                "issues": "https://github.com/guzzle/psr7/issues",
+                "source": "https://github.com/guzzle/psr7/tree/2.6.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/GrahamCampbell",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/Nyholm",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-03T20:05:35+00:00"
+        },
+        {
+            "name": "jean85/pretty-package-versions",
+            "version": "2.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Jean85/pretty-package-versions.git",
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+                "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af",
+                "shasum": ""
+            },
+            "require": {
+                "composer-runtime-api": "^2.0.0",
+                "php": "^7.1|^8.0"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^2.17",
+                "jean85/composer-provided-replaced-stub-package": "^1.0",
+                "phpstan/phpstan": "^0.12.66",
+                "phpunit/phpunit": "^7.5|^8.5|^9.4",
+                "vimeo/psalm": "^4.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Jean85\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Alessandro Lai",
+                    "email": "alessandro.lai85@gmail.com"
+                }
+            ],
+            "description": "A library to get pretty versions strings of installed dependencies",
+            "keywords": [
+                "composer",
+                "package",
+                "release",
+                "versions"
+            ],
+            "support": {
+                "issues": "https://github.com/Jean85/pretty-package-versions/issues",
+                "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5"
+            },
+            "time": "2021-10-08T21:21:46+00:00"
+        },
+        {
+            "name": "justinrainbow/json-schema",
+            "version": "v5.2.13",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/justinrainbow/json-schema.git",
+                "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
+                "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1",
+                "json-schema/json-schema-test-suite": "1.2.0",
+                "phpunit/phpunit": "^4.8.35"
+            },
+            "bin": [
+                "bin/validate-json"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "JsonSchema\\": "src/JsonSchema/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Bruno Prieto Reis",
+                    "email": "bruno.p.reis@gmail.com"
+                },
+                {
+                    "name": "Justin Rainbow",
+                    "email": "justin.rainbow@gmail.com"
+                },
+                {
+                    "name": "Igor Wiedler",
+                    "email": "igor@wiedler.ch"
+                },
+                {
+                    "name": "Robert Schönthal",
+                    "email": "seroscho@googlemail.com"
+                }
+            ],
+            "description": "A library to validate a json schema.",
+            "homepage": "https://github.com/justinrainbow/json-schema",
+            "keywords": [
+                "json",
+                "schema"
+            ],
+            "support": {
+                "issues": "https://github.com/justinrainbow/json-schema/issues",
+                "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13"
+            },
+            "time": "2023-09-26T02:20:38+00:00"
+        },
+        {
+            "name": "keradus/cli-executor",
+            "version": "v2.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHP-CS-Fixer/cli-executor.git",
+                "reference": "6d83d4367d15088cb61dbbd547173d3f926e0027"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/cli-executor/zipball/6d83d4367d15088cb61dbbd547173d3f926e0027",
+                "reference": "6d83d4367d15088cb61dbbd547173d3f926e0027",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1.3 || ^8.0",
+                "symfony/process": "^4.4 || ^5 || ^6 || ^7"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^3.1",
+                "maglnet/composer-require-checker": "^2 || ^3",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5",
+                "symfony/phpunit-bridge": "^5.3.7 || ^6 || ^7"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Keradus\\CliExecutor\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                }
+            ],
+            "description": "CLI execution wrapper",
+            "support": {
+                "issues": "https://github.com/PHP-CS-Fixer/cli-executor/issues",
+                "source": "https://github.com/PHP-CS-Fixer/cli-executor/tree/v2.1.0"
+            },
+            "time": "2023-11-22T09:34:45+00:00"
+        },
+        {
+            "name": "mikey179/vfsstream",
+            "version": "v1.6.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bovigo/vfsStream.git",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.5|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "org\\bovigo\\vfs\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Frank Kleine",
+                    "homepage": "http://frankkleine.de/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Virtual file system to mock the real file system in unit tests.",
+            "homepage": "http://vfs.bovigo.org/",
+            "support": {
+                "issues": "https://github.com/bovigo/vfsStream/issues",
+                "source": "https://github.com/bovigo/vfsStream/tree/master",
+                "wiki": "https://github.com/bovigo/vfsStream/wiki"
+            },
+            "time": "2022-02-23T02:02:42+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.11.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/collections": "<1.6.8",
+                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.6.8",
+                "doctrine/common": "^2.13.3 || ^3.2.2",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ],
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "support": {
+                "issues": "https://github.com/myclabs/DeepCopy/issues",
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-03-08T13:26:56+00:00"
+        },
+        {
+            "name": "nikic/php-parser",
+            "version": "v5.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nikic/PHP-Parser.git",
+                "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69",
+                "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-json": "*",
+                "ext-tokenizer": "*",
+                "php": ">=7.4"
+            },
+            "require-dev": {
+                "ircmaxell/php-yacc": "^0.0.7",
+                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+            },
+            "bin": [
+                "bin/php-parse"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpParser\\": "lib/PhpParser"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Nikita Popov"
+                }
+            ],
+            "description": "A PHP parser written in PHP",
+            "keywords": [
+                "parser",
+                "php"
+            ],
+            "support": {
+                "issues": "https://github.com/nikic/PHP-Parser/issues",
+                "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1"
+            },
+            "time": "2024-02-21T19:24:10+00:00"
+        },
+        {
+            "name": "phar-io/manifest",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/manifest.git",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-phar": "*",
+                "ext-xmlwriter": "*",
+                "phar-io/version": "^3.0.1",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+            "support": {
+                "issues": "https://github.com/phar-io/manifest/issues",
+                "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+            },
+            "time": "2021-07-20T11:28:43+00:00"
+        },
+        {
+            "name": "phar-io/version",
+            "version": "3.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/version.git",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Library for handling version information and constraints",
+            "support": {
+                "issues": "https://github.com/phar-io/version/issues",
+                "source": "https://github.com/phar-io/version/tree/3.2.1"
+            },
+            "time": "2022-02-21T01:04:05+00:00"
+        },
+        {
+            "name": "php-coveralls/php-coveralls",
+            "version": "v2.7.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-coveralls/php-coveralls.git",
+                "reference": "b36fa4394e519dafaddc04ae03976bc65a25ba15"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/b36fa4394e519dafaddc04ae03976bc65a25ba15",
+                "reference": "b36fa4394e519dafaddc04ae03976bc65a25ba15",
+                "shasum": ""
+            },
+            "require": {
+                "ext-json": "*",
+                "ext-simplexml": "*",
+                "guzzlehttp/guzzle": "^6.0 || ^7.0",
+                "php": "^7.0 || ^8.0",
+                "psr/log": "^1.0 || ^2.0",
+                "symfony/config": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
+                "symfony/console": "^2.1 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
+                "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
+                "symfony/yaml": "^2.0.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0 || ^7.0 || >=8.0 <8.5.29 || >=9.0 <9.5.23",
+                "sanmai/phpunit-legacy-adapter": "^6.1 || ^8.0"
+            },
+            "suggest": {
+                "symfony/http-kernel": "Allows Symfony integration"
+            },
+            "bin": [
+                "bin/php-coveralls"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "PhpCoveralls\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Kitamura Satoshi",
+                    "email": "with.no.parachute@gmail.com",
+                    "homepage": "https://www.facebook.com/satooshi.jp",
+                    "role": "Original creator"
+                },
+                {
+                    "name": "Takashi Matsuo",
+                    "email": "tmatsuo@google.com"
+                },
+                {
+                    "name": "Google Inc"
+                },
+                {
+                    "name": "Dariusz Ruminski",
+                    "email": "dariusz.ruminski@gmail.com",
+                    "homepage": "https://github.com/keradus"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors"
+                }
+            ],
+            "description": "PHP client library for Coveralls API",
+            "homepage": "https://github.com/php-coveralls/php-coveralls",
+            "keywords": [
+                "ci",
+                "coverage",
+                "github",
+                "test"
+            ],
+            "support": {
+                "issues": "https://github.com/php-coveralls/php-coveralls/issues",
+                "source": "https://github.com/php-coveralls/php-coveralls/tree/v2.7.0"
+            },
+            "time": "2023-11-22T10:21:01+00:00"
+        },
+        {
+            "name": "php-cs-fixer/accessible-object",
+            "version": "v1.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHP-CS-Fixer/AccessibleObject.git",
+                "reference": "a08d2ad0ed28555cca941aa197610db8b45599bd"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/AccessibleObject/zipball/a08d2ad0ed28555cca941aa197610db8b45599bd",
+                "reference": "a08d2ad0ed28555cca941aa197610db8b45599bd",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^5.6 || ^7.0 || ^8.0"
+            },
+            "require-dev": {
+                "symfony/phpunit-bridge": "^5.1"
+            },
+            "type": "application",
+            "autoload": {
+                "psr-4": {
+                    "PhpCsFixer\\AccessibleObject\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                }
+            ],
+            "description": "A library to reveal object internals.",
+            "support": {
+                "issues": "https://github.com/PHP-CS-Fixer/AccessibleObject/issues",
+                "source": "https://github.com/PHP-CS-Fixer/AccessibleObject/tree/v1.1.0"
+            },
+            "time": "2020-10-23T16:25:26+00:00"
+        },
+        {
+            "name": "php-cs-fixer/phpunit-constraint-isidenticalstring",
+            "version": "v1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHP-CS-Fixer/phpunit-constraint-isidenticalstring.git",
+                "reference": "2c55d31fcbda32b48780cbeff87f188354813db0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/phpunit-constraint-isidenticalstring/zipball/2c55d31fcbda32b48780cbeff87f188354813db0",
+                "reference": "2c55d31fcbda32b48780cbeff87f188354813db0",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0 || ^8.0",
+                "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.0 || ^9.0 || ^10.0 || ^11.0.1"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/Constraint/IsIdenticalString.php"
+                ],
+                "psr-4": {
+                    "PhpCsFixer\\PhpunitConstraintIsIdenticalString\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                }
+            ],
+            "description": "Constraint for testing strings considering not-same line endings.",
+            "support": {
+                "issues": "https://github.com/PHP-CS-Fixer/phpunit-constraint-isidenticalstring/issues",
+                "source": "https://github.com/PHP-CS-Fixer/phpunit-constraint-isidenticalstring/tree/v1.5.0"
+            },
+            "time": "2024-02-04T19:08:54+00:00"
+        },
+        {
+            "name": "php-cs-fixer/phpunit-constraint-xmlmatchesxsd",
+            "version": "v1.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHP-CS-Fixer/phpunit-constraint-xmlmatchesxsd.git",
+                "reference": "db3feb2b6d2cf5cd18f7053c6aa60a21dccf18d3"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHP-CS-Fixer/phpunit-constraint-xmlmatchesxsd/zipball/db3feb2b6d2cf5cd18f7053c6aa60a21dccf18d3",
+                "reference": "db3feb2b6d2cf5cd18f7053c6aa60a21dccf18d3",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "php": "^7.0 || ^8.0",
+                "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.0 || ^9.0 || ^10.0 || ^11.0.1"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/Constraint/XmlMatchesXsd.php"
+                ],
+                "psr-4": {
+                    "PhpCsFixer\\PhpunitConstraintXmlMatchesXsd\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "SpacePossum"
+                },
+                {
+                    "name": "Dariusz Rumiński",
+                    "email": "dariusz.ruminski@gmail.com"
+                }
+            ],
+            "description": "Constraint for testing XML against XSD.",
+            "support": {
+                "issues": "https://github.com/PHP-CS-Fixer/phpunit-constraint-xmlmatchesxsd/issues",
+                "source": "https://github.com/PHP-CS-Fixer/phpunit-constraint-xmlmatchesxsd/tree/v1.5.0"
+            },
+            "time": "2024-02-04T19:08:56+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "10.1.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "78c3b7625965c2513ee96569a4dbb62601784145"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145",
+                "reference": "78c3b7625965c2513ee96569a4dbb62601784145",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "ext-xmlwriter": "*",
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=8.1",
+                "phpunit/php-file-iterator": "^4.0",
+                "phpunit/php-text-template": "^3.0",
+                "sebastian/code-unit-reverse-lookup": "^3.0",
+                "sebastian/complexity": "^3.0",
+                "sebastian/environment": "^6.0",
+                "sebastian/lines-of-code": "^2.0",
+                "sebastian/version": "^4.0",
+                "theseer/tokenizer": "^1.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.1"
+            },
+            "suggest": {
+                "ext-pcov": "PHP extension that provides line coverage",
+                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "10.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-21T15:38:30+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "4.1.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
+                "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+                "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-08-31T06:24:48+00:00"
+        },
+        {
+            "name": "phpunit/php-invoker",
+            "version": "4.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-invoker.git",
+                "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
+                "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "ext-pcntl": "*",
+                "phpunit/phpunit": "^10.0"
+            },
+            "suggest": {
+                "ext-pcntl": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Invoke callables with a timeout",
+            "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+            "keywords": [
+                "process"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+                "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:56:09+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "3.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
+                "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+                "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-08-31T14:07:24+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "6.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
+                "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "6.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+                "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:57:52+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "10.5.10",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c",
+                "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "ext-xmlwriter": "*",
+                "myclabs/deep-copy": "^1.10.1",
+                "phar-io/manifest": "^2.0.3",
+                "phar-io/version": "^3.0.2",
+                "php": ">=8.1",
+                "phpunit/php-code-coverage": "^10.1.5",
+                "phpunit/php-file-iterator": "^4.0",
+                "phpunit/php-invoker": "^4.0",
+                "phpunit/php-text-template": "^3.0",
+                "phpunit/php-timer": "^6.0",
+                "sebastian/cli-parser": "^2.0",
+                "sebastian/code-unit": "^2.0",
+                "sebastian/comparator": "^5.0",
+                "sebastian/diff": "^5.0",
+                "sebastian/environment": "^6.0",
+                "sebastian/exporter": "^5.1",
+                "sebastian/global-state": "^6.0.1",
+                "sebastian/object-enumerator": "^5.0",
+                "sebastian/recursion-context": "^5.0",
+                "sebastian/type": "^4.0",
+                "sebastian/version": "^4.0"
+            },
+            "suggest": {
+                "ext-soap": "To be able to generate mocks based on WSDL files"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "10.5-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/Framework/Assert/Functions.php"
+                ],
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10"
+            },
+            "funding": [
+                {
+                    "url": "https://phpunit.de/sponsors.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-02-04T09:07:51+00:00"
+        },
+        {
+            "name": "psr/http-client",
+            "version": "1.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-client.git",
+                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+                "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.0 || ^8.0",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Client\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP clients",
+            "homepage": "https://github.com/php-fig/http-client",
+            "keywords": [
+                "http",
+                "http-client",
+                "psr",
+                "psr-18"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-client"
+            },
+            "time": "2023-09-23T14:17:50+00:00"
+        },
+        {
+            "name": "psr/http-factory",
+            "version": "1.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-factory.git",
+                "reference": "e616d01114759c4c489f93b099585439f795fe35"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35",
+                "reference": "e616d01114759c4c489f93b099585439f795fe35",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.0.0",
+                "psr/http-message": "^1.0 || ^2.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interfaces for PSR-7 HTTP message factories",
+            "keywords": [
+                "factory",
+                "http",
+                "message",
+                "psr",
+                "psr-17",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-factory/tree/1.0.2"
+            },
+            "time": "2023-04-10T20:10:41+00:00"
+        },
+        {
+            "name": "psr/http-message",
+            "version": "2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/http-message.git",
+                "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+                "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Http\\Message\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for HTTP messages",
+            "homepage": "https://github.com/php-fig/http-message",
+            "keywords": [
+                "http",
+                "http-message",
+                "psr",
+                "psr-7",
+                "request",
+                "response"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/http-message/tree/2.0"
+            },
+            "time": "2023-04-04T09:54:51+00:00"
+        },
+        {
+            "name": "ralouphie/getallheaders",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/ralouphie/getallheaders.git",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+                "reference": "120b605dfeb996808c31b6477290a714d356e822",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.6"
+            },
+            "require-dev": {
+                "php-coveralls/php-coveralls": "^2.1",
+                "phpunit/phpunit": "^5 || ^6.5"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/getallheaders.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
+                }
+            ],
+            "description": "A polyfill for getallheaders.",
+            "support": {
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+            },
+            "time": "2019-03-08T08:55:37+00:00"
+        },
+        {
+            "name": "sebastian/cli-parser",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/cli-parser.git",
+                "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae",
+                "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for parsing CLI options",
+            "homepage": "https://github.com/sebastianbergmann/cli-parser",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+                "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:58:15+00:00"
+        },
+        {
+            "name": "sebastian/code-unit",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit.git",
+                "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
+                "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/code-unit",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:58:43+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
+                "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:59:15+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "5.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "2db5010a484d53ebf536087a70b4a5423c102372"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372",
+                "reference": "2db5010a484d53ebf536087a70b4a5423c102372",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-mbstring": "*",
+                "php": ">=8.1",
+                "sebastian/diff": "^5.0",
+                "sebastian/exporter": "^5.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "https://github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/comparator/issues",
+                "security": "https://github.com/sebastianbergmann/comparator/security/policy",
+                "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-08-14T13:18:12+00:00"
+        },
+        {
+            "name": "sebastian/complexity",
+            "version": "3.2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/complexity.git",
+                "reference": "68ff824baeae169ec9f2137158ee529584553799"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
+                "reference": "68ff824baeae169ec9f2137158ee529584553799",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for calculating the complexity of PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/complexity",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/complexity/issues",
+                "security": "https://github.com/sebastianbergmann/complexity/security/policy",
+                "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-21T08:37:17+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "6.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951",
+                "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "suggest": {
+                "ext-posix": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "6.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "https://github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/environment/issues",
+                "security": "https://github.com/sebastianbergmann/environment/security/policy",
+                "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-04-11T05:39:26+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "5.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc",
+                "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc",
+                "shasum": ""
+            },
+            "require": {
+                "ext-mbstring": "*",
+                "php": ">=8.1",
+                "sebastian/recursion-context": "^5.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "5.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "https://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/exporter/issues",
+                "security": "https://github.com/sebastianbergmann/exporter/security/policy",
+                "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-09-24T13:22:09+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "6.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4",
+                "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "sebastian/object-reflector": "^3.0",
+                "sebastian/recursion-context": "^5.0"
+            },
+            "require-dev": {
+                "ext-dom": "*",
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "6.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/global-state/issues",
+                "security": "https://github.com/sebastianbergmann/global-state/security/policy",
+                "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-07-19T07:19:23+00:00"
+        },
+        {
+            "name": "sebastian/lines-of-code",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+                "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
+                "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for counting the lines of code in PHP source code",
+            "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+                "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
+                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-21T08:38:20+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "5.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
+                "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "sebastian/object-reflector": "^3.0",
+                "sebastian/recursion-context": "^5.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T07:08:32+00:00"
+        },
+        {
+            "name": "sebastian/object-reflector",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-reflector.git",
+                "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
+                "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Allows reflection of object attributes, including inherited and non-public ones",
+            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+                "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T07:06:18+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "5.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
+                "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "https://github.com/sebastianbergmann/recursion-context",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+                "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T07:05:40+00:00"
+        },
+        {
+            "name": "sebastian/type",
+            "version": "4.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/type.git",
+                "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
+                "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^10.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the types of the PHP type system",
+            "homepage": "https://github.com/sebastianbergmann/type",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/type/issues",
+                "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T07:10:45+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "4.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
+                "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/version/issues",
+                "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-07T11:34:05+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/206482ff3ed450495b1d5b7bad1bc3a852def96f",
+                "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/filesystem": "^5.4|^6.0|^7.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<5.4",
+                "symfony/service-contracts": "<2.5"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+                "symfony/finder": "^5.4|^6.0|^7.0",
+                "symfony/messenger": "^5.4|^6.0|^7.0",
+                "symfony/service-contracts": "^2.5|^3",
+                "symfony/yaml": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/config/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T13:26:27+00:00"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/dependency-injection.git",
+                "reference": "6871811c5a5c5e180244ddb689746446db02c05b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6871811c5a5c5e180244ddb689746446db02c05b",
+                "reference": "6871811c5a5c5e180244ddb689746446db02c05b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "psr/container": "^1.1|^2.0",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/service-contracts": "^2.5|^3.0",
+                "symfony/var-exporter": "^6.2.10|^7.0"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2",
+                "symfony/config": "<6.1",
+                "symfony/finder": "<5.4",
+                "symfony/proxy-manager-bridge": "<6.3",
+                "symfony/yaml": "<5.4"
+            },
+            "provide": {
+                "psr/container-implementation": "1.1|2.0",
+                "symfony/service-implementation": "1.1|2.0|3.0"
+            },
+            "require-dev": {
+                "symfony/config": "^6.1|^7.0",
+                "symfony/expression-language": "^5.4|^6.0|^7.0",
+                "symfony/yaml": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/dependency-injection/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-30T08:32:12+00:00"
+        },
+        {
+            "name": "symfony/var-dumper",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-dumper.git",
+                "reference": "0435a08f69125535336177c29d56af3abc1f69da"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0435a08f69125535336177c29d56af3abc1f69da",
+                "reference": "0435a08f69125535336177c29d56af3abc1f69da",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/polyfill-mbstring": "~1.0"
+            },
+            "conflict": {
+                "symfony/console": "<5.4"
+            },
+            "require-dev": {
+                "ext-iconv": "*",
+                "symfony/console": "^5.4|^6.0|^7.0",
+                "symfony/error-handler": "^6.3|^7.0",
+                "symfony/http-kernel": "^5.4|^6.0|^7.0",
+                "symfony/process": "^5.4|^6.0|^7.0",
+                "symfony/uid": "^5.4|^6.0|^7.0",
+                "twig/twig": "^2.13|^3.0.4"
+            },
+            "bin": [
+                "Resources/bin/var-dump-server"
+            ],
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "Resources/functions/dump.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Component\\VarDumper\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides mechanisms for walking through any arbitrary PHP variable",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "debug",
+                "dump"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-dumper/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:53:30+00:00"
+        },
+        {
+            "name": "symfony/var-exporter",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-exporter.git",
+                "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8",
+                "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3"
+            },
+            "require-dev": {
+                "symfony/var-dumper": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\VarExporter\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "clone",
+                "construct",
+                "export",
+                "hydrate",
+                "instantiate",
+                "lazy-loading",
+                "proxy",
+                "serialize"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-exporter/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/yaml",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/yaml.git",
+                "reference": "d75715985f0f94f978e3a8fa42533e10db921b90"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/yaml/zipball/d75715985f0f94f978e3a8fa42533e10db921b90",
+                "reference": "d75715985f0f94f978e3a8fa42533e10db921b90",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/polyfill-ctype": "^1.8"
+            },
+            "conflict": {
+                "symfony/console": "<5.4"
+            },
+            "require-dev": {
+                "symfony/console": "^5.4|^6.0|^7.0"
+            },
+            "bin": [
+                "Resources/bin/yaml-lint"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Yaml\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Loads and dumps YAML files",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/yaml/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+            "support": {
+                "issues": "https://github.com/theseer/tokenizer/issues",
+                "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-11-20T00:12:19+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": "^7.4 || ^8.0",
+        "ext-filter": "*",
+        "ext-json": "*",
+        "ext-tokenizer": "*"
+    },
+    "platform-dev": [],
+    "plugin-api-version": "2.6.0"
+}
diff --git a/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix
index 04eb66e86f19..2aa3841c98b2 100644
--- a/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/php-cs-fixer/default.nix
@@ -1,35 +1,30 @@
-{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
-let
+php.buildComposerProject (finalAttrs: {
   pname = "php-cs-fixer";
   version = "3.50.0";
-in
-mkDerivation {
-  inherit pname version;
 
-  src = fetchurl {
-    url = "https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${version}/php-cs-fixer.phar";
-    sha256 = "sha256-bJd/bsb2mJbQi4J1Z2uN4A2oLG+wqyq32rNDwcLC8gc=";
+  src = fetchFromGitHub {
+    owner = "PHP-CS-Fixer";
+    repo = "PHP-CS-Fixer";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-T0R/TfCLG9+Vcbsm5W8/7weI+e1RuSzTBc3VmRlG74c=";
   };
 
-  dontUnpack = true;
+  # TODO: Open a PR against https://github.com/PHP-CS-Fixer/PHP-CS-Fixer
+  # Missing `composer.lock` from the repository.
+  composerLock = ./composer.lock;
+  vendorHash = "sha256-kcEB7UZ++ZY5vhaoPGjaC3q1fpxYcZ/yZeMP3AdQBEk=";
 
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/php-cs-fixer/php-cs-fixer.phar
-    makeWrapper ${php}/bin/php $out/bin/php-cs-fixer \
-      --add-flags "$out/libexec/php-cs-fixer/php-cs-fixer.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    changelog = "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases/tag/${version}";
+  meta = {
+    changelog = "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/releases/tag/${finalAttrs.version}";
     description = "A tool to automatically fix PHP coding standards issues";
-    license = licenses.mit;
     homepage = "https://cs.symfony.com/";
-    maintainers = with maintainers; [ ] ++ teams.php.members;
+    license = lib.licenses.mit;
+    mainProgram = "php-cs-fixer";
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/php-parallel-lint/composer.lock b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/composer.lock
new file mode 100644
index 000000000000..c5403d92b62d
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/composer.lock
@@ -0,0 +1,2115 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "22c96862ce41ff63a0e4cc20b7aa9dd0",
+    "packages": [],
+    "packages-dev": [
+        {
+            "name": "dealerdirect/phpcodesniffer-composer-installer",
+            "version": "v0.7.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
+                "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+                "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+                "shasum": ""
+            },
+            "require": {
+                "composer-plugin-api": "^1.0 || ^2.0",
+                "php": ">=5.3",
+                "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
+            },
+            "require-dev": {
+                "composer/composer": "*",
+                "php-parallel-lint/php-parallel-lint": "^1.3.1",
+                "phpcompatibility/php-compatibility": "^9.0"
+            },
+            "type": "composer-plugin",
+            "extra": {
+                "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
+            },
+            "autoload": {
+                "psr-4": {
+                    "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Franck Nijhof",
+                    "email": "franck.nijhof@dealerdirect.com",
+                    "homepage": "http://www.frenck.nl",
+                    "role": "Developer / IT Manager"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors"
+                }
+            ],
+            "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
+            "homepage": "http://www.dealerdirect.com",
+            "keywords": [
+                "PHPCodeSniffer",
+                "PHP_CodeSniffer",
+                "code quality",
+                "codesniffer",
+                "composer",
+                "installer",
+                "phpcbf",
+                "phpcs",
+                "plugin",
+                "qa",
+                "quality",
+                "standard",
+                "standards",
+                "style guide",
+                "stylecheck",
+                "tests"
+            ],
+            "support": {
+                "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
+                "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
+            },
+            "time": "2022-02-04T12:51:07+00:00"
+        },
+        {
+            "name": "doctrine/instantiator",
+            "version": "2.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/doctrine/instantiator.git",
+                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+                "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^8.1"
+            },
+            "require-dev": {
+                "doctrine/coding-standard": "^11",
+                "ext-pdo": "*",
+                "ext-phar": "*",
+                "phpbench/phpbench": "^1.2",
+                "phpstan/phpstan": "^1.9.4",
+                "phpstan/phpstan-phpunit": "^1.3",
+                "phpunit/phpunit": "^9.5.27",
+                "vimeo/psalm": "^5.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "https://ocramius.github.io/"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "support": {
+                "issues": "https://github.com/doctrine/instantiator/issues",
+                "source": "https://github.com/doctrine/instantiator/tree/2.0.0"
+            },
+            "funding": [
+                {
+                    "url": "https://www.doctrine-project.org/sponsorship.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://www.patreon.com/phpdoctrine",
+                    "type": "patreon"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-12-30T00:23:10+00:00"
+        },
+        {
+            "name": "myclabs/deep-copy",
+            "version": "1.11.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/myclabs/DeepCopy.git",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "conflict": {
+                "doctrine/collections": "<1.6.8",
+                "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+            },
+            "require-dev": {
+                "doctrine/collections": "^1.6.8",
+                "doctrine/common": "^2.13.3 || ^3.2.2",
+                "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
+            },
+            "type": "library",
+            "autoload": {
+                "files": [
+                    "src/DeepCopy/deep_copy.php"
+                ],
+                "psr-4": {
+                    "DeepCopy\\": "src/DeepCopy/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "description": "Create deep copies (clones) of your objects",
+            "keywords": [
+                "clone",
+                "copy",
+                "duplicate",
+                "object",
+                "object graph"
+            ],
+            "support": {
+                "issues": "https://github.com/myclabs/DeepCopy/issues",
+                "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-03-08T13:26:56+00:00"
+        },
+        {
+            "name": "nikic/php-parser",
+            "version": "v5.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/nikic/PHP-Parser.git",
+                "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
+                "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
+                "shasum": ""
+            },
+            "require": {
+                "ext-ctype": "*",
+                "ext-json": "*",
+                "ext-tokenizer": "*",
+                "php": ">=7.4"
+            },
+            "require-dev": {
+                "ircmaxell/php-yacc": "^0.0.7",
+                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+            },
+            "bin": [
+                "bin/php-parse"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PhpParser\\": "lib/PhpParser"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Nikita Popov"
+                }
+            ],
+            "description": "A PHP parser written in PHP",
+            "keywords": [
+                "parser",
+                "php"
+            ],
+            "support": {
+                "issues": "https://github.com/nikic/PHP-Parser/issues",
+                "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0"
+            },
+            "time": "2024-01-07T17:17:35+00:00"
+        },
+        {
+            "name": "phar-io/manifest",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/manifest.git",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+                "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-phar": "*",
+                "ext-xmlwriter": "*",
+                "phar-io/version": "^3.0.1",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+            "support": {
+                "issues": "https://github.com/phar-io/manifest/issues",
+                "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+            },
+            "time": "2021-07-20T11:28:43+00:00"
+        },
+        {
+            "name": "phar-io/version",
+            "version": "3.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/phar-io/version.git",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Heuer",
+                    "email": "sebastian@phpeople.de",
+                    "role": "Developer"
+                },
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Library for handling version information and constraints",
+            "support": {
+                "issues": "https://github.com/phar-io/version/issues",
+                "source": "https://github.com/phar-io/version/tree/3.2.1"
+            },
+            "time": "2022-02-21T01:04:05+00:00"
+        },
+        {
+            "name": "php-parallel-lint/php-code-style",
+            "version": "v2.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-parallel-lint/PHP-Code-Style.git",
+                "reference": "ffc9e7dd5ea867f7bf2983d922ba6f6697f1ee9b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-parallel-lint/PHP-Code-Style/zipball/ffc9e7dd5ea867f7bf2983d922ba6f6697f1ee9b",
+                "reference": "ffc9e7dd5ea867f7bf2983d922ba6f6697f1ee9b",
+                "shasum": ""
+            },
+            "require": {
+                "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
+                "phpcompatibility/php-compatibility": "^9.3",
+                "squizlabs/php_codesniffer": "^3.6.1"
+            },
+            "replace": {
+                "jakub-onderka/php-code-style": "*"
+            },
+            "type": "phpcodesniffer-standard",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jakub Onderka",
+                    "email": "jakub.onderka@gmail.com",
+                    "homepage": "http://www.acci.cz"
+                }
+            ],
+            "description": "PHP_CodeSniffer rules for projects in the PHP Parallel Lint organisation",
+            "support": {
+                "issues": "https://github.com/php-parallel-lint/PHP-Code-Style/issues",
+                "source": "https://github.com/php-parallel-lint/PHP-Code-Style/tree/v2.0"
+            },
+            "time": "2021-12-18T02:45:56+00:00"
+        },
+        {
+            "name": "php-parallel-lint/php-console-color",
+            "version": "v1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-parallel-lint/PHP-Console-Color.git",
+                "reference": "7adfefd530aa2d7570ba87100a99e2483a543b88"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Color/zipball/7adfefd530aa2d7570ba87100a99e2483a543b88",
+                "reference": "7adfefd530aa2d7570ba87100a99e2483a543b88",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.2"
+            },
+            "replace": {
+                "jakub-onderka/php-console-color": "*"
+            },
+            "require-dev": {
+                "php-parallel-lint/php-code-style": "^2.0",
+                "php-parallel-lint/php-parallel-lint": "^1.0",
+                "php-parallel-lint/php-var-dump-check": "0.*",
+                "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "PHP_Parallel_Lint\\PhpConsoleColor\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-2-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Jakub Onderka",
+                    "email": "jakub.onderka@gmail.com"
+                }
+            ],
+            "description": "Simple library for creating colored console ouput.",
+            "support": {
+                "issues": "https://github.com/php-parallel-lint/PHP-Console-Color/issues",
+                "source": "https://github.com/php-parallel-lint/PHP-Console-Color/tree/v1.0.1"
+            },
+            "time": "2021-12-25T06:49:29+00:00"
+        },
+        {
+            "name": "php-parallel-lint/php-console-highlighter",
+            "version": "v1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-parallel-lint/PHP-Console-Highlighter.git",
+                "reference": "5b4803384d3303cf8e84141039ef56c8a123138d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-parallel-lint/PHP-Console-Highlighter/zipball/5b4803384d3303cf8e84141039ef56c8a123138d",
+                "reference": "5b4803384d3303cf8e84141039ef56c8a123138d",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "php": ">=5.3.2",
+                "php-parallel-lint/php-console-color": "^1.0.1"
+            },
+            "replace": {
+                "jakub-onderka/php-console-highlighter": "*"
+            },
+            "require-dev": {
+                "php-parallel-lint/php-code-style": "^2.0",
+                "php-parallel-lint/php-parallel-lint": "^1.0",
+                "php-parallel-lint/php-var-dump-check": "0.*",
+                "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "PHP_Parallel_Lint\\PhpConsoleHighlighter\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jakub Onderka",
+                    "email": "acci@acci.cz",
+                    "homepage": "http://www.acci.cz/"
+                }
+            ],
+            "description": "Highlight PHP code in terminal",
+            "support": {
+                "issues": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/issues",
+                "source": "https://github.com/php-parallel-lint/PHP-Console-Highlighter/tree/v1.0.0"
+            },
+            "time": "2022-02-18T08:23:19+00:00"
+        },
+        {
+            "name": "phpcompatibility/php-compatibility",
+            "version": "9.3.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPCompatibility/PHPCompatibility.git",
+                "reference": "9fb324479acf6f39452e0655d2429cc0d3914243"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243",
+                "reference": "9fb324479acf6f39452e0655d2429cc0d3914243",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3",
+                "squizlabs/php_codesniffer": "^2.3 || ^3.0.2"
+            },
+            "conflict": {
+                "squizlabs/php_codesniffer": "2.6.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0"
+            },
+            "suggest": {
+                "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.",
+                "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues."
+            },
+            "type": "phpcodesniffer-standard",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "LGPL-3.0-or-later"
+            ],
+            "authors": [
+                {
+                    "name": "Wim Godden",
+                    "homepage": "https://github.com/wimg",
+                    "role": "lead"
+                },
+                {
+                    "name": "Juliette Reinders Folmer",
+                    "homepage": "https://github.com/jrfnl",
+                    "role": "lead"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors"
+                }
+            ],
+            "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.",
+            "homepage": "http://techblog.wimgodden.be/tag/codesniffer/",
+            "keywords": [
+                "compatibility",
+                "phpcs",
+                "standards"
+            ],
+            "support": {
+                "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues",
+                "source": "https://github.com/PHPCompatibility/PHPCompatibility"
+            },
+            "time": "2019-12-27T09:44:58+00:00"
+        },
+        {
+            "name": "phpunit/php-code-coverage",
+            "version": "9.2.30",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-libxml": "*",
+                "ext-xmlwriter": "*",
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3",
+                "phpunit/php-file-iterator": "^3.0.3",
+                "phpunit/php-text-template": "^2.0.2",
+                "sebastian/code-unit-reverse-lookup": "^2.0.2",
+                "sebastian/complexity": "^2.0",
+                "sebastian/environment": "^5.1.2",
+                "sebastian/lines-of-code": "^1.0.3",
+                "sebastian/version": "^3.0.1",
+                "theseer/tokenizer": "^1.2.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-pcov": "PHP extension that provides line coverage",
+                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "9.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+            "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+            "keywords": [
+                "coverage",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+                "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:47:57+00:00"
+        },
+        {
+            "name": "phpunit/php-file-iterator",
+            "version": "3.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+                "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+            "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+            "keywords": [
+                "filesystem",
+                "iterator"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+                "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2021-12-02T12:48:52+00:00"
+        },
+        {
+            "name": "phpunit/php-invoker",
+            "version": "3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-invoker.git",
+                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+                "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "ext-pcntl": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-pcntl": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Invoke callables with a timeout",
+            "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+            "keywords": [
+                "process"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+                "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T05:58:55+00:00"
+        },
+        {
+            "name": "phpunit/php-text-template",
+            "version": "2.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-text-template.git",
+                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+                "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Simple template engine.",
+            "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+            "keywords": [
+                "template"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+                "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T05:33:50+00:00"
+        },
+        {
+            "name": "phpunit/php-timer",
+            "version": "5.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/php-timer.git",
+                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+                "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Utility class for timing",
+            "homepage": "https://github.com/sebastianbergmann/php-timer/",
+            "keywords": [
+                "timer"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+                "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:16:10+00:00"
+        },
+        {
+            "name": "phpunit/phpunit",
+            "version": "9.6.16",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/phpunit.git",
+                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3767b2c56ce02d01e3491046f33466a1ae60a37f",
+                "reference": "3767b2c56ce02d01e3491046f33466a1ae60a37f",
+                "shasum": ""
+            },
+            "require": {
+                "doctrine/instantiator": "^1.3.1 || ^2",
+                "ext-dom": "*",
+                "ext-json": "*",
+                "ext-libxml": "*",
+                "ext-mbstring": "*",
+                "ext-xml": "*",
+                "ext-xmlwriter": "*",
+                "myclabs/deep-copy": "^1.10.1",
+                "phar-io/manifest": "^2.0.3",
+                "phar-io/version": "^3.0.2",
+                "php": ">=7.3",
+                "phpunit/php-code-coverage": "^9.2.28",
+                "phpunit/php-file-iterator": "^3.0.5",
+                "phpunit/php-invoker": "^3.1.1",
+                "phpunit/php-text-template": "^2.0.3",
+                "phpunit/php-timer": "^5.0.2",
+                "sebastian/cli-parser": "^1.0.1",
+                "sebastian/code-unit": "^1.0.6",
+                "sebastian/comparator": "^4.0.8",
+                "sebastian/diff": "^4.0.3",
+                "sebastian/environment": "^5.1.3",
+                "sebastian/exporter": "^4.0.5",
+                "sebastian/global-state": "^5.0.1",
+                "sebastian/object-enumerator": "^4.0.3",
+                "sebastian/resource-operations": "^3.0.3",
+                "sebastian/type": "^3.2",
+                "sebastian/version": "^3.0.2"
+            },
+            "suggest": {
+                "ext-soap": "To be able to generate mocks based on WSDL files",
+                "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
+            },
+            "bin": [
+                "phpunit"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "9.6-dev"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "src/Framework/Assert/Functions.php"
+                ],
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "The PHP Unit Testing framework.",
+            "homepage": "https://phpunit.de/",
+            "keywords": [
+                "phpunit",
+                "testing",
+                "xunit"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+                "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.16"
+            },
+            "funding": [
+                {
+                    "url": "https://phpunit.de/sponsors.html",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-19T07:03:14+00:00"
+        },
+        {
+            "name": "sebastian/cli-parser",
+            "version": "1.0.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/cli-parser.git",
+                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+                "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for parsing CLI options",
+            "homepage": "https://github.com/sebastianbergmann/cli-parser",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+                "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:08:49+00:00"
+        },
+        {
+            "name": "sebastian/code-unit",
+            "version": "1.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit.git",
+                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+                "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/code-unit",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:08:54+00:00"
+        },
+        {
+            "name": "sebastian/code-unit-reverse-lookup",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+                "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Looks up which function or method a line of code belongs to",
+            "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+                "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T05:30:19+00:00"
+        },
+        {
+            "name": "sebastian/comparator",
+            "version": "4.0.8",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/comparator.git",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a",
+                "reference": "fa0f136dd2334583309d32b62544682ee972b51a",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/diff": "^4.0",
+                "sebastian/exporter": "^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@2bepublished.at"
+                }
+            ],
+            "description": "Provides the functionality to compare PHP values for equality",
+            "homepage": "https://github.com/sebastianbergmann/comparator",
+            "keywords": [
+                "comparator",
+                "compare",
+                "equality"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/comparator/issues",
+                "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2022-09-14T12:41:17+00:00"
+        },
+        {
+            "name": "sebastian/complexity",
+            "version": "2.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/complexity.git",
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for calculating the complexity of PHP code units",
+            "homepage": "https://github.com/sebastianbergmann/complexity",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/complexity/issues",
+                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:19:30+00:00"
+        },
+        {
+            "name": "sebastian/diff",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/diff.git",
+                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+                "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3",
+                "symfony/process": "^4.2 || ^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Kore Nordmann",
+                    "email": "mail@kore-nordmann.de"
+                }
+            ],
+            "description": "Diff implementation",
+            "homepage": "https://github.com/sebastianbergmann/diff",
+            "keywords": [
+                "diff",
+                "udiff",
+                "unidiff",
+                "unified diff"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/diff/issues",
+                "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-05-07T05:35:17+00:00"
+        },
+        {
+            "name": "sebastian/environment",
+            "version": "5.1.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/environment.git",
+                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+                "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-posix": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.1-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides functionality to handle HHVM/PHP environments",
+            "homepage": "http://www.github.com/sebastianbergmann/environment",
+            "keywords": [
+                "Xdebug",
+                "environment",
+                "hhvm"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/environment/issues",
+                "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:03:51+00:00"
+        },
+        {
+            "name": "sebastian/exporter",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/exporter.git",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "ext-mbstring": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Volker Dusch",
+                    "email": "github@wallbash.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                },
+                {
+                    "name": "Bernhard Schussek",
+                    "email": "bschussek@gmail.com"
+                }
+            ],
+            "description": "Provides the functionality to export PHP variables for visualization",
+            "homepage": "https://www.github.com/sebastianbergmann/exporter",
+            "keywords": [
+                "export",
+                "exporter"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/exporter/issues",
+                "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2022-09-14T06:03:37+00:00"
+        },
+        {
+            "name": "sebastian/global-state",
+            "version": "5.0.6",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/global-state.git",
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
+                "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/object-reflector": "^2.0",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "ext-dom": "*",
+                "phpunit/phpunit": "^9.3"
+            },
+            "suggest": {
+                "ext-uopz": "*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "5.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Snapshotting of global state",
+            "homepage": "http://www.github.com/sebastianbergmann/global-state",
+            "keywords": [
+                "global state"
+            ],
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/global-state/issues",
+                "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-08-02T09:26:13+00:00"
+        },
+        {
+            "name": "sebastian/lines-of-code",
+            "version": "1.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+                "shasum": ""
+            },
+            "require": {
+                "nikic/php-parser": "^4.18 || ^5.0",
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library for counting the lines of code in PHP source code",
+            "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-12-22T06:20:34+00:00"
+        },
+        {
+            "name": "sebastian/object-enumerator",
+            "version": "4.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+                "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3",
+                "sebastian/object-reflector": "^2.0",
+                "sebastian/recursion-context": "^4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+            "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+                "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:12:34+00:00"
+        },
+        {
+            "name": "sebastian/object-reflector",
+            "version": "2.0.4",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/object-reflector.git",
+                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+                "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Allows reflection of object attributes, including inherited and non-public ones",
+            "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+                "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-10-26T13:14:26+00:00"
+        },
+        {
+            "name": "sebastian/recursion-context",
+            "version": "4.0.5",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/recursion-context.git",
+                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+                "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "4.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                },
+                {
+                    "name": "Jeff Welch",
+                    "email": "whatthejeff@gmail.com"
+                },
+                {
+                    "name": "Adam Harvey",
+                    "email": "aharvey@php.net"
+                }
+            ],
+            "description": "Provides functionality to recursively process PHP variables",
+            "homepage": "https://github.com/sebastianbergmann/recursion-context",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+                "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:07:39+00:00"
+        },
+        {
+            "name": "sebastian/resource-operations",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/resource-operations.git",
+                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+                "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de"
+                }
+            ],
+            "description": "Provides a list of PHP built-in functions that operate on resources",
+            "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+                "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:45:17+00:00"
+        },
+        {
+            "name": "sebastian/type",
+            "version": "3.2.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/type.git",
+                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+                "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^9.5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.2-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Collection of value objects that represent the types of the PHP type system",
+            "homepage": "https://github.com/sebastianbergmann/type",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/type/issues",
+                "source": "https://github.com/sebastianbergmann/type/tree/3.2.1"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-02-03T06:13:03+00:00"
+        },
+        {
+            "name": "sebastian/version",
+            "version": "3.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/sebastianbergmann/version.git",
+                "reference": "c6c1022351a901512170118436c764e473f6de8c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+                "reference": "c6c1022351a901512170118436c764e473f6de8c",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.3"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.0-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Sebastian Bergmann",
+                    "email": "sebastian@phpunit.de",
+                    "role": "lead"
+                }
+            ],
+            "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+            "homepage": "https://github.com/sebastianbergmann/version",
+            "support": {
+                "issues": "https://github.com/sebastianbergmann/version/issues",
+                "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/sebastianbergmann",
+                    "type": "github"
+                }
+            ],
+            "time": "2020-09-28T06:39:44+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "3.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+            },
+            "bin": [
+                "bin/phpcbf",
+                "bin/phpcs"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "Former lead"
+                },
+                {
+                    "name": "Juliette Reinders Folmer",
+                    "role": "Current lead"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+            "keywords": [
+                "phpcs",
+                "standards",
+                "static analysis"
+            ],
+            "support": {
+                "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+                "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+                "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+                "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/PHPCSStandards",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/jrfnl",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/php_codesniffer",
+                    "type": "open_collective"
+                }
+            ],
+            "time": "2024-02-16T15:06:51+00:00"
+        },
+        {
+            "name": "theseer/tokenizer",
+            "version": "1.2.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/theseer/tokenizer.git",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "shasum": ""
+            },
+            "require": {
+                "ext-dom": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": "^7.2 || ^8.0"
+            },
+            "type": "library",
+            "autoload": {
+                "classmap": [
+                    "src/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Arne Blankerts",
+                    "email": "arne@blankerts.de",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+            "support": {
+                "issues": "https://github.com/theseer/tokenizer/issues",
+                "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/theseer",
+                    "type": "github"
+                }
+            ],
+            "time": "2023-11-20T00:12:19+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.3.0",
+        "ext-json": "*"
+    },
+    "platform-dev": [],
+    "plugin-api-version": "2.6.0"
+}
diff --git a/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
index e4977490c518..fbd6e264e1af 100644
--- a/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/php-parallel-lint/default.nix
@@ -1,48 +1,27 @@
-{ mkDerivation, fetchFromGitHub, makeWrapper, lib, php, php81 }:
-let
+{ fetchFromGitHub
+, lib
+, php
+}:
+
+php.buildComposerProject (finalAttrs: {
   pname = "php-parallel-lint";
-  version = "1.3.2";
-in
-mkDerivation {
-  inherit pname version;
+  version = "1.3.2.999";
 
   src = fetchFromGitHub {
     owner = "php-parallel-lint";
     repo = "PHP-Parallel-Lint";
-    rev = "v${version}";
-    # `.gitattibutes` exclude `box.json` from the archive produced git.
-    forceFetchGit = true;
-    sha256 = "SPP1ynxJad2m5wknGt8z94fW7Ucx8nqLvwZVmlylOgM=";
+    rev = "539292fea03d718cc86e7137ad72ea35b694f2bf";
+    hash = "sha256-VIBuS4PwRt20Ic5gYAXTv8p/5Nq/0B3VwMcp9zKbu5U=";
   };
 
-  nativeBuildInputs = [
-    makeWrapper
-    php.packages.composer
-    # box is only available for PHP ≥ 8.1 but the purpose of this tool is to validate
-    # that project does not use features not available on older PHP versions.
-    php81.packages.box
-  ];
-
-  buildPhase = ''
-    runHook preBuild
-    composer dump-autoload
-    box compile
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D parallel-lint.phar $out/libexec/php-parallel-lint/php-parallel-lint.phar
-    makeWrapper ${php}/bin/php $out/bin/php-parallel-lint \
-      --add-flags "$out/libexec/php-parallel-lint/php-parallel-lint.phar"
-    runHook postInstall
-  '';
+  composerLock = ./composer.lock;
+  vendorHash = "sha256-PHQ0N1eFCM4s/aPVpTsyZN5gnQpNe9Wfs6CG2RNxxbk=";
 
-  meta = with lib; {
+  meta = {
     description = "Tool to check syntax of PHP files faster than serial check with fancier output";
-    license = licenses.bsd2;
     homepage = "https://github.com/php-parallel-lint/PHP-Parallel-Lint";
-    maintainers = with maintainers; [ ] ++ teams.php.members;
+    license = lib.licenses.bsd2;
+    mainProgram = "parallel-lint";
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix b/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix
deleted file mode 100644
index 41f860d6e073..000000000000
--- a/nixpkgs/pkgs/development/php-packages/phpcbf/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ mkDerivation, fetchurl, lib, php, makeWrapper }:
-
-let
-  pname = "phpcbf";
-  version = "3.7.2";
-in
-mkDerivation {
-  inherit pname version;
-
-  src = fetchurl {
-    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcbf.phar";
-    sha256 = "sha256-TspzKpl98IpMl+QyZuuBIvkW05uwAqAAYA/dU5P07+E=";
-  };
-
-  dontUnpack = true;
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phpcbf/phpcbf.phar
-    makeWrapper ${php}/bin/php $out/bin/phpcbf \
-      --add-flags "$out/libexec/phpcbf/phpcbf.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    changelog = "https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/${version}";
-    description = "PHP coding standard beautifier and fixer";
-    license = licenses.bsd3;
-    homepage = "https://squizlabs.github.io/PHP_CodeSniffer/";
-    maintainers = with maintainers; [ cmcdragonkai ] ++ teams.php.members;
-  };
-}
diff --git a/nixpkgs/pkgs/development/php-packages/phpcs/default.nix b/nixpkgs/pkgs/development/php-packages/phpcs/default.nix
deleted file mode 100644
index 84e9effbc159..000000000000
--- a/nixpkgs/pkgs/development/php-packages/phpcs/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ mkDerivation, fetchurl, makeWrapper, lib, php }:
-
-let
-  pname = "phpcs";
-  version = "3.7.2";
-in
-mkDerivation {
-  inherit pname version;
-
-  src = fetchurl {
-    url = "https://github.com/squizlabs/PHP_CodeSniffer/releases/download/${version}/phpcs.phar";
-    sha256 = "sha256-IEIUwepbqBT7CyYIwZzKLBC/X/zJ8OPUw0qtwBeVF7c=";
-  };
-
-  dontUnpack = true;
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phpcs/phpcs.phar
-    makeWrapper ${php}/bin/php $out/bin/phpcs \
-      --add-flags "$out/libexec/phpcs/phpcs.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    changelog = "https://github.com/squizlabs/PHP_CodeSniffer/releases/tag/${version}";
-    description = "PHP coding standard tool";
-    license = licenses.bsd3;
-    homepage = "https://squizlabs.github.io/PHP_CodeSniffer/";
-    maintainers = with maintainers; [ javaguirre ] ++ teams.php.members;
-  };
-}
diff --git a/nixpkgs/pkgs/development/php-packages/phpmd/composer.lock b/nixpkgs/pkgs/development/php-packages/phpmd/composer.lock
new file mode 100644
index 000000000000..11b9cffec6bd
--- /dev/null
+++ b/nixpkgs/pkgs/development/php-packages/phpmd/composer.lock
@@ -0,0 +1,1235 @@
+{
+    "_readme": [
+        "This file locks the dependencies of your project to a known state",
+        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+        "This file is @generated automatically"
+    ],
+    "content-hash": "be6e60a56d4909a5b5673642a5aff4ff",
+    "packages": [
+        {
+            "name": "composer/pcre",
+            "version": "3.1.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/pcre.git",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.4 || ^8.0"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.3",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^5"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Composer\\Pcre\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Jordi Boggiano",
+                    "email": "j.boggiano@seld.be",
+                    "homepage": "http://seld.be"
+                }
+            ],
+            "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+            "keywords": [
+                "PCRE",
+                "preg",
+                "regex",
+                "regular expression"
+            ],
+            "support": {
+                "issues": "https://github.com/composer/pcre/issues",
+                "source": "https://github.com/composer/pcre/tree/3.1.1"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-10-11T07:11:09+00:00"
+        },
+        {
+            "name": "composer/xdebug-handler",
+            "version": "3.0.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/composer/xdebug-handler.git",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+                "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+                "shasum": ""
+            },
+            "require": {
+                "composer/pcre": "^1 || ^2 || ^3",
+                "php": "^7.2.5 || ^8.0",
+                "psr/log": "^1 || ^2 || ^3"
+            },
+            "require-dev": {
+                "phpstan/phpstan": "^1.0",
+                "phpstan/phpstan-strict-rules": "^1.1",
+                "symfony/phpunit-bridge": "^6.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Composer\\XdebugHandler\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "John Stevenson",
+                    "email": "john-stevenson@blueyonder.co.uk"
+                }
+            ],
+            "description": "Restarts a process without Xdebug.",
+            "keywords": [
+                "Xdebug",
+                "performance"
+            ],
+            "support": {
+                "irc": "irc://irc.freenode.org/composer",
+                "issues": "https://github.com/composer/xdebug-handler/issues",
+                "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+            },
+            "funding": [
+                {
+                    "url": "https://packagist.com",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/composer",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2022-02-25T21:32:43+00:00"
+        },
+        {
+            "name": "pdepend/pdepend",
+            "version": "2.16.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/pdepend/pdepend.git",
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+                "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.7",
+                "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+                "symfony/polyfill-mbstring": "^1.19"
+            },
+            "require-dev": {
+                "easy-doc/easy-doc": "0.0.0|^1.2.3",
+                "gregwar/rst": "^1.0",
+                "squizlabs/php_codesniffer": "^2.0.0"
+            },
+            "bin": [
+                "src/bin/pdepend"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "PDepend\\": "src/main/php/PDepend"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "description": "Official version of pdepend to be handled with Composer",
+            "keywords": [
+                "PHP Depend",
+                "PHP_Depend",
+                "dev",
+                "pdepend"
+            ],
+            "support": {
+                "issues": "https://github.com/pdepend/pdepend/issues",
+                "source": "https://github.com/pdepend/pdepend/tree/2.16.2"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-17T18:09:59+00:00"
+        },
+        {
+            "name": "psr/container",
+            "version": "2.0.2",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/container.git",
+                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.4.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Container\\": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common Container Interface (PHP FIG PSR-11)",
+            "homepage": "https://github.com/php-fig/container",
+            "keywords": [
+                "PSR-11",
+                "container",
+                "container-interface",
+                "container-interop",
+                "psr"
+            ],
+            "support": {
+                "issues": "https://github.com/php-fig/container/issues",
+                "source": "https://github.com/php-fig/container/tree/2.0.2"
+            },
+            "time": "2021-11-05T16:47:00+00:00"
+        },
+        {
+            "name": "psr/log",
+            "version": "3.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/php-fig/log.git",
+                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.0.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Psr\\Log\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "PHP-FIG",
+                    "homepage": "https://www.php-fig.org/"
+                }
+            ],
+            "description": "Common interface for logging libraries",
+            "homepage": "https://github.com/php-fig/log",
+            "keywords": [
+                "log",
+                "psr",
+                "psr-3"
+            ],
+            "support": {
+                "source": "https://github.com/php-fig/log/tree/3.0.0"
+            },
+            "time": "2021-07-14T16:46:02+00:00"
+        },
+        {
+            "name": "symfony/config",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/config.git",
+                "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/config/zipball/206482ff3ed450495b1d5b7bad1bc3a852def96f",
+                "reference": "206482ff3ed450495b1d5b7bad1bc3a852def96f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/filesystem": "^5.4|^6.0|^7.0",
+                "symfony/polyfill-ctype": "~1.8"
+            },
+            "conflict": {
+                "symfony/finder": "<5.4",
+                "symfony/service-contracts": "<2.5"
+            },
+            "require-dev": {
+                "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+                "symfony/finder": "^5.4|^6.0|^7.0",
+                "symfony/messenger": "^5.4|^6.0|^7.0",
+                "symfony/service-contracts": "^2.5|^3",
+                "symfony/yaml": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Config\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/config/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T13:26:27+00:00"
+        },
+        {
+            "name": "symfony/dependency-injection",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/dependency-injection.git",
+                "reference": "6871811c5a5c5e180244ddb689746446db02c05b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6871811c5a5c5e180244ddb689746446db02c05b",
+                "reference": "6871811c5a5c5e180244ddb689746446db02c05b",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "psr/container": "^1.1|^2.0",
+                "symfony/deprecation-contracts": "^2.5|^3",
+                "symfony/service-contracts": "^2.5|^3.0",
+                "symfony/var-exporter": "^6.2.10|^7.0"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2",
+                "symfony/config": "<6.1",
+                "symfony/finder": "<5.4",
+                "symfony/proxy-manager-bridge": "<6.3",
+                "symfony/yaml": "<5.4"
+            },
+            "provide": {
+                "psr/container-implementation": "1.1|2.0",
+                "symfony/service-implementation": "1.1|2.0|3.0"
+            },
+            "require-dev": {
+                "symfony/config": "^6.1|^7.0",
+                "symfony/expression-language": "^5.4|^6.0|^7.0",
+                "symfony/yaml": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\DependencyInjection\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows you to standardize and centralize the way objects are constructed in your application",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/dependency-injection/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-30T08:32:12+00:00"
+        },
+        {
+            "name": "symfony/deprecation-contracts",
+            "version": "v3.4.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/deprecation-contracts.git",
+                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
+                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "function.php"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "A generic function and convention to trigger deprecation notices",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-05-23T14:45:45+00:00"
+        },
+        {
+            "name": "symfony/filesystem",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/filesystem.git",
+                "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+                "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/polyfill-ctype": "~1.8",
+                "symfony/polyfill-mbstring": "~1.8"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\Filesystem\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Provides basic utilities for the filesystem",
+            "homepage": "https://symfony.com",
+            "support": {
+                "source": "https://github.com/symfony/filesystem/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        },
+        {
+            "name": "symfony/polyfill-ctype",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-ctype.git",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-ctype": "*"
+            },
+            "suggest": {
+                "ext-ctype": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Ctype\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Gert de Pagter",
+                    "email": "BackEndTea@gmail.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for ctype functions",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "ctype",
+                "polyfill",
+                "portable"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/polyfill-mbstring",
+            "version": "v1.29.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=7.1"
+            },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
+            "type": "library",
+            "extra": {
+                "thanks": {
+                    "name": "symfony/polyfill",
+                    "url": "https://github.com/symfony/polyfill"
+                }
+            },
+            "autoload": {
+                "files": [
+                    "bootstrap.php"
+                ],
+                "psr-4": {
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Symfony polyfill for the Mbstring extension",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "compatibility",
+                "mbstring",
+                "polyfill",
+                "portable",
+                "shim"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-29T20:11:03+00:00"
+        },
+        {
+            "name": "symfony/service-contracts",
+            "version": "v3.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/service-contracts.git",
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "psr/container": "^1.1|^2.0"
+            },
+            "conflict": {
+                "ext-psr": "<1.1|>=2"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-main": "3.4-dev"
+                },
+                "thanks": {
+                    "name": "symfony/contracts",
+                    "url": "https://github.com/symfony/contracts"
+                }
+            },
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Contracts\\Service\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Test/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Generic abstractions related to writing services",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "abstractions",
+                "contracts",
+                "decoupling",
+                "interfaces",
+                "interoperability",
+                "standards"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2023-12-26T14:02:43+00:00"
+        },
+        {
+            "name": "symfony/var-exporter",
+            "version": "v6.4.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/symfony/var-exporter.git",
+                "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8",
+                "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=8.1",
+                "symfony/deprecation-contracts": "^2.5|^3"
+            },
+            "require-dev": {
+                "symfony/var-dumper": "^5.4|^6.0|^7.0"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "Symfony\\Component\\VarExporter\\": ""
+                },
+                "exclude-from-classmap": [
+                    "/Tests/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Nicolas Grekas",
+                    "email": "p@tchwork.com"
+                },
+                {
+                    "name": "Symfony Community",
+                    "homepage": "https://symfony.com/contributors"
+                }
+            ],
+            "description": "Allows exporting any serializable PHP data structure to plain PHP code",
+            "homepage": "https://symfony.com",
+            "keywords": [
+                "clone",
+                "construct",
+                "export",
+                "hydrate",
+                "instantiate",
+                "lazy-loading",
+                "proxy",
+                "serialize"
+            ],
+            "support": {
+                "source": "https://github.com/symfony/var-exporter/tree/v6.4.3"
+            },
+            "funding": [
+                {
+                    "url": "https://symfony.com/sponsor",
+                    "type": "custom"
+                },
+                {
+                    "url": "https://github.com/fabpot",
+                    "type": "github"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2024-01-23T14:51:35+00:00"
+        }
+    ],
+    "packages-dev": [
+        {
+            "name": "easy-doc/easy-doc",
+            "version": "1.4.1",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kylekatarnls/php-easy-doc.git",
+                "reference": "194433f262ca2ba65089e095b574b7b81891f27b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kylekatarnls/php-easy-doc/zipball/194433f262ca2ba65089e095b574b7b81891f27b",
+                "reference": "194433f262ca2ba65089e095b574b7b81891f27b",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0",
+                "simple-cli/simple-cli": "^1.4.1"
+            },
+            "require-dev": {
+                "erusev/parsedown": "^1.7",
+                "phpunit/phpunit": "^7.5.18",
+                "symfony/process": "^4.4 || ^5.0"
+            },
+            "bin": [
+                "bin/easy-doc"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "EasyDoc\\": "src/EasyDoc/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "KyleK",
+                    "email": "kylekatarnls@gmail.com"
+                }
+            ],
+            "description": "An easy way to generate a static website from HTML/Markdown/RST/Pug/anything sources",
+            "support": {
+                "issues": "https://github.com/kylekatarnls/php-easy-doc/issues",
+                "source": "https://github.com/kylekatarnls/php-easy-doc/tree/master"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/kylekatarnls",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/Carbon",
+                    "type": "open_collective"
+                },
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-05-24T10:15:11+00:00"
+        },
+        {
+            "name": "gregwar/rst",
+            "version": "v1.0.6",
+            "target-dir": "Gregwar/RST",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Gregwar/RST.git",
+                "reference": "93c630ae18c47d8f7503230fa6ca39a79ad3c598"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Gregwar/RST/zipball/93c630ae18c47d8f7503230fa6ca39a79ad3c598",
+                "reference": "93c630ae18c47d8f7503230fa6ca39a79ad3c598",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0",
+                "symfony/polyfill-mbstring": "^1.12"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^6.4"
+            },
+            "type": "library",
+            "autoload": {
+                "psr-0": {
+                    "Gregwar\\RST": ""
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Grégoire Passault",
+                    "email": "g.passault@gmail.com",
+                    "homepage": "http://www.gregwar.com/"
+                }
+            ],
+            "description": "PHP library to parse reStructuredText documents",
+            "homepage": "https://github.com/Gregwar/RST",
+            "keywords": [
+                "markup",
+                "parser",
+                "rst"
+            ],
+            "support": {
+                "issues": "https://github.com/Gregwar/RST/issues",
+                "source": "https://github.com/Gregwar/RST/tree/v1.0.6"
+            },
+            "time": "2020-04-09T08:09:05+00:00"
+        },
+        {
+            "name": "mikey179/vfsstream",
+            "version": "v1.6.11",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/bovigo/vfsStream.git",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.5|^5.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.6.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "org\\bovigo\\vfs\\": "src/main/php"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Frank Kleine",
+                    "homepage": "http://frankkleine.de/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "Virtual file system to mock the real file system in unit tests.",
+            "homepage": "http://vfs.bovigo.org/",
+            "support": {
+                "issues": "https://github.com/bovigo/vfsStream/issues",
+                "source": "https://github.com/bovigo/vfsStream/tree/master",
+                "wiki": "https://github.com/bovigo/vfsStream/wiki"
+            },
+            "time": "2022-02-23T02:02:42+00:00"
+        },
+        {
+            "name": "simple-cli/simple-cli",
+            "version": "1.6.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/kylekatarnls/simple-cli.git",
+                "reference": "47055c9a172ab032e33a498001d2978c9800fd59"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/kylekatarnls/simple-cli/zipball/47055c9a172ab032e33a498001d2978c9800fd59",
+                "reference": "47055c9a172ab032e33a498001d2978c9800fd59",
+                "shasum": ""
+            },
+            "require": {
+                "php": "^7.1 || ^8.0"
+            },
+            "require-dev": {
+                "friendsofphp/php-cs-fixer": "^2.15.0",
+                "phan/phan": "^2.3",
+                "phpmd/phpmd": "dev-master",
+                "phpstan/phpstan": "^0.12",
+                "phpunit/phpunit": "^7",
+                "squizlabs/php_codesniffer": "^3.0",
+                "vimeo/psalm": "^3.6"
+            },
+            "bin": [
+                "bin/simple-cli"
+            ],
+            "type": "library",
+            "autoload": {
+                "psr-4": {
+                    "SimpleCli\\": "src/SimpleCli/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "KyleK",
+                    "email": "kylekatarnls@gmail.com"
+                }
+            ],
+            "description": "A simple command line framework",
+            "support": {
+                "issues": "https://github.com/kylekatarnls/simple-cli/issues",
+                "source": "https://github.com/kylekatarnls/simple-cli/tree/1.6.0"
+            },
+            "funding": [
+                {
+                    "url": "https://tidelift.com/funding/github/packagist/simple-cli/simple-cli",
+                    "type": "tidelift"
+                }
+            ],
+            "time": "2020-11-18T22:40:00+00:00"
+        },
+        {
+            "name": "squizlabs/php_codesniffer",
+            "version": "3.9.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "shasum": ""
+            },
+            "require": {
+                "ext-simplexml": "*",
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+            },
+            "bin": [
+                "bin/phpcbf",
+                "bin/phpcs"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "3.x-dev"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "Former lead"
+                },
+                {
+                    "name": "Juliette Reinders Folmer",
+                    "role": "Current lead"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+            "keywords": [
+                "phpcs",
+                "standards",
+                "static analysis"
+            ],
+            "support": {
+                "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+                "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+                "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+                "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
+            },
+            "funding": [
+                {
+                    "url": "https://github.com/PHPCSStandards",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/jrfnl",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/php_codesniffer",
+                    "type": "open_collective"
+                }
+            ],
+            "time": "2024-02-16T15:06:51+00:00"
+        }
+    ],
+    "aliases": [],
+    "minimum-stability": "stable",
+    "stability-flags": [],
+    "prefer-stable": false,
+    "prefer-lowest": false,
+    "platform": {
+        "php": ">=5.3.9",
+        "ext-xml": "*"
+    },
+    "platform-dev": {
+        "ext-simplexml": "*",
+        "ext-json": "*"
+    },
+    "plugin-api-version": "2.6.0"
+}
diff --git a/nixpkgs/pkgs/development/php-packages/phpmd/default.nix b/nixpkgs/pkgs/development/php-packages/phpmd/default.nix
index bd50a614411a..4c08728ae7bb 100644
--- a/nixpkgs/pkgs/development/php-packages/phpmd/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/phpmd/default.nix
@@ -1,35 +1,30 @@
-{ mkDerivation, fetchurl, makeWrapper, lib, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
-let
+php.buildComposerProject (finalAttrs: {
   pname = "phpmd";
   version = "2.15.0";
-in
-mkDerivation {
-  inherit pname version;
 
-  src = fetchurl {
-    url = "https://github.com/phpmd/phpmd/releases/download/${version}/phpmd.phar";
-    sha256 = "sha256-aijvVd4MdTsHDR0VgLsIoNFGAW+J8O3c72CsT8EINUQ=";
+  src = fetchFromGitHub {
+    owner = "phpmd";
+    repo = "phpmd";
+    rev = finalAttrs.version;
+    hash = "sha256-nTuJGzOZnkqrfE9R9Vujz/zGJRLlj8+yRZmmnxWrieQ=";
   };
 
-  dontUnpack = true;
+  # Missing `composer.lock` from the repository.
+  # Issue open at https://github.com/phpmd/phpmd/issues/1056
+  composerLock = ./composer.lock;
+  vendorHash = "sha256-vr0wQkfhXHLEz8Q5nEq5Bocu1U1nDhXUlaHBsysvuRQ=";
 
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/bin
-    install -D $src $out/libexec/phpmd/phpmd.phar
-    makeWrapper ${php}/bin/php $out/bin/phpmd \
-      --add-flags "$out/libexec/phpmd/phpmd.phar"
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    changelog = "https://github.com/phpmd/phpmd/releases/tag/${version}";
+  meta = {
+    changelog = "https://github.com/phpmd/phpmd/releases/tag/${finalAttrs.version}";
     description = "PHP code quality analyzer";
-    license = licenses.bsd3;
     homepage = "https://phpmd.org/";
-    maintainers = teams.php.members;
+    license = lib.licenses.bsd3;
+    mainProgram = "phpmd";
+    maintainers = lib.teams.php.members;
   };
-}
+})
diff --git a/nixpkgs/pkgs/development/php-packages/psalm/composer.lock b/nixpkgs/pkgs/development/php-packages/psalm/composer.lock
index ae51d5aba211..32838e6eb725 100644
--- a/nixpkgs/pkgs/development/php-packages/psalm/composer.lock
+++ b/nixpkgs/pkgs/development/php-packages/psalm/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "ee60cb38244924a30b9a4f1eb3dbaa53",
+    "content-hash": "4e62680a253786e1a5701a4c779e26c9",
     "packages": [
         {
             "name": "amphp/amp",
@@ -174,16 +174,16 @@
         },
         {
             "name": "composer/pcre",
-            "version": "3.1.0",
+            "version": "3.1.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/composer/pcre.git",
-                "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
-                "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+                "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+                "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
                 "shasum": ""
             },
             "require": {
@@ -225,7 +225,7 @@
             ],
             "support": {
                 "issues": "https://github.com/composer/pcre/issues",
-                "source": "https://github.com/composer/pcre/tree/3.1.0"
+                "source": "https://github.com/composer/pcre/tree/3.1.1"
             },
             "funding": [
                 {
@@ -241,7 +241,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2022-11-17T09:50:14+00:00"
+            "time": "2023-10-11T07:11:09+00:00"
         },
         {
             "name": "composer/semver",
@@ -429,16 +429,16 @@
         },
         {
             "name": "doctrine/deprecations",
-            "version": "1.1.2",
+            "version": "1.1.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/deprecations.git",
-                "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
+                "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
-                "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+                "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+                "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
                 "shasum": ""
             },
             "require": {
@@ -470,9 +470,9 @@
             "homepage": "https://www.doctrine-project.org/",
             "support": {
                 "issues": "https://github.com/doctrine/deprecations/issues",
-                "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
+                "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
             },
-            "time": "2023-09-27T20:04:15+00:00"
+            "time": "2024-01-30T19:34:25+00:00"
         },
         {
             "name": "felixfbecker/advanced-json-rpc",
@@ -577,16 +577,16 @@
         },
         {
             "name": "fidry/cpu-core-counter",
-            "version": "0.5.1",
+            "version": "1.1.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theofidry/cpu-core-counter.git",
-                "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
+                "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
-                "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
+                "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
+                "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
                 "shasum": ""
             },
             "require": {
@@ -594,13 +594,13 @@
             },
             "require-dev": {
                 "fidry/makefile": "^0.2.0",
+                "fidry/php-cs-fixer-config": "^1.1.2",
                 "phpstan/extension-installer": "^1.2.0",
                 "phpstan/phpstan": "^1.9.2",
                 "phpstan/phpstan-deprecation-rules": "^1.0.0",
                 "phpstan/phpstan-phpunit": "^1.2.2",
                 "phpstan/phpstan-strict-rules": "^1.4.4",
-                "phpunit/phpunit": "^9.5.26 || ^8.5.31",
-                "theofidry/php-cs-fixer-config": "^1.0",
+                "phpunit/phpunit": "^8.5.31 || ^9.5.26",
                 "webmozarts/strict-phpunit": "^7.5"
             },
             "type": "library",
@@ -626,7 +626,7 @@
             ],
             "support": {
                 "issues": "https://github.com/theofidry/cpu-core-counter/issues",
-                "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
+                "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
             },
             "funding": [
                 {
@@ -634,20 +634,20 @@
                     "type": "github"
                 }
             ],
-            "time": "2022-12-24T12:35:10+00:00"
+            "time": "2024-02-07T09:43:46+00:00"
         },
         {
             "name": "netresearch/jsonmapper",
-            "version": "v4.2.0",
+            "version": "v4.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/cweiske/jsonmapper.git",
-                "reference": "f60565f8c0566a31acf06884cdaa591867ecc956"
+                "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956",
-                "reference": "f60565f8c0566a31acf06884cdaa591867ecc956",
+                "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
+                "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
                 "shasum": ""
             },
             "require": {
@@ -658,7 +658,7 @@
                 "php": ">=7.1"
             },
             "require-dev": {
-                "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+                "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
                 "squizlabs/php_codesniffer": "~3.5"
             },
             "type": "library",
@@ -683,22 +683,22 @@
             "support": {
                 "email": "cweiske@cweiske.de",
                 "issues": "https://github.com/cweiske/jsonmapper/issues",
-                "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0"
+                "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
             },
-            "time": "2023-04-09T17:37:40+00:00"
+            "time": "2024-01-31T06:18:54+00:00"
         },
         {
             "name": "nikic/php-parser",
-            "version": "v4.17.1",
+            "version": "v4.18.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/nikic/PHP-Parser.git",
-                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
-                "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+                "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+                "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
                 "shasum": ""
             },
             "require": {
@@ -739,9 +739,9 @@
             ],
             "support": {
                 "issues": "https://github.com/nikic/PHP-Parser/issues",
-                "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+                "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
             },
-            "time": "2023-08-13T19:53:39+00:00"
+            "time": "2023-12-10T21:03:43+00:00"
         },
         {
             "name": "phpdocumentor/reflection-common",
@@ -855,21 +855,21 @@
         },
         {
             "name": "phpdocumentor/type-resolver",
-            "version": "1.7.3",
+            "version": "1.8.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpDocumentor/TypeResolver.git",
-                "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419"
+                "reference": "153ae662783729388a584b4361f2545e4d841e3c"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
-                "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
+                "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+                "reference": "153ae662783729388a584b4361f2545e4d841e3c",
                 "shasum": ""
             },
             "require": {
                 "doctrine/deprecations": "^1.0",
-                "php": "^7.4 || ^8.0",
+                "php": "^7.3 || ^8.0",
                 "phpdocumentor/reflection-common": "^2.0",
                 "phpstan/phpdoc-parser": "^1.13"
             },
@@ -907,22 +907,22 @@
             "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
             "support": {
                 "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
-                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3"
+                "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
             },
-            "time": "2023-08-12T11:01:26+00:00"
+            "time": "2024-02-23T11:10:43+00:00"
         },
         {
             "name": "phpstan/phpdoc-parser",
-            "version": "1.24.2",
+            "version": "1.26.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/phpstan/phpdoc-parser.git",
-                "reference": "bcad8d995980440892759db0c32acae7c8e79442"
+                "reference": "231e3186624c03d7e7c890ec662b81e6b0405227"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
-                "reference": "bcad8d995980440892759db0c32acae7c8e79442",
+                "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227",
+                "reference": "231e3186624c03d7e7c890ec662b81e6b0405227",
                 "shasum": ""
             },
             "require": {
@@ -954,9 +954,9 @@
             "description": "PHPDoc parser with support for nullable, intersection and generic types",
             "support": {
                 "issues": "https://github.com/phpstan/phpdoc-parser/issues",
-                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
+                "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0"
             },
-            "time": "2023-09-26T12:28:12+00:00"
+            "time": "2024-02-23T16:05:55+00:00"
         },
         {
             "name": "psr/container",
@@ -1129,16 +1129,16 @@
         },
         {
             "name": "spatie/array-to-xml",
-            "version": "3.2.0",
+            "version": "3.2.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/spatie/array-to-xml.git",
-                "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7"
+                "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7",
-                "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7",
+                "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab",
+                "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab",
                 "shasum": ""
             },
             "require": {
@@ -1176,7 +1176,7 @@
                 "xml"
             ],
             "support": {
-                "source": "https://github.com/spatie/array-to-xml/tree/3.2.0"
+                "source": "https://github.com/spatie/array-to-xml/tree/3.2.3"
             },
             "funding": [
                 {
@@ -1188,47 +1188,50 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-07-19T18:30:26+00:00"
+            "time": "2024-02-07T10:39:02+00:00"
         },
         {
             "name": "symfony/console",
-            "version": "v6.3.4",
+            "version": "v7.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/console.git",
-                "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6"
+                "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6",
-                "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6",
+                "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456",
+                "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.1",
-                "symfony/deprecation-contracts": "^2.5|^3",
+                "php": ">=8.2",
                 "symfony/polyfill-mbstring": "~1.0",
                 "symfony/service-contracts": "^2.5|^3",
-                "symfony/string": "^5.4|^6.0"
+                "symfony/string": "^6.4|^7.0"
             },
             "conflict": {
-                "symfony/dependency-injection": "<5.4",
-                "symfony/dotenv": "<5.4",
-                "symfony/event-dispatcher": "<5.4",
-                "symfony/lock": "<5.4",
-                "symfony/process": "<5.4"
+                "symfony/dependency-injection": "<6.4",
+                "symfony/dotenv": "<6.4",
+                "symfony/event-dispatcher": "<6.4",
+                "symfony/lock": "<6.4",
+                "symfony/process": "<6.4"
             },
             "provide": {
                 "psr/log-implementation": "1.0|2.0|3.0"
             },
             "require-dev": {
                 "psr/log": "^1|^2|^3",
-                "symfony/config": "^5.4|^6.0",
-                "symfony/dependency-injection": "^5.4|^6.0",
-                "symfony/event-dispatcher": "^5.4|^6.0",
-                "symfony/lock": "^5.4|^6.0",
-                "symfony/process": "^5.4|^6.0",
-                "symfony/var-dumper": "^5.4|^6.0"
+                "symfony/config": "^6.4|^7.0",
+                "symfony/dependency-injection": "^6.4|^7.0",
+                "symfony/event-dispatcher": "^6.4|^7.0",
+                "symfony/http-foundation": "^6.4|^7.0",
+                "symfony/http-kernel": "^6.4|^7.0",
+                "symfony/lock": "^6.4|^7.0",
+                "symfony/messenger": "^6.4|^7.0",
+                "symfony/process": "^6.4|^7.0",
+                "symfony/stopwatch": "^6.4|^7.0",
+                "symfony/var-dumper": "^6.4|^7.0"
             },
             "type": "library",
             "autoload": {
@@ -1262,74 +1265,7 @@
                 "terminal"
             ],
             "support": {
-                "source": "https://github.com/symfony/console/tree/v6.3.4"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-08-16T10:10:12+00:00"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "v3.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=8.1"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "3.4-dev"
-                },
-                "thanks": {
-                    "name": "symfony/contracts",
-                    "url": "https://github.com/symfony/contracts"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0"
+                "source": "https://github.com/symfony/console/tree/v7.0.3"
             },
             "funding": [
                 {
@@ -1345,24 +1281,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-23T14:45:45+00:00"
+            "time": "2024-01-23T15:02:46+00:00"
         },
         {
             "name": "symfony/filesystem",
-            "version": "v6.3.1",
+            "version": "v7.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/filesystem.git",
-                "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
+                "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
-                "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12",
+                "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.1",
+                "php": ">=8.2",
                 "symfony/polyfill-ctype": "~1.8",
                 "symfony/polyfill-mbstring": "~1.8"
             },
@@ -1392,7 +1328,7 @@
             "description": "Provides basic utilities for the filesystem",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/filesystem/tree/v6.3.1"
+                "source": "https://github.com/symfony/filesystem/tree/v7.0.3"
             },
             "funding": [
                 {
@@ -1408,20 +1344,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-06-01T08:30:39+00:00"
+            "time": "2024-01-23T15:02:46+00:00"
         },
         {
             "name": "symfony/polyfill-ctype",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
-                "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
+                "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
                 "shasum": ""
             },
             "require": {
@@ -1435,9 +1371,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -1474,7 +1407,7 @@
                 "portable"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -1490,20 +1423,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-intl-grapheme",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "875e90aeea2777b6f135677f618529449334a612"
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
-                "reference": "875e90aeea2777b6f135677f618529449334a612",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f",
+                "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f",
                 "shasum": ""
             },
             "require": {
@@ -1514,9 +1447,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -1555,7 +1485,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -1571,20 +1501,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
+                "reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
                 "shasum": ""
             },
             "require": {
@@ -1595,9 +1525,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -1639,7 +1566,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -1655,20 +1582,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/polyfill-mbstring",
-            "version": "v1.28.0",
+            "version": "v1.29.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "42292d99c55abe617799667f454222c54c60e229"
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
-                "reference": "42292d99c55abe617799667f454222c54c60e229",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+                "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
                 "shasum": ""
             },
             "require": {
@@ -1682,9 +1609,6 @@
             },
             "type": "library",
             "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
                 "thanks": {
                     "name": "symfony/polyfill",
                     "url": "https://github.com/symfony/polyfill"
@@ -1722,7 +1646,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
             },
             "funding": [
                 {
@@ -1738,25 +1662,25 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-28T09:04:16+00:00"
+            "time": "2024-01-29T20:11:03+00:00"
         },
         {
             "name": "symfony/service-contracts",
-            "version": "v3.3.0",
+            "version": "v3.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
-                "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
+                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
+                "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
                 "shasum": ""
             },
             "require": {
                 "php": ">=8.1",
-                "psr/container": "^2.0"
+                "psr/container": "^1.1|^2.0"
             },
             "conflict": {
                 "ext-psr": "<1.1|>=2"
@@ -1804,7 +1728,7 @@
                 "standards"
             ],
             "support": {
-                "source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
+                "source": "https://github.com/symfony/service-contracts/tree/v3.4.1"
             },
             "funding": [
                 {
@@ -1820,24 +1744,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-05-23T14:45:45+00:00"
+            "time": "2023-12-26T14:02:43+00:00"
         },
         {
             "name": "symfony/string",
-            "version": "v6.3.5",
+            "version": "v7.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/string.git",
-                "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339"
+                "reference": "524aac4a280b90a4420d8d6a040718d0586505ac"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339",
-                "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339",
+                "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac",
+                "reference": "524aac4a280b90a4420d8d6a040718d0586505ac",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.1",
+                "php": ">=8.2",
                 "symfony/polyfill-ctype": "~1.8",
                 "symfony/polyfill-intl-grapheme": "~1.0",
                 "symfony/polyfill-intl-normalizer": "~1.0",
@@ -1847,11 +1771,11 @@
                 "symfony/translation-contracts": "<2.5"
             },
             "require-dev": {
-                "symfony/error-handler": "^5.4|^6.0",
-                "symfony/http-client": "^5.4|^6.0",
-                "symfony/intl": "^6.2",
+                "symfony/error-handler": "^6.4|^7.0",
+                "symfony/http-client": "^6.4|^7.0",
+                "symfony/intl": "^6.4|^7.0",
                 "symfony/translation-contracts": "^2.5|^3.0",
-                "symfony/var-exporter": "^5.4|^6.0"
+                "symfony/var-exporter": "^6.4|^7.0"
             },
             "type": "library",
             "autoload": {
@@ -1890,7 +1814,7 @@
                 "utf8"
             ],
             "support": {
-                "source": "https://github.com/symfony/string/tree/v6.3.5"
+                "source": "https://github.com/symfony/string/tree/v7.0.3"
             },
             "funding": [
                 {
@@ -1906,7 +1830,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-18T10:38:32+00:00"
+            "time": "2024-01-29T15:41:16+00:00"
         },
         {
             "name": "webmozart/assert",
@@ -2083,16 +2007,16 @@
         },
         {
             "name": "brianium/paratest",
-            "version": "v6.10.1",
+            "version": "v6.11.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/paratestphp/paratest.git",
-                "reference": "d6f32a91302b74458e8ef5d132bb2215a5edb34b"
+                "reference": "8083a421cee7dad847ee7c464529043ba30de380"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/paratestphp/paratest/zipball/d6f32a91302b74458e8ef5d132bb2215a5edb34b",
-                "reference": "d6f32a91302b74458e8ef5d132bb2215a5edb34b",
+                "url": "https://api.github.com/repos/paratestphp/paratest/zipball/8083a421cee7dad847ee7c464529043ba30de380",
+                "reference": "8083a421cee7dad847ee7c464529043ba30de380",
                 "shasum": ""
             },
             "require": {
@@ -2100,7 +2024,7 @@
                 "ext-pcre": "*",
                 "ext-reflection": "*",
                 "ext-simplexml": "*",
-                "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
+                "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
                 "jean85/pretty-package-versions": "^2.0.5",
                 "php": "^7.3 || ^8.0",
                 "phpunit/php-code-coverage": "^9.2.25",
@@ -2108,16 +2032,16 @@
                 "phpunit/php-timer": "^5.0.3",
                 "phpunit/phpunit": "^9.6.4",
                 "sebastian/environment": "^5.1.5",
-                "symfony/console": "^5.4.21 || ^6.2.7",
-                "symfony/process": "^5.4.21 || ^6.2.7"
+                "symfony/console": "^5.4.28 || ^6.3.4 || ^7.0.0",
+                "symfony/process": "^5.4.28 || ^6.3.4 || ^7.0.0"
             },
             "require-dev": {
-                "doctrine/coding-standard": "^10.0.0",
+                "doctrine/coding-standard": "^12.0.0",
                 "ext-pcov": "*",
                 "ext-posix": "*",
-                "infection/infection": "^0.26.19",
+                "infection/infection": "^0.27.6",
                 "squizlabs/php_codesniffer": "^3.7.2",
-                "symfony/filesystem": "^5.4.21 || ^6.2.7",
+                "symfony/filesystem": "^5.4.25 || ^6.3.1 || ^7.0.0",
                 "vimeo/psalm": "^5.7.7"
             },
             "bin": [
@@ -2159,7 +2083,7 @@
             ],
             "support": {
                 "issues": "https://github.com/paratestphp/paratest/issues",
-                "source": "https://github.com/paratestphp/paratest/tree/v6.10.1"
+                "source": "https://github.com/paratestphp/paratest/tree/v6.11.0"
             },
             "funding": [
                 {
@@ -2171,7 +2095,7 @@
                     "type": "paypal"
                 }
             ],
-            "time": "2023-10-04T13:33:07+00:00"
+            "time": "2023-10-31T09:13:57+00:00"
         },
         {
             "name": "composer/package-versions-deprecated",
@@ -2326,16 +2250,16 @@
         },
         {
             "name": "dg/bypass-finals",
-            "version": "v1.5.1",
+            "version": "v1.6.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/dg/bypass-finals.git",
-                "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104"
+                "reference": "efe2fe04bae9f0de271dd462afc049067889e6d1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/dg/bypass-finals/zipball/12ef25e1f8d4144e4ec80d13a28895e8942f4104",
-                "reference": "12ef25e1f8d4144e4ec80d13a28895e8942f4104",
+                "url": "https://api.github.com/repos/dg/bypass-finals/zipball/efe2fe04bae9f0de271dd462afc049067889e6d1",
+                "reference": "efe2fe04bae9f0de271dd462afc049067889e6d1",
                 "shasum": ""
             },
             "require": {
@@ -2373,9 +2297,9 @@
             ],
             "support": {
                 "issues": "https://github.com/dg/bypass-finals/issues",
-                "source": "https://github.com/dg/bypass-finals/tree/v1.5.1"
+                "source": "https://github.com/dg/bypass-finals/tree/v1.6.0"
             },
-            "time": "2023-09-16T09:13:54+00:00"
+            "time": "2023-11-19T22:19:30+00:00"
         },
         {
             "name": "doctrine/instantiator",
@@ -2559,16 +2483,16 @@
         },
         {
             "name": "mockery/mockery",
-            "version": "1.6.6",
+            "version": "1.6.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/mockery/mockery.git",
-                "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e"
+                "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e",
-                "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e",
+                "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06",
+                "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06",
                 "shasum": ""
             },
             "require": {
@@ -2581,9 +2505,7 @@
             },
             "require-dev": {
                 "phpunit/phpunit": "^8.5 || ^9.6.10",
-                "psalm/plugin-phpunit": "^0.18.4",
-                "symplify/easy-coding-standard": "^11.5.0",
-                "vimeo/psalm": "^4.30"
+                "symplify/easy-coding-standard": "^12.0.8"
             },
             "type": "library",
             "autoload": {
@@ -2640,7 +2562,7 @@
                 "security": "https://github.com/mockery/mockery/security/advisories",
                 "source": "https://github.com/mockery/mockery"
             },
-            "time": "2023-08-09T00:03:52+00:00"
+            "time": "2023-12-10T02:24:34+00:00"
         },
         {
             "name": "myclabs/deep-copy",
@@ -2944,23 +2866,23 @@
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "9.2.29",
+            "version": "9.2.30",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
-                "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca2bd87d2f9215904682a9cb9bb37dda98e76089",
+                "reference": "ca2bd87d2f9215904682a9cb9bb37dda98e76089",
                 "shasum": ""
             },
             "require": {
                 "ext-dom": "*",
                 "ext-libxml": "*",
                 "ext-xmlwriter": "*",
-                "nikic/php-parser": "^4.15",
+                "nikic/php-parser": "^4.18 || ^5.0",
                 "php": ">=7.3",
                 "phpunit/php-file-iterator": "^3.0.3",
                 "phpunit/php-text-template": "^2.0.2",
@@ -3010,7 +2932,7 @@
             "support": {
                 "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
                 "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
-                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
+                "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.30"
             },
             "funding": [
                 {
@@ -3018,7 +2940,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2023-09-19T04:57:46+00:00"
+            "time": "2023-12-22T06:47:57+00:00"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -3263,16 +3185,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "9.6.13",
+            "version": "9.6.17",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
+                "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
-                "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd",
+                "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd",
                 "shasum": ""
             },
             "require": {
@@ -3346,7 +3268,7 @@
             "support": {
                 "issues": "https://github.com/sebastianbergmann/phpunit/issues",
                 "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
-                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13"
+                "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17"
             },
             "funding": [
                 {
@@ -3362,7 +3284,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-09-19T05:39:22+00:00"
+            "time": "2024-02-23T13:14:51+00:00"
         },
         {
             "name": "psalm/plugin-mockery",
@@ -3724,20 +3646,20 @@
         },
         {
             "name": "sebastian/complexity",
-            "version": "2.0.2",
+            "version": "2.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/complexity.git",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
-                "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+                "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+                "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
                 "shasum": ""
             },
             "require": {
-                "nikic/php-parser": "^4.7",
+                "nikic/php-parser": "^4.18 || ^5.0",
                 "php": ">=7.3"
             },
             "require-dev": {
@@ -3769,7 +3691,7 @@
             "homepage": "https://github.com/sebastianbergmann/complexity",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/complexity/issues",
-                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+                "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
             },
             "funding": [
                 {
@@ -3777,7 +3699,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-10-26T15:52:27+00:00"
+            "time": "2023-12-22T06:19:30+00:00"
         },
         {
             "name": "sebastian/environment",
@@ -3985,20 +3907,20 @@
         },
         {
             "name": "sebastian/lines-of-code",
-            "version": "1.0.3",
+            "version": "1.0.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/lines-of-code.git",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
-                "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+                "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+                "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
                 "shasum": ""
             },
             "require": {
-                "nikic/php-parser": "^4.6",
+                "nikic/php-parser": "^4.18 || ^5.0",
                 "php": ">=7.3"
             },
             "require-dev": {
@@ -4030,7 +3952,7 @@
             "homepage": "https://github.com/sebastianbergmann/lines-of-code",
             "support": {
                 "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
-                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+                "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
             },
             "funding": [
                 {
@@ -4038,7 +3960,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-11-28T06:42:11+00:00"
+            "time": "2023-12-22T06:20:34+00:00"
         },
         {
             "name": "sebastian/object-enumerator",
@@ -4381,32 +4303,32 @@
         },
         {
             "name": "slevomat/coding-standard",
-            "version": "8.13.4",
+            "version": "8.14.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/slevomat/coding-standard.git",
-                "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322"
+                "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/4b2af2fb17773656d02fbfb5d18024ebd19fe322",
-                "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322",
+                "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926",
+                "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926",
                 "shasum": ""
             },
             "require": {
                 "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0",
                 "php": "^7.2 || ^8.0",
-                "phpstan/phpdoc-parser": "^1.23.0",
+                "phpstan/phpdoc-parser": "^1.23.1",
                 "squizlabs/php_codesniffer": "^3.7.1"
             },
             "require-dev": {
                 "phing/phing": "2.17.4",
                 "php-parallel-lint/php-parallel-lint": "1.3.2",
-                "phpstan/phpstan": "1.10.26",
-                "phpstan/phpstan-deprecation-rules": "1.1.3",
-                "phpstan/phpstan-phpunit": "1.3.13",
+                "phpstan/phpstan": "1.10.37",
+                "phpstan/phpstan-deprecation-rules": "1.1.4",
+                "phpstan/phpstan-phpunit": "1.3.14",
                 "phpstan/phpstan-strict-rules": "1.5.1",
-                "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.6"
+                "phpunit/phpunit": "8.5.21|9.6.8|10.3.5"
             },
             "type": "phpcodesniffer-standard",
             "extra": {
@@ -4430,7 +4352,7 @@
             ],
             "support": {
                 "issues": "https://github.com/slevomat/coding-standard/issues",
-                "source": "https://github.com/slevomat/coding-standard/tree/8.13.4"
+                "source": "https://github.com/slevomat/coding-standard/tree/8.14.1"
             },
             "funding": [
                 {
@@ -4442,20 +4364,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-25T10:28:55+00:00"
+            "time": "2023-10-08T07:28:08+00:00"
         },
         {
             "name": "squizlabs/php_codesniffer",
-            "version": "3.7.2",
+            "version": "3.9.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
-                "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879"
+                "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879",
-                "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879",
+                "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
+                "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b",
                 "shasum": ""
             },
             "require": {
@@ -4465,11 +4387,11 @@
                 "php": ">=5.4.0"
             },
             "require-dev": {
-                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+                "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
             },
             "bin": [
-                "bin/phpcs",
-                "bin/phpcbf"
+                "bin/phpcbf",
+                "bin/phpcs"
             ],
             "type": "library",
             "extra": {
@@ -4484,39 +4406,62 @@
             "authors": [
                 {
                     "name": "Greg Sherwood",
-                    "role": "lead"
+                    "role": "Former lead"
+                },
+                {
+                    "name": "Juliette Reinders Folmer",
+                    "role": "Current lead"
+                },
+                {
+                    "name": "Contributors",
+                    "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
                 }
             ],
             "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
-            "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+            "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
             "keywords": [
                 "phpcs",
                 "standards",
                 "static analysis"
             ],
             "support": {
-                "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
-                "source": "https://github.com/squizlabs/PHP_CodeSniffer",
-                "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+                "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
+                "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
+                "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
+                "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
             },
-            "time": "2023-02-22T23:07:41+00:00"
+            "funding": [
+                {
+                    "url": "https://github.com/PHPCSStandards",
+                    "type": "github"
+                },
+                {
+                    "url": "https://github.com/jrfnl",
+                    "type": "github"
+                },
+                {
+                    "url": "https://opencollective.com/php_codesniffer",
+                    "type": "open_collective"
+                }
+            ],
+            "time": "2024-02-16T15:06:51+00:00"
         },
         {
             "name": "symfony/process",
-            "version": "v6.3.4",
+            "version": "v7.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/process.git",
-                "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
+                "reference": "937a195147e0c27b2759ade834169ed006d0bc74"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
-                "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
+                "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74",
+                "reference": "937a195147e0c27b2759ade834169ed006d0bc74",
                 "shasum": ""
             },
             "require": {
-                "php": ">=8.1"
+                "php": ">=8.2"
             },
             "type": "library",
             "autoload": {
@@ -4544,7 +4489,7 @@
             "description": "Executes commands in sub-processes",
             "homepage": "https://symfony.com",
             "support": {
-                "source": "https://github.com/symfony/process/tree/v6.3.4"
+                "source": "https://github.com/symfony/process/tree/v7.0.3"
             },
             "funding": [
                 {
@@ -4560,20 +4505,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-08-07T10:39:22+00:00"
+            "time": "2024-01-23T15:02:46+00:00"
         },
         {
             "name": "theseer/tokenizer",
-            "version": "1.2.1",
+            "version": "1.2.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/theseer/tokenizer.git",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
-                "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+                "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+                "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
                 "shasum": ""
             },
             "require": {
@@ -4602,7 +4547,7 @@
             "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
             "support": {
                 "issues": "https://github.com/theseer/tokenizer/issues",
-                "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+                "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
             },
             "funding": [
                 {
@@ -4610,7 +4555,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2021-07-28T10:34:58+00:00"
+            "time": "2023-11-20T00:12:19+00:00"
         }
     ],
     "aliases": [],
diff --git a/nixpkgs/pkgs/development/php-packages/psalm/default.nix b/nixpkgs/pkgs/development/php-packages/psalm/default.nix
index 5463fec0d541..f12357507eb1 100644
--- a/nixpkgs/pkgs/development/php-packages/psalm/default.nix
+++ b/nixpkgs/pkgs/development/php-packages/psalm/default.nix
@@ -1,19 +1,23 @@
-{ lib, fetchgit, php }:
+{ lib
+, fetchFromGitHub
+, php
+}:
 
 php.buildComposerProject (finalAttrs: {
   pname = "psalm";
-  version = "5.15.0";
+  version = "5.22.2";
 
-  src = fetchgit {
-    url = "https://github.com/vimeo/psalm.git";
+  src = fetchFromGitHub {
+    owner = "vimeo";
+    repo = "psalm";
     rev = finalAttrs.version;
-    hash = "sha256-rRExT82+IwgVo7pL3rrTjW/qj/MJf4m4L3PywaeSHYU=";
+    hash = "sha256-M8Ds3PQGphK8lQciWNdxWkMN35q8vdaNTWTrP1WXTeg=";
   };
 
-  # TODO: Open a PR against https://github.com/vimeo/psalm
   # Missing `composer.lock` from the repository.
+  # Issue open at https://github.com/vimeo/psalm/issues/10446
   composerLock = ./composer.lock;
-  vendorHash = "sha256-Vho1ri/Qm2SYeXB9ZoXvH1vB/eSBwHnAT/pI4jjUYhU=";
+  vendorHash = "sha256-URPyV1V/8BP8fbJqyYLf+XKG786hY2BbAzUphzPyPCs=";
 
   meta = {
     changelog = "https://github.com/vimeo/psalm/releases/tag/${finalAttrs.version}";
diff --git a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix b/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
index baecca21fd5e..dd5e90ef2e41 100644
--- a/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/adafruit-platformdetect/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "adafruit-platformdetect";
-  version = "3.60.0";
+  version = "3.61.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Adafruit-PlatformDetect";
     inherit version;
-    hash = "sha256-ZE3rETwAuhv7pHA/zYDKtStWONShFG8tWDeN9K8JdG8=";
+    hash = "sha256-hA10t/ZtMH2MjyHJJdJeOZLOF5NNTCOgGqxU6CCkZlQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aioairzone/default.nix b/nixpkgs/pkgs/development/python-modules/aioairzone/default.nix
index fdded411bee7..78d572744aab 100644
--- a/nixpkgs/pkgs/development/python-modules/aioairzone/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioairzone/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "aioairzone";
-  version = "0.7.4";
+  version = "0.7.5";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Noltari";
     repo = "aioairzone";
     rev = "refs/tags/${version}";
-    hash = "sha256-yIkP0eWyEJAZc2tJbwTvlU5b2pDta4SatmsTMPsSDt8=";
+    hash = "sha256-mliyDKh+7M8GQ0ZJijoYrqKDeAqRHfKGyPJM/5no+fM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix b/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
index 834fc55188c2..43f8f833703a 100644
--- a/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioautomower/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "aioautomower";
-  version = "2024.2.8";
+  version = "2024.2.9";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "Thomas55555";
     repo = "aioautomower";
     rev = "refs/tags/${version}";
-    hash = "sha256-YdC6459lEvHDnX4L26n28oGzDSsa7/8UGHjnONhn9Yo=";
+    hash = "sha256-vjg7y+9E4R1Q7h+ao/ttuRbvui4u5hESR8tImWSO04U=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/aioboto3/default.nix b/nixpkgs/pkgs/development/python-modules/aioboto3/default.nix
index 231e4bbbe8b2..6b0f79655717 100644
--- a/nixpkgs/pkgs/development/python-modules/aioboto3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioboto3/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "aioboto3";
-  version = "12.1.0";
+  version = "12.3.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "terrycain";
     repo = "aioboto3";
     rev = "refs/tags/v${version}";
-    hash = "sha256-CVRDQhymQRi5dyVBLJYTnF3RI4jPBB966dVMT4lOd8g=";
+    hash = "sha256-GDuxy/V+j0LRJ2lbcRHMEAga+pdCbYIWhEt3ItrHMB4=";
   };
 
   nativeBuildInputs = [
@@ -37,8 +37,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     aiobotocore
-    boto3
-  ];
+  ] ++ aiobotocore.optional-dependencies.boto3;
 
   passthru.optional-dependencies = {
     chalice = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
index 9b8609c435af..15eeb18989cc 100644
--- a/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiobotocore/default.nix
@@ -7,7 +7,10 @@
 , fetchFromGitHub
 , flask
 , flask-cors
+, awscli
 , moto
+, boto3
+, setuptools
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
@@ -16,16 +19,16 @@
 
 buildPythonPackage rec {
   pname = "aiobotocore";
-  version = "2.9.1";
-  format = "setuptools";
+  version = "2.11.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "aio-libs";
-    repo = pname;
+    repo = "aiobotocore";
     rev = "refs/tags/${version}";
-    hash = "sha256-cODdmP/O24fNIugzl4AYdf3g4Gzwx3JseYKbZKgEPbc=";
+    hash = "sha256-H9nsLPxjv3H5y6+5piBt6Pb+Wks4vwOitM+WQtyViPs=";
   };
 
   # Relax version constraints: aiobotocore works with newer botocore versions
@@ -34,6 +37,10 @@ buildPythonPackage rec {
     sed -i "s/'botocore>=.*'/'botocore'/" setup.py
   '';
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     aiohttp
     aioitertools
@@ -41,6 +48,15 @@ buildPythonPackage rec {
     wrapt
   ];
 
+  passthru.optional-dependencies = {
+    awscli = [
+      awscli
+    ];
+    boto3 = [
+      boto3
+    ];
+  };
+
   nativeCheckInputs = [
     dill
     flask
diff --git a/nixpkgs/pkgs/development/python-modules/aiocsv/default.nix b/nixpkgs/pkgs/development/python-modules/aiocsv/default.nix
index 8960dca9a8d7..30511eb81676 100644
--- a/nixpkgs/pkgs/development/python-modules/aiocsv/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiocsv/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "aiocsv";
-  version = "1.3.0";
+  version = "1.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "MKuranowski";
     repo = "aiocsv";
     rev = "refs/tags/v${version}";
-    hash = "sha256-5jMmT7XY+1VNbDNciZS6B/oQJFj4XmGvhDITKWHCuOQ=";
+    hash = "sha256-zHU9NfxiRUOAk0kwsKmvxd01UtNXZTnb700Wlm9DUz4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiomysensors/default.nix b/nixpkgs/pkgs/development/python-modules/aiomysensors/default.nix
index 5d92471c472c..15c71c5cba68 100644
--- a/nixpkgs/pkgs/development/python-modules/aiomysensors/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiomysensors/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "aiomysensors";
-  version = "0.3.11";
+  version = "0.3.12";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -24,12 +24,12 @@ buildPythonPackage rec {
     owner = "MartinHjelmare";
     repo = "aiomysensors";
     rev = "refs/tags/v${version}";
-    hash = "sha256-uBmFJFmUClTkaAg8jTThygzmZv7UZDPSt0bXo8BLu00=";
+    hash = "sha256-9M5WuBoezbZr7OwJaM0m2CqibziJVwqANGOhiJrqfxA=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace " --cov=src --cov-report=term-missing:skip-covered" ""
+      --replace-fail " --cov=src --cov-report=term-missing:skip-covered" ""
   '';
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
index 4e77bc9c6509..2dfef5a251ad 100644
--- a/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aioshelly/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "aioshelly";
-  version = "8.0.1";
+  version = "8.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-3W5XfSOaKCCBjDHJh8IP/5I48py3j6i2O3FfhbcQzbY=";
+    hash = "sha256-i2dlcparDQlwM7Wk/HwlBz0mmI38ZRwxVM6jLY0rI+0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
index 93010f174c7c..e50bd10281c5 100644
--- a/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aiounifi/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "aiounifi";
-  version = "71";
+  version = "72";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "aiounifi";
     rev = "refs/tags/v${version}";
-    hash = "sha256-KmxwCjmvDByCtsSQ+fQtdLS4ZDxtUaqc5zoOF9dsSq8=";
+    hash = "sha256-PrFI5ncHW4r2Re1BIqRZlz8ns6d5p6y6PASCleSmyNc=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
index 497d4a9aa4dd..aba858a05dc4 100644
--- a/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/approvaltests/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "approvaltests";
-  version = "10.4.0";
+  version = "11.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "approvals";
     repo = "ApprovalTests.Python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/UsrUzCd4aYEQ4epZggk2O2esJCUG0DxRseK+s6yJd4=";
+    hash = "sha256-Ep95niYin3urtiMFSVY792zpFAcu6MwQN9DA/IJLSQQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix b/nixpkgs/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
index a2257be2f428..d9cba7737271 100644
--- a/nixpkgs/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/appthreat-vulnerability-db/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "appthreat-vulnerability-db";
-  version = "5.6.3";
+  version = "5.6.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "AppThreat";
     repo = "vulnerability-db";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aOHnuZdjXiIqd/SeQdVB1qB7v8DfnEFH0zHctA74MPw=";
+    hash = "sha256-Uq0DXrNQRVhQaPXXGNjbnPhOYoPpa8H3WuDdotCKS8c=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/argilla/default.nix b/nixpkgs/pkgs/development/python-modules/argilla/default.nix
index 336b6f6db856..0ccca5417a2e 100644
--- a/nixpkgs/pkgs/development/python-modules/argilla/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/argilla/default.nix
@@ -65,7 +65,7 @@
 }:
 let
   pname = "argilla";
-  version = "1.24.0";
+  version = "1.25.0";
   optional-dependencies = {
     server = [
       fastapi
@@ -126,7 +126,7 @@ buildPythonPackage {
     owner = "argilla-io";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-2baSX6b2BFYHXKg37WMHcGel3OTGsCJrulvyxmbdBek=";
+    hash = "sha256-KU67tu14pX1nCRl9k/Na9EqelO3Uz7It1dpFBU2IjZA=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/arviz/default.nix b/nixpkgs/pkgs/development/python-modules/arviz/default.nix
index 63bf85273811..edd555a96b16 100644
--- a/nixpkgs/pkgs/development/python-modules/arviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/arviz/default.nix
@@ -100,6 +100,7 @@ buildPythonPackage rec {
     "test_plot_ppc_discrete_save_animation"
     # Assertion error
     "test_data_zarr"
+    "test_plot_forest"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix b/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
index 4cd972d95b8c..f728bbb56209 100644
--- a/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awesomeversion/default.nix
@@ -2,11 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , pythonOlder
-
-# build-system
 , poetry-core
-
-# tests
 , pytest-snapshot
 , pytestCheckHook
 }:
@@ -14,13 +10,13 @@
 buildPythonPackage rec {
   pname = "awesomeversion";
   version = "24.2.0";
-  format = "pyproject";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
-    repo = pname;
+    repo = "awesomeversion";
     rev = "refs/tags/${version}";
     hash = "sha256-bpLtHhpWc1VweVl5G8mM473Js3bXT11N3Zc0jiVqq5c=";
   };
@@ -28,7 +24,7 @@ buildPythonPackage rec {
   postPatch = ''
     # Upstream doesn't set a version
     substituteInPlace pyproject.toml \
-      --replace 'version = "0"' 'version = "${version}"'
+      --replace-fail 'version = "0"' 'version = "${version}"'
   '';
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/aws-encryption-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/aws-encryption-sdk/default.nix
index b9186ab1779c..7cdcc917c8a8 100644
--- a/nixpkgs/pkgs/development/python-modules/aws-encryption-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aws-encryption-sdk/default.nix
@@ -1,54 +1,62 @@
 { lib
-, buildPythonPackage
-, fetchPypi
 , attrs
 , boto3
+, buildPythonPackage
 , cryptography
-, setuptools
-, wrapt
+, fetchPypi
 , mock
-, pytest
 , pytest-mock
 , pytestCheckHook
+, pythonAtLeast
+, pythonOlder
+, setuptools
+, wrapt
 }:
 
 buildPythonPackage rec {
   pname = "aws-encryption-sdk";
   version = "3.1.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
     hash = "sha256-jV+/AY/GjWscrL5N0Df9gFKWx3Nqn+RX62hNBT9/lWM=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     attrs
     boto3
     cryptography
-    setuptools
     wrapt
   ];
 
-  doCheck = true;
-
   nativeCheckInputs = [
     mock
-    pytest
     pytest-mock
     pytestCheckHook
   ];
 
   disabledTestPaths = [
-    # requires networking
+    # Tests require networking
     "examples"
     "test/integration"
   ];
 
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [
+    # AssertionError: Regex pattern did not match, https://github.com/aws/aws-encryption-sdk-python/issues/644
+    "test_abstracts"
+  ];
+
   meta = with lib; {
+    description = "Python implementation of the AWS Encryption SDK";
     homepage = "https://aws-encryption-sdk-python.readthedocs.io/";
     changelog = "https://github.com/aws/aws-encryption-sdk-python/blob/v${version}/CHANGELOG.rst";
-    description = "Fully compliant, native Python implementation of the AWS Encryption SDK.";
     license = licenses.asl20;
     maintainers = with maintainers; [ anthonyroussel ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix b/nixpkgs/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
index 7e54c030bf1e..90226ddd99e4 100644
--- a/nixpkgs/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/aws-secretsmanager-caching/default.nix
@@ -1,34 +1,27 @@
 { lib
+, botocore
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
+, pytestCheckHook
+, pythonAtLeast
+, pythonOlder
 , setuptools
 , setuptools-scm
-, botocore
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  pname = "aws_secretsmanager_caching";
+  pname = "aws-secretsmanager-caching";
   version = "1.1.1.5";
-  format = "setuptools";
+  pyprject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
-    inherit pname version;
-    sha256 = "5cee2762bb89b72f3e5123feee8e45fbe44ffe163bfca08b28f27b2e2b7772e1";
+    pname = "aws_secretsmanager_caching";
+    inherit version;
+    hash = "sha256-XO4nYruJty8+USP+7o5F++RP/hY7/KCLKPJ7Lit3cuE=";
   };
 
-  nativeBuildInputs = [
-    setuptools-scm
-  ];
-
-  propagatedBuildInputs = [
-    botocore
-    setuptools  # Needs pkg_resources at runtime.
-  ];
-
   patches = [
     # Remove coverage tests from the pytest invocation in setup.cfg.
     ./remove-coverage-tests.patch
@@ -36,9 +29,18 @@ buildPythonPackage rec {
 
   postPatch = ''
     substituteInPlace setup.py \
-      --replace "'pytest-runner'," ""
+      --replace-fail "'pytest-runner'," ""
   '';
 
+  nativeBuildInputs = [
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    botocore
+    setuptools  # Needs pkg_resources at runtime.
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
@@ -48,6 +50,21 @@ buildPythonPackage rec {
     "test/integ"
   ];
 
+  disabledTests = lib.optionals (pythonAtLeast "3.12") [
+    # TypeError: 'float' object cannot be interpreted as an integer
+    "test_calls_hook_binary"
+    "test_calls_hook_string"
+    "test_get_secret_binary"
+    "test_get_secret_string"
+    "test_invalid_json"
+    "test_missing_key"
+    "test_string_with_additional_kwargs"
+    "test_string"
+    "test_valid_json_with_mixed_args"
+    "test_valid_json_with_no_secret_kwarg"
+    "test_valid_json"
+  ];
+
   pythonImportsCheck = [
     "aws_secretsmanager_caching"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/awscrt/default.nix b/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
index 31639cb455ff..2e2d6fcf747a 100644
--- a/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/awscrt/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "awscrt";
-  version = "0.20.3";
+  version = "0.20.4";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-xB5HHDSUKHYGosbCa4/pesx0uJQarp2aEhpHDBmDh1g=";
+    hash = "sha256-SwbMIenB8aoZKzxq8xjQ3hmX9PzaccG4+y+fttq8NL8=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [
diff --git a/nixpkgs/pkgs/development/python-modules/azure-core/default.nix b/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
index 44f3c1b81085..b376126432b5 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-core/default.nix
@@ -12,15 +12,16 @@
 , pytest-trio
 , pytestCheckHook
 , requests
+, setuptools
 , six
 , trio
 , typing-extensions
 }:
 
 buildPythonPackage rec {
-  version = "1.28.0";
+  version = "1.30.0";
   pname = "azure-core";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -28,10 +29,13 @@ buildPythonPackage rec {
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-6e78Zvwf3lbatvBNTl0SxgdU1an6Sb3P2FNPyW7ZNr0=";
+    hash = "sha256-bzp4g+8YRyL2vZlyYu3a+Az+fls+DKqvjbFpVpWJPTU=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     requests
     six
@@ -99,8 +103,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure Core Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
-    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/core/azure-core/CHANGELOG.md";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/core/azure-core";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-core_${version}/sdk/core/azure-core/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault-administration/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault-administration/default.nix
index 07d608dfa56f..a890e435508f 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault-administration/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault-administration/default.nix
@@ -1,34 +1,36 @@
 { lib
+, azure-core
 , buildPythonPackage
 , fetchPypi
+, isodate
 , pythonOlder
-, azure-common
-, azure-core
-, msrest
-, six
+, setuptools
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "azure-keyvault-administration";
-  version = "4.3.0";
-  format = "setuptools";
+  version = "4.4.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-PuKjui0OP0ODNErjbjJ90hOgee97JDrVT2sh+MufxWY=";
+    hash = "sha256-ems2y59UTzV1D/L6lMg7l7PvIMH+G0JOpoAY7ucD8d8=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
-    azure-common
     azure-core
-    msrest
-    six
+    typing-extensions
+    isodate
   ];
 
-  # no tests in pypi tarball
+  # Tests require checkout from mono-repo
   doCheck = false;
 
   pythonNamespaces = [
@@ -42,6 +44,7 @@ buildPythonPackage rec {
   meta = with lib; {
     description = "Microsoft Azure Key Vault Administration Client Library for Python";
     homepage = "https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/keyvault/azure-keyvault-administration";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-keyvault-administration_${version}/sdk/keyvault/azure-keyvault-administration/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
index 77d81c87ec31..e45f1b241517 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault-certificates/default.nix
@@ -3,36 +3,40 @@
 , fetchPypi
 , azure-common
 , azure-core
-, msrest
-, msrestazure
+, isodate
 , pythonOlder
+, setuptools
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "azure-keyvault-certificates";
-  version = "4.7.0";
-  format = "setuptools";
+  version = "4.8.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-nkfZp0gl5QKxPVSByZwYIEDE9Ucj9DNx4AhZQ23888o=";
+    hash = "sha256-xWEnPkQCwlEUhzSGyYv6GyxHiGIp1BAOh9rxAO4Edyg=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     azure-common
     azure-core
-    msrest
-    msrestazure
+    isodate
+    typing-extensions
   ];
 
   pythonNamespaces = [
     "azure.keyvault"
   ];
 
-  # has no tests
+  # Module has no tests
   doCheck = false;
 
   pythonImportsCheck = [
@@ -41,7 +45,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Microsoft Azure Key Vault Certificates Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/keyvault/azure-keyvault-certificates";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/blob/azure-keyvault-certificates_${version}/sdk/keyvault/azure-keyvault-certificates/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/azure-keyvault-secrets/default.nix b/nixpkgs/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
index ddb5d440b0b3..56004efa76b6 100644
--- a/nixpkgs/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/azure-keyvault-secrets/default.nix
@@ -1,41 +1,46 @@
 { lib
+, azure-core
 , buildPythonPackage
 , fetchPypi
+, isodate
 , pythonOlder
-, azure-common
-, azure-core
-, msrest
+, setuptools
+, typing-extensions
 }:
 
 buildPythonPackage rec {
   pname = "azure-keyvault-secrets";
-  version = "4.7.0";
-  format = "setuptools";
+  version = "4.8.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    extension = "zip";
-    hash = "sha256-d+4lNLplGh8wbIXXtQW8PM7o/qd0UOuvr8Jq7BblRF0=";
+    hash = "sha256-VjbAodiiDjxXmcs8z/1Ovz8NGst8rpUmhhgzr4sP6BQ=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
-    azure-common
     azure-core
-    msrest
+    isodate
+    typing-extensions
   ];
 
   pythonNamespaces = [
     "azure.keyvault"
   ];
 
-  # requires checkout from mono-repo
+  # Tests require checkout from mono-repo
   doCheck = false;
 
   meta = with lib; {
     description = "Microsoft Azure Key Vault Secrets Client Library for Python";
-    homepage = "https://github.com/Azure/azure-sdk-for-python";
+    homepage = "https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/keyvault/azure-keyvault-secrets";
+    changelog = "https://github.com/Azure/azure-sdk-for-python/tree/azure-keyvault-secrets_${version}/sdk/keyvault/azure-keyvault-secrets";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix b/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
index f3fda2ef3c8b..14e04b17f604 100644
--- a/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boschshcpy/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "boschshcpy";
-  version = "0.2.90";
+  version = "0.2.91";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     owner = "tschamm";
     repo = "boschshcpy";
     rev = "refs/tags/${version}";
-    hash = "sha256-qI8fpQJ7fyZ6CX010cyPuoFj9UQM+jHOJ201GCjIwBU=";
+    hash = "sha256-lQDYJrla2iDk1MbLHjBGP3ZcZ1djD3bWhz15RaBFMgg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix b/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
index 0cd99fd4abbe..371497c895fb 100644
--- a/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boto3-stubs/default.nix
@@ -365,14 +365,14 @@
 
 buildPythonPackage rec {
   pname = "boto3-stubs";
-  version = "1.34.49";
+  version = "1.34.52";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-l21X4VqWJUfeTnWo+2BRWYRpK3IQdDBbiK5Nelav4eU=";
+    hash = "sha256-gjxBBZ+DbWh32qocvSD4E8jxp4uf3ykLwLhTEn4Se6M=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/boto3/default.nix b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
index 3a48019b2e99..f1ab0c4f28e3 100644
--- a/nixpkgs/pkgs/development/python-modules/boto3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/boto3/default.nix
@@ -1,27 +1,27 @@
 { lib
+, botocore
 , buildPythonPackage
-, pythonOlder
 , fetchFromGitHub
-, botocore
 , jmespath
-, s3transfer
+, pytestCheckHook
+, pythonOlder
 , pythonRelaxDepsHook
+, s3transfer
 , setuptools
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "boto3";
-  version = "1.34.21"; # N.B: if you change this, change botocore and awscli to a matching version
-  format = "pyproject";
+  version = "1.34.49"; # N.B: if you change this, change botocore and awscli to a matching version
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "boto";
-    repo = pname;
+    repo = "boto3";
     rev = "refs/tags/${version}";
-    hash = "sha256-oOrUVBh1sbaOibU8A+bGZ4z7IEiE4gjHwZ+8889Hv60=";
+    hash = "sha256-/pgbLSL5RJ5RrKUAfQ1QNJykBdICrpqnuziHOVHt1JI=";
   };
 
   nativeBuildInputs = [
@@ -54,14 +54,16 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    crt = [ botocore.optional-dependencies.crt ];
+    crt = [
+      botocore.optional-dependencies.crt
+    ];
   };
 
   meta = with lib; {
+    description = "AWS SDK for Python";
     homepage = "https://github.com/boto/boto3";
     changelog = "https://github.com/boto/boto3/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    description = "AWS SDK for Python";
     longDescription = ''
       Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for
       Python, which allows Python developers to write software that makes use of
diff --git a/nixpkgs/pkgs/development/python-modules/botocore-stubs/default.nix b/nixpkgs/pkgs/development/python-modules/botocore-stubs/default.nix
index 0ee4bac8de62..808deb064ad8 100644
--- a/nixpkgs/pkgs/development/python-modules/botocore-stubs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/botocore-stubs/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "botocore-stubs";
-  version = "1.34.49";
+  version = "1.34.52";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "botocore_stubs";
     inherit version;
-    hash = "sha256-St5+p0mKRFMiherfKD7Z3SvW540n/9VjKBj4pUgDs2w=";
+    hash = "sha256-pRtsofyprNqp6AQS83FTaQ//rX7SJ3Q8xTCAmSDSoAk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/botocore/default.nix b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
index bc1454b70ff1..89b6dbe07821 100644
--- a/nixpkgs/pkgs/development/python-modules/botocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/botocore/default.nix
@@ -1,36 +1,47 @@
 { lib
+, awscrt
 , buildPythonPackage
-, pythonOlder
 , fetchPypi
-, python-dateutil
 , jmespath
-, urllib3
-, pytestCheckHook
 , jsonschema
-, awscrt
+, pytestCheckHook
+, python-dateutil
+, pythonOlder
+, pythonRelaxDepsHook
+, setuptools
+, urllib3
 }:
 
 buildPythonPackage rec {
   pname = "botocore";
-  version = "1.34.21"; # N.B: if you change this, change boto3 and awscli to a matching version
-  format = "setuptools";
+  version = "1.34.49"; # N.B: if you change this, change boto3 and awscli to a matching version
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IZg7sEc6GRMBksUOxpdNVfDEqkinCUvPQPeILItpuPE=";
+    hash = "sha256-2JQQvGBnPq/xaZ8/H9yw46Xh96agSMDYjDzlw1SUM+w=";
   };
 
+  pythonRelaxDeps = [
+    "urllib3"
+  ];
+
+  nativeBuildInputs = [
+    pythonRelaxDepsHook
+    setuptools
+  ];
+
   propagatedBuildInputs = [
-    python-dateutil
     jmespath
+    python-dateutil
     urllib3
   ];
 
   nativeCheckInputs = [
-    pytestCheckHook
     jsonschema
+    pytestCheckHook
   ];
 
   disabledTestPaths = [
@@ -46,14 +57,16 @@ buildPythonPackage rec {
   ];
 
   passthru.optional-dependencies = {
-    crt = [ awscrt ];
+    crt = [
+      awscrt
+    ];
   };
 
   meta = with lib; {
+    description = "A low-level interface to a growing number of Amazon Web Services";
     homepage = "https://github.com/boto/botocore";
     changelog = "https://github.com/boto/botocore/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
-    description = "A low-level interface to a growing number of Amazon Web Services";
     maintainers = with maintainers; [ anthonyroussel ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix b/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix
index e327e135c48c..677b4a990362 100644
--- a/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/bottleneck/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "bottleneck";
-  version = "1.3.7";
+  version = "1.3.8";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "Bottleneck";
     inherit version;
-    hash = "sha256-4UZ+NzrUado0DtD/KDIU1lMcwIv9yiCDNho6pkcGgfg=";
+    hash = "sha256-Z4DYlpabp/U8iZW6kMh8VIvrPbQ13JDGC5oQ7Rq02Gg=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
index 99a128b0496b..c40d0b8d4ee5 100644
--- a/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cachecontrol/default.nix
@@ -14,27 +14,20 @@
 
 buildPythonPackage rec {
   pname = "cachecontrol";
-  version = "0.13.1";
-  format = "pyproject";
+  version = "0.14.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.6";
+  disabled = pythonOlder "3.7";
 
   __darwinAllowLocalNetworking = true;
 
   src = fetchFromGitHub {
     owner = "ionrock";
-    repo = pname;
+    repo = "cachecontrol";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4N+vk65WxOrT+IJRn+lEnbs5vlWQh9ievVHWWe3BKJ0=";
+    hash = "sha256-myyqiUGna+5S2GJGnwZTOfLh49NhjfHAvpUB49dQbgY=";
   };
 
-  postPatch = ''
-    # https://github.com/ionrock/cachecontrol/issues/297
-    substituteInPlace tests/test_etag.py --replace \
-      "requests.adapters.HTTPResponse.from_httplib" \
-      "urllib3.response.HTTPResponse.from_httplib"
-  '';
-
   nativeBuildInputs = [
     flit-core
   ];
@@ -69,6 +62,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/ionrock/cachecontrol";
     changelog = "https://github.com/psf/cachecontrol/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ dotlambda ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/cachier/default.nix b/nixpkgs/pkgs/development/python-modules/cachier/default.nix
index 0cfc20b73397..931279b5a9ac 100644
--- a/nixpkgs/pkgs/development/python-modules/cachier/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cachier/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "cachier";
-  version = "2.3.0";
+  version = "3.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,8 +24,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "python-cachier";
     repo = "cachier";
-    rev = "v${version}";
-    hash = "sha256-pgDv0ApFgaNR0amqJNwkTSPlqczOClk9D1uVzZW1B7g=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-3rKsgcJQ9RQwosVruD7H99msB8iGtAai320okrCZCTI=";
   };
 
   pythonRemoveDeps = [ "setuptools" ];
diff --git a/nixpkgs/pkgs/development/python-modules/cbor2/default.nix b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
index 5523d4f5e0a2..2db51887e21f 100644
--- a/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cbor2/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "cbor2";
-  version = "5.5.1";
+  version = "5.6.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-+eGS9GGp+PYILfKMA1sAbRU5BCE9yGQL7Ypy1yu8lHU=";
+    hash = "sha256-t1E8LeqIaJkfrX74iZiQ68+LGZubRGHDwR160670gg0=";
   };
 
   postPatch = ''
@@ -44,12 +44,6 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # https://github.com/agronholm/cbor2/issues/99
-  disabledTests = lib.optionals stdenv.is32bit [
-    "test_huge_truncated_bytes"
-    "test_huge_truncated_string"
-  ];
-
   meta = with lib; {
     changelog = "https://github.com/agronholm/cbor2/releases/tag/${version}";
     description = "Python CBOR (de)serializer with extensive tag support";
diff --git a/nixpkgs/pkgs/development/python-modules/chainstream/default.nix b/nixpkgs/pkgs/development/python-modules/chainstream/default.nix
new file mode 100644
index 000000000000..00c10a22e9ee
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chainstream/default.nix
@@ -0,0 +1,26 @@
+{ lib, fetchPypi, python3Packages }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "chainstream";
+  version = "1.0.1";
+
+  pyproject = true;
+
+  nativeBuildInputs = [ python3Packages.setuptools ];
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-302P1BixEmkODm+qTLZwaWLktrlf9cEziQ/TIVfI07c=";
+  };
+
+  pythonImportsCheck = [
+    "chainstream"
+  ];
+
+  meta = with lib; {
+    description = "Chain I/O streams together into a single stream";
+    homepage = "https://github.com/rrthomas/chainstream";
+    license = licenses.cc-by-sa-40;
+    maintainers = with maintainers; [ cbley ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/cheetah3/default.nix b/nixpkgs/pkgs/development/python-modules/cheetah3/default.nix
index b85870572a4c..bb1a3da46cf5 100644
--- a/nixpkgs/pkgs/development/python-modules/cheetah3/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cheetah3/default.nix
@@ -6,7 +6,7 @@
 
 buildPythonPackage rec {
   pname = "cheetah3";
-  version = "3.3.3";
+  version = "3.3.3.post1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "CheetahTemplate3";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-7L3SBMgNOOLAFvQST8I0gFlrya/6Lwp/umzolfJx3t4=";
+    hash = "sha256-0NVKie/6Fp8T1O1fvrVorycybLrEXMY1yXZBDyxjpbE=";
   };
 
   doCheck = false; # Circular dependency
diff --git a/nixpkgs/pkgs/development/python-modules/chroma-hnswlib/default.nix b/nixpkgs/pkgs/development/python-modules/chroma-hnswlib/default.nix
new file mode 100644
index 000000000000..31f884e53ba8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chroma-hnswlib/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, numpy
+, pybind11
+, setuptools
+, wheel
+, pythonOlder
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "chroma-hnswlib";
+  version = "0.7.3";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "chroma-core";
+    repo = "hnswlib";
+    rev = "refs/tags/${version}";
+    hash = "sha256-c4FvymqZy8AZKbh6Y8xZRjKAqYcUyZABRGc1u7vwlsk=";
+  };
+
+  nativeBuildInputs = [
+    numpy
+    pybind11
+    setuptools
+    wheel
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "hnswlib"
+  ];
+
+  meta = with lib; {
+    description = "Header-only C++/python library for fast approximate nearest neighbors";
+    homepage = "https://github.com/chroma-core/hnswlib";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/chromadb/default.nix b/nixpkgs/pkgs/development/python-modules/chromadb/default.nix
new file mode 100644
index 000000000000..0cc5484332df
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/chromadb/default.nix
@@ -0,0 +1,160 @@
+{ lib
+, stdenv
+, bcrypt
+, build
+, buildPythonPackage
+, cargo
+, chroma-hnswlib
+, darwin
+, fastapi
+, fetchFromGitHub
+, grpcio
+, hypothesis
+, importlib-resources
+, kubernetes
+, mmh3
+, numpy
+, onnxruntime
+, openssl
+, opentelemetry-api
+, opentelemetry-exporter-otlp-proto-grpc
+, opentelemetry-instrumentation-fastapi
+, opentelemetry-sdk
+, orjson
+, overrides
+, pkg-config
+, posthog
+, protobuf
+, pulsar-client
+, pydantic
+, pypika
+, pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
+, pyyaml
+, requests
+, rustc
+, rustPlatform
+, setuptools
+, setuptools-scm
+, tenacity
+, tokenizers
+, tqdm
+, typer
+, typing-extensions
+, uvicorn
+, zstd
+}:
+
+buildPythonPackage rec {
+  pname = "chromadb";
+  version = "0.4.23";
+  pyproject = true;
+
+  disabled = pythonOlder "3.9";
+
+  src = fetchFromGitHub {
+    owner = "chroma-core";
+    repo = "chroma";
+    rev = "refs/tags/${version}";
+    hash = "sha256-5gI+FE2jx4G/qahATLcYsONfPZZkk1RFFYK5nrpE0Ug=";
+  };
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-glItbT8gg5SAySnfx3A9TaPyFmd1R46JpAB1JnjBE5M=";
+  };
+
+  pythonRelaxDeps = [
+    "orjson"
+  ];
+
+  nativeBuildInputs = [
+    cargo
+    pkg-config
+    protobuf
+    pythonRelaxDepsHook
+    rustc
+    rustPlatform.cargoSetupHook
+    setuptools
+    setuptools-scm
+  ];
+
+  buildInputs = [
+    openssl
+    zstd
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.Security
+  ];
+
+  propagatedBuildInputs = [
+    bcrypt
+    build
+    chroma-hnswlib
+    fastapi
+    grpcio
+    importlib-resources
+    kubernetes
+    mmh3
+    numpy
+    onnxruntime
+    opentelemetry-api
+    opentelemetry-exporter-otlp-proto-grpc
+    opentelemetry-instrumentation-fastapi
+    opentelemetry-sdk
+    orjson
+    overrides
+    posthog
+    pulsar-client
+    pydantic
+    pypika
+    pyyaml
+    requests
+    tenacity
+    tokenizers
+    tqdm
+    typer
+    typing-extensions
+    uvicorn
+  ];
+
+  nativeCheckInputs = [
+    hypothesis
+    pytest-asyncio
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "chromadb"
+  ];
+
+  env = {
+    ZSTD_SYS_USE_PKG_CONFIG = true;
+  };
+
+  pytestFlagsArray = [ "-x" ];
+
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
+  disabledTestPaths = [
+    # Tests require network access
+    "chromadb/test/property/test_cross_version_persist.py"
+    "chromadb/test/auth/test_simple_rbac_authz.py"
+    "chromadb/test/ef/test_default_ef.py"
+    "chromadb/test/test_api.py"
+    "chromadb/test/property/"
+    "chromadb/test/stress/"
+  ];
+
+  meta = with lib; {
+    description = "The AI-native open-source embedding database";
+    homepage = "https://github.com/chroma-core/chroma";
+    changelog = "https://github.com/chroma-core/chroma/releases/tag/${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/clarabel/Cargo.lock b/nixpkgs/pkgs/development/python-modules/clarabel/Cargo.lock
deleted file mode 100644
index ffc1908e7b75..000000000000
--- a/nixpkgs/pkgs/development/python-modules/clarabel/Cargo.lock
+++ /dev/null
@@ -1,1487 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "accelerate-src"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "415ed64958754dbe991900f3940677e6a7eefb4d7367afd70d642677b0c7d19d"
-
-[[package]]
-name = "addr2line"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "amd"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a679e001575697a3bd195813feb57a4718ecc08dc194944015cbc5f6213c2b96"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.79"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
-
-[[package]]
-name = "autocfg"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-
-[[package]]
-name = "backtrace"
-version = "0.3.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
-dependencies = [
- "addr2line",
- "cc",
- "cfg-if 1.0.0",
- "libc",
- "miniz_oxide",
- "object",
- "rustc-demangle",
-]
-
-[[package]]
-name = "base64"
-version = "0.21.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
-
-[[package]]
-name = "bitflags"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-
-[[package]]
-name = "bitflags"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
-
-[[package]]
-name = "blas"
-version = "0.22.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae980f75c3215bfe8203c349b28149b0f4130a262e072913ccb55f877cd239dc"
-dependencies = [
- "blas-sys",
- "libc",
- "num-complex",
-]
-
-[[package]]
-name = "blas-src"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa443ee19b4cde6cdbd49043eb8964f9dd367b6d98d67f04395958ebfa28f39d"
-dependencies = [
- "accelerate-src",
- "intel-mkl-src",
- "netlib-src",
- "openblas-src",
- "r-src",
-]
-
-[[package]]
-name = "blas-sys"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13b1b279ceb25d7c4faaea95a5f7addbe7d8c34f9462044bd8e630cebcfc2440"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "cc"
-version = "1.0.83"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
-dependencies = [
- "jobserver",
- "libc",
-]
-
-[[package]]
-name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "clarabel"
-version = "0.6.0"
-dependencies = [
- "amd",
- "blas",
- "blas-src",
- "cfg-if 1.0.0",
- "derive_builder",
- "enum_dispatch",
- "itertools 0.11.0",
- "lapack",
- "lapack-src",
- "lazy_static",
- "libc",
- "num-derive",
- "num-traits",
- "pyo3",
- "serde",
- "serde_json",
- "thiserror",
-]
-
-[[package]]
-name = "cmake"
-version = "0.1.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
-
-[[package]]
-name = "crc32fast"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
-dependencies = [
- "cfg-if 1.0.0",
-]
-
-[[package]]
-name = "curl"
-version = "0.4.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "509bd11746c7ac09ebd19f0b17782eae80aadee26237658a6b4808afb5c11a22"
-dependencies = [
- "curl-sys",
- "libc",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "socket2",
- "winapi",
-]
-
-[[package]]
-name = "curl-sys"
-version = "0.4.70+curl-8.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c0333d8849afe78a4c8102a429a446bfdd055832af071945520e835ae2d841e"
-dependencies = [
- "cc",
- "libc",
- "libz-sys",
- "openssl-sys",
- "pkg-config",
- "vcpkg",
- "windows-sys 0.48.0",
-]
-
-[[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 1.0.76",
- "quote 1.0.35",
- "strsim",
- "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 1.0.35",
- "syn 1.0.109",
-]
-
-[[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 1.0.76",
- "quote 1.0.35",
- "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 = "dirs"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13aea89a5c93364a98e9b37b2fa237effbb694d5cfe01c5b70941f7eb087d5e3"
-dependencies = [
- "cfg-if 0.1.10",
- "dirs-sys",
-]
-
-[[package]]
-name = "dirs"
-version = "3.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309"
-dependencies = [
- "dirs-sys",
-]
-
-[[package]]
-name = "dirs-sys"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
-dependencies = [
- "libc",
- "redox_users",
- "winapi",
-]
-
-[[package]]
-name = "either"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-
-[[package]]
-name = "enum_dispatch"
-version = "0.3.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e"
-dependencies = [
- "once_cell",
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 2.0.48",
-]
-
-[[package]]
-name = "errno"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
-dependencies = [
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "failure"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86"
-dependencies = [
- "backtrace",
- "failure_derive",
-]
-
-[[package]]
-name = "failure_derive"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 1.0.109",
- "synstructure",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
-
-[[package]]
-name = "filetime"
-version = "0.2.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
-dependencies = [
- "cfg-if 1.0.0",
- "libc",
- "redox_syscall",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "flate2"
-version = "1.0.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
-dependencies = [
- "crc32fast",
- "miniz_oxide",
-]
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[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 = "getrandom"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
-dependencies = [
- "cfg-if 1.0.0",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "gimli"
-version = "0.28.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
-
-[[package]]
-name = "glob"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-
-[[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 = "indoc"
-version = "1.0.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
-
-[[package]]
-name = "intel-mkl-src"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7260b33a735eaebcb942800728b38c5760b125ea5e4346290d78397b5422b894"
-dependencies = [
- "intel-mkl-tool",
-]
-
-[[package]]
-name = "intel-mkl-tool"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ada23f955fb7d06cb5db9424863caa7251f8f9b525f4c4816144465f77cfded7"
-dependencies = [
- "curl",
- "dirs 2.0.2",
- "failure",
- "glob",
- "log",
- "pkg-config",
- "tar",
- "zstd",
-]
-
-[[package]]
-name = "itertools"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
-
-[[package]]
-name = "jobserver"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "lapack"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad676a6b4df7e76a9fd80a0c50c619a3948d6105b62a0ab135f064d99c51d207"
-dependencies = [
- "lapack-sys",
- "libc",
- "num-complex",
-]
-
-[[package]]
-name = "lapack-src"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24c81fcc728418323178fd40407619d0ed26dbbbd1a553693c6290ef5d6698c6"
-dependencies = [
- "accelerate-src",
- "intel-mkl-src",
- "netlib-src",
- "openblas-src",
- "r-src",
-]
-
-[[package]]
-name = "lapack-sys"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "447f56c85fb410a7a3d36701b2153c1018b1d2b908c5fbaf01c1b04fac33bcbe"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "libc"
-version = "0.2.152"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7"
-
-[[package]]
-name = "libredox"
-version = "0.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
-dependencies = [
- "bitflags 2.4.1",
- "libc",
- "redox_syscall",
-]
-
-[[package]]
-name = "libz-sys"
-version = "1.1.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "295c17e837573c8c821dbaeb3cceb3d745ad082f7572191409e69cbc1b3fd050"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
-
-[[package]]
-name = "lock_api"
-version = "0.4.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
-dependencies = [
- "autocfg",
- "scopeguard",
-]
-
-[[package]]
-name = "log"
-version = "0.4.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
-
-[[package]]
-name = "memchr"
-version = "2.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
-
-[[package]]
-name = "memoffset"
-version = "0.6.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e"
-dependencies = [
- "lazy_static",
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
-name = "netlib-src"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39f41f36bb4d46906d5a72da5b73a804d9de1a7282eb7c89617201acda7b8212"
-dependencies = [
- "cmake",
-]
-
-[[package]]
-name = "num-complex"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "num-derive"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eafd0b45c5537c3ba526f79d3e75120036502bebacbb3f3220914067ce39dbf2"
-dependencies = [
- "proc-macro2 0.4.30",
- "quote 0.6.13",
- "syn 0.15.44",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "object"
-version = "0.32.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
-
-[[package]]
-name = "openblas-build"
-version = "0.10.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eba42c395477605f400a8d79ee0b756cfb82abe3eb5618e35fa70d3a36010a7f"
-dependencies = [
- "anyhow",
- "flate2",
- "native-tls",
- "tar",
- "thiserror",
- "ureq",
- "walkdir",
-]
-
-[[package]]
-name = "openblas-src"
-version = "0.10.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38e5d8af0b707ac2fe1574daa88b4157da73b0de3dc7c39fe3e2c0bb64070501"
-dependencies = [
- "dirs 3.0.2",
- "openblas-build",
- "vcpkg",
-]
-
-[[package]]
-name = "openssl"
-version = "0.10.62"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cde4d2d9200ad5909f8dac647e29482e07c3a35de8a13fce7c9c7747ad9f671"
-dependencies = [
- "bitflags 2.4.1",
- "cfg-if 1.0.0",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 2.0.48",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.98"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1665caf8ab2dc9aef43d1c0023bd904633a6a05cb30b0ad59bec2ae986e57a7"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
-dependencies = [
- "cfg-if 1.0.0",
- "libc",
- "redox_syscall",
- "smallvec",
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a"
-
-[[package]]
-name = "proc-macro2"
-version = "0.4.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
-dependencies = [
- "unicode-xid 0.1.0",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.76"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "pyo3"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "268be0c73583c183f2b14052337465768c07726936a260f480f0857cb95ba543"
-dependencies = [
- "cfg-if 1.0.0",
- "indoc",
- "libc",
- "memoffset",
- "parking_lot",
- "pyo3-build-config",
- "pyo3-ffi",
- "pyo3-macros",
- "unindent",
-]
-
-[[package]]
-name = "pyo3-build-config"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28fcd1e73f06ec85bf3280c48c67e731d8290ad3d730f8be9dc07946923005c8"
-dependencies = [
- "once_cell",
- "target-lexicon",
-]
-
-[[package]]
-name = "pyo3-ffi"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f6cb136e222e49115b3c51c32792886defbfb0adead26a688142b346a0b9ffc"
-dependencies = [
- "libc",
- "pyo3-build-config",
-]
-
-[[package]]
-name = "pyo3-macros"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94144a1266e236b1c932682136dc35a9dee8d3589728f68130c7c3861ef96b28"
-dependencies = [
- "proc-macro2 1.0.76",
- "pyo3-macros-backend",
- "quote 1.0.35",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "pyo3-macros-backend"
-version = "0.17.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8df9be978a2d2f0cdebabb03206ed73b11314701a5bfe71b0d753b81997777f"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "quote"
-version = "0.6.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
-dependencies = [
- "proc-macro2 0.4.30",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
-dependencies = [
- "proc-macro2 1.0.76",
-]
-
-[[package]]
-name = "r-src"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea397956e1043a8d947ea84b13971d9cb30fce65ca66a921081755ff2e899b6a"
-
-[[package]]
-name = "redox_syscall"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
-dependencies = [
- "getrandom",
- "libredox",
- "thiserror",
-]
-
-[[package]]
-name = "rustc-demangle"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
-
-[[package]]
-name = "rustix"
-version = "0.38.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca"
-dependencies = [
- "bitflags 2.4.1",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustls-native-certs"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00"
-dependencies = [
- "openssl-probe",
- "rustls-pemfile",
- "schannel",
- "security-framework",
-]
-
-[[package]]
-name = "rustls-pemfile"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
-dependencies = [
- "base64",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
-[[package]]
-name = "schannel"
-version = "0.1.23"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534"
-dependencies = [
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "scopeguard"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-[[package]]
-name = "security-framework"
-version = "2.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.195"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.195"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 2.0.48",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.111"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
-
-[[package]]
-name = "socket2"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "strsim"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
-
-[[package]]
-name = "syn"
-version = "0.15.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
-dependencies = [
- "proc-macro2 0.4.30",
- "quote 0.6.13",
- "unicode-xid 0.1.0",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.109"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "unicode-ident",
-]
-
-[[package]]
-name = "syn"
-version = "2.0.48"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "unicode-ident",
-]
-
-[[package]]
-name = "synstructure"
-version = "0.12.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 1.0.109",
- "unicode-xid 0.2.4",
-]
-
-[[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 = "target-lexicon"
-version = "0.12.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
-
-[[package]]
-name = "tempfile"
-version = "3.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
-dependencies = [
- "cfg-if 1.0.0",
- "fastrand",
- "redox_syscall",
- "rustix",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.56"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.56"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
-dependencies = [
- "proc-macro2 1.0.76",
- "quote 1.0.35",
- "syn 2.0.48",
-]
-
-[[package]]
-name = "tinyvec"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
-
-[[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.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
-dependencies = [
- "tinyvec",
-]
-
-[[package]]
-name = "unicode-xid"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
-
-[[package]]
-name = "unindent"
-version = "0.1.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
-
-[[package]]
-name = "ureq"
-version = "2.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8cdd25c339e200129fe4de81451814e5228c9b771d57378817d6117cc2b3f97"
-dependencies = [
- "base64",
- "flate2",
- "log",
- "native-tls",
- "once_cell",
- "rustls-native-certs",
- "url",
-]
-
-[[package]]
-name = "url"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
-]
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "walkdir"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
-[[package]]
-name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets 0.48.5",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.0",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm 0.48.5",
- "windows_aarch64_msvc 0.48.5",
- "windows_i686_gnu 0.48.5",
- "windows_i686_msvc 0.48.5",
- "windows_x86_64_gnu 0.48.5",
- "windows_x86_64_gnullvm 0.48.5",
- "windows_x86_64_msvc 0.48.5",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.0",
- "windows_aarch64_msvc 0.52.0",
- "windows_i686_gnu 0.52.0",
- "windows_i686_msvc 0.52.0",
- "windows_x86_64_gnu 0.52.0",
- "windows_x86_64_gnullvm 0.52.0",
- "windows_x86_64_msvc 0.52.0",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
-
-[[package]]
-name = "xattr"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "914566e6413e7fa959cc394fb30e563ba80f3541fbd40816d4c05a0fc3f2a0f1"
-dependencies = [
- "libc",
- "linux-raw-sys",
- "rustix",
-]
-
-[[package]]
-name = "zstd"
-version = "0.5.4+zstd.1.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910"
-dependencies = [
- "zstd-safe",
-]
-
-[[package]]
-name = "zstd-safe"
-version = "2.0.6+zstd.1.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e"
-dependencies = [
- "libc",
- "zstd-sys",
-]
-
-[[package]]
-name = "zstd-sys"
-version = "1.4.18+zstd.1.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81"
-dependencies = [
- "cc",
- "glob",
- "itertools 0.9.0",
- "libc",
-]
diff --git a/nixpkgs/pkgs/development/python-modules/clarabel/default.nix b/nixpkgs/pkgs/development/python-modules/clarabel/default.nix
index 46cdc7c57611..c3e925323c71 100644
--- a/nixpkgs/pkgs/development/python-modules/clarabel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clarabel/default.nix
@@ -1,33 +1,30 @@
 { lib
 , stdenv
 , buildPythonPackage
-, fetchFromGitHub
+, fetchPypi
 , rustPlatform
 , libiconv
 , numpy
 , scipy
+, nix-update-script
 }:
 
 buildPythonPackage rec {
   pname = "clarabel";
-  version = "0.6.0.post1";
+  version = "0.7.0";
   pyproject = true;
 
-  src = fetchFromGitHub {
-    owner = "oxfordcontrol";
-    repo  = "Clarabel.rs";
-    rev = "refs/tags/v${version}";
-    hash = "sha256-5Mw+3WRMuz3BxLWRdsnXHjetsNrM3EZRZld8lVTNKgo=";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-udpW9SKAaoR/Ps4I9fIfq3UG7sMUiyJEYZDeUgbdHm8=";
   };
 
-  cargoDeps = rustPlatform.importCargoLock {
-    lockFile = ./Cargo.lock;
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    inherit src;
+    name = "${pname}-${version}";
+    hash = "sha256-R/o12m2UqKte4H1pvW9DN0YPDhgNIxt0mXrfBDMzcwM=";
   };
 
-  postPatch = ''
-    ln -s ${./Cargo.lock} ./Cargo.lock
-  '';
-
   nativeBuildInputs = with rustPlatform; [
     cargoSetupHook
     maturinBuildHook
@@ -52,6 +49,8 @@ buildPythonPackage rec {
     runHook postCheck
   '';
 
+  passthru.updateScript = nix-update-script { };
+
   meta = {
     changelog = "https://github.com/oxfordcontrol/Clarabel.rs/releases/tag/v${version}/CHANGELOG.md";
     description = "Conic Interior Point Solver";
diff --git a/nixpkgs/pkgs/development/python-modules/clarifai/default.nix b/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
index 2564b168cfe7..05a86d09ee77 100644
--- a/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clarifai/default.nix
@@ -1,23 +1,29 @@
 { lib
 , buildPythonPackage
-, fetchFromGitHub
-, pythonOlder
-, setuptools
 , clarifai-grpc
+, fetchFromGitHub
+, inquirerpy
+, llama-index-core
 , numpy
 , opencv4
+, pandas
 , pillow
+, pycocotools
+, pypdf
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
 , pyyaml
 , rich
 , schema
+, setuptools
 , tqdm
 , tritonclient
-, pytestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "clarifai";
-  version = "9.11.1";
+  version = "10.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -26,36 +32,59 @@ buildPythonPackage rec {
     owner = "Clarifai";
     repo = "clarifai-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-fVari/SnrUnEbrYefV9j2yA/EMJoGiLOV7q/DrS0AQ8=";
+    hash = "sha256-/2PIsSsYr/R7DuTX/ndBAOX7C3IaFqPw16ZAX8E1Vk8=";
   };
 
+  pythonRelaxDeps = [
+    "clarifai-grpc"
+  ];
+
+  pythonRemoveDeps = [
+    "opencv-python"
+  ];
+
   nativeBuildInputs = [
+    pythonRelaxDepsHook
     setuptools
   ];
 
   propagatedBuildInputs = [
     clarifai-grpc
+    inquirerpy
+    llama-index-core
     numpy
-    tqdm
     opencv4
-    tritonclient
-    rich
-    schema
+    pandas
     pillow
+    pypdf
     pyyaml
+    rich
+    schema
+    tqdm
+    tritonclient
   ];
 
+  passthru.optional-dependencies = {
+    all = [
+      pycocotools
+    ];
+  };
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
 
+  preCheck = ''
+    export HOME=$(mktemp -d)
+  '';
+
   disabledTests = [
-    # require network access and API key
+    # Test requires network access and API key
     "test_export_workflow_general"
   ];
 
   disabledTestPaths = [
-    # require network access and API key
+    # Tests require network access and API key
     "tests/test_app.py"
     "tests/test_data_upload.py"
     "tests/test_model_predict.py"
@@ -63,14 +92,18 @@ buildPythonPackage rec {
     "tests/test_search.py"
     "tests/workflow/test_create_delete.py"
     "tests/workflow/test_predict.py"
+    "tests/test_rag.py"
+    "clarifai/models/model_serving/repo_build/static_files/base_test.py"
   ];
 
-  pythonImportsCheck = [ "clarifai" ];
+  pythonImportsCheck = [
+    "clarifai"
+  ];
 
   meta = with lib; {
     description = "Clarifai Python Utilities";
     homepage = "https://github.com/Clarifai/clarifai-python";
-    changelog = "https://github.com/Clarifai/clarifai-python/releases/tag/${src.rev}";
+    changelog = "https://github.com/Clarifai/clarifai-python/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ natsukium ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
index faf20403e62b..409f2c004c2c 100644
--- a/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cli-helpers/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "cli-helpers";
-  version = "2.3.0";
+  version = "2.3.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "cli_helpers";
     inherit version;
-    hash = "sha256-5xdNADorWP0+Mac/u8RdWqUT3mLL1C1Df3i5ZYvV+Wc=";
+    hash = "sha256-uCqJg87uIfGA5v0N23yo2uQ8QOkglR44F/mWqyBNrmo=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/clickhouse-connect/default.nix b/nixpkgs/pkgs/development/python-modules/clickhouse-connect/default.nix
index b44188ffcc71..b51949f73a13 100644
--- a/nixpkgs/pkgs/development/python-modules/clickhouse-connect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/clickhouse-connect/default.nix
@@ -23,7 +23,7 @@
 }:
 buildPythonPackage rec {
   pname = "clickhouse-connect";
-  version = "0.7.0";
+  version = "0.7.1";
 
   format = "setuptools";
 
@@ -33,7 +33,7 @@ buildPythonPackage rec {
     repo = "clickhouse-connect";
     owner = "ClickHouse";
     rev = "refs/tags/v${version}";
-    hash = "sha256-RpuBKdjjSjJJ9UU7VW20gD9Rouj0oxv72sZZaUa/BfY=";
+    hash = "sha256-Qdv0DcdIjqz8NtyMsVNQxGTxsB3TpXUGDA3oL8QbBDc=";
   };
 
   nativeBuildInputs = [ cython_3 ];
diff --git a/nixpkgs/pkgs/development/python-modules/cloudpathlib/default.nix b/nixpkgs/pkgs/development/python-modules/cloudpathlib/default.nix
index b76de3717bf4..89f5ef6fbf5c 100644
--- a/nixpkgs/pkgs/development/python-modules/cloudpathlib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cloudpathlib/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "cloudpathlib";
-  version = "0.17.0";
+  version = "0.18.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "drivendataorg";
     repo = "cloudpathlib";
     rev = "refs/tags/v${version}";
-    hash = "sha256-rj8v4EUMPdB5zmbP4VQli2H6GjDor3BHaA95GwoKS5E=";
+    hash = "sha256-RrdRUqQ3QyMUpTi1FEsSXK6WS37r77SdPBH1oVVvSw0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix b/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
index 0bc6b500fbca..efc930341be2 100644
--- a/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cloudsmith-api/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "cloudsmith-api";
-  version = "2.0.9";
+  version = "2.0.10";
   format = "wheel";
 
   disabled = pythonOlder "3.7";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "cloudsmith_api";
     inherit format version;
-    hash = "sha256-i/1Z4W/cwrrgo3h85OWfz2X3Y7Odz9mJdRuXokuky/Q=";
+    hash = "sha256-h193MX8W12dYQnUVG20iWiSnnIFMdUc4amhJ7rGqb/4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/coffea/default.nix b/nixpkgs/pkgs/development/python-modules/coffea/default.nix
index 633b2d2c9847..3f5de521b0a8 100644
--- a/nixpkgs/pkgs/development/python-modules/coffea/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/coffea/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "coffea";
-  version = "2024.2.1";
+  version = "2024.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "CoffeaTeam";
     repo = "coffea";
     rev = "refs/tags/v${version}";
-    hash = "sha256-TQ0aC2iFPWh24ce1WoVRluPvnwvBscLtFl8/wcW/Clg=";
+    hash = "sha256-GdoVb9YtlUlrSx7TWWrdHOqOJJ4M+kJspOllv6HgFXk=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/cohere/default.nix b/nixpkgs/pkgs/development/python-modules/cohere/default.nix
index d6140a3f6d2c..86b7e7b1b739 100644
--- a/nixpkgs/pkgs/development/python-modules/cohere/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cohere/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "cohere";
-  version = "4.47";
+  version = "4.51";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-1okhIHnBpUW9SXsUPP96pWMoMfps9Bv3rMk7Sm7/uDk=";
+    hash = "sha256-AfsJLqkDjdT7Ng77NQb60kUe0jHLZ3TjJLmTyTdKVQo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/cssbeautifier/default.nix b/nixpkgs/pkgs/development/python-modules/cssbeautifier/default.nix
index 3144c5114fc2..02f1de52af7e 100644
--- a/nixpkgs/pkgs/development/python-modules/cssbeautifier/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/cssbeautifier/default.nix
@@ -1,34 +1,46 @@
 { lib
 , buildPythonPackage
+, editorconfig
 , fetchPypi
-, setuptools
 , jsbeautifier
+, pythonOlder
+, setuptools
+, six
 }:
 
 buildPythonPackage rec {
   pname = "cssbeautifier";
-  version = "1.14.11";
-  format = "pyproject";
+  version = "1.15.1";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-QFRMK2K7y2TKpefzegLflWVOXOG8rK2sTKHz3InDFRM=";
+    hash = "sha256-n3BkNirt1VnFXu7Pa2vtZeBfM0iNy+OQRPBAPCbhwAY=";
   };
 
   nativeBuildInputs = [
     setuptools
   ];
 
-  propagatedBuildInputs = [ jsbeautifier ];
+  propagatedBuildInputs = [
+    editorconfig
+    jsbeautifier
+    six
+  ];
 
-  # has no tests
+  # Module has no tests
   doCheck = false;
 
-  pythonImportsCheck = [ "cssbeautifier" ];
+  pythonImportsCheck = [
+    "cssbeautifier"
+  ];
 
   meta = with lib; {
     description = "CSS unobfuscator and beautifier";
-    homepage = "https://pypi.org/project/cssbeautifier/";
+    homepage = "https://github.com/beautifier/js-beautify";
+    changelog = "https://github.com/beautifier/js-beautify/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ traxys ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/databricks-sql-connector/default.nix b/nixpkgs/pkgs/development/python-modules/databricks-sql-connector/default.nix
index b0bd083085f3..1533055f3c89 100644
--- a/nixpkgs/pkgs/development/python-modules/databricks-sql-connector/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/databricks-sql-connector/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "databricks-sql-connector";
-  version = "3.0.2";
+  version = "3.0.3";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "databricks";
     repo = "databricks-sql-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Uvy5/a9YFdPKpZ3B+Yvrvp7uZCY/My45w1lDqX7zJvI=";
+    hash = "sha256-pwSDDkBcyaT5+qA/W8v5loi0yXK8R0ugASmbalwYw70=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix b/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
index e114d678b145..806444d411b1 100644
--- a/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbt-core/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-core";
-  version = "1.7.8";
+  version = "1.7.9";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-core";
     rev = "refs/tags/v${version}";
-    hash = "sha256-EpKZiSDU5fivG3TIarirPgxRGQ3Sf1hwNvCKdQx25c0=";
+    hash = "sha256-ff+cdY6xy14w30BDn1ct/2Q+4j8cQupJrJHb4vO58J0=";
   };
 
   sourceRoot = "${src.name}/core";
diff --git a/nixpkgs/pkgs/development/python-modules/dbt-redshift/default.nix b/nixpkgs/pkgs/development/python-modules/dbt-redshift/default.nix
index 1ab2143953b7..41906a936264 100644
--- a/nixpkgs/pkgs/development/python-modules/dbt-redshift/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbt-redshift/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "dbt-redshift";
-  version = "1.7.3";
+  version = "1.7.4";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "dbt-labs";
     repo = "dbt-redshift";
     rev = "refs/tags/v${version}";
-    hash = "sha256-3zj3wA1wxUjKSm1n7QE2g/VUuH3UuWlXCC68mOb2eso=";
+    hash = "sha256-Ny6Nnb5OhtqSQZ0BMOQrb0ic6i29GVywy3hn3UuVtxE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix b/nixpkgs/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
index f569f24757a2..a51cb07f099c 100644
--- a/nixpkgs/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dbt-semantic-interfaces/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "dbt-semantic-interfaces";
-  version = "0.4.3";
+  version = "0.4.4";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "dbt-labs";
     repo = "dbt-semantic-interfaces";
     rev = "refs/tags/v${version}";
-    hash = "sha256-mYAOAi0Qb89zp4o7vRdR7fw7vrlXt1TFVqGR09QcRSA=";
+    hash = "sha256-uvwcnOKjwxEmA+/QRGSRofpoE4jZzmE02mGSDLINrJw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix b/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
index 8a96602dcc83..ef114da4ca02 100644
--- a/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/deebot-client/default.nix
@@ -20,7 +20,7 @@
 
 buildPythonPackage rec {
   pname = "deebot-client";
-  version = "5.2.2";
+  version = "6.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -29,7 +29,7 @@ buildPythonPackage rec {
     owner = "DeebotUniverse";
     repo = "client.py";
     rev = "refs/tags/${version}";
-    hash = "sha256-ybZ8f3tqhj0SPbwjtgTB45y4Tx/lIyNZ5vShYsbIrfU=";
+    hash = "sha256-PjM2bh79o4bBv3zQyFYehhdlvXKFW8Hk0ZKfZDAuiQU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dirtyjson/default.nix b/nixpkgs/pkgs/development/python-modules/dirtyjson/default.nix
new file mode 100644
index 000000000000..7cd4fce0e650
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/dirtyjson/default.nix
@@ -0,0 +1,39 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, pytestCheckHook
+, pythonOlder
+, setuptools
+}:
+
+buildPythonPackage rec {
+  pname = "dirtyjson";
+  version = "1.0.8";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-kMpKGPP/MM6EnRANz0oAOVPHnTojSO8Fbx2cIiMaJf0=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "dirtyjson"
+  ];
+
+  meta = with lib; {
+    description = "JSON decoder for Python that can extract data from the muck";
+    homepage = "https://github.com/codecobblers/dirtyjson";
+    license = with licenses; [ afl21 /* and */ mit];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix b/nixpkgs/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
index d8bb73ccdef8..d1a66ed8f704 100644
--- a/nixpkgs/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/django-crispy-bootstrap4/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "django-crispy-bootstrap4";
-  version = "2023.1";
+  version = "2024.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "django-crispy-forms";
     repo = "crispy-bootstrap4";
     rev = "refs/tags/${version}";
-    hash = "sha256-4p6dlyQYZGyfBntTuzCjikL8ZG/4xDnTiQ1rCVt0Hbk=";
+    hash = "sha256-upHrNDhoY+8qD+aeXPcY452xUIyYjW0apf8mVo6pqY4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/dnf-plugins-core/default.nix b/nixpkgs/pkgs/development/python-modules/dnf-plugins-core/default.nix
index 5ba20ff94565..81404145e8b8 100644
--- a/nixpkgs/pkgs/development/python-modules/dnf-plugins-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/dnf-plugins-core/default.nix
@@ -22,7 +22,7 @@ in
 
 buildPythonPackage rec {
   pname = "dnf-plugins-core";
-  version = "4.4.4";
+  version = "4.5.0";
   format = "other";
 
   outputs = [ "out" "man" ];
@@ -30,8 +30,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "rpm-software-management";
     repo = "dnf-plugins-core";
-    rev = version;
-    hash = "sha256-SGgUozOAU6h87SguXh+13CxV4GnVhdN3SpwKfDPh2GY=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-og20X2AUzoOphwF+508EobGEp/VYLtxWY7N4k327o8o=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix b/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
index 2c3289c0f393..ba0945ad15af 100644
--- a/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/docstr-coverage/default.nix
@@ -8,7 +8,7 @@
 , pytest-mock
 }:
 let
-  version = "2.3.0";
+  version = "2.3.1";
 in
 buildPythonPackage {
   pname = "docstr-coverage";
@@ -17,8 +17,8 @@ buildPythonPackage {
   src = fetchFromGitHub {
     owner = "HunterMcGushion";
     repo = "docstr_coverage";
-    rev = "v${version}";
-    hash = "sha256-eYHhE5zs3hYzK3aAimF0Gx/Kyk1Ot1F/lKf1poR2er0=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-QmQE6KZ2NdXKQun+uletxYPktWvfkrj6NPAVl/mmpAY=";
   };
 
   propagatedBuildInputs = [ click pyyaml tqdm ];
diff --git a/nixpkgs/pkgs/development/python-modules/duckdb-engine/default.nix b/nixpkgs/pkgs/development/python-modules/duckdb-engine/default.nix
index ab82edb0893b..efdc1d10ace3 100644
--- a/nixpkgs/pkgs/development/python-modules/duckdb-engine/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duckdb-engine/default.nix
@@ -14,8 +14,8 @@
 
 buildPythonPackage rec {
   pname = "duckdb-engine";
-  version = "0.9.2";
-  format = "pyproject";
+  version = "0.11.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     repo = "duckdb_engine";
     owner = "Mause";
     rev = "refs/tags/v${version}";
-    hash = "sha256-T02nGF+YlughRQPinb0I3NC6xsarh4+qRhG8YfhTvhI=";
+    hash = "sha256-GMtQtcKEn2mdryl1KMYnYYeGpdbowP3o4dStwuL8AcU=";
   };
 
   patches = [ ./remote_data.patch ];
diff --git a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
index a7cd1aa36dd4..fd197f9305d6 100644
--- a/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/duckdb/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , buildPythonPackage
 , duckdb
 , fsspec
@@ -13,25 +14,24 @@
 }:
 
 buildPythonPackage rec {
-  inherit (duckdb) pname version src;
-  format = "setuptools";
-
-  # 1. let nix control build cores
-  # 2. default to extension autoload & autoinstall disabled
-  # 3. unconstrain setuptools_scm version
-  patches = (duckdb.patches or []) ++ [ ./setup.patch ];
+  inherit (duckdb) patches pname src version;
+  pyproject = true;
 
   postPatch = (duckdb.postPatch or "") + ''
     # we can't use sourceRoot otherwise patches don't apply, because the patches apply to the C++ library
     cd tools/pythonpkg
 
-    substituteInPlace setup.py --subst-var NIX_BUILD_CORES
-
-    # avoid dependency on mypy
-    rm tests/stubs/test_stubs.py
+    # 1. let nix control build cores
+    # 2. default to extension autoload & autoinstall disabled
+    substituteInPlace setup.py \
+      --replace-fail "ParallelCompile()" 'ParallelCompile("NIX_BUILD_CORES")' \
+      --replace-fail "define_macros.extend([('DUCKDB_EXTENSION_AUTOLOAD_DEFAULT', '1'), ('DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT', '1')])" ""
   '';
 
-  BUILD_HTTPFS = 1;
+  env = {
+    BUILD_HTTPFS = 1;
+    DUCKDB_BUILD_UNITY = 1;
+  };
 
   nativeBuildInputs = [
     pybind11
@@ -52,21 +52,35 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # test flags from .github/workflows/Python.yml
+  pytestFlagsArray = [
+    "--verbose"
+  ] ++ lib.optionals stdenv.isDarwin [
+    "tests/fast"
+  ];
+
+  disabledTestPaths = [
+    # avoid dependency on mypy
+    "tests/stubs/test_stubs.py"
+  ];
+
   disabledTests = [
     # tries to make http request
     "test_install_non_existent_extension"
-    # test is racy and interrupt can be delivered before or after target point
+
+    # https://github.com/duckdb/duckdb/issues/10702
+    # tests are racy and interrupt can be delivered before or after target point
+    # causing a later test to fail with a spurious KeyboardInterrupt
     "test_connection_interrupt"
+    "test_query_interruption"
   ];
 
+  # remove duckdb dir to prevent import confusion by pytest
   preCheck = ''
     export HOME="$(mktemp -d)"
+    rm -rf duckdb
   '';
 
-  setupPyBuildFlags = [
-    "--inplace"
-  ];
-
   pythonImportsCheck = [
     "duckdb"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/duckdb/setup.patch b/nixpkgs/pkgs/development/python-modules/duckdb/setup.patch
deleted file mode 100644
index 8c8f790a66a1..000000000000
--- a/nixpkgs/pkgs/development/python-modules/duckdb/setup.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff --git a/tools/pythonpkg/setup.py b/tools/pythonpkg/setup.py
-index 30f1e1ccdd..6784169fcb 100644
---- a/tools/pythonpkg/setup.py
-+++ b/tools/pythonpkg/setup.py
-@@ -96,7 +96,7 @@ def parallel_cpp_compile(
-             return
-         self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
- 
--    list(multiprocessing.pool.ThreadPool(multiprocessing.cpu_count()).imap(_single_compile, objects))
-+    list(multiprocessing.pool.ThreadPool(@NIX_BUILD_CORES@).imap(_single_compile, objects))
-     return objects
- 
- 
-@@ -163,7 +163,6 @@ if 'BUILD_HTTPFS' in os.environ:
- for ext in extensions:
-     toolchain_args.extend(['-DDUCKDB_EXTENSION_{}_LINKED'.format(ext.upper())])
- 
--toolchain_args.extend(['-DDUCKDB_EXTENSION_AUTOLOAD_DEFAULT=1', '-DDUCKDB_EXTENSION_AUTOINSTALL_DEFAULT=1'])
- 
- 
- class get_pybind_include(object):
-@@ -348,7 +347,7 @@ setup(
-     packages=packages,
-     include_package_data=True,
-     python_requires='>=3.7.0',
--    setup_requires=setup_requires + ["setuptools_scm<7.0.0", 'pybind11>=2.6.0'],
-+    setup_requires=setup_requires + ["setuptools_scm", 'pybind11>=2.6.0'],
-     use_scm_version=setuptools_scm_conf,
-     tests_require=['google-cloud-storage', 'mypy', 'pytest'],
-     classifiers=[
diff --git a/nixpkgs/pkgs/development/python-modules/e3-core/default.nix b/nixpkgs/pkgs/development/python-modules/e3-core/default.nix
index 95759b6a096c..ef0b31b177ab 100644
--- a/nixpkgs/pkgs/development/python-modules/e3-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/e3-core/default.nix
@@ -1,4 +1,5 @@
-{ buildPythonPackage
+{ autoPatchelfHook
+, buildPythonPackage
 , colorama
 , coverage
 , distro
@@ -6,12 +7,14 @@
 , httpretty
 , lib
 , mock
+, packaging
 , psutil
 , pytest
 , pytest-socket
 , python-dateutil
 , pyyaml
 , requests
+, requests-cache
 , requests-toolbelt
 , stdenv
 , setuptools
@@ -24,26 +27,40 @@
 
 buildPythonPackage rec {
   pname = "e3-core";
-  version = "22.3.1";
+  version = "22.4.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "AdaCore";
     repo = "e3-core";
     rev = "v${version}";
-    hash = "sha256-4StHOJldfeqApdF6D14Euzg9HvZ2e7G4/OQ0UrEbEIw=";
+    hash = "sha256-dgEk2/qRfAYwUz+e5TWKUy/aPLpmyWZ32OV1i7QM9Fs=";
   };
 
-  patches = [ ./0001-use-distro-over-ld.patch ];
+  patches = [
+    ./0001-use-distro-over-ld.patch
+  ];
 
-  nativeBuildInputs = [ setuptools ];
+  nativeBuildInputs = [
+    autoPatchelfHook
+    setuptools
+  ];
 
   propagatedBuildInputs = [
-    colorama pyyaml python-dateutil requests requests-toolbelt tqdm stevedore
+    colorama
+    packaging
+    pyyaml
+    python-dateutil
+    requests
+    requests-cache
+    requests-toolbelt
+    tqdm
+    stevedore
   ] ++ lib.optional stdenv.isLinux [
     # See setup.py:24. These are required only on Linux. Darwin has its own set
     # of requirements.
-    psutil distro
+    psutil
+    distro
   ];
 
   pythonImportsCheck = [ "e3" ];
diff --git a/nixpkgs/pkgs/development/python-modules/e3-testsuite/default.nix b/nixpkgs/pkgs/development/python-modules/e3-testsuite/default.nix
new file mode 100644
index 000000000000..6c13bbb5a08e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/e3-testsuite/default.nix
@@ -0,0 +1,39 @@
+{ buildPythonPackage
+, e3-core
+, fetchFromGitHub
+, lib
+, setuptools
+, stdenv
+}:
+
+buildPythonPackage rec {
+  pname = "e3-testsuite";
+  version = "26.0";
+  pyproject = true;
+
+  src = fetchFromGitHub {
+    owner = "AdaCore";
+    repo = "e3-testsuite";
+    rev = "v${version}";
+    hash = "sha256-V20tX0zi2DRHO42udUcW/CDMyBxh1uSTgac0zZGubsI=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    e3-core
+  ];
+
+  pythonImportsCheck = [ "e3" ];
+
+  meta = with lib; {
+    changelog = "https://github.com/AdaCore/e3-testsuite/releases/tag/${src.rev}";
+    homepage = "https://github.com/AdaCore/e3-testsuite/";
+    description = "Generic testsuite framework in Python";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ heijligen ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/eigenpy/default.nix b/nixpkgs/pkgs/development/python-modules/eigenpy/default.nix
index d3edf6748300..e3ec6adf2f72 100644
--- a/nixpkgs/pkgs/development/python-modules/eigenpy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/eigenpy/default.nix
@@ -2,27 +2,36 @@
 , stdenv
 , fetchFromGitHub
 , cmake
+, doxygen
 , boost
 , eigen
 , numpy
+, scipy
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "eigenpy";
-  version = "3.3.0";
+  version = "3.4.0";
 
   src = fetchFromGitHub {
     owner = "stack-of-tasks";
     repo = finalAttrs.pname;
     rev = "v${finalAttrs.version}";
     fetchSubmodules = true;
-    hash = "sha256-INOg1oL5APMI2YZDe4yOJadhMsG7b+NfEcSr9FsdqeU=";
+    hash = "sha256-/k5eltoeUW05FTjvStAOw+tguWLUaUced8TArrk4UDI=";
   };
 
+  cmakeFlags = [
+    "-DINSTALL_DOCUMENTATION=ON"
+    "-DBUILD_TESTING_SCIPY=ON"
+  ];
+
   strictDeps = true;
 
   nativeBuildInputs = [
     cmake
+    doxygen
+    scipy
   ];
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix b/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix
index 9105fbd40612..1ceeecafb638 100644
--- a/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/fastparquet/default.nix
@@ -20,35 +20,35 @@
 
 buildPythonPackage rec {
   pname = "fastparquet";
-  version = "2023.7.0";
-  format = "pyproject";
+  version = "2024.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "dask";
-    repo = pname;
-    rev = version;
-    hash = "sha256-pJ0zK0upEV7TyuNMIcozugkwBlYpK/Dg6BdB0kBpn9k=";
+    repo = "fastparquet";
+    rev = "refs/tags/${version}";
+    hash = "sha256-e0gnC/HMYdrYdEwy6qNOD1J52xgN2x81oCG03YNsYjg=";
   };
 
-  nativeBuildInputs = [
-    cython
-    oldest-supported-numpy
-    setuptools
-    setuptools-scm
-    wheel
-  ];
-
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace '"pytest-runner"' ""
+      --replace-fail '"pytest-runner"' ""
 
     sed -i \
       -e "/pytest-runner/d" \
       -e '/"git", "status"/d' setup.py
   '';
 
+  nativeBuildInputs = [
+    cython
+    oldest-supported-numpy
+    setuptools
+    setuptools-scm
+    wheel
+  ];
+
   propagatedBuildInputs = [
     cramjam
     fsspec
@@ -85,7 +85,7 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "A python implementation of the parquet format";
+    description = "Implementation of the parquet format";
     homepage = "https://github.com/dask/fastparquet";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ veprbl ];
diff --git a/nixpkgs/pkgs/development/python-modules/flask-seasurf/0001-Fix-with-new-dependency-versions.patch b/nixpkgs/pkgs/development/python-modules/flask-seasurf/0001-Fix-with-new-dependency-versions.patch
index c12c85e0de25..2506a10268b2 100644
--- a/nixpkgs/pkgs/development/python-modules/flask-seasurf/0001-Fix-with-new-dependency-versions.patch
+++ b/nixpkgs/pkgs/development/python-modules/flask-seasurf/0001-Fix-with-new-dependency-versions.patch
@@ -1,17 +1,17 @@
-From 001549503eed364d4baaa5804242f67c6236f6c2 Mon Sep 17 00:00:00 2001
+From d3aed2c18cc3a1c88a8052af1f34d7f81f1be11a Mon Sep 17 00:00:00 2001
 From: Flakebi <flakebi@t-online.de>
-Date: Sat, 2 Dec 2023 16:55:05 +0100
+Date: Wed, 28 Feb 2024 23:24:14 +0100
 Subject: [PATCH] Fix with new dependency versions
 
 - cookie_jar is private in werkzeug 2.3, so recreate the client instead
 - set_cookie does not take a hostname argument anymore, use domain instead
 - Headers need to specify a content type
 ---
- test_seasurf.py | 63 ++++++++++++++++++++++++-------------------------
- 1 file changed, 31 insertions(+), 32 deletions(-)
+ test_seasurf.py | 71 ++++++++++++++++++++++++-------------------------
+ 1 file changed, 35 insertions(+), 36 deletions(-)
 
 diff --git a/test_seasurf.py b/test_seasurf.py
-index 517b2d7..501f82d 100644
+index 517b2d7..f940b91 100644
 --- a/test_seasurf.py
 +++ b/test_seasurf.py
 @@ -71,18 +71,18 @@ class SeaSurfTestCase(BaseTestCase):
@@ -37,6 +37,15 @@ index 517b2d7..501f82d 100644
          self.assertIn(b('403 Forbidden'), rv.data)
  
      def test_json_token_validation_bad(self):
+@@ -93,7 +93,7 @@ class SeaSurfTestCase(BaseTestCase):
+         with self.app.test_client() as client:
+             with client.session_transaction() as sess:
+                 sess[self.csrf._csrf_name] = tokenA
+-                client.set_cookie('www.example.com', self.csrf._csrf_name, tokenB)
++                client.set_cookie(self.csrf._csrf_name, tokenB, domain='www.example.com')
+ 
+             rv = client.post('/bar', data=data)
+             self.assertEqual(rv.status_code, 403, rv)
 @@ -107,7 +107,7 @@ class SeaSurfTestCase(BaseTestCase):
          data = {'_csrf_token': token}
          with self.app.test_client() as client:
@@ -55,7 +64,7 @@ index 517b2d7..501f82d 100644
                  sess[self.csrf._csrf_name] = token
  
              # once this is reached the session was stored
-@@ -144,7 +144,7 @@ class SeaSurfTestCase(BaseTestCase):
+@@ -144,18 +144,18 @@ class SeaSurfTestCase(BaseTestCase):
              with client.session_transaction() as sess:
                  token = self.csrf._generate_token()
  
@@ -64,6 +73,19 @@ index 517b2d7..501f82d 100644
                  sess[self.csrf._csrf_name] = token
  
              # once this is reached the session was stored
+-            rv = client.post('/bar',
++            rv = client.post('/bar', content_type='application/json',
+                 data={self.csrf._csrf_name: token},
+                 base_url='https://www.example.com',
+                 headers={'Referer': 'https://www.example.com/foobar'})
+ 
+             self.assertEqual(rv.status_code, 200)
+ 
+-            rv = client.post(u'/bar/\xf8',
++            rv = client.post(u'/bar/\xf8', content_type='application/json',
+                 data={self.csrf._csrf_name: token},
+                 base_url='https://www.example.com',
+                 headers={'Referer': 'https://www.example.com/foobar\xf8'})
 @@ -167,7 +167,7 @@ class SeaSurfTestCase(BaseTestCase):
              with client.session_transaction() as sess:
                  token = self.csrf._generate_token()
@@ -252,6 +274,15 @@ index 517b2d7..501f82d 100644
              self.assertEqual(res2.status_code, 200)
  
      def test_header_set_cookie_samesite(self):
+@@ -789,7 +788,7 @@ class SeaSurfTestCaseGenerateNewToken(BaseTestCase):
+             client.get('/foo')
+             tokenA = self.csrf._get_token()
+ 
+-            client.set_cookie('www.example.com', self.csrf._csrf_name, tokenA)
++            client.set_cookie(self.csrf._csrf_name, tokenA, domain='www.example.com')
+             with client.session_transaction() as sess:
+                 sess[self.csrf._csrf_name] = tokenA
+ 
 -- 
-2.42.0
+2.43.0
 
diff --git a/nixpkgs/pkgs/development/python-modules/flax/default.nix b/nixpkgs/pkgs/development/python-modules/flax/default.nix
index fa0f053f86de..b906ba9d4322 100644
--- a/nixpkgs/pkgs/development/python-modules/flax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/flax/default.nix
@@ -1,24 +1,26 @@
 { lib
 , buildPythonPackage
+, cloudpickle
+, einops
 , fetchFromGitHub
-, jaxlib
-, pythonRelaxDepsHook
-, setuptools-scm
 , jax
+, jaxlib
+, keras
+, matplotlib
 , msgpack
 , numpy
 , optax
+, orbax-checkpoint
+, pytest-xdist
+, pytestCheckHook
+, pythonOlder
+, pythonRelaxDepsHook
 , pyyaml
 , rich
+, setuptools-scm
+, tensorflow
 , tensorstore
 , typing-extensions
-, matplotlib
-, cloudpickle
-, einops
-, keras
-, pytest-xdist
-, pytestCheckHook
-, tensorflow
 }:
 
 buildPythonPackage rec {
@@ -26,6 +28,8 @@ buildPythonPackage rec {
   version = "0.7.5";
   pyproject = true;
 
+  disabled = pythonOlder "3.8";
+
   src = fetchFromGitHub {
     owner = "google";
     repo = "flax";
@@ -44,6 +48,7 @@ buildPythonPackage rec {
     msgpack
     numpy
     optax
+    orbax-checkpoint
     pyyaml
     rich
     tensorstore
@@ -75,7 +80,6 @@ buildPythonPackage rec {
   disabledTestPaths = [
     # Docs test, needs extra deps + we're not interested in it.
     "docs/_ext/codediff_test.py"
-
     # The tests in `examples` are not designed to be executed from a single test
     # session and thus either have the modules that conflict with each other or
     # wrong import paths, depending on how they're invoked. Many tests also have
@@ -83,12 +87,15 @@ buildPythonPackage rec {
     # `tensorflow_datasets`, `vocabulary`) so the benefits of trying to run them
     # would be limited anyway.
     "examples/*"
-
     # See https://github.com/google/flax/issues/3232.
     "tests/jax_utils_test.py"
+    # Requires tree
+    "tests/tensorboard_test.py"
+  ];
 
-    # Requires orbax which is not packaged as of 2023-07-27.
-    "tests/checkpoints_test.py"
+  disabledTests = [
+    # ValueError: Checkpoint path should be absolute
+    "test_overwrite_checkpoints0"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/floret/cstdint.patch b/nixpkgs/pkgs/development/python-modules/floret/cstdint.patch
new file mode 100644
index 000000000000..f30f557cb701
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/floret/cstdint.patch
@@ -0,0 +1,12 @@
+diff --git a/src/args.cc b/src/args.cc
+index a8975e81624c..99854c919341 100644
+--- a/src/args.cc
++++ b/src/args.cc
+@@ -10,6 +10,7 @@
+ 
+ #include <stdlib.h>
+ 
++#include <cstdint>
+ #include <iostream>
+ #include <stdexcept>
+ #include <string>
diff --git a/nixpkgs/pkgs/development/python-modules/floret/default.nix b/nixpkgs/pkgs/development/python-modules/floret/default.nix
index 72248cf8dbaa..6ca020ac81df 100644
--- a/nixpkgs/pkgs/development/python-modules/floret/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/floret/default.nix
@@ -23,6 +23,8 @@ buildPythonPackage rec {
     hash = "sha256-7vkw6H0ZQoHEwNusY6QWh/vPbSCdP1ZaaqABHsZH6hQ=";
   };
 
+  patches = [./cstdint.patch ];
+
   nativeBuildInputs = [
     pybind11
     setuptools
diff --git a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
index bb4eb7ca664e..7920c53b8f57 100644
--- a/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/geoalchemy2/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "geoalchemy2";
-  version = "0.14.4";
+  version = "0.14.6";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "geoalchemy";
     repo = "geoalchemy2";
     rev = "refs/tags/${version}";
-    hash = "sha256-zMd/hHobFBPre0bZA1e2S9gPWnIkeImZhSySlIDxYsg=";
+    hash = "sha256-s3+w6LtewjR725O8ENl7jRer979fRZDqsnbAYJOWcIY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
index 71075ad7f60d..7bf3e64e7b14 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-artifact-registry/default.nix
@@ -1,27 +1,38 @@
 { buildPythonPackage
 , fetchPypi
 , google-api-core
+, google-auth
 , grpc-google-iam-v1
 , lib
+, proto-plus
+, protobuf
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-artifact-registry";
-  version = "1.11.1";
-  format = "setuptools";
+  version = "1.11.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-EjwBVYq7V39ab/VQEmysfiuwEbMkjCXq5o+jM31NrwI=";
+    hash = "sha256-5ASS7Lt6F7dWBhc82bW+0FBSDCePax2YF5hr+BAGabs=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     google-api-core
+    google-auth
     grpc-google-iam-v1
+    proto-plus
+    protobuf
   ] ++ google-api-core.optional-dependencies.grpc;
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
index 50346213b253..c256ea54ae49 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-bigquery-datatransfer/default.nix
@@ -14,14 +14,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-bigquery-datatransfer";
-  version = "3.14.1";
+  version = "3.15.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-v9gBSb9TYvaqF1/g7dJshSkJ2RlCAWXGdf7yPlne0I4=";
+    hash = "sha256-/LBhPJorIQvyiInfNy7PJcVyOvH217FErtwiC2XTZvQ=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-compute/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-compute/default.nix
index ffe81f753aa7..535aa86cc8a5 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-compute/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-compute/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-compute";
-  version = "1.16.1";
+  version = "1.17.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-P/A08nd3ZP4GsySd3Q6TM+kuXRabcnnI1aFd+svMz5E=";
+    hash = "sha256-dPs7hSe0YcD3luNqHkF6T8fTHC4/u3HMJwsw6THWL44=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
index b481bff3f750..cacadba2180b 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-dataproc/default.nix
@@ -15,14 +15,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-dataproc";
-  version = "5.9.1";
+  version = "5.9.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-qDc6E6d6hIHgRBNDGUHaJ7ROP24xDUXK1rkXTX187g0=";
+    hash = "sha256-E1LjzE4UbbHwn6QodVkkjIs9nAz+zqVsJcP09j1Y5Pg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
index 32949b14c332..deab86952e76 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-kms/default.nix
@@ -9,20 +9,25 @@
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "google-cloud-kms";
-  version = "2.19.2";
-  format = "setuptools";
+  version = "2.21.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-F6UDRZLoXvADHSW75YlL2y1xlGCFWYC/62iqTo/8Er0=";
+    hash = "sha256-8GrZ38gBVE+6EYN4i5ZPawF0g6Zgkapoa1Gr0HSAbIQ=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     grpc-google-iam-v1
     google-api-core
@@ -36,9 +41,11 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
-  # Disable tests that need credentials
   disabledTests = [
+    # Disable tests that need credentials
     "test_list_global_key_rings"
+    # Tests require PROJECT_ID
+    "test_list_ekm_connections"
   ];
 
   pythonImportsCheck = [
@@ -48,8 +55,8 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Cloud Key Management Service (KMS) API API client library";
-    homepage = "https://github.com/googleapis/python-kms";
-    changelog = "https://github.com/googleapis/python-kms/blob/v${version}/CHANGELOG.md";
+    homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-kms";
+    changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-kms-v${version}/packages/google-cloud-kms/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
index 8d0d27a77f69..ec901eb34a4f 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-pubsub/default.nix
@@ -17,14 +17,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-pubsub";
-  version = "2.19.6";
+  version = "2.19.7";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Tq5LyYRj29rq11l/dmb/4U/GKqvtEOPjIslcsFD6fb4=";
+    hash = "sha256-2l8eshfAcnvvp8hbm5XmqJsytCLVSMnPmh4ClBAnC4c=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix b/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
index 32304fad221f..679d8631aaee 100644
--- a/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/google-cloud-secret-manager/default.nix
@@ -13,14 +13,14 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-secret-manager";
-  version = "2.18.1";
+  version = "2.18.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-MQVV88jLl39KRtRFTsosg/7WoJ88SzW4T2+h+P71UCQ=";
+    hash = "sha256-oA1iEVpwCD6GsdRMp+vK4EGzakTMYupX3kAFcx+NPIg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/gradio/client.nix b/nixpkgs/pkgs/development/python-modules/gradio/client.nix
index 1d7223e6a248..8ad76a907581 100644
--- a/nixpkgs/pkgs/development/python-modules/gradio/client.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradio/client.nix
@@ -27,7 +27,7 @@
 
 buildPythonPackage rec {
   pname = "gradio-client";
-  version = "0.7.3";
+  version = "0.10.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -36,10 +36,9 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
     owner = "gradio-app";
     repo = "gradio";
-    #rev = "refs/tags/v${gradio.version}";
-    rev = "dc131b64f05062447643217819ca630e483a11df"; # v4.9.1 is not tagged...
+    rev = "refs/tags/gradio_client@${version}";
     sparseCheckout = [ "client/python" ];
-    hash = "sha256-Zp1Zl53Va0pyyZEHDUpnldi4dtH2uss7PZQD+Le8+cA=";
+    hash = "sha256-cRsYqNMmzuybJI823lpUOmNcTdcTO8dJkp3cpjATZQU=";
   };
   prePatch = ''
     cd client/python
diff --git a/nixpkgs/pkgs/development/python-modules/gradio/default.nix b/nixpkgs/pkgs/development/python-modules/gradio/default.nix
index bead2da9dfd7..c87c41631291 100644
--- a/nixpkgs/pkgs/development/python-modules/gradio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/gradio/default.nix
@@ -57,7 +57,7 @@
 
 buildPythonPackage rec {
   pname = "gradio";
-  version = "4.9.1";
+  version = "4.19.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
@@ -66,7 +66,7 @@ buildPythonPackage rec {
   # and upstream has stopped tagging releases since 3.41.0
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-KosxlmU5pYvuy5zysscuWM25IGXin7RLGEM9V2xPQrU=";
+    hash = "sha256-b+WBW7Tfru0fx0Ijv/2R2nChtGMVivjF4D0BuwkGih0=";
   };
 
   # fix packaging.ParserSyntaxError, which can't handle comments
@@ -81,6 +81,12 @@ buildPythonPackage rec {
     "tomlkit"
   ];
 
+  pythonRemoveDeps = [
+    # our package is presented as a binary, not a python lib - and
+    # this isn't a real runtime dependency
+    "ruff"
+  ];
+
   nativeBuildInputs = [
     pythonRelaxDepsHook
     hatchling
@@ -164,6 +170,9 @@ buildPythonPackage rec {
 
     # shap is too often broken in nixpkgs
     "test_shapley_text"
+
+    # fails without network
+    "test_download_if_url_correct_parse"
   ];
   disabledTestPaths = [
     # 100% touches network
@@ -193,7 +202,6 @@ buildPythonPackage rec {
       gradio-pdf = null;
     })).overridePythonAttrs (old: {
       pname = old.pname + "-sans-client";
-      nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ pythonRelaxDepsHook ];
       pythonRemoveDeps = (old.pythonRemoveDeps or []) ++ [ "gradio-client" ];
       doInstallCheck = false;
       doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/graphviz/default.nix b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
index 8f145c13e722..8a5286c65609 100644
--- a/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/graphviz/default.nix
@@ -5,7 +5,7 @@
 , fetchFromGitHub
 , fetchpatch
 , substituteAll
-, graphviz
+, graphviz-nox
 , xdg-utils
 , makeFontsConf
 , freefont_ttf
@@ -34,7 +34,7 @@ buildPythonPackage rec {
   patches = [
     (substituteAll {
       src = ./paths.patch;
-      inherit graphviz;
+      graphviz = graphviz-nox;
       xdgutils = xdg-utils;
     })
     # https://github.com/xflr6/graphviz/issues/209
diff --git a/nixpkgs/pkgs/development/python-modules/griffe/default.nix b/nixpkgs/pkgs/development/python-modules/griffe/default.nix
index d3e9ca2ae7f4..8f2884a5b6c6 100644
--- a/nixpkgs/pkgs/development/python-modules/griffe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/griffe/default.nix
@@ -12,16 +12,16 @@
 
 buildPythonPackage rec {
   pname = "griffe";
-  version = "0.40.1";
-  format = "pyproject";
+  version = "0.41.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "mkdocstrings";
-    repo = pname;
+    repo = "griffe";
     rev = "refs/tags/${version}";
-    hash = "sha256-DaLxGEwR2Z9IEkKbLkOy7Q3dvvmwTNBNMzYxNoeZMJE=";
+    hash = "sha256-or0kXc8YJl7+95gM54MaviDdErN0vqBnCtAavZM938k=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix b/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
index e37c6a680742..02e336c8bc1f 100644
--- a/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/habluetooth/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "habluetooth";
-  version = "2.4.0";
+  version = "2.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "Bluetooth-Devices";
     repo = "habluetooth";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bZtcvidjUhlb9ML1UIP00yqJ+KnJig5i0j/tAZSK7+Y=";
+    hash = "sha256-Ka8WqOYsZFvNl7uOsGR6S4entw7GTnF9MZcOB3uJMvg=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/holidays/default.nix b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
index 539caf7083d8..87069dcbbaa0 100644
--- a/nixpkgs/pkgs/development/python-modules/holidays/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/holidays/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "holidays";
-  version = "0.42";
+  version = "0.43";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "vacanza";
     repo = "python-holidays";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oVuzX/H5jj/c4dbPGmXUnZeDbgSd9v9qP2dXe6+PaUQ=";
+    hash = "sha256-8Qm8hzGVkaYLwqUcqUxcY4iDR1jrhnSoBS8E2Wewb+U=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix b/nixpkgs/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
index 44fb32e25c2d..6ffdda58a6ce 100644
--- a/nixpkgs/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/home-assistant-chip-clusters/default.nix
@@ -7,7 +7,7 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-clusters";
-  version = "2024.1.0";
+  version = "2024.2.1";
   format = "wheel";
 
   src = fetchPypi {
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     pname = "home_assistant_chip_clusters";
     dist = "py3";
     python = "py3";
-    hash = "sha256-4btkqAHbwAsyGV1LjngEoeTT5qyI8dtqFVTp0lIFwmg=";
+    hash = "sha256-QMsfs9gUWeaz1LfMZF5J2OFVCPnuckZvvF9x5bQ5uZY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/home-assistant-chip-core/default.nix b/nixpkgs/pkgs/development/python-modules/home-assistant-chip-core/default.nix
index a983bdd0a2cf..b3d5a232c10a 100644
--- a/nixpkgs/pkgs/development/python-modules/home-assistant-chip-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/home-assistant-chip-core/default.nix
@@ -10,7 +10,6 @@
 # runtime
 , glib
 , libnl
-, openssl_1_1
 
 # propagates
 , aenum
@@ -29,7 +28,7 @@
 
 buildPythonPackage rec {
   pname = "home-assistant-chip-core";
-  version = "2024.1.0";
+  version = "2024.2.1";
   format = "wheel";
 
   disabled = pythonOlder "3.7";
@@ -38,11 +37,11 @@ buildPythonPackage rec {
     system = {
       "aarch64-linux" = {
         name = "aarch64";
-        hash = "sha256-UiikZ2DVhTqX6WYfiE8sp2e52BMlyoQnDjLap/efmNc=";
+        hash = "sha256-gHnTuiyCD9A9Ru8xhniNEpCyn+W9zYnCAoTJeGOW7TI=";
       };
       "x86_64-linux" = {
         name = "x86_64";
-        hash = "sha256-/+gegUMd2n7MpJvdilS5VWefXc0tuRcLrXBBXSH35b0=";
+        hash = "sha256-gKZKcCXQ8PvZAPV2QRQl+u+r95CVLBDDDgtC0MT7xw4=";
       };
     }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
   in fetchPypi {
@@ -62,7 +61,6 @@ buildPythonPackage rec {
   buildInputs = [
     glib
     libnl
-    openssl_1_1
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix b/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
index 17ad769329c7..f57aa1a4cbb9 100644
--- a/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/huggingface-hub/default.nix
@@ -1,7 +1,8 @@
 { lib
-, fetchFromGitHub
 , buildPythonPackage
 , pythonOlder
+, fetchFromGitHub
+, setuptools
 , filelock
 , fsspec
 , packaging
@@ -13,8 +14,8 @@
 
 buildPythonPackage rec {
   pname = "huggingface-hub";
-  version = "0.20.3";
-  format = "setuptools";
+  version = "0.21.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -22,9 +23,13 @@ buildPythonPackage rec {
     owner = "huggingface";
     repo = "huggingface_hub";
     rev = "refs/tags/v${version}";
-    hash = "sha256-21Ay8RVS2vtQIh4bBUxE8jFk6F+yeFBJ3XgvRRNtNgI=";
+    hash = "sha256-0Nr6qs9rzuBQo8SGuQ2Ai2Q+E+Gs4DT/AMrYf7dYM/E=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     filelock
     fsspec
@@ -47,6 +52,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/huggingface/huggingface_hub";
     changelog = "https://github.com/huggingface/huggingface_hub/releases/tag/v${version}";
     license = licenses.asl20;
-    maintainers = with maintainers; [ kira-bruneau ];
+    maintainers = with maintainers; [ ];
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
index 8c2e49a6e4e5..c6d68d83dbff 100644
--- a/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ibis-framework/default.nix
@@ -17,7 +17,7 @@
 , geopandas
 , google-cloud-bigquery
 , google-cloud-bigquery-storage
-, graphviz-nox
+, graphviz
 , hypothesis
 , multipledispatch
 , numpy
@@ -25,15 +25,17 @@
 , packaging
 , pandas
 , parsy
+, pins
 , poetry-core
 , poetry-dynamic-versioning
 , polars
-, pooch
 , psycopg2
 , pyarrow
+, pyarrow-hotfix
 , pydata-google-auth
 , pydruid
 , pymysql
+, pyodbc
 , pyspark
 , pytest-benchmark
 , pytest-httpserver
@@ -63,7 +65,7 @@ let
     name = "ibis-testing-data";
     owner = "ibis-project";
     repo = "testing-data";
-    # https://github.com/ibis-project/ibis/blob/7.1.0/nix/overlay.nix#L20-L26
+    # https://github.com/ibis-project/ibis/blob/8.0.0/nix/overlay.nix#L20-L26
     rev = "2c6a4bb5d5d525058d8d5b2312a9fee5dafc5476";
     hash = "sha256-Lq503bqh9ESZJSk6yVq/uZwkAubzmSmoTBZSsqMm0DY=";
   };
@@ -71,8 +73,8 @@ in
 
 buildPythonPackage rec {
   pname = "ibis-framework";
-  version = "7.1.0";
-  format = "pyproject";
+  version = "8.0.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
@@ -81,7 +83,7 @@ buildPythonPackage rec {
     repo = "ibis";
     owner = "ibis-project";
     rev = "refs/tags/${version}";
-    hash = "sha256-E7jryoidw6+CjTIex4wcTXcU+8Kg8LDwg7wJvcwj+7Q=";
+    hash = "sha256-KcNZslqmSbu8uPYKpkyvd7d8Fsf0nQt80y0auXsI8fs=";
   };
 
   nativeBuildInputs = [
@@ -94,25 +96,24 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     atpublic
     bidict
-    filelock
     multipledispatch
     numpy
     pandas
     parsy
-    pooch
     pyarrow
+    pyarrow-hotfix
     python-dateutil
     pytz
     rich
     sqlglot
     toolz
     typing-extensions
-  ]
-  ++ pooch.optional-dependencies.progress
-  ++ pooch.optional-dependencies.xxhash;
+  ];
 
   nativeCheckInputs = [
     pytestCheckHook
+    black
+    filelock
     hypothesis
     pytest-benchmark
     pytest-httpserver
@@ -126,35 +127,28 @@ buildPythonPackage rec {
     "--dist=loadgroup"
     "-m"
     "'${lib.concatStringsSep " or " testBackends} or core'"
+  ];
+
+  disabledTests = [
     # breakage from sqlalchemy2 truediv changes
-    "--deselect=ibis/tests/sql/test_sqlalchemy.py::test_tpc_h17"
+    "test_tpc_h17"
     # tries to download duckdb extensions
-    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_register_sqlite"
-    "--deselect=ibis/backends/duckdb/tests/test_register.py::test_read_sqlite"
-
+    "test_register_sqlite"
+    "test_read_sqlite"
     # duckdb does not respect sample_size=2 (reads 3 lines of csv).
-    "--deselect=ibis/backends/tests/test_register.py::test_csv_reregister_schema"
-
+    "test_csv_reregister_schema"
     # duckdb fails with:
     # "This function can not be called with an active transaction!, commit or abort the existing one first"
-    "--deselect=ibis/backends/tests/test_udf.py::test_vectorized_udf"
-    "--deselect=ibis/backends/tests/test_udf.py::test_map_merge_udf"
-    "--deselect=ibis/backends/tests/test_udf.py::test_udf"
-    "--deselect=ibis/backends/tests/test_udf.py::test_map_udf"
-
-    # pyarrow13 is not supported yet.
-    "--deselect=ibis/backends/tests/test_temporal.py::test_date_truncate"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_interval_add_cast_column"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_temporal.py::test_integer_to_interval_timestamp"
-    "--deselect=ibis/backends/tests/test_timecontext.py::test_context_adjustment_filter_before_window"
-    "--deselect=ibis/backends/tests/test_timecontext.py::test_context_adjustment_window_udf"
-    "--deselect=ibis/backends/tests/test_timecontext.py::test_context_adjustment_window_udf"
-    "--deselect=ibis/backends/tests/test_aggregation.py::test_aggregate_grouped"
+    "test_vectorized_udf"
+    "test_s3_403_fallback"
+    "test_map_merge_udf"
+    "test_udf"
+    "test_map_udf"
+    # DataFusion error
+    "datafusion"
+    # pluggy.PluggyTeardownRaisedWarning
+    "test_repr_png_is_not_none_in_not_interactive"
+    "test_interval_arithmetic"
   ];
 
   # patch out tests that check formatting with black
@@ -162,7 +156,6 @@ buildPythonPackage rec {
     find ibis/tests -type f -name '*.py' -exec sed -i \
       -e '/^ *assert_decompile_roundtrip/d' \
       -e 's/^\( *\)code = ibis.decompile(expr, format=True)/\1code = ibis.decompile(expr)/g' {} +
-    substituteInPlace pyproject.toml --replace 'sqlglot = ">=10.4.3,<12"' 'sqlglot = "*"'
   '';
 
   preCheck = ''
@@ -188,20 +181,22 @@ buildPythonPackage rec {
       dask = [ dask regex ];
       datafusion = [ datafusion ];
       druid = [ pydruid sqlalchemy ];
-      duckdb = [ duckdb duckdb-engine packaging sqlalchemy sqlalchemy-views ];
+      duckdb = [ duckdb duckdb-engine sqlalchemy sqlalchemy-views ];
       flink = [ ];
       geospatial = [ geoalchemy2 geopandas shapely ];
+      mssql = [ sqlalchemy pyodbc sqlalchemy-views ];
       mysql = [ sqlalchemy pymysql sqlalchemy-views ];
       oracle = [ sqlalchemy oracledb packaging sqlalchemy-views ];
       pandas = [ regex ];
-      polars = [ polars ];
+      polars = [ polars packaging ];
       postgres = [ psycopg2 sqlalchemy sqlalchemy-views ];
-      pyspark = [ pyspark sqlalchemy ];
-      snowflake = [ snowflake-connector-python snowflake-sqlalchemy sqlalchemy-views ];
-      sqlite = [ regex sqlalchemy sqlite sqlalchemy-views ];
+      pyspark = [ pyspark sqlalchemy packaging ];
+      snowflake = [ snowflake-connector-python snowflake-sqlalchemy sqlalchemy-views packaging ];
+      sqlite = [ regex sqlalchemy sqlalchemy-views ];
       trino = [ trino-python-client sqlalchemy sqlalchemy-views ];
-      visualization = [ graphviz-nox ];
+      visualization = [ graphviz ];
       decompiler = [ black ];
+      examples = [ pins ] ++ pins.optional-dependencies.gcs;
     };
   };
 
diff --git a/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix b/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
index 5d27b9d490e1..46a5eb3e3691 100644
--- a/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ibm-cloud-sdk-core/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "ibm-cloud-sdk-core";
-  version = "3.19.1";
+  version = "3.19.2";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-oPDcQSWNWG9wauSVW7srXN85+UeF6Q0CRlaSyqh2W/Q=";
+    hash = "sha256-qodN9ALyAfzsrCAiPT3t02JJRCBqFCNVWlsQP+4d3do=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/indexed-bzip2/default.nix b/nixpkgs/pkgs/development/python-modules/indexed-bzip2/default.nix
index d6c82e3aec9a..b75a10b98222 100644
--- a/nixpkgs/pkgs/development/python-modules/indexed-bzip2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/indexed-bzip2/default.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "indexed_bzip2";
-  version = "1.5.0";
+  version = "1.6.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-tKf9odadfQZQYJz//vWYpeB99Z8VLg+hEPvfEHXgdnM=";
+    hash = "sha256-3HUiigZR91/nbOAMOuSHGcPtqkkEaj3VepyMhmKOHpI=";
   };
 
   # has no tests
diff --git a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
index 991dcb320314..94441890c7aa 100644
--- a/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/influxdb/default.nix
@@ -62,6 +62,8 @@ buildPythonPackage rec {
     # Pandas API changes cause it to no longer infer datetimes in the expected manner
     "test_multiquery_into_dataframe"
     "test_multiquery_into_dataframe_dropna"
+    # FutureWarning: 'H' is deprecated and will be removed in a future version, please use 'h' instead.
+    "test_write_points_from_dataframe_with_tag_escaped"
   ];
 
   pythonImportsCheck = [ "influxdb" ];
diff --git a/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix b/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
index 9ef6affb5119..809d9efcc7ca 100644
--- a/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/intake-parquet/default.nix
@@ -5,20 +5,34 @@
 , dask
 , fastparquet
 , pyarrow
+, setuptools
+, pythonOlder
 }:
 
 buildPythonPackage rec {
   pname = "intake-parquet";
   version = "0.3.0";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "intake";
-    repo = pname;
-    rev = version;
-    sha256 = "sha256-zSwylXBKOM/tG5mwYtc0FmxwcKJ6j+lw1bxJqf57NY8=";
+    repo = "intake-parquet";
+    rev = "refs/tags/${version}";
+    hash = "sha256-zSwylXBKOM/tG5mwYtc0FmxwcKJ6j+lw1bxJqf57NY8=";
   };
 
+  postPatch = ''
+    # Break circular dependency
+    substituteInPlace requirements.txt \
+      --replace-fail "intake" ""
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     pandas
     dask
@@ -26,12 +40,6 @@ buildPythonPackage rec {
     pyarrow
   ];
 
-  postPatch = ''
-    # Break circular dependency
-    substituteInPlace requirements.txt \
-      --replace "intake" ""
-  '';
-
   doCheck = false;
 
   #pythonImportsCheck = [ "intake_parquet" ];
diff --git a/nixpkgs/pkgs/development/python-modules/intake/default.nix b/nixpkgs/pkgs/development/python-modules/intake/default.nix
index d4f9c66806ce..b15e90cda27f 100644
--- a/nixpkgs/pkgs/development/python-modules/intake/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/intake/default.nix
@@ -1,4 +1,5 @@
 { lib
+, stdenv
 , appdirs
 , bokeh
 , buildPythonPackage
@@ -19,14 +20,15 @@
 , pythonOlder
 , pyyaml
 , requests
-, stdenv
+, setuptools
+, setuptools-scm
 , tornado
 }:
 
 buildPythonPackage rec {
   pname = "intake";
-  version = "0.7.0";
-  format = "setuptools";
+  version = "2.0.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -34,9 +36,14 @@ buildPythonPackage rec {
     owner = "intake";
     repo = "intake";
     rev = "refs/tags/${version}";
-    hash = "sha256-LK4abwPViEFJZ10bbRofF2aw2Mj0dliKwX6dFy93RVQ=";
+    hash = "sha256-Fyv85HkoE9OPOoSHR1sgCG0iAFuSiQMT7cyZcQyLvv0=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
   propagatedBuildInputs = [
     appdirs
     dask
@@ -73,11 +80,6 @@ buildPythonPackage rec {
     ];
   };
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace "'pytest-runner'" ""
-  '';
-
   __darwinAllowLocalNetworking = true;
 
   preCheck = ''
@@ -85,6 +87,20 @@ buildPythonPackage rec {
     export PATH="$PATH:$out/bin";
   '';
 
+  disabledTestPaths = [
+    # Missing plusins
+    "intake/catalog/tests/test_alias.py"
+    "intake/catalog/tests/test_gui.py"
+    "intake/catalog/tests/test_local.py"
+    "intake/catalog/tests/test_reload_integration.py"
+    "intake/source/tests/test_csv.py"
+    "intake/source/tests/test_derived.py"
+    "intake/source/tests/test_npy.py"
+    "intake/source/tests/test_text.py"
+    "intake/tests/test_config.py"
+    "intake/tests/test_top_level.py"
+  ];
+
   disabledTests = [
     # Disable tests which touch network
     "http"
@@ -103,23 +119,10 @@ buildPythonPackage rec {
     "test_remote_cat"
     "test_remote_env"
     # ValueError
-    "test_mlist_parameter"
-    # ImportError
-    "test_dataframe"
-    "test_ndarray"
-    "test_python"
+    "test_datasource_python_to_dask"
+    "test_catalog_passthrough"
     # Timing-based, flaky on darwin and possibly others
     "test_idle_timer"
-    # arrow-cpp-13 related
-    "test_read"
-    "test_pickle"
-    "test_read_dask"
-    "test_read_list"
-    "test_read_list_with_glob"
-    "test_to_dask"
-    "test_columns"
-    "test_df_transform"
-    "test_pipeline_apply"
   ] ++ lib.optionals (stdenv.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "10.13") [
     # Flaky with older low-res mtime on darwin < 10.13 (#143987)
     "test_second_load_timestamp"
diff --git a/nixpkgs/pkgs/development/python-modules/jax/default.nix b/nixpkgs/pkgs/development/python-modules/jax/default.nix
index 0450f73e639b..d41987c9a539 100644
--- a/nixpkgs/pkgs/development/python-modules/jax/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/jax/default.nix
@@ -1,6 +1,7 @@
 { lib
 , blas
 , buildPythonPackage
+, callPackage
 , setuptools
 , importlib-metadata
 , fetchFromGitHub
@@ -126,6 +127,23 @@ buildPythonPackage rec {
 
   pythonImportsCheck = [ "jax" ];
 
+  # Test CUDA-enabled jax and jaxlib. Running CUDA-enabled tests is not
+  # currently feasible within the nix build environment so we have to maintain
+  # this script separately. See https://github.com/NixOS/nixpkgs/pull/256230
+  # for a possible remedy to this situation.
+  #
+  # Run these tests with eg
+  #
+  #   NIXPKGS_ALLOW_UNFREE=1 nixglhost -- nix run --impure .#python3Packages.jax.passthru.tests.test_cuda_jaxlibBin
+  passthru.tests = {
+    test_cuda_jaxlibSource = callPackage ./test-cuda.nix {
+      jaxlib = jaxlib.override { cudaSupport = true; };
+    };
+    test_cuda_jaxlibBin = callPackage ./test-cuda.nix {
+      jaxlib = jaxlib-bin.override { cudaSupport = true; };
+    };
+  };
+
   meta = with lib; {
     description = "Differentiate, compile, and transform Numpy code";
     homepage = "https://github.com/google/jax";
diff --git a/nixpkgs/pkgs/development/python-modules/jax/test-cuda.nix b/nixpkgs/pkgs/development/python-modules/jax/test-cuda.nix
new file mode 100644
index 000000000000..d156061f3849
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/jax/test-cuda.nix
@@ -0,0 +1,17 @@
+{ jax
+, jaxlib
+, pkgs
+}:
+
+pkgs.writers.writePython3Bin "jax-test-cuda" { libraries = [ jax jaxlib ]; } ''
+  import jax
+  from jax import random
+
+  assert jax.devices()[0].platform == "gpu"
+
+  rng = random.PRNGKey(0)
+  x = random.normal(rng, (100, 100))
+  x @ x
+
+  print("success!")
+''
diff --git a/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
index 0bcf055a8766..199b352b2aa2 100644
--- a/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
+++ b/nixpkgs/pkgs/development/python-modules/jaxlib/bin.nix
@@ -2,16 +2,7 @@
 # backend will require some additional work. Those wheels are located here:
 # https://storage.googleapis.com/jax-releases/libtpu_releases.html.
 
-# For future reference, the easiest way to test the GPU backend is to run
-#   NIX_PATH=.. nix-shell -p python3 python3Packages.jax "python3Packages.jaxlib-bin.override { cudaSupport = true; }"
-#   export XLA_FLAGS=--xla_gpu_force_compilation_parallelism=1
-#   python -c "from jax.lib import xla_bridge; assert xla_bridge.get_backend().platform == 'gpu'"
-#   python -c "from jax import random; random.PRNGKey(0)"
-#   python -c "from jax import random; x = random.normal(random.PRNGKey(0), (100, 100)); x @ x"
-# There's no convenient way to test the GPU backend in the derivation since the
-# nix build environment blocks access to the GPU. See also:
-#   * https://github.com/google/jax/issues/971#issuecomment-508216439
-#   * https://github.com/google/jax/issues/5723#issuecomment-913038780
+# See `python3Packages.jax.passthru` for CUDA tests.
 
 { absl-py
 , autoPatchelfHook
@@ -32,12 +23,21 @@
 }:
 
 let
-  inherit (cudaPackagesGoogle) autoAddOpenGLRunpathHook cudatoolkit cudnn cudaVersion;
+  inherit (cudaPackagesGoogle) autoAddOpenGLRunpathHook cudaVersion;
 
   version = "0.4.24";
 
   inherit (python) pythonVersion;
 
+  cudaLibPath = lib.makeLibraryPath (with cudaPackagesGoogle; [
+    cuda_cudart.lib # libcudart.so
+    cuda_cupti.lib # libcupti.so
+    cudnn.lib # libcudnn.so
+    libcufft.lib # libcufft.so
+    libcusolver.lib # libcusolver.so
+    libcusparse.lib # libcusparse.so
+  ]);
+
   # As of 2023-06-06, google/jax upstream is no longer publishing CPU-only wheels to their GCS bucket. Instead the
   # official instructions recommend installing CPU-only versions via PyPI.
   cpuSrcs =
@@ -189,18 +189,12 @@ buildPythonPackage {
   # autoPatchelfHook. That means we need to sneak them into rpath. This step
   # must be done after autoPatchelfHook and the automatic stripping of
   # artifacts. autoPatchelfHook runs in postFixup and auto-stripping runs in the
-  # patchPhase. Dependencies:
-  #   * libcudart.so.11.0 -> cudatoolkit_11.lib
-  #   * libcublas.so.11   -> cudatoolkit_11
-  #   * libcuda.so.1      -> opengl driver in /run/opengl-driver/lib
+  # patchPhase.
   preInstallCheck = lib.optional cudaSupport ''
     shopt -s globstar
 
     for file in $out/**/*.so; do
-      rpath=$(patchelf --print-rpath $file)
-      # For some reason `makeLibraryPath` on `cudatoolkit_11` maps to
-      # <cudatoolkit_11.lib>/lib which is different from <cudatoolkit_11>/lib.
-      patchelf --set-rpath "$rpath:${cudatoolkit}/lib:${lib.makeLibraryPath [ cudatoolkit.lib cudnn ]}" $file
+      patchelf --add-rpath "${cudaLibPath}" "$file"
     done
   '';
 
@@ -211,12 +205,14 @@ buildPythonPackage {
     scipy
   ];
 
-  # Note that cudatoolkit is snecessary since jaxlib looks for "ptxas" in $PATH.
-  # See https://github.com/NixOS/nixpkgs/pull/164176#discussion_r828801621 for
-  # more info.
+  # jaxlib looks for ptxas at runtime, eg when running `jax.random.PRNGKey(0)`.
+  # Linking into $out is the least bad solution. See
+  # * https://github.com/NixOS/nixpkgs/pull/164176#discussion_r828801621
+  # * https://github.com/NixOS/nixpkgs/pull/288829#discussion_r1493852211
+  # for more info.
   postInstall = lib.optional cudaSupport ''
-    mkdir -p $out/bin
-    ln -s ${cudatoolkit}/bin/ptxas $out/bin/ptxas
+    mkdir -p $out/${python.sitePackages}/jaxlib/cuda/bin
+    ln -s ${lib.getExe' cudaPackagesGoogle.cuda_nvcc "ptxas"} $out/${python.sitePackages}/jaxlib/cuda/bin/ptxas
   '';
 
   inherit (jaxlib-build) pythonImportsCheck;
@@ -229,8 +225,8 @@ buildPythonPackage {
     maintainers = with maintainers; [ samuela ];
     platforms = [ "aarch64-darwin" "x86_64-linux" "x86_64-darwin" ];
     broken =
-      !(cudaSupport -> (cudaPackagesGoogle ? cudatoolkit) && lib.versionAtLeast cudatoolkit.version "11.1")
-      || !(cudaSupport -> (cudaPackagesGoogle ? cudnn) && lib.versionAtLeast cudnn.version "8.2")
+      !(cudaSupport -> lib.versionAtLeast cudaVersion "11.1")
+      || !(cudaSupport -> lib.versionAtLeast cudaPackagesGoogle.cudnn.version "8.2")
       || !(cudaSupport -> stdenv.isLinux)
       || !(cudaSupport -> (gpuSrcs ? "cuda${cudaVersion}-${pythonVersion}"));
   };
diff --git a/nixpkgs/pkgs/development/python-modules/karton-core/default.nix b/nixpkgs/pkgs/development/python-modules/karton-core/default.nix
index a934b793c60e..6746fd6eb710 100644
--- a/nixpkgs/pkgs/development/python-modules/karton-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/karton-core/default.nix
@@ -3,15 +3,16 @@
 , buildPythonPackage
 , fetchFromGitHub
 , orjson
-, unittestCheckHook
 , pythonOlder
 , redis
+, setuptools
+, unittestCheckHook
 }:
 
 buildPythonPackage rec {
   pname = "karton-core";
-  version = "5.3.2";
-  format = "setuptools";
+  version = "5.3.3";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -19,9 +20,13 @@ buildPythonPackage rec {
     owner = "CERT-Polska";
     repo = "karton";
     rev = "refs/tags/v${version}";
-    hash = "sha256-/MPD83sBo9n/dI1uXbHbjvz6upJSJrssMGmGwfQ+KE8=";
+    hash = "sha256-RVHhMKoQAqsddziK/vWGynSL9mxMuccNEGzoJTx8KAA=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     boto3
     orjson
diff --git a/nixpkgs/pkgs/development/python-modules/kbcstorage/default.nix b/nixpkgs/pkgs/development/python-modules/kbcstorage/default.nix
index ec41ce9f27f9..2c14e72bcf96 100644
--- a/nixpkgs/pkgs/development/python-modules/kbcstorage/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/kbcstorage/default.nix
@@ -1,36 +1,38 @@
 { lib
+, azure-storage-blob
+, boto3
 , buildPythonPackage
 , fetchFromGitHub
+, python-dotenv
 , pythonOlder
-
-# build
+, requests
+, responses
 , setuptools
 , setuptools-git-versioning
 , setuptools-scm
-
-# propagates
-, azure-storage-blob
-, boto3
-, requests
-
-# tests
-, responses
 , unittestCheckHook
+, urllib3
 }:
+
 buildPythonPackage rec {
   pname = "sapi-python-client";
-  version = "0.7.1";
-  format = "pyproject";
+  version = "0.7.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "keboola";
-    repo = pname;
+    repo = "sapi-python-client";
     rev = "refs/tags/${version}";
-    hash = "sha256-74sChw6eMkBtfHV6hiaaLNOr/J0Sa73LB93Z8muLaiI=";
+    hash = "sha256-uZo2kEq7zIMGRlhX36kZyihQPZegw5XgVzgVQQOmpc4=";
   };
 
+  postPatch = ''
+    substituteInPlace pyproject.toml \
+      --replace-fail "urllib3<2.0.0" "urllib3"
+  '';
+
   nativeBuildInputs = [
     setuptools
     setuptools-git-versioning
@@ -40,18 +42,16 @@ buildPythonPackage rec {
   propagatedBuildInputs = [
     azure-storage-blob
     boto3
+    python-dotenv
     requests
+    responses
+    urllib3
   ];
 
   # Requires API token and an active Keboola bucket
   # ValueError: Root URL is required.
   doCheck = false;
 
-  nativeCheckInputs = [
-    unittestCheckHook
-    responses
-  ];
-
   pythonImportsCheck = [
     "kbcstorage"
     "kbcstorage.buckets"
diff --git a/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix b/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
index 9196aef28b5d..ccd74777f32d 100644
--- a/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langchain-core/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "langchain-core";
-  version = "0.1.26";
+  version = "0.1.27";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "langchain_core";
     inherit version;
-    hash = "sha256-YYZ1jWIBVyOqxn7xogVWldA+gsTdQHQheXWwxi+vSxc=";
+    hash = "sha256-aYQUIjUlwLwTDYWmFOFJOQXViKty/gya07U3sdxiBn8=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/langsmith/default.nix b/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
index 919e64a3cf44..b3f4dc1119d7 100644
--- a/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/langsmith/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "langsmith";
-  version = "0.1.6";
+  version = "0.1.10";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "langchain-ai";
     repo = "langsmith-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IjKlyfYA7HH+fXPsV5lWd8BOXooJFZy0WxkUy2lm4bI=";
+    hash = "sha256-9My/0DPN6AwAFoAiTdl6jd2GtX4fpFIgpnZe/WzAi9c=";
   };
 
   sourceRoot = "${src.name}/python";
diff --git a/nixpkgs/pkgs/development/python-modules/ldfparser/default.nix b/nixpkgs/pkgs/development/python-modules/ldfparser/default.nix
index f4657dce8458..4b83fb53252e 100644
--- a/nixpkgs/pkgs/development/python-modules/ldfparser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ldfparser/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "ldfparser";
-  version = "0.23.0";
+  version = "0.24.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "c4deszes";
     repo = "ldfparser";
     rev = "refs/tags/v${version}";
-    hash = "sha256-gSjTuMndkzFUDcixJCohuCChhztFXnLpbK/zTOjEBpg=";
+    hash = "sha256-+7L2WCQEDpWPDBPVt4ddoz0U4YkJ9GqQqp0cKj2fAXM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/libtmux/default.nix b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
index c0df7019ed96..fbccd1be7363 100644
--- a/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/libtmux/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "libtmux";
-  version = "0.25.0";
-  format = "pyproject";
+  version = "0.31.0";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "tmux-python";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-cAogRdhJdXC0lMQRlWwSHQj205mG9uwd1XkFJYsAetA=";
+    hash = "sha256-MzHS/HzEZ4vDfNRpJ9AU9vFkw7LwloltxyibxEGWRSw=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/litellm/default.nix b/nixpkgs/pkgs/development/python-modules/litellm/default.nix
index 4f7349ea30f5..0a765a43dfc4 100644
--- a/nixpkgs/pkgs/development/python-modules/litellm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/litellm/default.nix
@@ -33,7 +33,7 @@
 
 buildPythonPackage rec {
   pname = "litellm";
-  version = "1.26.8";
+  version = "1.28.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -42,7 +42,7 @@ buildPythonPackage rec {
     owner = "BerriAI";
     repo = "litellm";
     rev = "refs/tags/v${version}";
-    hash = "sha256-w2d33mYNgQ+S+000ZswyqXE8RxOUQaH89R7M6PHe020=";
+    hash = "sha256-rmgKitWY2YFa+L9vpjXCsx5rCS2UrrobyKoleP5taG0=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix
new file mode 100644
index 000000000000..5663e9f11828
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-agent-openai/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, llama-index-llms-openai
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-agent-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/agent/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+    llama-index-llms-openai
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.agent.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-cli/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-cli/default.nix
new file mode 100644
index 000000000000..de4aacdd5adc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-cli/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, llama-index-embeddings-openai
+, llama-index-llms-openai
+, llama-index-vector-stores-chroma
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-cli";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+    llama-index-embeddings-openai
+    llama-index-llms-openai
+    llama-index-vector-stores-chroma
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.cli"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix
new file mode 100644
index 000000000000..708230eed628
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-core/default.nix
@@ -0,0 +1,115 @@
+{ lib
+, aiohttp
+, buildPythonPackage
+, dataclasses-json
+, deprecated
+, dirtyjson
+, fetchFromGitHub
+, fsspec
+, llamaindex-py-client
+, nest-asyncio
+, networkx
+, nltk
+, numpy
+, openai
+, pandas
+, pillow
+, poetry-core
+, pytest-asyncio
+, pytest-mock
+, pytestCheckHook
+, pythonOlder
+, pyyaml
+, requests
+, tree-sitter
+, sqlalchemy
+, tenacity
+, tiktoken
+, typing-inspect
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-core";
+  version = "0.10.14";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "run-llama";
+    repo = "llama_index";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-9EbhiW2VPaX6Ffrm5a3pJxw2M73x1JOna+OurSJErSM=";
+  };
+
+  sourceRoot = "${src.name}/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    aiohttp
+    dataclasses-json
+    deprecated
+    dirtyjson
+    fsspec
+    llamaindex-py-client
+    nest-asyncio
+    networkx
+    nltk
+    numpy
+    openai
+    pandas
+    pillow
+    pyyaml
+    requests
+    sqlalchemy
+    tenacity
+    tiktoken
+    typing-inspect
+  ];
+
+  nativeCheckInputs = [
+    tree-sitter
+    pytest-asyncio
+    pytest-mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "llama_index"
+  ];
+
+  disabledTestPaths = [
+    # Tests require network access
+    "tests/agent/"
+    "tests/callbacks/"
+    "tests/chat_engine/"
+    "tests/evaluation/"
+    "tests/indices/"
+    "tests/ingestion/"
+    "tests/memory/"
+    "tests/node_parser/"
+    "tests/objects/"
+    "tests/playground/"
+    "tests/postprocessor/"
+    "tests/query_engine/"
+    "tests/question_gen/"
+    "tests/response_synthesizers/"
+    "tests/retrievers/"
+    "tests/selectors/"
+    "tests/test_utils.py"
+    "tests/text_splitter/"
+    "tests/token_predictor/"
+    "tests/tools/"
+  ];
+
+  meta = with lib; {
+    description = "Data framework for your LLM applications";
+    homepage = "https://github.com/run-llama/llama_index/";
+    changelog = "https://github.com/run-llama/llama_index/blob/${version}/CHANGELOG.md";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
new file mode 100644
index 000000000000..6b371c816983
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-gemini/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, google-generativeai
+, llama-index-core
+, poetry-core
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-embeddings-gemini";
+  version = "0.1.3";
+
+  inherit (llama-index-core) src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/embeddings/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    google-generativeai
+    llama-index-core
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.embeddings.gemini"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-google/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
new file mode 100644
index 000000000000..6cf2d1772163
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-google/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, google-generativeai
+, llama-index-core
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-embeddings-google";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/embeddings/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    google-generativeai
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.embeddings.google"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix
new file mode 100644
index 000000000000..41e3843220f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-embeddings-openai/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-embeddings-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/embeddings/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.embeddings.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix
new file mode 100644
index 000000000000..c778fb0e0512
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-indices-managed-llama-cloud/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, llama-index-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-indices-managed-llama-cloud";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/indices/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.indices.managed.llama_cloud"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-legacy/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-legacy/default.nix
new file mode 100644
index 000000000000..e490c3db7e88
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-legacy/default.nix
@@ -0,0 +1,24 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, llama-index-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-legacy";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix
new file mode 100644
index 000000000000..c0b10abd0251
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-llms-openai/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, poetry-core
+, llama-index-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-llms-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/llms/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.llms.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
new file mode 100644
index 000000000000..825b001f5c61
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-multi-modal-llms-openai/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, llama-index-llms-openai
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-multi-modal-llms-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/multi_modal_llms/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+    llama-index-llms-openai
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.multi_modal_llms.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-program-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-program-openai/default.nix
new file mode 100644
index 000000000000..d30bb7fb709c
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-program-openai/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-agent-openai
+, llama-index-core
+, llama-index-llms-openai
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-program-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/program/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-agent-openai
+    llama-index-core
+    llama-index-llms-openai
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.program.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix
new file mode 100644
index 000000000000..a1dadcd941f8
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-question-gen-openai/default.nix
@@ -0,0 +1,32 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, llama-index-llms-openai
+, llama-index-program-openai
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-question-gen-openai";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/question_gen/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+    llama-index-llms-openai
+    llama-index-program-openai
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.question_gen.openai"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix
new file mode 100644
index 000000000000..05bbdec8f258
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-file/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, beautifulsoup4
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, poetry-core
+, pymupdf
+, pypdf
+, pythonRelaxDepsHook
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-readers-file";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/readers/${pname}";
+
+  pythonRelaxDeps = [
+    "beautifulsoup4"
+    "pymupdf"
+    "pypdf"
+  ];
+
+  pythonRemoveDeps = [
+    "bs4"
+  ];
+
+  nativeBuildInputs = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = [
+    beautifulsoup4
+    llama-index-core
+    pymupdf
+    pypdf
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.readers.file"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-json/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-json/default.nix
new file mode 100644
index 000000000000..c29dcd78c433
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-json/default.nix
@@ -0,0 +1,34 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, poetry-core
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-readers-json";
+  version = "0.1.2";
+
+  inherit (llama-index-core) src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/readers/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.readers.json"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix
new file mode 100644
index 000000000000..b9dfde0273e2
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-llama-parse/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, llama-parse
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-readers-llama-parse";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/readers/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-parse
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.readers.llama_parse"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-readers-weather/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-readers-weather/default.nix
new file mode 100644
index 000000000000..773c737f342d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-readers-weather/default.nix
@@ -0,0 +1,36 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, llama-index-core
+, poetry-core
+, pyowm
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-readers-weather";
+  version = "0.1.4";
+
+  inherit (llama-index-core) src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/readers/${pname}";
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+    pyowm
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.readers.weather"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
new file mode 100644
index 000000000000..62e89093066d
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index-vector-stores-chroma/default.nix
@@ -0,0 +1,41 @@
+{ lib
+, buildPythonPackage
+, chromadb
+, fetchFromGitHub
+, llama-index-core
+, onnxruntime
+, poetry-core
+, pythonRelaxDepsHook
+, tokenizers
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index-vector-stores-chroma";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  sourceRoot = "${src.name}/llama-index-integrations/vector_stores/${pname}";
+
+  pythonRelaxDeps = [
+    "onnxruntime"
+    "tokenizers"
+  ];
+
+  nativeBuildInputs = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = [
+    chromadb
+    llama-index-core
+    onnxruntime
+    tokenizers
+  ];
+
+  pythonImportsCheck = [
+    "llama_index.vector_stores.chroma"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-index/default.nix b/nixpkgs/pkgs/development/python-modules/llama-index/default.nix
new file mode 100644
index 000000000000..4e269039722f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-index/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, llama-index-agent-openai
+, llama-index-cli
+, llama-index-core
+, llama-index-embeddings-openai
+, llama-index-indices-managed-llama-cloud
+, llama-index-legacy
+, llama-index-llms-openai
+, llama-index-multi-modal-llms-openai
+, llama-index-program-openai
+, llama-index-question-gen-openai
+, llama-index-readers-file
+, llama-index-readers-llama-parse
+, poetry-core
+}:
+
+buildPythonPackage rec {
+  pname = "llama-index";
+
+  inherit (llama-index-core) version src meta;
+
+  pyproject = true;
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-agent-openai
+    llama-index-cli
+    llama-index-core
+    llama-index-embeddings-openai
+    llama-index-indices-managed-llama-cloud
+    llama-index-legacy
+    llama-index-llms-openai
+    llama-index-multi-modal-llms-openai
+    llama-index-program-openai
+    llama-index-question-gen-openai
+    llama-index-readers-file
+    llama-index-readers-llama-parse
+  ];
+
+  pythonImportsCheck = [
+    "llama_index"
+  ];
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix b/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix
new file mode 100644
index 000000000000..a38852ff6bfc
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llama-parse/default.nix
@@ -0,0 +1,40 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, llama-index-core
+, poetry-core
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llama-parse";
+  version = "0.3.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llama_parse";
+    inherit version;
+    hash = "sha256-WjBWnDkKuQidrWbPKoyWf4wh13ZB3uwKkiZy304Wz6M=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    llama-index-core
+  ];
+
+  pythonImportsCheck = [
+    "llama_parse"
+  ];
+
+  meta = with lib; {
+    description = "Parse files into RAG-Optimized formats";
+    homepage = "https://pypi.org/project/llama-parse/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/llamaindex-py-client/default.nix b/nixpkgs/pkgs/development/python-modules/llamaindex-py-client/default.nix
new file mode 100644
index 000000000000..d46e070c9517
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/llamaindex-py-client/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, httpx
+, poetry-core
+, pydantic
+, pythonOlder
+}:
+
+buildPythonPackage rec {
+  pname = "llamaindex-py-client";
+  version = "0.1.13";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchPypi {
+    pname = "llamaindex_py_client";
+    inherit version;
+    hash = "sha256-O9m0Ne4KeBceukEt6lZ02BPrW/NuV308fH6Q7cVJANk=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+  ];
+
+  propagatedBuildInputs = [
+    httpx
+    pydantic
+  ];
+
+  # Module has no tests
+  doCheck = false;
+
+  pythonImportsCheck = [
+    "llama_index_client"
+  ];
+
+  meta = with lib; {
+    description = "Client for LlamaIndex";
+    homepage = "https://pypi.org/project/llamaindex-py-client/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/lxml-stubs/default.nix b/nixpkgs/pkgs/development/python-modules/lxml-stubs/default.nix
index 8df03f526896..abb0d17f3918 100644
--- a/nixpkgs/pkgs/development/python-modules/lxml-stubs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/lxml-stubs/default.nix
@@ -1,35 +1,42 @@
 { lib
 , buildPythonPackage
 , fetchFromGitHub
-, setuptools
-, pytestCheckHook
-, pytest-mypy-plugins
 , lxml
+, pytest-mypy-plugins
+, pytestCheckHook
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "lxml-stubs";
-  version = "0.4.0";
+  version = "0.5.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "lxml";
     repo = "lxml-stubs";
-    rev = version;
-    hash = "sha256-RRH/taLtgaXOl0G/ve2Ad7Xy8WRDUG2/k26EFMv1PRM=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-OwaPnCr0vylhdAvMMUfGV6DjZEh7Q71pgMOt66urg5I=";
   };
 
   nativeBuildInputs = [
     setuptools
   ];
+
   propagatedBuildInputs = [
     lxml
   ];
+
   nativeCheckInputs = [
     pytestCheckHook
     pytest-mypy-plugins
   ];
 
+  disabledTests = [
+    # Output difference, https://github.com/lxml/lxml-stubs/issues/101
+    "etree_element_iterchildren"
+  ];
+
   meta = with lib; {
     description = "Type stubs for the lxml package";
     homepage = "https://github.com/lxml/lxml-stubs";
diff --git a/nixpkgs/pkgs/development/python-modules/meraki/default.nix b/nixpkgs/pkgs/development/python-modules/meraki/default.nix
index 53d44ee85d74..cecddbb6eec9 100644
--- a/nixpkgs/pkgs/development/python-modules/meraki/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/meraki/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "meraki";
-  version = "1.42.0";
+  version = "1.43.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-PZ875cjJUUE92aBoKfgQ3tY8tVN3ksB7nITc8MK0g+w=";
+    hash = "sha256-llKC5bBVDlSfVDML0a9HEijM+3H5pQVuLxdukJ6sPR0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/monty/default.nix b/nixpkgs/pkgs/development/python-modules/monty/default.nix
index 80256a11bfdb..77c7547e0b69 100644
--- a/nixpkgs/pkgs/development/python-modules/monty/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/monty/default.nix
@@ -17,7 +17,7 @@
 
 buildPythonPackage rec {
   pname = "monty";
-  version = "2024.2.2";
+  version = "2024.2.26";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -26,7 +26,7 @@ buildPythonPackage rec {
     owner = "materialsvirtuallab";
     repo = "monty";
     rev = "refs/tags/v${version}";
-    hash = "sha256-tKt0IMUmx1WvnQ27PyeyEEGekOKGY33YX4af1/ipbk4=";
+    hash = "sha256-+NxgZ8JCoAih4nHq+KP4jym0xnKCjUXJqs+xPpKZPbs=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/mplhep/default.nix b/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
index 64e58c97e2b8..cb42de13cca7 100644
--- a/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mplhep/default.nix
@@ -16,12 +16,12 @@
 
 buildPythonPackage rec {
   pname = "mplhep";
-  version = "0.3.34";
+  version = "0.3.35";
   format = "pyproject";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-B7pCC3n5b/cDBRDcg+p53RTad8N8iwqsLyxFA4Pm5fM=";
+    hash = "sha256-0l89Vh/vmi8kHeNer2ExGE1ehn1Kw3AbEUm8C55a92w=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/msal/default.nix b/nixpkgs/pkgs/development/python-modules/msal/default.nix
index fb6eff799fbf..6b983174f05f 100644
--- a/nixpkgs/pkgs/development/python-modules/msal/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msal/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "msal";
-  version = "1.26.0";
+  version = "1.27.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-IkdWB5/jOL6DhzdoK0n468IKh8HF7q9ZDarkUyuD3hU=";
+    hash = "sha256-MQlQPAOLprMHFSsOjTT5gRPy56eJhuKNC69bUwOv2lI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/mscerts/default.nix b/nixpkgs/pkgs/development/python-modules/mscerts/default.nix
index 400e0c2774e8..9dc16828c869 100644
--- a/nixpkgs/pkgs/development/python-modules/mscerts/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/mscerts/default.nix
@@ -6,7 +6,7 @@
 
 buildPythonPackage rec {
   pname = "mscerts";
-  version = "2023.11.29";
+  version = "2024.2.28";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -15,7 +15,7 @@ buildPythonPackage rec {
     owner = "ralphje";
     repo = "mscerts";
     rev = "refs/tags/${version}";
-    hash = "sha256-TNwpWxknCUcvXFy3UInrEx4iFZi/hLS7exvJBv3DlWo=";
+    hash = "sha256-ReUDpax4tvw4ZCH8zOipelIPtHi7BdgLHI/r3FNpo1c=";
   };
 
   # extras_require contains signify -> circular dependency
diff --git a/nixpkgs/pkgs/development/python-modules/msrest/default.nix b/nixpkgs/pkgs/development/python-modules/msrest/default.nix
index 3463931a1cb6..5f4f9869e304 100644
--- a/nixpkgs/pkgs/development/python-modules/msrest/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msrest/default.nix
@@ -9,16 +9,18 @@
 , isodate
 , pytest-aiohttp
 , pytestCheckHook
+, pythonAtLeast
 , pythonOlder
 , requests
 , requests-oauthlib
+, setuptools
 , trio
 }:
 
 buildPythonPackage rec {
   pname = "msrest";
   version = "0.7.1";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -30,6 +32,10 @@ buildPythonPackage rec {
     hash = "sha256-1EXXXflhDeU+erdI+NsWxSX76ooDTl3+MyQwRzm2xV0=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     azure-core
     aiodns
@@ -56,6 +62,12 @@ buildPythonPackage rec {
     "test_conf_async_requests"
     "test_conf_async_requests"
     "test_conf_async_trio_requests"
+  ] ++ lib.optionals (pythonAtLeast "3.12") [
+    # AttributeError: 'TestAuthentication' object has no attribute...
+    "test_apikey_auth"
+    "test_cs_auth"
+    "test_eventgrid_auth"
+    "test_eventgrid_domain_auth"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix b/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix
index e564a0fd5959..b997cd9b5065 100644
--- a/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/msrestazure/default.nix
@@ -1,41 +1,52 @@
-{ pkgs
-, lib
+{ lib
+, adal
 , buildPythonPackage
 , fetchFromGitHub
-, isPy3k
-, adal
-, msrest
-, mock
 , httpretty
-, pytest
+, mock
+, msrest
 , pytest-asyncio
+, pytestCheckHook
+, pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
-  version = "0.6.4";
-  format = "setuptools";
   pname = "msrestazure";
+  version = "0.6.4";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
-  # Pypi tarball doesnt include tests
-  # see https://github.com/Azure/msrestazure-for-python/pull/133
   src = fetchFromGitHub {
     owner = "Azure";
     repo = "msrestazure-for-python";
-    rev = "v${version}";
-    sha256 = "0ik81f0n6r27f02gblgm0vl5zl3wc6ijsscihgvc1fgm9f5mk5b5";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-ZZVZi0v1ucD2g5FpLaNhfNBf6Ab10fUEcEdkY4ELaEY=";
   };
 
-  propagatedBuildInputs = [ adal msrest ];
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    adal
+    msrest
+  ];
 
-  nativeCheckInputs = [ httpretty mock pytest ]
-                ++ lib.optionals isPy3k [ pytest-asyncio ];
+  nativeCheckInputs = [
+    httpretty
+    mock
+    pytest-asyncio
+    pytestCheckHook
+  ];
 
-  checkPhase = ''
-    pytest tests/
-  '';
+  pythonImportsCheck = [
+    "msrest"
+  ];
 
-  meta = with pkgs.lib; {
-    description = "The runtime library 'msrestazure' for AutoRest generated Python clients.";
+  meta = with lib; {
+    description = "The runtime library 'msrestazure' for AutoRest generated Python clients";
     homepage = "https://azure.microsoft.com/en-us/develop/python/";
     license = licenses.mit;
     maintainers = with maintainers; [ bendlas jonringer ];
diff --git a/nixpkgs/pkgs/development/python-modules/myuplink/default.nix b/nixpkgs/pkgs/development/python-modules/myuplink/default.nix
index 7ab0e32e231f..5b4e11a51c6f 100644
--- a/nixpkgs/pkgs/development/python-modules/myuplink/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/myuplink/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "myuplink";
-  version = "0.4.1";
+  version = "0.5.0";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "pajzo";
     repo = "myuplink";
     rev = "refs/tags/${version}";
-    hash = "sha256-zd1ZTLwgPD1m4SR5QVZWUvkjZtlB+VEfCZDsRELuYzE=";
+    hash = "sha256-UJGRQqgtbYBwfjys2sYiC3dx8Doesu34EBys5Y++qBY=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/nats-py/default.nix b/nixpkgs/pkgs/development/python-modules/nats-py/default.nix
index 3c384b8c5784..93cb33f9fd07 100644
--- a/nixpkgs/pkgs/development/python-modules/nats-py/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nats-py/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "nats-py";
-  version = "2.7.0";
+  version = "2.7.2";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "nats-io";
     repo = "nats.py";
     rev = "refs/tags/v${version}";
-    hash = "sha256-spKz0rKTI8hWdO6r8VLtP3G8tS9ANsjYRbinXOARCOQ=";
+    hash = "sha256-5lvdt1JbOmdts0CYU00bSmv0LsMQsOe//yUgyevBULE=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/neo4j/default.nix b/nixpkgs/pkgs/development/python-modules/neo4j/default.nix
index 4db2398c25b5..ba7a84d02ec5 100644
--- a/nixpkgs/pkgs/development/python-modules/neo4j/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/neo4j/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "neo4j";
-  version = "5.17.0";
+  version = "5.18.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "neo4j";
     repo = "neo4j-python-driver";
     rev = "refs/tags/${version}";
-    hash = "sha256-BZo4TzFrH1ATl09zRXy+1AFJSBopmByDHe7oITZy7pA=";
+    hash = "sha256-rp0N2k23WZ86hqqz4ByW5gdyU2eYLVppyEJEdY/Yk8w=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix b/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix
index fcd74efe9237..3daac2f31d16 100644
--- a/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nest-asyncio/default.nix
@@ -1,27 +1,43 @@
 { lib
 , buildPythonPackage
-, fetchPypi
-, pythonAtLeast
+, fetchFromGitHub
+, pytestCheckHook
+, pythonOlder
+, setuptools
+, setuptools-scm
 }:
 
 buildPythonPackage rec {
-  version = "1.5.6";
-  pname = "nest_asyncio";
-  disabled = !(pythonAtLeast "3.5");
+  pname = "nest-asyncio";
+  version = "1.6.0";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-0mfMH/eUQD999pKWTR0qP6lBj/6io/aFmkOf9IL+8pA=";
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "erdewit";
+    repo = "nest_asyncio";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-5I5WItOl1QpyI4OXZgZf8GiQ7Jlo+SJbDicIbernaU4=";
   };
 
-  # tests not packaged with source dist as of 1.3.2/1.3.2, and
-  # can't check tests out of GitHub easily without specific commit IDs (no tagged releases)
-  doCheck = false;
-  pythonImportsCheck = [ "nest_asyncio" ];
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [
+    "nest_asyncio"
+  ];
 
   meta = with lib; {
     description = "Patch asyncio to allow nested event loops";
     homepage = "https://github.com/erdewit/nest_asyncio";
+    changelog = "https://github.com/erdewit/nest_asyncio/releases/tag/v${version}";
     license = licenses.bsdOriginal;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/nibabel/default.nix b/nixpkgs/pkgs/development/python-modules/nibabel/default.nix
index 3bccab344741..7d8e021fd0cf 100644
--- a/nixpkgs/pkgs/development/python-modules/nibabel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nibabel/default.nix
@@ -20,14 +20,14 @@
 
 buildPythonPackage rec {
   pname = "nibabel";
-  version = "5.2.0";
+  version = "5.2.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-Pfjxq5gdG9kvQzHVZVKNEmq5cX/b1M/mj0P80cK/P1I=";
+    hash = "sha256-tsgLLnKOS8K2XxFC2bjSKHqRAqi/hHfhFe8NgzRVmXU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/nibe/default.nix b/nixpkgs/pkgs/development/python-modules/nibe/default.nix
index 4dbaa2c94d3d..d065f93ade21 100644
--- a/nixpkgs/pkgs/development/python-modules/nibe/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/nibe/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "nibe";
-  version = "2.8.0";
+  version = "2.9.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "yozik04";
     repo = "nibe";
     rev = "refs/tags/${version}";
-    hash = "sha256-baw2uJn2M0tcP897+h88aMkVul6l170Vyz6qwFHZ8+s=";
+    hash = "sha256-j8P/lhBjlsmnOc4Cv/a2Hdf2EPO8CEpT4IOQHtiBgQA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/oci/default.nix b/nixpkgs/pkgs/development/python-modules/oci/default.nix
index 15d4ec26e0a3..69eb4f00485f 100644
--- a/nixpkgs/pkgs/development/python-modules/oci/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oci/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "oci";
-  version = "2.121.1";
+  version = "2.122.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "oracle";
     repo = "oci-python-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-oOy0gOTekPXv557dl0A0b8TJVGSUYPq38h2Fu8PN03o=";
+    hash = "sha256-DDUnstgyRgt7sNcGV6gqJoTzmbBCMDTjmvf2zIXpBO8=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix b/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
index daf2a58fc5ed..57750768e4db 100644
--- a/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oelint-parser/default.nix
@@ -9,13 +9,13 @@
 
 buildPythonPackage rec {
   pname = "oelint-parser";
-  version = "3.2.2";
+  version = "3.3.1";
   format = "setuptools";
 
   src = fetchPypi {
     inherit version;
     pname = "oelint_parser";
-    hash = "sha256-pjdPiM23jITqYW5dklJJN5X8C8OmetIDvpN/RCLMWoE=";
+    hash = "sha256-+u0whEnzA5XZlqgTpQtGH25/krLLvNPycWXzBUedMRc=";
   };
 
   buildInputs = [ pip ];
diff --git a/nixpkgs/pkgs/development/python-modules/openrazer/common.nix b/nixpkgs/pkgs/development/python-modules/openrazer/common.nix
index 5b7a0bc0f8f2..3e801b582797 100644
--- a/nixpkgs/pkgs/development/python-modules/openrazer/common.nix
+++ b/nixpkgs/pkgs/development/python-modules/openrazer/common.nix
@@ -1,14 +1,14 @@
 { lib
 , fetchFromGitHub
 }: rec {
-  version = "3.6.1";
+  version = "3.7.0";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "openrazer";
     repo = "openrazer";
     rev = "v${version}";
-    hash = "sha256-bboTRZqJq5tKeBQuiEQAXxTHYvoldDQlwbfehjDA8EE=";
+    hash = "sha256-tjVWvJxcZ2maR99VRwMGCa+IK+1CjCc7jxAj4XkDUEw=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix b/nixpkgs/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix
new file mode 100644
index 000000000000..41de5bb8b60f
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/opentelemetry-instrumentation-fastapi/default.nix
@@ -0,0 +1,54 @@
+{ lib
+, buildPythonPackage
+, fastapi
+, hatchling
+, httpx
+, opentelemetry-api
+, opentelemetry-instrumentation
+, opentelemetry-instrumentation-asgi
+, opentelemetry-semantic-conventions
+, opentelemetry-test-utils
+, opentelemetry-util-http
+, pytestCheckHook
+, pythonOlder
+, requests
+}:
+
+buildPythonPackage {
+  inherit (opentelemetry-instrumentation) version src;
+  pname = "opentelemetry-instrumentation-fastapi";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  sourceRoot = "${opentelemetry-instrumentation.src.name}/instrumentation/opentelemetry-instrumentation-fastapi";
+
+  nativeBuildInputs = [
+    hatchling
+  ];
+
+  propagatedBuildInputs = [
+    fastapi
+    opentelemetry-api
+    opentelemetry-instrumentation
+    opentelemetry-instrumentation-asgi
+    opentelemetry-semantic-conventions
+    opentelemetry-util-http
+  ];
+
+  nativeCheckInputs = [
+    httpx
+    opentelemetry-test-utils
+    pytestCheckHook
+    requests
+  ];
+
+  pythonImportsCheck = [
+    "opentelemetry.instrumentation.fastapi"
+  ];
+
+  meta = opentelemetry-instrumentation.meta // {
+    description = "OpenTelemetry Instrumentation for fastapi";
+    homepage = "https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/opentelemetry-instrumentation-fastapi";
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/opower/default.nix b/nixpkgs/pkgs/development/python-modules/opower/default.nix
index 650565f9c11b..306f0431bfae 100644
--- a/nixpkgs/pkgs/development/python-modules/opower/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/opower/default.nix
@@ -5,13 +5,14 @@
 , fetchFromGitHub
 , pyotp
 , pytestCheckHook
+, python-dotenv
 , pythonOlder
 , setuptools
 }:
 
 buildPythonPackage rec {
   pname = "opower";
-  version = "0.3.1";
+  version = "0.4.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -20,7 +21,7 @@ buildPythonPackage rec {
     owner = "tronikos";
     repo = "opower";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aSzy1QLNGfEqHE2IQDdh9YfK+pC6j8X+5KviasSvYI8=";
+    hash = "sha256-O+yIxEFqD6hel1H9aUnSz/wJoEhVrg6DDZptNcJVkSw=";
   };
 
   nativeBuildInputs = [
@@ -31,6 +32,7 @@ buildPythonPackage rec {
     aiohttp
     arrow
     pyotp
+    python-dotenv
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix b/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
index ef388c34a18f..a42e9950066c 100644
--- a/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/oslo-concurrency/default.nix
@@ -18,13 +18,13 @@
 
 buildPythonPackage rec {
   pname = "oslo-concurrency";
-  version = "5.3.0";
+  version = "6.0.0";
   format = "setuptools";
 
   src = fetchPypi {
     pname = "oslo.concurrency";
     inherit version;
-    hash = "sha256-yqaSBw0hVZ73H/WQeAb3USoXgsRby1ChlP4+DNeNfe0=";
+    hash = "sha256-tS8CtORvXydLkfuOG/xcv5pBjfzUqDvggDRUlePSboo=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/overrides/default.nix b/nixpkgs/pkgs/development/python-modules/overrides/default.nix
index 8109a428140d..220f7dcbed14 100644
--- a/nixpkgs/pkgs/development/python-modules/overrides/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/overrides/default.nix
@@ -4,22 +4,27 @@
 , pythonAtLeast
 , pythonOlder
 , pytestCheckHook
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "overrides";
-  version = "7.4.0";
-  format = "setuptools";
+  version = "7.6.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "mkorpela";
-    repo = pname;
+    repo = "overrides";
     rev = "refs/tags/${version}";
-    hash = "sha256-7fbuBcb47BTVxAoKokZmGdIwHSyfyfSiCAZ4XZjWz60=";
+    hash = "sha256-UdahbhmRfuxKTxb6Afjny/hMgXX1UuDUrIcLjZ0Jtak=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   nativeCheckInputs = [
     pytestCheckHook
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix b/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
index d3b3e4e66949..86edb6e597cb 100644
--- a/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pinecone-client/default.nix
@@ -16,13 +16,13 @@
 }:
 buildPythonPackage rec {
   pname = "pinecone-client";
-  version = "3.0.3";
+  version = "3.1.0";
   pyproject = true;
 
   src = fetchPypi {
     pname = "pinecone_client";
     inherit version;
-    hash = "sha256-KtPvdiftxNnuJI2XgYYcQ0HW0noVvAX2vvU9lYg303Q=";
+    hash = "sha256-RbggYBP5GpgrmU8fuqOefoyZ0w7zd4qfMZxDuMmS/EI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pontos/default.nix b/nixpkgs/pkgs/development/python-modules/pontos/default.nix
index ddff63f6fa7e..b2890f908d90 100644
--- a/nixpkgs/pkgs/development/python-modules/pontos/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pontos/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "pontos";
-  version = "24.2.1";
+  version = "24.2.2";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "greenbone";
     repo = "pontos";
     rev = "refs/tags/v${version}";
-    hash = "sha256-lvmi/aYDGDHbiioFWovDpTCcqgh9hu97Wk2Lcqfd6qk=";
+    hash = "sha256-xg5/UDAnT6kvDfYnQn/LCHlAgpRrt19pDC8NB5RzCnc=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
index 4ffe4f45b3e8..73318da35818 100644
--- a/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pubnub/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pubnub";
-  version = "7.4.0";
+  version = "7.4.1";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = pname;
     repo = "python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XYovKAk2GEMi7GE/DVtLjMbww7guGkZzDOHC7Z6ZpJo=";
+    hash = "sha256-XaTvLX1YA1lCSMrEEmiD2JsXoMkeQz1x0MgmnF7cjcM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pulsar-client/default.nix b/nixpkgs/pkgs/development/python-modules/pulsar-client/default.nix
new file mode 100644
index 000000000000..65ce904eed4b
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pulsar-client/default.nix
@@ -0,0 +1,119 @@
+{ lib
+, stdenv
+, buildPythonPackage
+, fetchPypi
+, python
+}:
+let
+  version = "3.4.0";
+
+  inherit (python) pythonVersion;
+
+  Srcs =
+    let
+      getSrcFromPypi = { platform, dist, hash }: fetchPypi {
+        inherit version platform dist hash;
+        pname = "pulsar_client";
+        format = "wheel";
+        python = dist;
+        abi = dist;
+      };
+    in
+    {
+      "3.9-x86_64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
+        dist = "cp39";
+        hash = "sha256-1P5ArMoLZiUkHUoQ/mJccbNj5/7el/op+Qo6cGQ33xE=";
+      };
+      "3.9-aarch64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_aarch64.manylinux2014_aarch64";
+        dist = "cp39";
+        hash = "sha256-11JQZRwMLtt7sK/JlCBqqRyfTVIAVJFN2sL+nAkQgvU=";
+      };
+      "3.9-aarch64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp39";
+        hash = "sha256-dwTGZKosgBr0wtOljp2P+u7xLOig9xcS6Rh/mpbahW8=";
+      };
+      "3.9-x86_64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp39";
+        hash = "sha256-dwTGZKosgBr0wtOljp2P+u7xLOig9xcS6Rh/mpbahW8=";
+      };
+      "3.10-x86_64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
+        dist = "cp310";
+        hash = "sha256-swp1kuQsdgNOmo1k1C3VurNhQl+GneVi6cytaY4ZzYg=";
+      };
+      "3.10-aarch64-linux" = getSrcFromPypi {
+        platform = "musllinux_1_1_aarch64";
+        dist = "cp310";
+        hash = "sha256-1ZYwkKeKVkS6JfQdo6bUnqPwDJcrCVuv82WRbcJGQmo=";
+      };
+      "3.10-aarch64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp310";
+        hash = "sha256-6/mdtSRP9pR5KDslYhsHBJKsxLtkPRYthrkDh8tv2yo=";
+      };
+      "3.10-x86_64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp310";
+        hash = "sha256-6/mdtSRP9pR5KDslYhsHBJKsxLtkPRYthrkDh8tv2yo=";
+      };
+      "3.11-x86_64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
+        dist = "cp311";
+        hash = "sha256-M1cd6ZzYmDSfF5eLpi4rg56gJ1+3Bn8xv19uv+rgmH0=";
+      };
+      "3.11-aarch64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_aarch64.manylinux2014_aarch64";
+        dist = "cp311";
+        hash = "sha256-+HQ8MgqpZ5jSDK+pjql6aMQpX8SHLCOs1eAS/TbLBro=";
+      };
+      "3.11-aarch64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp311";
+        hash = "sha256-EZUvsCLuct6/U7Fp9EgvncXIkL4BSa6Yd5hks6IfG9M=";
+      };
+      "3.11-x86_64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp311";
+        hash = "sha256-EZUvsCLuct6/U7Fp9EgvncXIkL4BSa6Yd5hks6IfG9M=";
+      };
+      "3.12-x86_64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_x86_64.manylinux2014_x86_64";
+        dist = "cp312";
+        hash = "sha256-xgbATzVzQQQvpsdUd959IgT3rlCqKcL3SyTlTIX0f5Y=";
+      };
+      "3.12-aarch64-linux" = getSrcFromPypi {
+        platform = "manylinux_2_17_aarch64.manylinux2014_aarch64";
+        dist = "cp312";
+        hash = "sha256-8gK4Th9oPWRnLdGXERRgCuLlw3NVhyhv+b+0MThfCOg=";
+      };
+      "3.12-aarch64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp312";
+        hash = "sha256-9/jw/wr1oUD9pOadVAaMRL081iVMUXwVgnUMcG1UNvE=";
+      };
+      "3.12-x86_64-darwin" = getSrcFromPypi {
+        platform = "macosx_10_15_universal2";
+        dist = "cp312";
+        hash = "sha256-9/jw/wr1oUD9pOadVAaMRL081iVMUXwVgnUMcG1UNvE=";
+      };
+    };
+
+in buildPythonPackage {
+  pname = "pulsar-client";
+  inherit version;
+
+  format = "wheel";
+
+  src = Srcs."${pythonVersion}-${stdenv.hostPlatform.system}";
+
+  meta = with lib; {
+    description = "Client for pulsar";
+    homepage = "https://pypi.org/project/pulsar-client/";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix b/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
index 9a322790f865..f64913c32d33 100644
--- a/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydeconz/default.nix
@@ -13,7 +13,7 @@
 
 buildPythonPackage rec {
   pname = "pydeconz";
-  version = "114";
+  version = "115";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
     owner = "Kane610";
     repo = "deconz";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XN6di3pxB7lhZ5TQnyHr7nKA0STBi0CVzGnhvRDsbFY=";
+    hash = "sha256-NjzONVSJ4GEaIeC5ytnTi8JpZY1yIq3LN8vbMy3n0vs=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pydiscovergy/default.nix b/nixpkgs/pkgs/development/python-modules/pydiscovergy/default.nix
index 3c87b6b6f3a1..dd51f1b964dc 100644
--- a/nixpkgs/pkgs/development/python-modules/pydiscovergy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydiscovergy/default.nix
@@ -9,6 +9,7 @@
 , poetry-core
 , pytestCheckHook
 , pythonOlder
+, pythonRelaxDepsHook
 , pytz
 , respx
 }:
@@ -29,6 +30,11 @@ buildPythonPackage rec {
 
   nativeBuildInputs = [
     poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "pytz"
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pydub/default.nix b/nixpkgs/pkgs/development/python-modules/pydub/default.nix
index e1631f74f94e..7ec3da3531cf 100644
--- a/nixpkgs/pkgs/development/python-modules/pydub/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pydub/default.nix
@@ -1,43 +1,59 @@
 { lib
-, stdenv
 , buildPythonPackage
 , fetchFromGitHub
-
-# tests
+, fetchpatch
 , ffmpeg-full
-, python
+, pytestCheckHook
+, pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "pydub";
   version = "0.25.1";
-  format = "setuptools";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
 
-  # pypi version doesn't include required data files for tests
   src = fetchFromGitHub {
     owner = "jiaaro";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "0xskllq66wqndjfmvp58k26cv3w480sqsil6ifwp4gghir7hqc8m";
+    repo = "pydub";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-FTEMT47wPXK5i4ZGjTVAhI/NjJio3F2dbBZzYzClU3c=";
   };
 
+  patches = [
+    # Fix test assertions, https://github.com/jiaaro/pydub/pull/769
+    (fetchpatch {
+      name = "fix-assertions.patch";
+      url = "https://github.com/jiaaro/pydub/commit/66c1bf7813ae8621a71484fdcdf609734c0d8efd.patch";
+      hash = "sha256-3OIzvTgGK3r4/s5y7izHvouB4uJEmjO6cgKvegtTf7A=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    ffmpeg-full
+    pytestCheckHook
+  ];
+
   pythonImportsCheck = [
     "pydub"
     "pydub.audio_segment"
     "pydub.playback"
   ];
 
-  nativeCheckInputs = [
-    ffmpeg-full
+  pytestFlagsArray = [
+    "test/test.py"
   ];
 
-  checkPhase = ''
-    ${python.interpreter} test/test.py
-  '';
-
   meta = with lib; {
     description = "Manipulate audio with a simple and easy high level interface";
     homepage = "http://pydub.com";
+    changelog = "https://github.com/jiaaro/pydub/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
   };
diff --git a/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix b/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
index 4826806c19f1..05514f610ad1 100644
--- a/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyenphase/default.nix
@@ -18,7 +18,7 @@
 
 buildPythonPackage rec {
   pname = "pyenphase";
-  version = "1.19.0";
+  version = "1.19.1";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -27,7 +27,7 @@ buildPythonPackage rec {
     owner = "pyenphase";
     repo = "pyenphase";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Wj2CkOvH5mS+DaIcbrqHjK+0mG3gfyF5M9tFImeJ/ko=";
+    hash = "sha256-2dKBqGIT4D4QUMixg4ZCxWXjE2zcXoji5i2v+vAPhL4=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pyexiftool/default.nix b/nixpkgs/pkgs/development/python-modules/pyexiftool/default.nix
new file mode 100644
index 000000000000..e7240658ef33
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pyexiftool/default.nix
@@ -0,0 +1,47 @@
+{ lib
+, buildPythonPackage
+, pythonOlder
+, fetchFromGitHub
+, exiftool
+, setuptools
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "pyexiftool";
+  version = "0.5.6";
+  pyproject = true;
+
+  disabled = pythonOlder "3.6";
+
+  src = fetchFromGitHub {
+    owner = "sylikc";
+    repo = "pyexiftool";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-dgQkbpCbdq2JbupY0DyQbHPR9Bg+bwDo7yN03o3sX+A=";
+  };
+
+  postPatch = ''
+    substituteInPlace exiftool/constants.py \
+      --replace-fail 'DEFAULT_EXECUTABLE = "exiftool"' \
+                     'DEFAULT_EXECUTABLE = "${lib.getExe exiftool}"'
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  pythonImportsCheck = [ "exiftool" ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  meta = {
+    changelog = "https://github.com/sylikc/pyexiftool/blob/${src.rev}/CHANGELOG.md";
+    description = "Python wrapper for exiftool";
+    homepage = "https://github.com/sylikc/pyexiftool";
+    license = with lib.licenses; [ bsd3 /* or */ gpl3Plus ];
+    maintainers = with lib.maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/pygitguardian/default.nix b/nixpkgs/pkgs/development/python-modules/pygitguardian/default.nix
index 2f3cde9a51d8..1325a31fe133 100644
--- a/nixpkgs/pkgs/development/python-modules/pygitguardian/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pygitguardian/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pygitguardian";
-  version = "1.13.0";
+  version = "1.14.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "GitGuardian";
     repo = "py-gitguardian";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LRzyZAusCo4uZlXFWoRPIfPgAGO4sP0KCGYOICNZ6f4=";
+    hash = "sha256-Uw65+YOnln+IOyT+RgqMEWt5cOZsaeS8Nu8U6ooivWA=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyipp/default.nix b/nixpkgs/pkgs/development/python-modules/pyipp/default.nix
index 609e75806678..3046d879ba61 100644
--- a/nixpkgs/pkgs/development/python-modules/pyipp/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyipp/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "pyipp";
-  version = "0.14.4";
+  version = "0.14.5";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -23,8 +23,8 @@ buildPythonPackage rec {
   src = fetchFromGitHub {
    owner = "ctalkington";
    repo = "python-ipp";
-   rev = version;
-   hash = "sha256-xE0fdT+Ffdf4iOHWZzRa7YWtHt92lFdA/sbwjblMR40=";
+   rev = "refs/tags/${version}";
+   hash = "sha256-2YaQZWHrvz1OwD47WUl4UKoYXQBiemCWLM8m/zkipCU=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pymc/default.nix b/nixpkgs/pkgs/development/python-modules/pymc/default.nix
index 185250bddda5..5afa718726c8 100644
--- a/nixpkgs/pkgs/development/python-modules/pymc/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymc/default.nix
@@ -23,9 +23,14 @@ buildPythonPackage rec {
     owner = "pymc-devs";
     repo = "pymc";
     rev = "refs/tags/v${version}";
-    hash = "sha256-bOrWgZaSOXXalw251cm5JUDkAARGaxmUk+z3SY6Git8=";
+    hash = "sha256-tiOXbryY2TmeBVrG5cIMeDJ4alolBQ5LosdfH3tpVOA=";
   };
 
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace-fail ', "pytest-cov"' ""
+  '';
+
   propagatedBuildInputs = [
     arviz
     cachetools
@@ -37,11 +42,6 @@ buildPythonPackage rec {
     typing-extensions
   ];
 
-  postPatch = ''
-    substituteInPlace setup.py \
-      --replace ', "pytest-cov"' ""
-  '';
-
   # The test suite is computationally intensive and test failures are not
   # indicative for package usability hence tests are disabled by default.
   doCheck = false;
diff --git a/nixpkgs/pkgs/development/python-modules/pymicrobot/default.nix b/nixpkgs/pkgs/development/python-modules/pymicrobot/default.nix
index 947c065fc32c..22581f493b73 100644
--- a/nixpkgs/pkgs/development/python-modules/pymicrobot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pymicrobot/default.nix
@@ -9,7 +9,7 @@
 
 buildPythonPackage rec {
   pname = "pymicrobot";
-  version = "0.0.16";
+  version = "0.0.22";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
   src = fetchPypi {
     pname = "PyMicroBot";
     inherit version;
-    hash = "sha256-W1i1kKDM6DimcerhS5L7yEa32+cB032DrCAfhMCso4A=";
+    hash = "sha256-8Nkkgznt4JzImJSAbdaX6znhvmgqwOIBjAXVhaMorLk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyngrok/default.nix b/nixpkgs/pkgs/development/python-modules/pyngrok/default.nix
index 2dc7e9f36ebc..8d668d8249e0 100644
--- a/nixpkgs/pkgs/development/python-modules/pyngrok/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyngrok/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "pyngrok";
-  version = "7.1.2";
+  version = "7.1.3";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-iyLJ3kr0O9wa6ipgMgntH8VbSo1a6btYoQZOaogAfKw=";
+    hash = "sha256-BnK1ynVbxFFwocxXc6QiYJkBIgEvc1RGpfwUhqe+Gec=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix b/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
index 62b23795d502..77c1e9933261 100644
--- a/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pyrisco/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "pyrisco";
-  version = "0.5.9";
+  version = "0.5.10";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "OnFreund";
     repo = "pyrisco";
     rev = "refs/tags/v${version}";
-    hash = "sha256-qapJcYesOddXFChApFT7hvxLblUigDW40zRe6CYWx+s=";
+    hash = "sha256-3wa6hayyjWdDVqbLPCqIZ4lgcy1/EdFH4ZVggSRizZU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/pysignalclirestapi/default.nix b/nixpkgs/pkgs/development/python-modules/pysignalclirestapi/default.nix
index b3dd6f696006..a2eff3fc4ad8 100644
--- a/nixpkgs/pkgs/development/python-modules/pysignalclirestapi/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pysignalclirestapi/default.nix
@@ -3,20 +3,20 @@
 , fetchFromGitHub
 , setuptools
 , requests
-, future
+, six
 }:
 
 buildPythonPackage rec {
   pname = "pysignalclirestapi";
-  version = "0.3.22";
+  version = "0.3.23";
 
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bbernhard";
     repo = "pysignalclirestapi";
-    rev = version;
-    hash = "sha256-m8Sihf5vTDntd5Tbaa5o55G/k/rqtmjWreoTab58CHU=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-DI6dPh8TJElDSk2ExMk4w32ROYgc33cwWNmc3pIBADM=";
   };
 
   nativeBuildInputs = [
@@ -25,7 +25,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     requests
-    future
+    six
   ];
 
   # upstream has no tests
@@ -34,6 +34,7 @@ buildPythonPackage rec {
   pythonImportsCheck = [ "pysignalclirestapi" ];
 
   meta = with lib; {
+    changelog = "https://github.com/bbernhard/pysignalclirestapi/releases/tag/${version}";
     description = "Small python library for the Signal Cli REST API";
     homepage = "https://github.com/bbernhard/pysignalclirestapi";
     license = licenses.mit;
diff --git a/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
index 3c0b0ec629b4..9bceb430820e 100644
--- a/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytest-testmon/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pytest-testmon";
-  version = "2.1.0";
+  version = "2.1.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "tarpas";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-M4636yqzChRI37UdGPOZTjj8POLdrOoJtzmECtZZi4k=";
+    hash = "sha256-zbMX9r9lftdm9hzXMZRZZ/GEDViGk9QiYYUhO9ZcEAc=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-idzip/default.nix b/nixpkgs/pkgs/development/python-modules/python-idzip/default.nix
new file mode 100644
index 000000000000..6c64bb6c257e
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/python-idzip/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchpatch
+
+, pythonOlder
+
+, setuptools
+
+, pytestCheckHook
+}:
+
+buildPythonPackage rec {
+  pname = "python-idzip";
+  version = "0.3.9";
+  pyproject = true;
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "bauman";
+    repo = "python-idzip";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ChzwC/Afn0qeo5anq4anIu2eI9i6XDnSvB7jAwY7rSw=";
+  };
+
+  patches = [
+    # fix collision
+    # https://github.com/bauman/python-idzip/pull/23
+    (fetchpatch {
+      name = "fix-bin-folder-collisions.patch";
+      url = "https://patch-diff.githubusercontent.com/raw/bauman/python-idzip/pull/23.patch";
+      hash = "sha256-4fPhLdY9MaH1aX6tqMT+NNNNDsyv87G0xBh4MC+5yQE=";
+    })
+  ];
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
+
+  disabledTestPaths = [
+    # need third-party files
+    # https://github.com/bauman/python-idzip/blob/master/.github/workflows/test.yaml#L2https://github.com/bauman/python-idzip/blob/master/.github/workflows/test.yaml#L288
+    "test/test_compressor.py"
+    "test/test_decompressor.py"
+    "test/test_lucky_cache.py"
+    "test/test_readline.py"
+    "test/test_seek_read_behavior.py"
+    "test/test_zero_cache.py"
+  ];
+
+  disabledTests = [
+    # Terminated
+    # pop_var_context: head of shell_variables not a function context
+    "test_bufferedio_compat"
+  ];
+
+  meta = with lib; {
+    description = "Seekable, gzip compatible, compression format";
+    homepage = "https://github.com/bauman/python-idzip";
+    changelog = "https://github.com/bauman/python-idzip/releases/tag/${version}";
+    license = licenses.mit;
+    maintainers = with maintainers; [ vizid ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix b/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
index 570ee23fcbf4..588f2042bd9b 100644
--- a/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-matter-server/default.nix
@@ -5,6 +5,7 @@
 
 # build
 , setuptools
+, pythonRelaxDepsHook
 
 # propagates
 , aiohttp
@@ -29,7 +30,7 @@
 
 buildPythonPackage rec {
   pname = "python-matter-server";
-  version = "5.5.3";
+  version = "5.7.0b2";
   format = "pyproject";
 
   disabled = pythonOlder "3.10";
@@ -38,16 +39,22 @@ buildPythonPackage rec {
     owner = "home-assistant-libs";
     repo = "python-matter-server";
     rev = "refs/tags/${version}";
-    hash = "sha256-8daAABR5l8ZEX+PR4XrxRHlLllgnOVE4Q9yY/7UQXHw=";
+    hash = "sha256-fMtvVizHeAzLdou0U1tqbmQATIBLK4w9I7EwMlzB8QA=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
-      --replace 'version = "0.0.0"' 'version = "${version}"'
+      --replace 'version = "0.0.0"' 'version = "${version}"' \
+      --replace '--cov' ""
   '';
 
   nativeBuildInputs = [
     setuptools
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "home-assistant-chip-clusters"
   ];
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix b/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
index 1346e9b35b7a..810d1ba65994 100644
--- a/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/python-roborock/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "python-roborock";
-  version = "0.39.1";
+  version = "0.39.2";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "humbertogontijo";
     repo = "python-roborock";
     rev = "refs/tags/v${version}";
-    hash = "sha256-iFLzrjbCwBuV9RQSHoP5LOG0PIPjiTMCpvk3wqGtMgk=";
+    hash = "sha256-hgd6/3GO1r6Xmgcq3iWVxWzi3VIN8MvV27CxF6tWwgU=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix b/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix
index 6bd4c17f50ea..11ceaecf895c 100644
--- a/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/pytraccar/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "pytraccar";
-  version = "2.0.0";
+  version = "2.1.0";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "ludeeus";
     repo = "pytraccar";
     rev = "refs/tags/${version}";
-    hash = "sha256-7QGgI+DDYbordBx4LbtCvPWyEh6ur2RrSKMuDlwRlTo=";
+    hash = "sha256-VsZ18zVIO5ps0GIoVwXBuVe20n6Cz6buItgKlzYyjt4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ratarmount/default.nix b/nixpkgs/pkgs/development/python-modules/ratarmount/default.nix
index f07b28bec4f4..cc235710a689 100644
--- a/nixpkgs/pkgs/development/python-modules/ratarmount/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ratarmount/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "ratarmount";
-  version = "0.14.0";
+  version = "0.14.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-P+p0h+KuOsunPsXbRwxzAhr1XcEqMjQxHeHmA29+pDQ=";
+    hash = "sha256-TrOYf9kbcRM8E9vq6sjswK2BQ0eA5zSGAIiNAfIZtnk=";
   };
 
   propagatedBuildInputs = [ ratarmountcore fusepy ];
diff --git a/nixpkgs/pkgs/development/python-modules/rdkit/default.nix b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
index 8a29bc837cfa..2d5af44a068d 100644
--- a/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
@@ -42,7 +42,7 @@ let
 in
 buildPythonPackage rec {
   pname = "rdkit";
-  version = "2023.09.4";
+  version = "2023.09.5";
   pyproject = false;
 
   src =
@@ -53,7 +53,7 @@ buildPythonPackage rec {
       owner = pname;
       repo = pname;
       rev = "Release_${versionTag}";
-      hash = "sha256-yPpt7F3w17tZEe+HECODZ7p27QidNt1sd5f/T2V87NE=";
+      hash = "sha256-ZYNAHNBHQPx8rBJSvEWFEpdSpYyXcoqJ+nBA7tpHwQs=";
     };
 
   unpackPhase = ''
diff --git a/nixpkgs/pkgs/development/python-modules/reptor/default.nix b/nixpkgs/pkgs/development/python-modules/reptor/default.nix
index 1f35854766f0..800966352d08 100644
--- a/nixpkgs/pkgs/development/python-modules/reptor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/reptor/default.nix
@@ -32,7 +32,7 @@
 
 buildPythonPackage rec {
   pname = "reptor";
-  version = "0.9";
+  version = "0.11";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -41,7 +41,7 @@ buildPythonPackage rec {
     owner = "Syslifters";
     repo = "reptor";
     rev = "refs/tags/${version}";
-    hash = "sha256-CjTedIl7ZkSFfKKhHmCadTd7zdz3gP7Q4uCscv5An38=";
+    hash = "sha256-OJcg/e+ZC5Hf4dkP1dhsR9A+5lWvuFeuNLXyW8Hw6ko=";
   };
 
   pythonRelaxDeps = true;
diff --git a/nixpkgs/pkgs/development/python-modules/requests-ratelimiter/default.nix b/nixpkgs/pkgs/development/python-modules/requests-ratelimiter/default.nix
index 5cc57d86a57f..dbd142e378bd 100644
--- a/nixpkgs/pkgs/development/python-modules/requests-ratelimiter/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/requests-ratelimiter/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "requests-ratelimiter";
-  version = "0.4.2";
+  version = "0.5.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "JWCook";
     repo = "requests-ratelimiter";
-    rev = "v${version}";
-    hash = "sha256-w4cBQRpk9UTuGA0lPDsqpQ3UEIQdYe38NYXz+V4+Lvc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-JdxyBLrxXXb2KJ89qWl7yXP0fIafgnAguPGsN5iit8Y=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/ripser/default.nix b/nixpkgs/pkgs/development/python-modules/ripser/default.nix
index 0b65e8c1c487..6e847e483636 100644
--- a/nixpkgs/pkgs/development/python-modules/ripser/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/ripser/default.nix
@@ -12,14 +12,14 @@
 
 buildPythonPackage rec {
   pname = "ripser";
-  version = "0.6.4";
+  version = "0.6.7";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-eps+lCCGnFDfhemkRskSuK+BYh5iyhr4+UksYzW35ZQ=";
+    hash = "sha256-UuxI1bA6H8s2D9xWVwCecXEHkCV0rhkxuoooaer/a8A=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/roombapy/default.nix b/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
index 02fdef0c54b0..bef8114aa3cf 100644
--- a/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/roombapy/default.nix
@@ -5,41 +5,40 @@
 , orjson
 , paho-mqtt
 , poetry-core
+, pydantic
 , pytest-asyncio
 , pytestCheckHook
 , pythonOlder
+, pythonRelaxDepsHook
 }:
 
 buildPythonPackage rec {
   pname = "roombapy";
-  version = "1.6.10";
-  format = "pyproject";
+  version = "1.6.13";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.10";
 
   src = fetchFromGitHub {
     owner = "pschmitt";
     repo = "roombapy";
     rev = "refs/tags/${version}";
-    hash = "sha256-aGNSySSKCx/8GYUdDWMSAhMBex738UACqnqj/Qx1m38=";
+    hash = "sha256-5TFuOk3fj4kg5MyWz7HQ/zWdvceFa3mWnFx+Yuq2III=";
   };
 
-  postPatch = ''
-    # hbmqtt was replaced by amqtt
-    substituteInPlace tests/test_roomba_integration.py \
-      --replace "from hbmqtt.broker import Broker" "from amqtt.broker import Broker"
-
-    substituteInPlace pyproject.toml \
-      --replace 'orjson = ">=3.8.7"' 'orjson = "*"'
-  '';
-
   nativeBuildInputs = [
     poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  pythonRelaxDeps = [
+    "orjson"
   ];
 
   propagatedBuildInputs = [
     orjson
     paho-mqtt
+    pydantic
   ];
 
   nativeCheckInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/rope/default.nix b/nixpkgs/pkgs/development/python-modules/rope/default.nix
index c014314685b9..ad5cad2dd8cb 100644
--- a/nixpkgs/pkgs/development/python-modules/rope/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/rope/default.nix
@@ -10,16 +10,16 @@
 
 buildPythonPackage rec {
   pname = "rope";
-  version = "1.9.0";
-  format = "pyproject";
+  version = "1.12.0";
+  pyproject = true;
 
-  disabled = pythonOlder "3.7";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "python-rope";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-j65C3x3anhH23D4kic5j++r/Ft0RqgZ/jFrNrNHVcXA=";
+    hash = "sha256-j/9q2S2B3DzmEqMOBLG9iHwnLqZipcPxLaKppysJffA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
index 91758650bba8..124b44f097cc 100644
--- a/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/s3transfer/default.nix
@@ -1,29 +1,38 @@
 { lib
+, stdenv
 , botocore
 , buildPythonPackage
 , fetchFromGitHub
 , pytestCheckHook
 , pythonOlder
-, stdenv
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "s3transfer";
   version = "0.10.0";
-  format = "setuptools";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "boto";
-    repo = pname;
+    repo = "s3transfer";
     rev = "refs/tags/${version}";
     hash = "sha256-21xycx1+84uY4gFr7N+ra98dpsEwxy9zeSl4QA66nUc=";
   };
 
-  propagatedBuildInputs = [ botocore ];
+  nativeBuildInputs = [
+    setuptools
+  ];
+
+  propagatedBuildInputs = [
+    botocore
+  ];
 
-  nativeCheckInputs = [ pytestCheckHook ];
+  nativeCheckInputs = [
+    pytestCheckHook
+  ];
 
   disabledTestPaths = [
     # Requires network access
@@ -32,12 +41,18 @@ buildPythonPackage rec {
   # There was a change in python 3.8 that defaults multiprocessing to spawn instead of fork on macOS
   # See https://bugs.python.org/issue33725 and https://github.com/python/cpython/pull/13603.
   # I suspect the underlying issue here is that upstream tests aren't compatible with spawn multiprocessing, and pass on linux where the default is still fork
-  lib.optionals stdenv.isDarwin [ "tests/unit/test_compat.py" ];
+  lib.optionals stdenv.isDarwin [
+    "tests/unit/test_compat.py"
+  ];
 
-  pythonImportsCheck = [ "s3transfer" ];
+  pythonImportsCheck = [
+    "s3transfer"
+  ];
 
   passthru.optional-dependencies = {
-    crt = [ botocore.optional-dependencies.crt ];
+    crt = [
+      botocore.optional-dependencies.crt
+    ];
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/sdds/default.nix b/nixpkgs/pkgs/development/python-modules/sdds/default.nix
index 9ae9c01b39e0..805121544080 100644
--- a/nixpkgs/pkgs/development/python-modules/sdds/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sdds/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "sdds";
-  version = "0.4.0";
+  version = "0.4.1";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "pylhc";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-8tnJAptTUsC0atxM9Dpn90drcprdWrs8fYoX8RDkLyQ=";
+    hash = "sha256-4phANoYohuCaLbzO4TgRkSS+UHE8CnzonpEd46xzD0M=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/shazamio/default.nix b/nixpkgs/pkgs/development/python-modules/shazamio/default.nix
index 05c9784b367f..7190c1e2c0ae 100644
--- a/nixpkgs/pkgs/development/python-modules/shazamio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/shazamio/default.nix
@@ -72,6 +72,7 @@ buildPythonPackage rec {
     changelog = "https://github.com/dotX12/ShazamIO/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    # https://github.com/shazamio/ShazamIO/issues/80
     broken = versionAtLeast pydantic.version "2";
   };
 }
diff --git a/nixpkgs/pkgs/development/python-modules/simpful/default.nix b/nixpkgs/pkgs/development/python-modules/simpful/default.nix
index 2060210a3bd8..37f2ae860c0e 100644
--- a/nixpkgs/pkgs/development/python-modules/simpful/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/simpful/default.nix
@@ -14,7 +14,7 @@
 
 buildPythonPackage rec {
   pname = "simpful";
-  version = "2.11.1";
+  version = "2.12.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -23,7 +23,7 @@ buildPythonPackage rec {
     owner = "aresio";
     repo = "simpful";
     rev = "refs/tags/${version}";
-    hash = "sha256-54WkKnPB3xA2CaOpmasqxgDoga3uAqoC1nOivytXmGY=";
+    hash = "sha256-NtTw7sF1WfVebUk1wHrM8FHAe3/FXDcMApPkDbw0WXo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
index af3dca512c62..2782b5eea5db 100644
--- a/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slack-sdk/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "slack-sdk";
-  version = "3.27.0";
+  version = "3.27.1";
   pyproject = true;
 
   disabled = pythonOlder "3.6";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MA3pn6NQxzXYu/BBpOgfZWnS51dl7oXrAi43jenHhxI=";
+    hash = "sha256-fBHu4e6pSt8yzXbLWr5cwjRFDfvdH2jzpSNzdMBg4N0=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
index 3a66c42111b9..9769f22727a3 100644
--- a/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/slackclient/default.nix
@@ -21,7 +21,7 @@
 
 buildPythonPackage rec {
   pname = "slackclient";
-  version = "3.27.0";
+  version = "3.27.1";
   format =  "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -30,7 +30,7 @@ buildPythonPackage rec {
     owner = "slackapi";
     repo = "python-slack-sdk";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MA3pn6NQxzXYu/BBpOgfZWnS51dl7oXrAi43jenHhxI=";
+    hash = "sha256-fBHu4e6pSt8yzXbLWr5cwjRFDfvdH2jzpSNzdMBg4N0=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/snapcast/default.nix b/nixpkgs/pkgs/development/python-modules/snapcast/default.nix
index 9917e4d3f759..300aec741473 100644
--- a/nixpkgs/pkgs/development/python-modules/snapcast/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snapcast/default.nix
@@ -5,12 +5,13 @@
 , fetchFromGitHub
 , pytestCheckHook
 , pythonOlder
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "snapcast";
-  version = "2.3.3";
-  format = "setuptools";
+  version = "2.3.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
@@ -18,9 +19,13 @@ buildPythonPackage rec {
     owner = "happyleavesaoc";
     repo = "python-snapcast";
     rev = "refs/tags/${version}";
-    hash = "sha256-IFgSO0PjlFb4XJarx50Xnx6dF4tBKk3sLcoLWVdpnk8=";
+    hash = "sha256-qADcLrE5QwoYBDEmh7hrDJZIND2k3F0OTCEHdHDu3Y0=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     construct
     packaging
diff --git a/nixpkgs/pkgs/development/python-modules/snorkel/default.nix b/nixpkgs/pkgs/development/python-modules/snorkel/default.nix
index 6e918c2f9145..8da4fd87d736 100644
--- a/nixpkgs/pkgs/development/python-modules/snorkel/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/snorkel/default.nix
@@ -20,7 +20,7 @@
 }:
 let
   pname = "snorkel";
-  version = "0.9.9";
+  version = "0.10.0";
 in
 buildPythonPackage {
   inherit pname version;
@@ -31,8 +31,8 @@ buildPythonPackage {
   src = fetchFromGitHub {
     owner = "snorkel-team";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-IDWYvblS0Q8ubuHzgIc7fU/gwpJ43Dd7VMWycMfAJxc=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-1DgkMHYToiI3266yCND1bXiui80x8AaBttxM83kJImw=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/speechbrain/default.nix b/nixpkgs/pkgs/development/python-modules/speechbrain/default.nix
index ddb1ab53c9c3..2a91b2b0b100 100644
--- a/nixpkgs/pkgs/development/python-modules/speechbrain/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/speechbrain/default.nix
@@ -16,7 +16,7 @@
 
 buildPythonPackage rec {
   pname = "speechbrain";
-  version = "0.5.16";
+  version = "1.0.0";
   format = "setuptools";
 
   disabled = pythonOlder "3.7";
@@ -25,7 +25,7 @@ buildPythonPackage rec {
     owner = "speechbrain";
     repo = "speechbrain";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Mve6wr3klXMe7sCiJjPuzUPKGHRyI/LzTe6Ea39zNHw=";
+    hash = "sha256-s23RHxqr+ZCWPYNchFpyYa01mY+Bum3thgNbJP8rAmA=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/sqlglot/default.nix b/nixpkgs/pkgs/development/python-modules/sqlglot/default.nix
index f02a32d0f64f..7eb9ee70eca9 100644
--- a/nixpkgs/pkgs/development/python-modules/sqlglot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/sqlglot/default.nix
@@ -11,7 +11,7 @@
 
 buildPythonPackage rec {
   pname = "sqlglot";
-  version = "20.9.0";
+  version = "21.1.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
     repo = "sqlglot";
     owner = "tobymao";
     rev = "refs/tags/v${version}";
-    hash = "sha256-4czhmAJUDRj0x8dCmIXg5BQ1Uvie5vx+UtWdSSY5mnM=";
+    hash = "sha256-xMKDkhotVBkLzn+f9RMGCPfWTF4Rz9a193nSJv5z+iA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/systembridgeconnector/default.nix b/nixpkgs/pkgs/development/python-modules/systembridgeconnector/default.nix
index c1b734bcbda9..bb3a714d68a9 100644
--- a/nixpkgs/pkgs/development/python-modules/systembridgeconnector/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/systembridgeconnector/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "systembridgeconnector";
-  version = "4.0.1";
+  version = "4.0.2";
   pyproject = true;
 
   disabled = pythonOlder "3.11";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "timmo001";
     repo = "system-bridge-connector";
     rev = "refs/tags/${version}";
-    hash = "sha256-dMOhw7e2sCmGItsgGcGxYVCIJM2FBm6IyxIQXPtY+Pg=";
+    hash = "sha256-CbLm2CHofgtaTHuGDexVEKmy8+ovvvGJOO3iiAimLTg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/tensordict/default.nix b/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
index 1c5bad17e8a0..6c64ca00c5ee 100644
--- a/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tensordict/default.nix
@@ -10,11 +10,12 @@
 , numpy
 , h5py
 , pytestCheckHook
+, stdenv
 }:
 
 buildPythonPackage rec {
   pname = "tensordict";
-  version = "0.3.0";
+  version = "0.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -23,7 +24,7 @@ buildPythonPackage rec {
     owner = "pytorch";
     repo = "tensordict";
     rev = "refs/tags/v${version}";
-    hash = "sha256-XTFUzPs/fqX3DPtu/qSE1hY+7r/HToPVPaTyVRzDT/E=";
+    hash = "sha256-eCx1r7goqOdGX/0mSGCiLhdGQTh4Swa5aFiLSsL56p0=";
   };
 
   nativeBuildInputs = [
@@ -53,6 +54,18 @@ buildPythonPackage rec {
     pytestCheckHook
   ];
 
+  # RuntimeError: internal error
+  disabledTests = lib.optionals (stdenv.hostPlatform.system == "aarch64-linux") [
+    "test_add_scale_sequence"
+    "test_modules"
+    "test_setattr"
+  ];
+
+  # ModuleNotFoundError: No module named 'torch._C._distributed_c10d'; 'torch._C' is not a package
+  disabledTestPaths = lib.optionals stdenv.isDarwin [
+    "test/test_distributed.py"
+  ];
+
   meta = with lib; {
     description = "A pytorch dedicated tensor container";
     changelog = "https://github.com/pytorch/tensordict/releases/tag/v${version}";
diff --git a/nixpkgs/pkgs/development/python-modules/termcolor/default.nix b/nixpkgs/pkgs/development/python-modules/termcolor/default.nix
index 9a0af4e558e2..474af852d39f 100644
--- a/nixpkgs/pkgs/development/python-modules/termcolor/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/termcolor/default.nix
@@ -30,9 +30,8 @@ buildPythonPackage rec {
   ];
 
   meta = with lib; {
-    description = "Termcolor";
-    homepage = "https://pypi.python.org/pypi/termcolor";
+    description = "ANSI color formatting for output in terminal";
+    homepage = "https://github.com/termcolor/termcolor";
     license = licenses.mit;
   };
-
 }
diff --git a/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix b/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix
index 598c68884d3b..faed23aa2d14 100644
--- a/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/tesla-fleet-api/default.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "tesla-fleet-api";
-  version = "0.4.4";
+  version = "0.4.6";
   pyproject = true;
 
   disabled = pythonOlder "3.10";
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "Teslemetry";
     repo = "python-tesla-fleet-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-80VjSg94gCXzqy6Z/yuDblYgo4TlJdxR+jsOiY/Zhng=";
+    hash = "sha256-4IXLtQyEi4R7aakaLCl9jpm3D/Es3wLIwigSTYK12kg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix b/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix
index 6d8c9c9f83d2..092a3d03b602 100644
--- a/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/thriftpy2/default.nix
@@ -10,7 +10,7 @@
 
 buildPythonPackage rec {
   pname = "thriftpy2";
-  version = "0.4.16";
+  version = "0.4.19";
   format = "setuptools";
 
   disabled = pythonOlder "3.6";
@@ -19,7 +19,7 @@ buildPythonPackage rec {
     owner = "Thriftpy";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-o+h38NREnh14M23gyF2X2UdW7/spmHFo0rqvkKnmSRQ=";
+    hash = "sha256-u5k9dP6llfTjM745fRHvKC2vM7jd9D8lvPUsDcYx0EI=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/torch/default.nix b/nixpkgs/pkgs/development/python-modules/torch/default.nix
index 388f66f40a49..d6c51904bd9d 100644
--- a/nixpkgs/pkgs/development/python-modules/torch/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/torch/default.nix
@@ -8,7 +8,7 @@
   magma-hip,
   magma-cuda-static,
   # Use the system NCCL as long as we're targeting CUDA on a supported platform.
-  useSystemNccl ? (cudaSupport && !cudaPackages.nccl.meta.unsupported),
+  useSystemNccl ? (cudaSupport && !cudaPackages.nccl.meta.unsupported || rocmSupport),
   MPISupport ? false, mpi,
   buildDocs ? false,
 
diff --git a/nixpkgs/pkgs/development/python-modules/trimesh/default.nix b/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
index 4ba34211571c..de16dec6240b 100644
--- a/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/trimesh/default.nix
@@ -10,14 +10,14 @@
 
 buildPythonPackage rec {
   pname = "trimesh";
-  version = "4.1.5";
+  version = "4.1.6";
   format = "pyproject";
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-m7Qhx8vdQAtvBtJS+4nQQSh0qnp/TRXoch/WJgk/7EI=";
+    hash = "sha256-ps99+3JDyKuB25G1hho6MClDFp48N/dBarHZUpcZK30=";
   };
 
   nativeBuildInputs = [ setuptools ];
diff --git a/nixpkgs/pkgs/development/python-modules/twilio/default.nix b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
index 2deb71addc84..b730c0951194 100644
--- a/nixpkgs/pkgs/development/python-modules/twilio/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/twilio/default.nix
@@ -19,7 +19,7 @@
 
 buildPythonPackage rec {
   pname = "twilio";
-  version = "8.13.0";
+  version = "9.0.0";
   pyproject = true;
 
   disabled = pythonOlder "3.7";
@@ -28,7 +28,7 @@ buildPythonPackage rec {
     owner = "twilio";
     repo = "twilio-python";
     rev = "refs/tags/${version}";
-    hash = "sha256-HlHT7fJbDz8+7pTWHortK2xKDzoIQElJPbUTxmIdGCs=";
+    hash = "sha256-5PhINmG1y+oAEpfxaB8ZFHfWlo0jRZnUKO5oUPcnFuM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-aiobotocore/default.nix b/nixpkgs/pkgs/development/python-modules/types-aiobotocore/default.nix
index e69d9ab8e5df..ce64a0833e04 100644
--- a/nixpkgs/pkgs/development/python-modules/types-aiobotocore/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-aiobotocore/default.nix
@@ -364,12 +364,12 @@
 
 buildPythonPackage rec {
   pname = "types-aiobotocore";
-  version = "2.11.2";
+  version = "2.12.0";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-bnYg/u2BvG3/iBJ5xKQwiMG/n8vREpnOGHYaSlwlnRs=";
+    hash = "sha256-ma/pyfhqWpWFZ+V4O+mNr4SfoOC4/vn9+Hy+rYGAaG8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix b/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix
index 923d2e581f97..687dadc3eb65 100644
--- a/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-beautifulsoup4/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-beautifulsoup4";
-  version = "4.12.0.20240106";
+  version = "4.12.0.20240229";
   format = "setuptools";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-mNYomFtxsUC9O8IqjLCrYDwvLQjyDTeSWWXrSiFzm+g=";
+    hash = "sha256-435M+hGwOwF3VzLlbSwBDLJO4Qd4Yne65rwPo+MFtoY=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-docutils/default.nix b/nixpkgs/pkgs/development/python-modules/types-docutils/default.nix
index 13cd4f61f93c..69cbd695f910 100644
--- a/nixpkgs/pkgs/development/python-modules/types-docutils/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-docutils/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-docutils";
-  version = "0.20.0.20240201";
+  version = "0.20.0.20240227";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-ukv9T/bdGWQLp6tdk5ADk6ZYl4gPNlCZeWSpQ/Tnmms=";
+    hash = "sha256-fy27AjVgJLXbPv2d8msjbaBQrS6tqJhy5ShLSjlLd2E=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-html5lib/default.nix b/nixpkgs/pkgs/development/python-modules/types-html5lib/default.nix
index 7e5fbfe90251..996f8b4e5c3d 100644
--- a/nixpkgs/pkgs/development/python-modules/types-html5lib/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/types-html5lib/default.nix
@@ -6,12 +6,12 @@
 
 buildPythonPackage rec {
   pname = "types-html5lib";
-  version = "1.1.11.20240222";
+  version = "1.1.11.20240228";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-2VF+xrovofYxE+KTClm2ByKpdsyYO5TX/XcvFIZeEVI=";
+    hash = "sha256-InNrcpnmBexLpTnUhpHpBf0MYcPqYQrMWZIiMtyEzt4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/types-lxml/default.nix b/nixpkgs/pkgs/development/python-modules/types-lxml/default.nix
new file mode 100644
index 000000000000..21a8dc882161
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/types-lxml/default.nix
@@ -0,0 +1,69 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, lxml
+, pyright
+, pytestCheckHook
+, pythonOlder
+, setuptools
+, setuptools-scm
+, typeguard
+, types-beautifulsoup4
+, typing-extensions
+}:
+
+buildPythonPackage rec {
+  pname = "types-lxml";
+  version = "2024.02.09";
+  pyproject = true;
+
+  disabled = pythonOlder "3.8";
+
+  src = fetchFromGitHub {
+    owner = "abelcheung";
+    repo = "types-lxml";
+    rev = "refs/tags/${version}";
+    hash = "sha256-vmRbzfwlGGxd64KX8j4B3O9c7kg7hXSsCEYq3WAFdmk=";
+  };
+
+  nativeBuildInputs = [
+    setuptools
+    setuptools-scm
+  ];
+
+  propagatedBuildInputs = [
+    types-beautifulsoup4
+    typing-extensions
+  ];
+
+  nativeCheckInputs = [
+    lxml
+    pyright
+    pytestCheckHook
+    typeguard
+  ];
+
+  pythonImportsCheck = [
+    "lxml-stubs"
+  ];
+
+  disabledTests = [
+    # AttributeError: 'bytes' object has no attribute 'find_class'
+    # https://github.com/abelcheung/types-lxml/issues/34
+    "test_bad_methodfunc"
+    "test_find_class"
+    "test_find_rel_links"
+    "test_iterlinks"
+    "test_make_links_absolute"
+    "test_resolve_base_href"
+    "test_rewrite_links"
+  ];
+
+  meta = with lib; {
+    description = "Complete lxml external type annotation";
+    homepage = "https://github.com/abelcheung/types-lxml";
+    changelog = "https://github.com/abelcheung/types-lxml/releases/tag/${version}";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/nixpkgs/pkgs/development/python-modules/universal-silabs-flasher/default.nix b/nixpkgs/pkgs/development/python-modules/universal-silabs-flasher/default.nix
index 938856691b7a..e9b8e0294d80 100644
--- a/nixpkgs/pkgs/development/python-modules/universal-silabs-flasher/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/universal-silabs-flasher/default.nix
@@ -27,14 +27,14 @@
 
 buildPythonPackage rec {
   pname = "universal-silabs-flasher";
-  version = "0.0.18";
+  version = "0.0.19";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "NabuCasa";
     repo = "universal-silabs-flasher";
-    rev = "v${version}";
-    hash = "sha256-XUMpWzDqouhbsP+s0b13f6N0YGdXJK6qhbWQLqMzNHM=";
+    rev = "refs/tags/v${version}";
+    hash = "sha256-VoO9B27CNY2Cnt/Q2HsU6DVYkukQMgbIHc6xqfN0P7w=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/unstructured/default.nix b/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
index ac1f937a44b4..388cd89371ed 100644
--- a/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/unstructured/default.nix
@@ -56,7 +56,7 @@
 , grpcio
 }:
 let
-  version = "0.12.4";
+  version = "0.12.5";
   optional-dependencies = {
     huggingflace = [
       langdetect
@@ -90,7 +90,7 @@ buildPythonPackage {
     owner = "Unstructured-IO";
     repo = "unstructured";
     rev = "refs/tags/${version}";
-    hash = "sha256-lfsCmEhF6CTrEIa4y98NgDw6EgfLk39BVsTmYZD6MkU=";
+    hash = "sha256-69GukU2R38tM43vAk+l9vjypgjTS/Bcmcdcj1HXnzv4=";
   };
 
   propagatedBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/uproot/default.nix b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
index 288758dfb34a..9e8436bd662c 100644
--- a/nixpkgs/pkgs/development/python-modules/uproot/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/uproot/default.nix
@@ -3,6 +3,7 @@
 , fetchFromGitHub
 , pythonOlder
 , awkward
+, cramjam
 , hatch-vcs
 , hatchling
 , numpy
@@ -10,17 +11,15 @@
 , packaging
 , pandas
 , pytestCheckHook
-, lz4
 , pytest-timeout
 , rangehttpserver
 , scikit-hep-testdata
 , xxhash
-, zstandard
 }:
 
 buildPythonPackage rec {
   pname = "uproot";
-  version = "5.2.2";
+  version = "5.3.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -29,7 +28,7 @@ buildPythonPackage rec {
     owner = "scikit-hep";
     repo = "uproot5";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7X8oIMvOSC1JXQrZTPXLiqsUnfSc2Rx3KCvxKbhvPzM=";
+    hash = "sha256-cZVdsemaA3ni6xFfrkyLJA+12B7vyURj9OYVuOhqTXU=";
   };
 
   nativeBuildInputs = [
@@ -39,6 +38,7 @@ buildPythonPackage rec {
 
   propagatedBuildInputs = [
     awkward
+    cramjam
     numpy
     fsspec
     packaging
@@ -47,12 +47,10 @@ buildPythonPackage rec {
   nativeCheckInputs = [
     pandas
     pytestCheckHook
-    lz4
     pytest-timeout
     rangehttpserver
     scikit-hep-testdata
     xxhash
-    zstandard
   ];
 
   preCheck = ''
@@ -79,6 +77,8 @@ buildPythonPackage rec {
     "test_open_fsspec_http"
     "test_open_fsspec_github"
     "test_pickle_roundtrip_http"
+    # Cyclic dependency with dask-awkward
+    "test_decompression_executor_for_dask"
   ];
 
   disabledTestPaths = [
diff --git a/nixpkgs/pkgs/development/python-modules/urwid-readline/default.nix b/nixpkgs/pkgs/development/python-modules/urwid-readline/default.nix
index 7d24067fd110..3e47f886cdb7 100644
--- a/nixpkgs/pkgs/development/python-modules/urwid-readline/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/urwid-readline/default.nix
@@ -1,26 +1,34 @@
 { lib
 , buildPythonPackage
-, fetchPypi
+, fetchFromGitHub
+, setuptools
 , urwid
-, glibcLocales
 , pytestCheckHook
 }:
 
 buildPythonPackage rec {
-  pname = "urwid_readline";
-  version = "0.13";
+  pname = "urwid-readline";
+  version = "0.14";
+  pyproject = true;
 
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-AYAgy8hku17Ye+F9wmsGnq4nVcsp86nFaarDve0e+vQ=";
+  src = fetchFromGitHub {
+    owner = "rr-";
+    repo = "urwid_readline";
+    rev = "refs/tags/${version}";
+    hash = "sha256-ZTg+GZnu7R6Jf2+SIwVo57yHnjwuY92DElTJs8oRErE=";
   };
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     urwid
   ];
 
+  pythonImportsCheck = [ "urwid_readline" ];
+
   nativeCheckInputs = [
-    glibcLocales
     pytestCheckHook
   ];
 
diff --git a/nixpkgs/pkgs/development/python-modules/userpath/default.nix b/nixpkgs/pkgs/development/python-modules/userpath/default.nix
index 5f4a31d39b19..014de3cfeb1e 100644
--- a/nixpkgs/pkgs/development/python-modules/userpath/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/userpath/default.nix
@@ -8,14 +8,14 @@
 
 buildPythonPackage rec {
   pname = "userpath";
-  version = "1.9.1";
-  format = "pyproject";
+  version = "1.9.2";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-zoF2co2YyRS2QBeBvzsj/M2WjRZHU5yHiMcBA3XgJ5Y=";
+    hash = "sha256-bFIojasGklfMgxhG0V1IEzUiRV1Gd+5pqXgfEdvv2BU=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/vllm/default.nix b/nixpkgs/pkgs/development/python-modules/vllm/default.nix
index e8127c4caf8b..4977a829d4c7 100644
--- a/nixpkgs/pkgs/development/python-modules/vllm/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/vllm/default.nix
@@ -36,14 +36,14 @@
 
 buildPythonPackage rec {
   pname = "vllm";
-  version = "0.3.1";
+  version = "0.3.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "vllm-project";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-hfd4ScU0mkZ7z4+w08BUA1K9bPXSiFThfiO+Ll2MTtg=";
+    hash = "sha256-ZFwlR8Xnen7FFblwzPJm0k+3iEo2p27QhfRaDfzwbOM=";
   };
 
   # Otherwise it tries to enumerate host supported ROCM gfx archs, and that is not possible due to sandboxing.
@@ -62,11 +62,11 @@ buildPythonPackage rec {
     substituteInPlace requirements.txt \
       --replace "cupy-cuda12x == 12.1.0" "cupy == 12.3.0"
     substituteInPlace requirements-build.txt \
-      --replace "torch==2.1.2" "torch == 2.2.0"
+      --replace "torch==2.1.2" "torch == 2.2.1"
     substituteInPlace pyproject.toml \
-      --replace "torch == 2.1.2" "torch == 2.2.0"
+      --replace "torch == 2.1.2" "torch == 2.2.1"
     substituteInPlace requirements.txt \
-      --replace "torch == 2.1.2" "torch == 2.2.0"
+      --replace "torch == 2.1.2" "torch == 2.2.1"
   '' + lib.optionalString rocmSupport ''
     substituteInPlace setup.py \
       --replace "'hipcc', '--version'" "'${writeShellScript "hipcc-version-stub" "echo HIP version: 0.0"}'"
diff --git a/nixpkgs/pkgs/development/python-modules/wagtail-localize/default.nix b/nixpkgs/pkgs/development/python-modules/wagtail-localize/default.nix
index 14b6a094912a..aa64499fd37a 100644
--- a/nixpkgs/pkgs/development/python-modules/wagtail-localize/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/wagtail-localize/default.nix
@@ -17,16 +17,16 @@
 
 buildPythonPackage rec {
   pname = "wagtail-localize";
-  version = "1.8";
-  format = "pyproject";
+  version = "1.8.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
-    repo = pname;
+    repo = "wagtail-localize";
     owner = "wagtail";
     rev = "refs/tags/v${version}";
-    hash = "sha256-K4TOW4q8vD9vaNJzSEtmQBgO/dOxcWKKUp2FE3JLIbE=";
+    hash = "sha256-WOkixwcGvsH4vgL7KAQeeGtoh3+Usr9drXb3Uho1AS0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix b/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix
index 3f85f8064899..5e00ef399e61 100644
--- a/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/weconnect-mqtt/default.nix
@@ -6,12 +6,13 @@
 , paho-mqtt
 , python-dateutil
 , weconnect
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "weconnect-mqtt";
-  version = "0.48.3";
-  format = "setuptools";
+  version = "0.48.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -19,19 +20,23 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-mqtt";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Pja9BP0gbWXTgOokEngNS364tJp1oWJYNKcTxyYJHGw=";
+    hash = "sha256-Yv6CAGTDi4P9pImLxVk2QkZ014iqQ8UMBUeiyZWnYiQ=";
   };
 
   postPatch = ''
-    substituteInPlace requirements.txt \
-      --replace "weconnect[Images]~=" "weconnect>="
     substituteInPlace weconnect_mqtt/__version.py \
-      --replace "develop" "${version}"
+      --replace-fail "0.0.0dev" "${version}"
+    substituteInPlace requirements.txt \
+      --replace-fail "weconnect[Images]~=" "weconnect>="
     substituteInPlace pytest.ini \
-      --replace "--cov=weconnect_mqtt --cov-config=.coveragerc --cov-report html" "" \
-      --replace "pytest-cov" ""
+      --replace-fail "--cov=weconnect_mqtt --cov-config=.coveragerc --cov-report html" "" \
+      --replace-fail "pytest-cov" ""
   '';
 
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     paho-mqtt
     python-dateutil
diff --git a/nixpkgs/pkgs/development/python-modules/weconnect/default.nix b/nixpkgs/pkgs/development/python-modules/weconnect/default.nix
index e9f4877110ef..df6a1529e929 100644
--- a/nixpkgs/pkgs/development/python-modules/weconnect/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/weconnect/default.nix
@@ -2,18 +2,18 @@
 , ascii-magic
 , buildPythonPackage
 , fetchFromGitHub
+, oauthlib
 , pillow
-, pytest-httpserver
 , pytestCheckHook
 , pythonOlder
 , requests
-, oauthlib
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "weconnect";
-  version = "0.59.5";
-  format = "setuptools";
+  version = "0.60.1";
+  pyproject = true;
 
   disabled = pythonOlder "3.8";
 
@@ -21,9 +21,24 @@ buildPythonPackage rec {
     owner = "tillsteinbach";
     repo = "WeConnect-python";
     rev = "refs/tags/v${version}";
-    hash = "sha256-ujIA98QD8ds2/iLLeJqn88nY9tZuuOSnOwGvRznA8PQ=";
+    hash = "sha256-hvV4pbCyzAbi3bKXClzpiyhp+4qnuIj5pViUe7pEq64=";
   };
 
+  postPatch = ''
+    substituteInPlace weconnect/__version.py \
+      --replace-fail "0.0.0dev" "${version}"
+    substituteInPlace setup.py \
+      --replace-fail "setup_requires=SETUP_REQUIRED" "setup_requires=[]" \
+      --replace-fail "tests_require=TEST_REQUIRED" "tests_require=[]"
+    substituteInPlace pytest.ini \
+      --replace-fail "--cov=weconnect --cov-config=.coveragerc --cov-report html" "" \
+      --replace-fail "required_plugins = pytest-cov" ""
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     oauthlib
     requests
@@ -37,24 +52,9 @@ buildPythonPackage rec {
   };
 
   nativeCheckInputs = [
-    pytest-httpserver
     pytestCheckHook
   ];
 
-  postPatch = ''
-    substituteInPlace weconnect/__version.py \
-      --replace "develop" "${version}"
-    substituteInPlace setup.py \
-      --replace "setup_requires=SETUP_REQUIRED," "setup_requires=[]," \
-      --replace "tests_require=TEST_REQUIRED," "tests_require=[],"
-    substituteInPlace image_extra_requirements.txt \
-      --replace "pillow~=" "pillow>=" \
-      --replace "ascii_magic~=" "ascii_magic>="
-    substituteInPlace pytest.ini \
-      --replace "--cov=weconnect --cov-config=.coveragerc --cov-report html" "" \
-      --replace "required_plugins = pytest-httpserver pytest-cov" ""
-  '';
-
   pythonImportsCheck = [
     "weconnect"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/xknx/default.nix b/nixpkgs/pkgs/development/python-modules/xknx/default.nix
index 91721fdd169a..237c7827f1e2 100644
--- a/nixpkgs/pkgs/development/python-modules/xknx/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xknx/default.nix
@@ -4,16 +4,15 @@
 , fetchFromGitHub
 , cryptography
 , ifaddr
-, pytest-asyncio
+, pytest-asyncio_0_21
 , pytestCheckHook
 , pythonOlder
 , setuptools
-, wheel
 }:
 
 buildPythonPackage rec {
   pname = "xknx";
-  version = "2.12.0";
+  version = "2.12.1";
   pyproject = true;
 
   disabled = pythonOlder "3.8";
@@ -22,12 +21,11 @@ buildPythonPackage rec {
     owner = "XKNX";
     repo = "xknx";
     rev = "refs/tags/${version}";
-    hash = "sha256-Fwo76tvkLLx8QJeokuGohhnt83eGBMyWIUSHJGuQWJ4=";
+    hash = "sha256-O8xhih/EVULTq4jdmxInzXRO4m6PJA9pyzsHjR+58dQ=";
   };
 
   nativeBuildInputs = [
     setuptools
-    wheel
   ];
 
   propagatedBuildInputs = [
@@ -37,7 +35,7 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
-    pytest-asyncio
+    pytest-asyncio_0_21
     pytestCheckHook
   ];
 
@@ -50,6 +48,15 @@ buildPythonPackage rec {
     "test_scan_timeout"
     "test_start_secure_routing_knx_keys"
     "test_start_secure_routing_manual"
+    # RuntimeError: Event loop is closed
+    "test_has_group_address_localtime"
+    "test_invalid_authentication"
+    "test_invalid_frames"
+    "test_no_authentication"
+    "test_process_read_localtime"
+    "test_sync_date"
+    "test_sync_datetime"
+    "test_sync_time_local"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/python-modules/xknxproject/default.nix b/nixpkgs/pkgs/development/python-modules/xknxproject/default.nix
index f5e47f196dca..1b0098629a92 100644
--- a/nixpkgs/pkgs/development/python-modules/xknxproject/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/xknxproject/default.nix
@@ -12,7 +12,7 @@
 
 buildPythonPackage rec {
   pname = "xknxproject";
-  version = "3.6.0";
+  version = "3.7.0";
   pyproject = true;
 
   disabled = pythonOlder "3.9";
@@ -21,7 +21,7 @@ buildPythonPackage rec {
     owner = "XKNX";
     repo = "xknxproject";
     rev = "refs/tags/${version}";
-    hash = "sha256-7WK4TgrTuUwR33d1N8+VmgZ6iylyfIJbFCyxh49luL0=";
+    hash = "sha256-tw/hHiiW4ZGlrbQmuIihJmhyIL++Rjpg6q8AdKNsn14=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/yalexs-ble/default.nix b/nixpkgs/pkgs/development/python-modules/yalexs-ble/default.nix
index b32403a6a97d..93a16ea29f9b 100644
--- a/nixpkgs/pkgs/development/python-modules/yalexs-ble/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yalexs-ble/default.nix
@@ -15,7 +15,7 @@
 
 buildPythonPackage rec {
   pname = "yalexs-ble";
-  version = "2.4.1";
+  version = "2.4.2";
   format = "pyproject";
 
   disabled = pythonOlder "3.9";
@@ -24,7 +24,7 @@ buildPythonPackage rec {
     owner = "bdraco";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-u6Mhqt6DcPiini8EvtqKoVAYUwb31hvWfCNb/sbqvWQ=";
+    hash = "sha256-A/4N3vmFuzg9vaPISs0P3KxRQZSquPpR1zYcYEePkTA=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
index 02e72f9244fc..159232118605 100644
--- a/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yalexs/default.nix
@@ -13,22 +13,33 @@
 , pythonOlder
 , requests
 , requests-mock
+, setuptools
 }:
 
 buildPythonPackage rec {
   pname = "yalexs";
-  version = "1.11.2";
-  format = "setuptools";
+  version = "1.11.4";
+  pyproject = true;
 
   disabled = pythonOlder "3.9";
 
   src = fetchFromGitHub {
     owner = "bdraco";
-    repo = pname;
+    repo = "yalexs";
     rev = "refs/tags/v${version}";
-    hash = "sha256-FHaHXbRtgbBrveHPbrPsP+vGIvscot3ilpPFucISces=";
+    hash = "sha256-LzjkR60zelxV8N4i68M31yJJLEThUgz6+hYd6d+EHx4=";
   };
 
+  postPatch = ''
+    # Not used requirement
+    substituteInPlace setup.py \
+      --replace-fail '"vol",' ""
+  '';
+
+  nativeBuildInputs = [
+    setuptools
+  ];
+
   propagatedBuildInputs = [
     aiofiles
     aiohttp
@@ -46,12 +57,6 @@ buildPythonPackage rec {
     requests-mock
   ];
 
-  postPatch = ''
-    # Not used requirement
-    substituteInPlace setup.py \
-      --replace '"vol",' ""
-  '';
-
   pythonImportsCheck = [
     "yalexs"
   ];
diff --git a/nixpkgs/pkgs/development/python-modules/yaspin/default.nix b/nixpkgs/pkgs/development/python-modules/yaspin/default.nix
index c90da30a746b..0235c06ab149 100644
--- a/nixpkgs/pkgs/development/python-modules/yaspin/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yaspin/default.nix
@@ -2,6 +2,7 @@
 , buildPythonPackage
 , fetchFromGitHub
 , poetry-core
+, pytest-xdist
 , pytestCheckHook
 , pythonOlder
 , termcolor
@@ -30,13 +31,13 @@ buildPythonPackage rec {
   ];
 
   nativeCheckInputs = [
+    pytest-xdist
     pytestCheckHook
   ];
 
-  postPatch = ''
-    # https://github.com/pavdmyt/yaspin/pull/212
-    substituteInPlace pyproject.toml \
-      --replace 'termcolor-whl = "1.1.2"' 'termcolor = "*"'
+  # tests assert for \033 which gets turned off in termcolor when TERM dumb is used which is used by nix
+  preCheck = ''
+    export FORCE_COLOR=1
   '';
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix b/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
index 5c155094cf64..e1e43b34a7ae 100644
--- a/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
+++ b/nixpkgs/pkgs/development/python-modules/yolink-api/default.nix
@@ -11,16 +11,16 @@
 
 buildPythonPackage rec {
   pname = "yolink-api";
-  version = "0.3.7";
-  format = "pyproject";
+  version = "0.3.9";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchFromGitHub {
     owner = "YoSmart-Inc";
-    repo = pname;
+    repo = "yolink-api";
     rev = "refs/tags/v${version}";
-    hash = "sha256-P9Hu3JhoFDwKylTAZmXYX2AI2CPf/GbYhJCU4wX/aWY=";
+    hash = "sha256-RXO++8Dh0hLkjXev/WDhPixLHKXlqRabbrPW6Hs/xoM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/quickemu/default.nix b/nixpkgs/pkgs/development/quickemu/default.nix
index 576c827e84b0..c8893a4e06b2 100644
--- a/nixpkgs/pkgs/development/quickemu/default.nix
+++ b/nixpkgs/pkgs/development/quickemu/default.nix
@@ -61,8 +61,8 @@ stdenv.mkDerivation rec {
 
   postPatch = ''
     sed -i \
-      -e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.fd}/FV/OVMF_CODE.fd","${OVMFFull.fd}/FV/OVMF_VARS.fd" |' \
-      -e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.fd}/FV/OVMF_CODE.fd","${OVMF.fd}/FV/OVMF_VARS.fd" |' \
+      -e '/OVMF_CODE_4M.secboot.fd/s|ovmfs=(|ovmfs=("${OVMFFull.firmware}","${OVMFFull.variables}" |' \
+      -e '/OVMF_CODE_4M.fd/s|ovmfs=(|ovmfs=("${OVMF.firmware}","${OVMF.variables}" |' \
       -e '/cp "''${VARS_IN}" "''${VARS_OUT}"/a chmod +w "''${VARS_OUT}"' \
       -e 's/Icon=.*qemu.svg/Icon=qemu/' \
       quickemu
diff --git a/nixpkgs/pkgs/development/r-modules/default.nix b/nixpkgs/pkgs/development/r-modules/default.nix
index e7005357f2bb..fb3e6ffb9d00 100644
--- a/nixpkgs/pkgs/development/r-modules/default.nix
+++ b/nixpkgs/pkgs/development/r-modules/default.nix
@@ -452,6 +452,7 @@ let
     topicmodels = [ pkgs.gsl ];
     udunits2 = with pkgs; [ udunits expat ];
     units = [ pkgs.udunits ];
+    vdiffr = [ pkgs.libpng.dev ];
     V8 = [ pkgs.v8 ];
     XBRL = with pkgs; [ zlib libxml2.dev ];
     XLConnect = [ pkgs.jdk ];
@@ -500,9 +501,10 @@ let
     RDieHarder = [ pkgs.gsl ];
     QF = [ pkgs.gsl ];
     PICS = [ pkgs.gsl ];
-    RcppCWB = [ pkgs.pkg-config ];
+    RcppCWB = [ pkgs.pkg-config pkgs.pcre2 ];
     redux = [ pkgs.pkg-config ];
     rrd = [ pkgs.pkg-config ];
+    Rbwa = [ pkgs.zlib.dev ];
     trackViewer = [ pkgs.zlib.dev ];
     themetagenomics = [ pkgs.zlib.dev ];
     NanoMethViz = [ pkgs.zlib.dev ];
@@ -593,6 +595,7 @@ let
     Signac = [ pkgs.zlib.dev ];
     TransView = [ pkgs.zlib.dev ];
     bigsnpr = [ pkgs.zlib.dev ];
+    zlib = [ pkgs.zlib.dev ];
     divest = [ pkgs.zlib.dev ];
     hipread = [ pkgs.zlib.dev ];
     jackalope = with pkgs; [ zlib.dev xz.dev ];
diff --git a/nixpkgs/pkgs/development/skaware-packages/s6-networking/default.nix b/nixpkgs/pkgs/development/skaware-packages/s6-networking/default.nix
index 6e3722ef5772..1b8cd4e88fea 100644
--- a/nixpkgs/pkgs/development/skaware-packages/s6-networking/default.nix
+++ b/nixpkgs/pkgs/development/skaware-packages/s6-networking/default.nix
@@ -19,8 +19,8 @@ assert sslSupportEnabled -> sslLibs ? ${sslSupport};
 
 buildPackage {
   pname = "s6-networking";
-  version = "2.7.0.1";
-  sha256 = "36SWTU8b2umrX8RQh2n9b+/DOlJ9UVOjd3xrBG7upWQ=";
+  version = "2.7.0.2";
+  sha256 = "wzxvGyvhb4miGvlGz9BiQqEvmBhMiYt1XdskM4ZxzrE=";
 
   description = "A suite of small networking utilities for Unix systems";
 
diff --git a/nixpkgs/pkgs/development/skaware-packages/s6-rc-man-pages/default.nix b/nixpkgs/pkgs/development/skaware-packages/s6-rc-man-pages/default.nix
index 2c1df664431a..e919746fccdb 100644
--- a/nixpkgs/pkgs/development/skaware-packages/s6-rc-man-pages/default.nix
+++ b/nixpkgs/pkgs/development/skaware-packages/s6-rc-man-pages/default.nix
@@ -2,7 +2,7 @@
 
 buildManPages {
   pname = "s6-rc-man-pages";
-  version = "0.5.4.1.2";
+  version = "0.5.4.2.1";
   sha256 = "Ywke3FG/xhhUd934auDB+iFRDCvy8IJs6IkirP6O/As=";
   description = "mdoc(7) versions of the documentation for the s6-rc service manager";
   maintainers = [ lib.maintainers.qyliss ];
diff --git a/nixpkgs/pkgs/development/skaware-packages/skalibs/default.nix b/nixpkgs/pkgs/development/skaware-packages/skalibs/default.nix
index 7dc87458b620..aecbceda7506 100644
--- a/nixpkgs/pkgs/development/skaware-packages/skalibs/default.nix
+++ b/nixpkgs/pkgs/development/skaware-packages/skalibs/default.nix
@@ -8,8 +8,8 @@ with skawarePackages;
 
 buildPackage {
   pname = "skalibs";
-  version = "2.14.1.0";
-  sha256 = "24YTUWEngQ2N/thutCRaX/JCBPHhb6KOiqrTRtlqrug=";
+  version = "2.14.1.1";
+  sha256 = "trebgW9LoLaAFnaw7UF5tZyMeAnu/+JttnLkBGNr78M=";
 
   description = "A set of general-purpose C programming libraries";
 
diff --git a/nixpkgs/pkgs/development/tools/analysis/checkov/default.nix b/nixpkgs/pkgs/development/tools/analysis/checkov/default.nix
index a60ef454284d..b2c5f8477e81 100644
--- a/nixpkgs/pkgs/development/tools/analysis/checkov/default.nix
+++ b/nixpkgs/pkgs/development/tools/analysis/checkov/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "checkov";
-  version = "3.2.8";
+  version = "3.2.24";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "bridgecrewio";
     repo = "checkov";
     rev = "refs/tags/${version}";
-    hash = "sha256-Hd1YOzIH6v8N/oP2cJRUv6OkgOv9aSe7nkvzpsCN3rc=";
+    hash = "sha256-1v6Mft+FVEGXNQDiulpOvRy3KAD1JPkstjrURlL5r4o=";
   };
 
   patches = [
@@ -20,6 +20,8 @@ python3.pkgs.buildPythonApplication rec {
   ];
 
   pythonRelaxDeps = [
+    "boto3"
+    "botocore"
     "bc-detect-secrets"
     "bc-python-hcl2"
     "dpath"
diff --git a/nixpkgs/pkgs/development/tools/analysis/snyk/default.nix b/nixpkgs/pkgs/development/tools/analysis/snyk/default.nix
index fc5db92cb161..b87bb1a11634 100644
--- a/nixpkgs/pkgs/development/tools/analysis/snyk/default.nix
+++ b/nixpkgs/pkgs/development/tools/analysis/snyk/default.nix
@@ -2,16 +2,16 @@
 
 buildNpmPackage rec {
   pname = "snyk";
-  version = "1.1276.0";
+  version = "1.1280.1";
 
   src = fetchFromGitHub {
     owner = "snyk";
     repo = "cli";
     rev = "v${version}";
-    hash = "sha256-l5Xx6z3NbtwdtKe8MmRWTJoKaEH3AZjHKXqoLv3rHfU=";
+    hash = "sha256-bwEekB/jifSRktblvq98C3t2xSTTPn4NOftQs/T090U=";
   };
 
-  npmDepsHash = "sha256-FJGxCEhBADH4c1khJaVFHL4e25Mq4PHrez+2NPFBx0w=";
+  npmDepsHash = "sha256-TtWc+Zy6yMHbDdsw5rVKK+RiCZ8ZuXyU+SfcPRgToiA=";
 
   postPatch = ''
     substituteInPlace package.json --replace '"version": "1.0.0-monorepo"' '"version": "${version}"'
diff --git a/nixpkgs/pkgs/development/tools/bearer/default.nix b/nixpkgs/pkgs/development/tools/bearer/default.nix
index 36d87efb1299..5cd2cfff0d76 100644
--- a/nixpkgs/pkgs/development/tools/bearer/default.nix
+++ b/nixpkgs/pkgs/development/tools/bearer/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "bearer";
-  version = "1.39.0";
+  version = "1.40.1";
 
   src = fetchFromGitHub {
     owner = "bearer";
     repo = "bearer";
     rev = "refs/tags/v${version}";
-    hash = "sha256-GgdEOTrzaTsSTRW2NUzdxzUxGI1UCIk/6mAoyRysRVc=";
+    hash = "sha256-yfgbkF7ANJyyy3qYNLOg85+MJ8SdHCZkXsOhH0vzy8o=";
   };
 
-  vendorHash = "sha256-fCSgRjsioXyt9mxQoZxyA+F63FAwlmwJAjquR+zAgQg=";
+  vendorHash = "sha256-TKdZVNt98jrIzXekfxRXfxEfEhb2doWTTGojOLOcKzU=";
 
   subPackages = [
     "cmd/bearer"
diff --git a/nixpkgs/pkgs/development/tools/biome/default.nix b/nixpkgs/pkgs/development/tools/biome/default.nix
index c7f3632a0846..2f1a5da293c5 100644
--- a/nixpkgs/pkgs/development/tools/biome/default.nix
+++ b/nixpkgs/pkgs/development/tools/biome/default.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-, libgit2_1_6
+, libgit2
 , rust-jemalloc-sys
 , zlib
 , stdenv
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_6
+    libgit2
     rust-jemalloc-sys
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   env = {
     BIOME_VERSION = version;
+    LIBGIT2_NO_VENDOR = 1;
   };
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/development/tools/build-managers/xmake/default.nix b/nixpkgs/pkgs/development/tools/build-managers/xmake/default.nix
index 80c610eaa32b..b6d2f8ab6909 100644
--- a/nixpkgs/pkgs/development/tools/build-managers/xmake/default.nix
+++ b/nixpkgs/pkgs/development/tools/build-managers/xmake/default.nix
@@ -12,11 +12,11 @@
 
 stdenv.mkDerivation rec {
   pname = "xmake";
-  version = "2.8.6";
+  version = "2.8.7";
 
   src = fetchurl {
     url = "https://github.com/xmake-io/xmake/releases/download/v${version}/xmake-v${version}.tar.gz";
-    hash = "sha256-DmKE6v1RoyNgmCE8CVI39WrK+umoilBAa4gszl6iaz0=";
+    hash = "sha256-jHqMb3ex/BcF54ViTpoelEcWhEqDeP7Oc0HeJ7mfC4k=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/development/tools/buildah/default.nix b/nixpkgs/pkgs/development/tools/buildah/default.nix
index f67dba03c365..9c3e988085d8 100644
--- a/nixpkgs/pkgs/development/tools/buildah/default.nix
+++ b/nixpkgs/pkgs/development/tools/buildah/default.nix
@@ -17,13 +17,13 @@
 
 buildGoModule rec {
   pname = "buildah";
-  version = "1.34.0";
+  version = "1.34.1";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = "buildah";
     rev = "v${version}";
-    hash = "sha256-LX7yc2FnCiquHV/tESJV/VkuUYXbRNSxmMzVpSz/F8w=";
+    hash = "sha256-0mH6s9BSTkXutwYVG3EpqEcildO3g37Us4pdTmLPcAQ=";
   };
 
   outputs = [ "out" "man" ];
@@ -62,6 +62,10 @@ buildGoModule rec {
 
   passthru.tests.version = testers.testVersion {
     package = buildah;
+    command = ''
+      XDG_DATA_HOME="$TMPDIR" XDG_CACHE_HOME="$TMPDIR" XDG_CONFIG_HOME="$TMPDIR" \
+      buildah --version
+    '';
   };
 
   meta = with lib; {
@@ -72,3 +76,4 @@ buildGoModule rec {
     maintainers = with maintainers; [ ] ++ teams.podman.members;
   };
 }
+
diff --git a/nixpkgs/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix b/nixpkgs/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
index b1098bd32129..51ed01e27d58 100644
--- a/nixpkgs/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/continuous-integration/cirrus-cli/default.nix
@@ -6,13 +6,13 @@
 
 buildGoModule rec {
   pname = "cirrus-cli";
-  version = "0.112.0";
+  version = "0.112.1";
 
   src = fetchFromGitHub {
     owner = "cirruslabs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-3ad/2h9rw1BeMcr1lLEZp4fzJHfwl7y3/tTjmKKAvho=";
+    sha256 = "sha256-v0VYjG1GJwfXXabk9aBs99xGk6F0bFPFBBe//T7P4yQ=";
   };
 
   vendorHash = "sha256-tHEbHExdbWeZm3+rwRYpRILyPYEYdeVJ91Qr/yNIKV8=";
diff --git a/nixpkgs/pkgs/development/tools/continuous-integration/github-runner/default.nix b/nixpkgs/pkgs/development/tools/continuous-integration/github-runner/default.nix
index 69b018eaea3c..fced7e79a689 100644
--- a/nixpkgs/pkgs/development/tools/continuous-integration/github-runner/default.nix
+++ b/nixpkgs/pkgs/development/tools/continuous-integration/github-runner/default.nix
@@ -23,13 +23,13 @@ assert builtins.all (x: builtins.elem x [ "node20" ]) nodeRuntimes;
 
 buildDotnetModule rec {
   pname = "github-runner";
-  version = "2.313.0";
+  version = "2.314.1";
 
   src = fetchFromGitHub {
     owner = "actions";
     repo = "runner";
     rev = "v${version}";
-    hash = "sha256-0CclkbJ8AfffdfVNXacnpgFOS+ONk6eP1LTyFa12xU4=";
+    hash = "sha256-PHcCXWA6LcxpqdbTGbOUqnS4fIJLbHOhEPdagGF71q0=";
     leaveDotGit = true;
     postFetch = ''
       git -C $out rev-parse --short HEAD > $out/.git-revision
diff --git a/nixpkgs/pkgs/development/tools/database/atlas/default.nix b/nixpkgs/pkgs/development/tools/database/atlas/default.nix
index 7d275071ee4a..581d3cda8080 100644
--- a/nixpkgs/pkgs/development/tools/database/atlas/default.nix
+++ b/nixpkgs/pkgs/development/tools/database/atlas/default.nix
@@ -2,19 +2,19 @@
 
 buildGoModule rec {
   pname = "atlas";
-  version = "0.19.0";
+  version = "0.19.1";
 
   src = fetchFromGitHub {
     owner = "ariga";
     repo = "atlas";
     rev = "v${version}";
-    hash = "sha256-aTmEQFE+W8qRn7NlMYNr1yXYHLfmvg9Wrd8fzEeaYAo=";
+    hash = "sha256-fpgtEO17mj7e+LSlUBkFgnpWpr7C1a0pXfp9H6aIXo8=";
   };
 
   modRoot = "cmd/atlas";
 
   proxyVendor = true;
-  vendorHash = "sha256-/nrnTydFwIUEUR6ej2XW4GNysO41jHHtGDb9UBEIslU=";
+  vendorHash = "sha256-roMEd/R+WmsWdCT9eye0ijqCcYzSSqVFU9mRN1Sw0jk=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/development/tools/database/prqlc/default.nix b/nixpkgs/pkgs/development/tools/database/prqlc/default.nix
index 60baffb22a29..41e144f5b5f2 100644
--- a/nixpkgs/pkgs/development/tools/database/prqlc/default.nix
+++ b/nixpkgs/pkgs/development/tools/database/prqlc/default.nix
@@ -12,16 +12,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "prqlc";
-  version = "0.11.1";
+  version = "0.11.4";
 
   src = fetchFromGitHub {
     owner = "prql";
     repo = "prql";
     rev = version;
-    hash = "sha256-XKb19qevscNjFUMtLL1nk7fXJuPOyQYZvZ3/4BHS0jo=";
+    hash = "sha256-YQqGy6BadoTjlCrF7N2PhxmXyuNa6V4sFHRphxQfF4o=";
   };
 
-  cargoHash = "sha256-cZkXz9sXfFo0OBQDrHKUfYJsTH1RiLEFb4xU6TDaZUQ=";
+  cargoHash = "sha256-0UEbg6f+9eew5RxmuPsOrtiSBsP9mPMO8h5mJEeTFFU=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/nixpkgs/pkgs/development/tools/fable/default.nix b/nixpkgs/pkgs/development/tools/fable/default.nix
index 6fc044fbc77a..28eda474ce32 100644
--- a/nixpkgs/pkgs/development/tools/fable/default.nix
+++ b/nixpkgs/pkgs/development/tools/fable/default.nix
@@ -2,9 +2,9 @@
 
 buildDotnetGlobalTool {
   pname = "fable";
-  version = "4.12.2";
+  version = "4.13.0";
 
-  nugetSha256 = "sha256-HgGQRHmyZGaG3HZdzUAP/WwWAR+VoS+UpnApvgxtwXU=";
+  nugetSha256 = "sha256-jjvAAhnCkCBLG2sq3ehCTdg/thaVW7A7nXyVCSAGm3k=";
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/tools/fastddsgen/default.nix b/nixpkgs/pkgs/development/tools/fastddsgen/default.nix
index 01d42f73b919..b5a436d3be9f 100644
--- a/nixpkgs/pkgs/development/tools/fastddsgen/default.nix
+++ b/nixpkgs/pkgs/development/tools/fastddsgen/default.nix
@@ -1,14 +1,14 @@
 { lib, stdenv, runtimeShell, writeText, fetchFromGitHub, gradle_7, openjdk17, git, perl, cmake }:
 let
   pname = "fastddsgen";
-  version = "3.2.1";
+  version = "3.3.0";
 
   src = fetchFromGitHub {
     owner = "eProsima";
     repo = "Fast-DDS-Gen";
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-3REInKZ787RSXED8iAMlt2mJodJTp5+/ldQsbUGpn0g=";
+    hash = "sha256-oqbSIzsYUwD8bTqGKZ9he9d18EDq9mHZFoNUp0RK0qU=";
   };
 
   gradle = gradle_7;
diff --git a/nixpkgs/pkgs/development/tools/gci/default.nix b/nixpkgs/pkgs/development/tools/gci/default.nix
index 7814130e9524..105d55ecaa9c 100644
--- a/nixpkgs/pkgs/development/tools/gci/default.nix
+++ b/nixpkgs/pkgs/development/tools/gci/default.nix
@@ -5,16 +5,16 @@
 }:
 buildGoModule rec {
   pname = "gci";
-  version = "0.12.3";
+  version = "0.13.0";
 
   src = fetchFromGitHub {
     owner = "daixiang0";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-rR3aTNVKg5uUJ39SEEySHkwGotrfzHjC9KL3FDf1jik=";
+    sha256 = "sha256-k+Keyuz/P3WmLg6jcGC/1gv8WWqMbDQdsFjbiG/hpT4=";
   };
 
-  vendorHash = "sha256-bPRcOvwbWEpcJUlIqQNeoYME4ky0YE5LlyWhSTWCIHQ=";
+  vendorHash = "sha256-g7htGfU6C2rzfu8hAn6SGr0ZRwB8ZzSf9CgHYmdupE8=";
 
   meta = with lib; {
     description = "Controls golang package import order and makes it always deterministic";
diff --git a/nixpkgs/pkgs/development/tools/kubedock/default.nix b/nixpkgs/pkgs/development/tools/kubedock/default.nix
index 39a9262a204b..b6a80d036517 100644
--- a/nixpkgs/pkgs/development/tools/kubedock/default.nix
+++ b/nixpkgs/pkgs/development/tools/kubedock/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "kubedock";
-  version = "0.15.3";
+  version = "0.15.4";
 
   src = fetchFromGitHub {
     owner = "joyrex2001";
     repo = "kubedock";
     rev = version;
-    hash = "sha256-klrjXL6Crqi74uwZTC0Sp/zMn0fHcA1m8jX3ehRKNHU=";
+    hash = "sha256-fL92NDf1fUHKUjYO4ctKt6tjMn6iTw0rzx3MVQT8g0s=";
   };
 
   vendorHash = "sha256-me56QyJi77dP3geNecfO19SxFyuM2CqwmJRkwomsG1o=";
diff --git a/nixpkgs/pkgs/development/tools/kubernetes-controller-tools/default.nix b/nixpkgs/pkgs/development/tools/kubernetes-controller-tools/default.nix
index bf318108c430..9ec00d359061 100644
--- a/nixpkgs/pkgs/development/tools/kubernetes-controller-tools/default.nix
+++ b/nixpkgs/pkgs/development/tools/kubernetes-controller-tools/default.nix
@@ -2,18 +2,25 @@
 
 buildGoModule rec {
   pname = "controller-tools";
-  version = "0.13.0";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "kubernetes-sigs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-strTBBpmG60H38WWLakIjZHVUgKC/ajS7ZEFDhZWnlo=";
+    sha256 = "sha256-G0jBQ12cpjfWGhXYppV9dB2n68bExi6ME9QbxXsUWvw=";
   };
 
   patches = [ ./version.patch ];
 
-  vendorHash = "sha256-YQfMq0p3HfLgOjAk/anZpGx/fDnvovI3HtmYdKRKq5w=";
+  postPatch = ''
+    # fix wrong go line which go mod tidy complains about
+    # https://github.com/kubernetes-sigs/controller-tools/pull/881
+    substituteInPlace go.mod \
+      --replace-fail "go 1.20" "go 1.21"
+  '';
+
+  vendorHash = "sha256-8XSMg/MII+HlsFuaOC6CK/jYiBXfeRZmLT7sW/ZN3Ts=";
 
   ldflags = [
     "-s"
@@ -32,6 +39,7 @@ buildGoModule rec {
   meta = with lib; {
     description = "Tools to use with the Kubernetes controller-runtime libraries";
     homepage = "https://github.com/kubernetes-sigs/controller-tools";
+    changelog = "https://github.com/kubernetes-sigs/controller-tools/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ michojel ];
   };
diff --git a/nixpkgs/pkgs/development/tools/language-servers/gopls/default.nix b/nixpkgs/pkgs/development/tools/language-servers/gopls/default.nix
index c7bf7da64d24..84470fcfe110 100644
--- a/nixpkgs/pkgs/development/tools/language-servers/gopls/default.nix
+++ b/nixpkgs/pkgs/development/tools/language-servers/gopls/default.nix
@@ -2,17 +2,17 @@
 
 buildGoModule rec {
   pname = "gopls";
-  version = "0.14.2";
+  version = "0.15.1";
 
   src = fetchFromGitHub {
     owner = "golang";
     repo = "tools";
     rev = "gopls/v${version}";
-    hash = "sha256-hcicI5ka6m0W2Sj8IaxNsLfIc97eR8SKKp81mJvM2GM=";
+    hash = "sha256-GJ2zc5OgZXwEq12f0PyvgOOUd7cctUbFvdp095VQb9E=";
   };
 
   modRoot = "gopls";
-  vendorHash = "sha256-jjUTRLRySRy3sfUDfg7cXRiDHk1GWHijgEA5XjS+9Xo=";
+  vendorHash = "sha256-Xxik0t1BHQPqzrE3Oh3VhODn+IqIVa+TCNqQSnmbBM0=";
 
   doCheck = false;
 
@@ -22,6 +22,7 @@ buildGoModule rec {
   meta = with lib; {
     description = "Official language server for the Go language";
     homepage = "https://github.com/golang/tools/tree/master/gopls";
+    changelog = "https://github.com/golang/tools/releases/tag/${src.rev}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ mic92 rski SuperSandro2000 zimbatm ];
     mainProgram = "gopls";
diff --git a/nixpkgs/pkgs/development/tools/misc/binutils/2.38/default.nix b/nixpkgs/pkgs/development/tools/misc/binutils/2.38/default.nix
index fd9a3277532e..474a565f351f 100644
--- a/nixpkgs/pkgs/development/tools/misc/binutils/2.38/default.nix
+++ b/nixpkgs/pkgs/development/tools/misc/binutils/2.38/default.nix
@@ -91,7 +91,7 @@ stdenv.mkDerivation {
      # this patch is from debian:
      # https://sources.debian.org/data/main/b/binutils/2.38-3/debian/patches/mips64-default-n64.diff
      (if stdenv.targetPlatform.isMusl
-      then substitute { src = ./mips64-default-n64.patch; replacements = [ "--replace" "gnuabi64" "muslabi64" ]; }
+      then substitute { src = ./mips64-default-n64.patch; substitutions = [ "--replace" "gnuabi64" "muslabi64" ]; }
       else ./mips64-default-n64.patch)
   # On PowerPC, when generating assembly code, GCC generates a `.machine`
   # custom instruction which instructs the assembler to generate code for this
diff --git a/nixpkgs/pkgs/development/tools/misc/binutils/default.nix b/nixpkgs/pkgs/development/tools/misc/binutils/default.nix
index 2183d45b6f0d..3a5a07dadabb 100644
--- a/nixpkgs/pkgs/development/tools/misc/binutils/default.nix
+++ b/nixpkgs/pkgs/development/tools/misc/binutils/default.nix
@@ -105,7 +105,7 @@ stdenv.mkDerivation (finalAttrs: {
      # this patch is from debian:
      # https://sources.debian.org/data/main/b/binutils/2.38-3/debian/patches/mips64-default-n64.diff
      (if stdenv.targetPlatform.isMusl
-      then substitute { src = ./mips64-default-n64.patch; replacements = [ "--replace" "gnuabi64" "muslabi64" ]; }
+      then substitute { src = ./mips64-default-n64.patch; substitutions = [ "--replace" "gnuabi64" "muslabi64" ]; }
       else ./mips64-default-n64.patch)
   # This patch fixes a bug in 2.40 on MinGW, which breaks DXVK when cross-building from Darwin.
   # See https://sourceware.org/bugzilla/show_bug.cgi?id=30079
diff --git a/nixpkgs/pkgs/development/tools/misc/drush/default.nix b/nixpkgs/pkgs/development/tools/misc/drush/default.nix
deleted file mode 100644
index bd1c71109963..000000000000
--- a/nixpkgs/pkgs/development/tools/misc/drush/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, stdenv, fetchurl, fetchFromGitHub, php, which, makeWrapper, bash, coreutils, ncurses }:
-
-stdenv.mkDerivation rec {
-  pname = "drush";
-  version = "8.4.12";
-
-  src = fetchurl {
-    url = "https://github.com/drush-ops/drush/releases/download/${version}/drush.phar";
-    sha256 = "sha256-YtD9lD621LJJAM/ieL4KWvY4o4Uqo3+FWgjGYGdQQaw=";
-  };
-
-  dontUnpack = true;
-
-  nativeBuildInputs = [ makeWrapper ];
-
-  installPhase = ''
-    mkdir -p $out/bin
-    install -D $src $out/libexec/drush/drush.phar
-    makeWrapper ${php}/bin/php $out/bin/drush \
-      --add-flags "$out/libexec/drush/drush.phar" \
-      --prefix PATH : "${lib.makeBinPath [ which php bash coreutils ncurses ]}"
-  '';
-
-  meta = with lib; {
-    description = "Command-line shell and Unix scripting interface for Drupal";
-    homepage = "https://github.com/drush-ops/drush";
-    license = licenses.gpl2;
-    maintainers = with maintainers; [ lovek323 ];
-    platforms = platforms.all;
-  };
-}
diff --git a/nixpkgs/pkgs/development/tools/misc/n98-magerun/default.nix b/nixpkgs/pkgs/development/tools/misc/n98-magerun/default.nix
index dadca94c37b0..08196dc041af 100644
--- a/nixpkgs/pkgs/development/tools/misc/n98-magerun/default.nix
+++ b/nixpkgs/pkgs/development/tools/misc/n98-magerun/default.nix
@@ -1,46 +1,27 @@
-{
-  stdenv
-, fetchurl
-, makeBinaryWrapper
-, php
-, lib
-, unzip
+{ lib
+, fetchFromGitHub
+, php81
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+php81.buildComposerProject (finalAttrs: {
   pname = "n98-magerun";
   version = "2.3.0";
 
-  src = fetchurl {
-    url = "https://github.com/netz98/n98-magerun/releases/download/${finalAttrs.version}/n98-magerun.phar";
-    hash = "sha256-s+Cdr8zU3VBaBzxOh4nXjqPe+JPPxHWiFOEVS/86qOQ=";
+  src = fetchFromGitHub {
+    owner = "netz98";
+    repo = "n98-magerun";
+    rev = finalAttrs.version;
+    hash = "sha256-/RffdYgl2cs8mlq4vHtzUZ6j0viV8Ot/cB/cB1dstFM=";
   };
 
-  dontUnpack = true;
-
-  nativeBuildInputs = [
-    makeBinaryWrapper
-  ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin $out/libexec/n98-magerun
-
-    install -D $src $out/libexec/n98-magerun/n98-magerun.phar
-    makeWrapper ${php}/bin/php $out/bin/n98-magerun \
-      --add-flags "$out/libexec/n98-magerun/n98-magerun.phar" \
-      --prefix PATH : ${lib.makeBinPath [ unzip ]}
-
-    runHook postInstall
-  '';
+  vendorHash = "sha256-n608AY6AQdVuN3hfVQk02vJQ6hl/0+4LVBOsBL5o3+8=";
 
   meta = {
-    broken = true; # Not compatible with PHP 8.1, see https://github.com/netz98/n98-magerun/issues/1275
     changelog = "https://magerun.net/category/magerun/";
     description = "The swiss army knife for Magento1/OpenMage developers";
     homepage = "https://magerun.net/";
     license = lib.licenses.mit;
+    mainProgram = "n98-magerun";
     maintainers = lib.teams.php.members;
   };
 })
diff --git a/nixpkgs/pkgs/development/tools/misc/n98-magerun2/default.nix b/nixpkgs/pkgs/development/tools/misc/n98-magerun2/default.nix
index c04b3840a437..9cd87a29ec56 100644
--- a/nixpkgs/pkgs/development/tools/misc/n98-magerun2/default.nix
+++ b/nixpkgs/pkgs/development/tools/misc/n98-magerun2/default.nix
@@ -1,45 +1,27 @@
-{
-  stdenv
-, fetchurl
-, makeBinaryWrapper
+{ lib
+, fetchFromGitHub
 , php
-, lib
-, unzip
 }:
 
-stdenv.mkDerivation (finalAttrs: {
+php.buildComposerProject (finalAttrs: {
   pname = "n98-magerun2";
   version = "7.3.1";
 
-  src = fetchurl {
-    url = "https://github.com/netz98/n98-magerun2/releases/download/${finalAttrs.version}/n98-magerun2.phar";
-    hash = "sha256-5G3sfyw8C3BwRqnK2o3upJTI/pENyaFCiMC4XGOkJT4=";
+  src = fetchFromGitHub {
+    owner = "netz98";
+    repo = "n98-magerun2";
+    rev = finalAttrs.version;
+    hash = "sha256-a1T4SmeOEKRW/xS2VBPLZt6r9JdtaJn8YVvfRnzGdb4=";
   };
 
-  dontUnpack = true;
-
-  nativeBuildInputs = [
-    makeBinaryWrapper
-  ];
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir -p $out/bin $out/libexec/n98-magerun2
-
-    install -D $src $out/libexec/n98-magerun2/n98-magerun2.phar
-    makeWrapper ${php}/bin/php $out/bin/n98-magerun2 \
-      --add-flags "$out/libexec/n98-magerun2/n98-magerun2.phar" \
-      --prefix PATH : ${lib.makeBinPath [ unzip ]}
-
-    runHook postInstall
-  '';
+  vendorHash = "sha256-1j0/spum4C9j/HNVlHwUehAFYJOz7YvMVlC6dtbNYK0=";
 
   meta = {
     changelog = "https://magerun.net/category/magerun/";
     description = "The swiss army knife for Magento2 developers";
     homepage = "https://magerun.net/";
     license = lib.licenses.mit;
+    mainProgram = "n98-magerun2";
     maintainers = lib.teams.php.members;
   };
 })
diff --git a/nixpkgs/pkgs/development/tools/misc/reviewdog/default.nix b/nixpkgs/pkgs/development/tools/misc/reviewdog/default.nix
index f3e6a8e8d67e..2ed07f4579f1 100644
--- a/nixpkgs/pkgs/development/tools/misc/reviewdog/default.nix
+++ b/nixpkgs/pkgs/development/tools/misc/reviewdog/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "reviewdog";
-  version = "0.17.0";
+  version = "0.17.1";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-zr98hzWU27d+HCKvzTch7FkpUOWkHvpuMIq2cfWNRHQ=";
+    hash = "sha256-l7jQaOFNhhWqkYaTd8BdH9au/wjlnWZnV5DAco93qlQ=";
   };
 
-  vendorHash = "sha256-S5SEM6EFXI2Vig8ze5kGOCIL5bLF6CMy/TKV+/3zAjI=";
+  vendorHash = "sha256-p/WvGGadf/O2DFIUWjw7mpg8DhcaIYlgp1xgKV89+GM=";
 
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/development/tools/nest-cli/default.nix b/nixpkgs/pkgs/development/tools/nest-cli/default.nix
index 7fa9595e1828..65a6020545ec 100644
--- a/nixpkgs/pkgs/development/tools/nest-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/nest-cli/default.nix
@@ -8,16 +8,16 @@
 
 buildNpmPackage rec {
   pname = "nest-cli";
-  version = "10.2.1";
+  version = "10.3.2";
 
   src = fetchFromGitHub {
     owner = "nestjs";
     repo = pname;
     rev = version;
-    hash = "sha256-vnF+ES6RK4iiIJsWUV57DqoLischh+1MlmlK46Z6USY=";
+    hash = "sha256-FSI87oeHiNqL8FhGavPtqurOr/1Y5iGawSwhBhLB2Ls=";
   };
 
-  npmDepsHash = "sha256-9yd+k+HpARM63/esW+av0zfcuAVsp9Lkfp6hmUQO5Yg=";
+  npmDepsHash = "sha256-RqotLpMISfB2xE9zng0TkapJ0y1fuVWP/0nY2VcMVRU=";
 
   env = {
     npm_config_build_from_source = true;
diff --git a/nixpkgs/pkgs/development/tools/oh-my-posh/default.nix b/nixpkgs/pkgs/development/tools/oh-my-posh/default.nix
index afbba2d7d4b1..1458d173e3c6 100644
--- a/nixpkgs/pkgs/development/tools/oh-my-posh/default.nix
+++ b/nixpkgs/pkgs/development/tools/oh-my-posh/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "oh-my-posh";
-  version = "19.8.3";
+  version = "19.11.4";
 
   src = fetchFromGitHub {
     owner = "jandedobbeleer";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-sYXg/t8U+uu1kYtEH6j7s/dCQJGuG880ruQFrvB5GS8=";
+    hash = "sha256-xViCmfLhvRWi02hFIxKZ+5mrvoSaHRXFj4iLHtVS3uo=";
   };
 
-  vendorHash = "sha256-jJVqIH0Qa9otp2lnYKa7ypqeE01BynR/e852wuhuLuA=";
+  vendorHash = "sha256-OkcwcQfI1CeKIQaaS/Bd1Hct2yebp0TB98lsGAVRWqk=";
 
   sourceRoot = "${src.name}/src";
 
diff --git a/nixpkgs/pkgs/development/tools/packet-sd/default.nix b/nixpkgs/pkgs/development/tools/packet-sd/default.nix
index a1418df2cc3a..5fcd486119fe 100644
--- a/nixpkgs/pkgs/development/tools/packet-sd/default.nix
+++ b/nixpkgs/pkgs/development/tools/packet-sd/default.nix
@@ -27,6 +27,11 @@ buildGoModule rec {
       url = "https://github.com/packethost/prometheus-packet-sd/commit/a0afc2a4c3f49dc234d0d2c4901df25b4110b3ec.patch";
       hash = "sha256-M5133+r77z21/Ulnbz+9sGbbuY5UpU1+22iY464UVAU=";
     })
+    (fetchpatch2 {
+      # apply chmod to tmpfile, not the outfile, that does not exist at that point
+      url = "https://github.com/packethost/prometheus-packet-sd/commit/41977f11b449677497a93456c499916c68e56334.patch";
+      hash = "sha256-ffXxbwatKBw7G1fdmsZaT7WX4OmYFMJnueL/kEKc1VE=";
+    })
   ];
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/development/tools/pet/default.nix b/nixpkgs/pkgs/development/tools/pet/default.nix
index 5545f172deea..14f50820f2e5 100644
--- a/nixpkgs/pkgs/development/tools/pet/default.nix
+++ b/nixpkgs/pkgs/development/tools/pet/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "pet";
-  version = "0.6.2";
+  version = "0.6.3";
 
   src = fetchFromGitHub {
     owner = "knqyf263";
     repo = "pet";
     rev = "v${version}";
-    sha256 = "sha256-r0pXqivfPnG4srEDKeu5MXd+rrTARfOXolI4qZPlC6w=";
+    sha256 = "sha256-NnnutXVwyWlPO7yJk8BAZJqtNl8sodDx/ZnX+TL8sWs=";
   };
 
-  vendorHash = "sha256-A3VHpSJc6NJz8ojg6iSnQlIXbf9m1JCzg9Vnoie0ffU=";
+  vendorHash = "sha256-ebdPWKNL9i3sEGpfDCXIfOaFQjV5LXohug2qFXeWenk=";
 
   ldflags = [
     "-s" "-w" "-X=github.com/knqyf263/pet/cmd.version=${version}"
diff --git a/nixpkgs/pkgs/development/tools/rbspy/default.nix b/nixpkgs/pkgs/development/tools/rbspy/default.nix
index d30c75ea244e..309f8dbd9065 100644
--- a/nixpkgs/pkgs/development/tools/rbspy/default.nix
+++ b/nixpkgs/pkgs/development/tools/rbspy/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rbspy";
-  version = "0.19.0";
+  version = "0.19.1";
 
   src = fetchFromGitHub {
     owner = "rbspy";
     repo = "rbspy";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OO0EX+r7W8HxPjbER+84m+nagPBM6GlCdB30VQV58mQ=";
+    hash = "sha256-2+miC7cp6YbeI7uucFlSdlDpPboJOhhBq7/eqXxZVqs=";
   };
 
-  cargoHash = "sha256-yywh/O4odm+VmM0k/Ft0DEihq6r+xehrpjbYryvVStw=";
+  cargoHash = "sha256-I+nh6cKniPIG5VYMMsABZNSP/c3DLWswsjenaQBh/X8=";
 
   # error: linker `aarch64-linux-gnu-gcc` not found
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-audit/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-audit/default.nix
index 953368575c58..c48b34e0d668 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-audit/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-audit/default.nix
@@ -2,7 +2,6 @@
 , rustPlatform
 , fetchCrate
 , pkg-config
-, libgit2
 , openssl
 , zlib
 , stdenv
@@ -12,21 +11,20 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-audit";
-  version = "0.19.0";
+  version = "0.20.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-NPRtSoITOS9i/v9hgdULVSmLaFbXZZeoO4SdqqANDxk=";
+    hash = "sha256-hzy+AVWGWzWYupllrLSryoi4rXPM0+G6WBlRbf03xA8=";
   };
 
-  cargoHash = "sha256-cQ2ZEZJ7PgNUxzZXR9Of1R5v2wu1b3xOlENu1DZU/rQ=";
+  cargoHash = "sha256-OOkJGdqEHNVbgZZIjQupGaSs4tB52b7kPGLKELUocn4=";
 
   nativeBuildInputs = [
     pkg-config
   ];
 
   buildInputs = [
-    libgit2
     openssl
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-chef/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-chef/default.nix
index 986c70a16fb2..69788f43c2ce 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-chef/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-chef/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-chef";
-  version = "0.1.63";
+  version = "0.1.64";
 
   src = fetchCrate {
     inherit pname version;
-    sha256 = "sha256-AkkLK1WQFOevKAv+jGd4ofDMmM8l0oJOV9liYJETtIk=";
+    sha256 = "sha256-TjmtL/0rr/rJPdWSjL6zD3H49Qhg6YE7irS1xjyc3OA=";
   };
 
-  cargoHash = "sha256-iqAi+V3AZ+OhR/c9FJSUa8Fon16rpD0B2o5zsGown9U=";
+  cargoHash = "sha256-1SZZva0b7/0FGqZO4RL5gMnpG+xZwKqLU1Fgv54ewNM=";
 
   meta = with lib; {
     description = "A cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-codspeed/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-codspeed/default.nix
index 849aa5a8ca59..1ae11e276056 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-codspeed/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-codspeed/default.nix
@@ -3,7 +3,7 @@
 , fetchFromGitHub
 , curl
 , pkg-config
-, libgit2_1_5
+, libgit2
 , openssl
 , zlib
 , stdenv
@@ -30,7 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   buildInputs = [
     curl
-    libgit2_1_5
+    libgit2
     openssl
     zlib
   ] ++ lib.optionals stdenv.isDarwin [
@@ -40,6 +40,10 @@ rustPlatform.buildRustPackage rec {
   cargoBuildFlags = [ "-p=cargo-codspeed" ];
   cargoTestFlags = cargoBuildFlags;
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "Cargo extension to build & run your codspeed benchmarks";
     homepage = "https://github.com/CodSpeedHQ/codspeed-rust";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-dephell/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-dephell/default.nix
index 63a8cabccefa..b01a722e5ea1 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-dephell/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-dephell/default.nix
@@ -6,7 +6,7 @@
 , curl
 , openssl
 , darwin
-, libgit2_1_3_0
+, libgit2
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec {
   ] ++ lib.optionals stdenv.isDarwin [
     curl
     darwin.apple_sdk.frameworks.Security
-    libgit2_1_3_0
+    libgit2
   ];
 
   # update Cargo.lock to work with openssl 3
@@ -43,6 +43,10 @@ rustPlatform.buildRustPackage rec {
     ln -sf ${./Cargo.lock} Cargo.lock
   '';
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "A tool to analyze the third-party dependencies imported by a rust crate or rust workspace";
     homepage = "https://github.com/mimoo/cargo-dephell";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-generate/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-generate/default.nix
index f29943a6eada..299bcd7ffad7 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-generate/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-generate/default.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchFromGitHub
 , pkg-config
-, libgit2_1_6
+, libgit2
 , openssl
 , stdenv
 , darwin
@@ -24,7 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [ pkg-config ];
 
-  buildInputs = [ libgit2_1_6 openssl ] ++ lib.optionals stdenv.isDarwin [
+  buildInputs = [ libgit2 openssl ] ++ lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
   ];
 
@@ -48,6 +48,10 @@ rustPlatform.buildRustPackage rec {
     "--skip=git::utils::should_canonicalize"
   ];
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "A tool to generate a new Rust project by leveraging a pre-existing git repository as a template";
     homepage = "https://github.com/cargo-generate/cargo-generate";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-mobile2/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-mobile2/default.nix
index b2b87227bf31..01184fe5007d 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-mobile2/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-mobile2/default.nix
@@ -12,7 +12,7 @@
 let
   inherit (darwin.apple_sdk.frameworks) CoreServices;
   pname = "cargo-mobile2";
-  version = "0.10.2";
+  version = "0.10.3";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -20,14 +20,14 @@ rustPlatform.buildRustPackage {
     owner = "tauri-apps";
     repo = pname;
     rev = "cargo-mobile2-v${version}";
-    hash = "sha256-LRQfntEbY8K1kepgn2Gww1ixWmvKHuw6DPT9j9MG118=";
+    hash = "sha256-awf4BvDUeRfg66mv7unN0uKviLI6f1m7s1sQKEeBm2E=";
   };
 
   # Manually specify the sourceRoot since this crate depends on other crates in the workspace. Relevant info at
   # https://discourse.nixos.org/t/difficulty-using-buildrustpackage-with-a-src-containing-multiple-cargo-workspaces/10202
   # sourceRoot = "${src.name}/tooling/cli";
 
-  cargoHash = "sha256-yWkyIwZ3KPMhlVajCIAYonFveGFqzB5qBGO5WdzjxNs=";
+  cargoHash = "sha256-rqNhkuQVQ6MHUX1hcwqPS46LpsDZwJ6COvJztap7X4w=";
 
   preBuild = ''
     mkdir -p $out/share/
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/Cargo.lock b/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/Cargo.lock
index 79e9d4526ce7..944f8e8112df 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/Cargo.lock
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/Cargo.lock
@@ -23,7 +23,7 @@ version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "getrandom 0.2.11",
  "once_cell",
  "version_check",
@@ -88,30 +88,30 @@ checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
+checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle-query"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748"
 dependencies = [
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.1"
+version = "3.0.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
+checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
 dependencies = [
  "anstyle",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -133,18 +133,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
 
 [[package]]
-name = "arrayref"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
-
-[[package]]
-name = "arrayvec"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-
-[[package]]
 name = "arrayvec"
 version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -190,6 +178,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "assert-json-diff"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
 name = "assert_cmd"
 version = "2.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -216,33 +214,16 @@ dependencies = [
 ]
 
 [[package]]
-name = "async-lock"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
-dependencies = [
- "event-listener",
-]
-
-[[package]]
-name = "async-session"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07da4ce523b4e2ebaaf330746761df23a465b951a83d84bbce4233dabedae630"
+name = "async-posthog"
+version = "0.2.3"
+source = "git+https://github.com/shuttle-hq/posthog-rs?branch=main#4a8299fde3080bff550620c0853be9b83fee8f44"
 dependencies = [
- "anyhow",
- "async-lock",
- "async-trait",
- "base64 0.13.1",
- "bincode",
- "blake3",
- "chrono",
- "hmac 0.11.0",
- "log",
- "rand 0.8.5",
+ "posthog-core",
+ "reqwest",
  "serde",
  "serde_json",
- "sha2 0.9.9",
+ "thiserror",
+ "tokio",
 ]
 
 [[package]]
@@ -275,7 +256,7 @@ checksum = "e1b39347f478f57a40cbaf82cbaebb4a350acc757cda30fc7ff88707a11d1d81"
 dependencies = [
  "futures-util",
  "http-types",
- "hyper",
+ "hyper 0.14.27",
  "hyper-rustls",
  "serde",
  "serde_json",
@@ -308,6 +289,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "atomic-write-file"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436"
+dependencies = [
+ "nix 0.27.1",
+ "rand 0.8.5",
+]
+
+[[package]]
 name = "autocfg"
 version = "1.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -333,8 +324,8 @@ dependencies = [
  "bytes",
  "fastrand 2.0.1",
  "hex",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "ring 0.16.20",
  "time",
  "tokio",
@@ -368,8 +359,8 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "lazy_static",
  "percent-encoding",
  "pin-project-lite",
@@ -391,7 +382,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "fastrand 2.0.1",
- "http",
+ "http 0.2.11",
  "percent-encoding",
  "tracing",
  "uuid",
@@ -416,7 +407,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-smithy-xml",
  "aws-types",
- "http",
+ "http 0.2.11",
  "regex",
  "tokio-stream",
  "tracing",
@@ -440,7 +431,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-types",
  "bytes",
- "http",
+ "http 0.2.11",
  "regex",
  "tokio-stream",
  "tracing",
@@ -465,7 +456,7 @@ dependencies = [
  "aws-smithy-types",
  "aws-smithy-xml",
  "aws-types",
- "http",
+ "http 0.2.11",
  "regex",
  "tracing",
 ]
@@ -479,12 +470,12 @@ dependencies = [
  "aws-smithy-http",
  "form_urlencoded",
  "hex",
- "hmac 0.12.1",
- "http",
+ "hmac",
+ "http 0.2.11",
  "once_cell",
  "percent-encoding",
  "regex",
- "sha2 0.10.8",
+ "sha2",
  "time",
  "tracing",
 ]
@@ -513,9 +504,9 @@ dependencies = [
  "aws-smithy-types",
  "bytes",
  "fastrand 2.0.1",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "hyper-rustls",
  "lazy_static",
  "pin-project-lite",
@@ -535,9 +526,9 @@ dependencies = [
  "bytes",
  "bytes-utils",
  "futures-core",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "once_cell",
  "percent-encoding",
  "pin-project-lite",
@@ -556,8 +547,8 @@ dependencies = [
  "aws-smithy-http",
  "aws-smithy-types",
  "bytes",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "pin-project-lite",
  "tower",
  "tracing",
@@ -595,8 +586,8 @@ dependencies = [
  "aws-smithy-types",
  "bytes",
  "fastrand 2.0.1",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "once_cell",
  "pin-project-lite",
  "pin-utils",
@@ -614,7 +605,7 @@ dependencies = [
  "aws-smithy-http",
  "aws-smithy-types",
  "bytes",
- "http",
+ "http 0.2.11",
  "tokio",
  "tracing",
 ]
@@ -653,7 +644,7 @@ dependencies = [
  "aws-smithy-client",
  "aws-smithy-http",
  "aws-smithy-types",
- "http",
+ "http 0.2.11",
  "rustc_version 0.4.0",
  "tracing",
 ]
@@ -671,9 +662,9 @@ dependencies = [
  "bytes",
  "futures-util",
  "headers",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "itoa",
  "matchit",
  "memchr",
@@ -703,8 +694,8 @@ dependencies = [
  "async-trait",
  "bytes",
  "futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "mime",
  "rustversion",
  "tower-layer",
@@ -720,10 +711,9 @@ dependencies = [
  "axum",
  "axum-core",
  "bytes",
- "cookie",
  "futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "mime",
  "pin-project-lite",
  "serde",
@@ -742,9 +732,9 @@ dependencies = [
  "arc-swap",
  "bytes",
  "futures-util",
- "http",
- "http-body",
- "hyper",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "pin-project-lite",
  "rustls",
  "rustls-pemfile",
@@ -754,22 +744,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "axum-sessions"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "714cad544cd87d8da821cda715bb9aaa5d4d1adbdb64c549b18138e3cbf93c44"
-dependencies = [
- "async-session",
- "axum",
- "axum-extra",
- "futures",
- "http-body",
- "tokio",
- "tower",
- "tracing",
-]
-
-[[package]]
 name = "backtrace"
 version = "0.3.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -777,7 +751,7 @@ checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
 dependencies = [
  "addr2line",
  "cc",
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
  "miniz_oxide",
  "object",
@@ -873,30 +847,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "blake3"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3"
-dependencies = [
- "arrayref",
- "arrayvec 0.5.2",
- "cc",
- "cfg-if 0.1.10",
- "constant_time_eq",
- "crypto-mac 0.8.0",
- "digest 0.9.0",
-]
-
-[[package]]
-name = "block-buffer"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
 name = "block-buffer"
 version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -917,8 +867,8 @@ dependencies = [
  "futures-core",
  "futures-util",
  "hex",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "hyperlocal",
  "log",
  "pin-project-lite",
@@ -1121,7 +1071,7 @@ dependencies = [
 
 [[package]]
 name = "cargo-shuttle"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "assert_cmd",
@@ -1131,6 +1081,7 @@ dependencies = [
  "chrono",
  "clap",
  "clap_complete",
+ "clap_mangen",
  "crossterm 0.27.0",
  "dialoguer",
  "dirs 5.0.1",
@@ -1233,12 +1184,6 @@ dependencies = [
 
 [[package]]
 name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-
-[[package]]
-name = "cfg-if"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
@@ -1251,16 +1196,18 @@ checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
 dependencies = [
  "android-tzdata",
  "iana-time-zone",
+ "js-sys",
  "num-traits",
  "serde",
+ "wasm-bindgen",
  "windows-targets 0.48.5",
 ]
 
 [[package]]
 name = "clap"
-version = "4.4.8"
+version = "4.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64"
+checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -1268,9 +1215,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.4.8"
+version = "4.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc"
+checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb"
 dependencies = [
  "anstream",
  "anstyle",
@@ -1306,6 +1253,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
 
 [[package]]
+name = "clap_mangen"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3be86020147691e1d2ef58f75346a3d4d94807bfc473e377d52f09f0f7d77f7"
+dependencies = [
+ "clap",
+ "roff",
+]
+
+[[package]]
 name = "clru"
 version = "0.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1358,9 +1315,9 @@ checksum = "55b672471b4e9f9e95499ea597ff64941a309b2cdbffcc46f2cc5e2d971fd335"
 
 [[package]]
 name = "concurrent-queue"
-version = "2.3.0"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
+checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
 dependencies = [
  "crossbeam-utils",
 ]
@@ -1385,38 +1342,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
 
 [[package]]
-name = "constant_time_eq"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
-
-[[package]]
 name = "convert_case"
 version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e"
 
 [[package]]
-name = "cookie"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
-dependencies = [
- "base64 0.21.5",
- "hmac 0.12.1",
- "percent-encoding",
- "rand 0.8.5",
- "sha2 0.10.8",
- "subtle",
- "time",
- "version_check",
-]
-
-[[package]]
 name = "core-foundation"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
 dependencies = [
  "core-foundation-sys",
  "libc",
@@ -1424,9 +1359,9 @@ dependencies = [
 
 [[package]]
 name = "core-foundation-sys"
-version = "0.8.4"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
 
 [[package]]
 name = "cpp_demangle"
@@ -1434,7 +1369,7 @@ version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
 ]
 
 [[package]]
@@ -1469,7 +1404,7 @@ dependencies = [
  "cranelift-entity",
  "cranelift-isle",
  "gimli",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
  "log",
  "regalloc2",
  "smallvec",
@@ -1576,7 +1511,7 @@ version = "1.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
 ]
 
 [[package]]
@@ -1585,7 +1520,7 @@ version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "crossbeam-utils",
 ]
 
@@ -1595,7 +1530,7 @@ version = "0.8.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "crossbeam-epoch",
  "crossbeam-utils",
 ]
@@ -1607,7 +1542,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
 dependencies = [
  "autocfg",
- "cfg-if 1.0.0",
+ "cfg-if",
  "crossbeam-utils",
  "memoffset 0.9.0",
  "scopeguard",
@@ -1619,7 +1554,7 @@ version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "crossbeam-utils",
 ]
 
@@ -1629,7 +1564,7 @@ version = "0.8.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
 ]
 
 [[package]]
@@ -1684,26 +1619,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "crypto-mac"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab"
-dependencies = [
- "generic-array",
- "subtle",
-]
-
-[[package]]
-name = "crypto-mac"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714"
-dependencies = [
- "generic-array",
- "subtle",
-]
-
-[[package]]
 name = "ctor"
 version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1750,9 +1665,28 @@ dependencies = [
 
 [[package]]
 name = "data-encoding"
-version = "2.4.0"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5"
+
+[[package]]
+name = "deadpool"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "421fe0f90f2ab22016f32a9881be5134fdd71c65298917084b0c7477cbc3856e"
+dependencies = [
+ "async-trait",
+ "deadpool-runtime",
+ "num_cpus",
+ "retain_mut",
+ "tokio",
+]
+
+[[package]]
+name = "deadpool-runtime"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63dfa964fe2a66f3fde91fc70b267fe193d822c7e603e2a675a49a7f46ad3f49"
 
 [[package]]
 name = "debugid"
@@ -1790,9 +1724,9 @@ dependencies = [
 
 [[package]]
 name = "deranged"
-version = "0.3.9"
+version = "0.3.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
+checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
 dependencies = [
  "powerfmt",
  "serde",
@@ -1850,20 +1784,11 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
 
 [[package]]
 name = "digest"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "digest"
 version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
- "block-buffer 0.10.4",
+ "block-buffer",
  "const-oid",
  "crypto-common",
  "subtle",
@@ -1875,7 +1800,7 @@ version = "2.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "dirs-sys-next",
 ]
 
@@ -1981,7 +1906,7 @@ version = "0.8.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
 ]
 
 [[package]]
@@ -2016,12 +1941,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.7"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
 dependencies = [
  "libc",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2030,7 +1955,7 @@ version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "home",
  "windows-sys 0.48.0",
 ]
@@ -2073,25 +1998,25 @@ checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
 
 [[package]]
 name = "fd-lock"
-version = "4.0.0"
+version = "4.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b0377f1edc77dbd1118507bc7a66e4ab64d2b90c66f90726dc801e73a8c68f9"
+checksum = "b93f7a0db71c99f68398f80653ed05afb0b00e062e1a20c7ff849c4edfabbbcc"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "filetime"
-version = "0.2.22"
+version = "0.2.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
+checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
- "redox_syscall 0.3.5",
- "windows-sys 0.48.0",
+ "redox_syscall 0.4.1",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2129,9 +2054,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 
 [[package]]
 name = "form_urlencoded"
-version = "1.2.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
@@ -2144,13 +2069,13 @@ checksum = "e3d76ed310eb8c6f88ddde3e976d015f4f91761fe98d7d41e497db542318fca9"
 
 [[package]]
 name = "fs-set-times"
-version = "0.20.0"
+version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd738b84894214045e8414eaded76359b4a5773f0a0a56b16575110739cdcf39"
+checksum = "033b337d725b97690d86893f9de22b67b80dcc4e9ad815f348254c38119db8fb"
 dependencies = [
  "io-lifetimes",
  "rustix",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -2321,7 +2246,7 @@ version = "0.1.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
  "wasi 0.9.0+wasi-snapshot-preview1",
 ]
@@ -2332,7 +2257,7 @@ version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "js-sys",
  "libc",
  "wasi 0.11.0+wasi-snapshot-preview1",
@@ -2341,9 +2266,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.0"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
 dependencies = [
  "fallible-iterator",
  "indexmap 2.1.0",
@@ -2352,9 +2277,9 @@ dependencies = [
 
 [[package]]
 name = "git2"
-version = "0.18.1"
+version = "0.18.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf97ba92db08df386e10c8ede66a2a0369bd277090afd8710e19e38de9ec0cd"
+checksum = "1b3ba52851e73b46a4c3df1d89343741112003f0f6f13beb0dfac9e457c3fdcd"
 dependencies = [
  "bitflags 2.4.1",
  "libc",
@@ -2420,9 +2345,9 @@ dependencies = [
 
 [[package]]
 name = "gix-actor"
-version = "0.28.0"
+version = "0.28.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "948a5f9e43559d16faf583694f1c742eb401ce24ce8e6f2238caedea7486433c"
+checksum = "2eadca029ef716b4378f7afb19f7ee101fde9e58ba1f1445971315ac866db417"
 dependencies = [
  "bstr",
  "btoi",
@@ -2434,9 +2359,9 @@ dependencies = [
 
 [[package]]
 name = "gix-attributes"
-version = "0.20.0"
+version = "0.20.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dca120f0c6562d2d7cae467f2466e576d9f7f189beec2af2e026145107c729e2"
+checksum = "0f395469d38c76ec47cd1a6c5a53fbc3f13f737b96eaf7535f4e6b367e643381"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -2451,18 +2376,18 @@ dependencies = [
 
 [[package]]
 name = "gix-bitmap"
-version = "0.2.7"
+version = "0.2.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ccab4bc576844ddb51b78d81b4a42d73e6229660fa614dfc3d3999c874d1959"
+checksum = "d49e1a13a30d3f88be4bceae184dd13a2d3fb9ffa7515f7ed7ae771b857f4916"
 dependencies = [
  "thiserror",
 ]
 
 [[package]]
 name = "gix-chunk"
-version = "0.4.4"
+version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b42ea64420f7994000130328f3c7a2038f639120518870436d31b8bde704493"
+checksum = "d411ecd9b558b0c20b3252b7e409eec48eabc41d18324954fe526bac6e2db55f"
 dependencies = [
  "thiserror",
 ]
@@ -2478,15 +2403,15 @@ dependencies = [
 
 [[package]]
 name = "gix-commitgraph"
-version = "0.22.0"
+version = "0.22.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7e8bc78b1a6328fa6d8b3a53b6c73997af37fd6bfc1d6c49f149e63bda5cbb36"
+checksum = "85a7007ba021f059803afaf6f8a48872422abc20550ac12ede6ddea2936cec36"
 dependencies = [
  "bstr",
  "gix-chunk",
  "gix-features",
  "gix-hash",
- "memmap2",
+ "memmap2 0.9.0",
  "thiserror",
 ]
 
@@ -2513,9 +2438,9 @@ dependencies = [
 
 [[package]]
 name = "gix-config-value"
-version = "0.14.0"
+version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea7505b97f4d8e7933e29735a568ba2f86d8de466669d9f0e8321384f9972f47"
+checksum = "6419db582ea84dfb58c7e7b0af7fd62c808aa14954af2936a33f89b0f4ed018e"
 dependencies = [
  "bitflags 2.4.1",
  "bstr",
@@ -2542,9 +2467,9 @@ dependencies = [
 
 [[package]]
 name = "gix-date"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7df669639582dc7c02737642f76890b03b5544e141caba68a7d6b4eb551e0d"
+checksum = "468dfbe411f335f01525a1352271727f8e7772075a93fa747260f502086b30be"
 dependencies = [
  "bstr",
  "itoa",
@@ -2580,9 +2505,9 @@ dependencies = [
 
 [[package]]
 name = "gix-features"
-version = "0.36.0"
+version = "0.36.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
+checksum = "4d46a4a5c6bb5bebec9c0d18b65ada20e6517dbd7cf855b87dd4bbdce3a771b2"
 dependencies = [
  "bytes",
  "crc32fast",
@@ -2619,18 +2544,18 @@ dependencies = [
 
 [[package]]
 name = "gix-fs"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cd171c0cae97cd0dc57e7b4601cb1ebf596450e263ef3c02be9107272c877bd"
+checksum = "20e86eb040f5776a5ade092282e51cdcad398adb77d948b88d17583c2ae4e107"
 dependencies = [
  "gix-features",
 ]
 
 [[package]]
 name = "gix-glob"
-version = "0.14.0"
+version = "0.14.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fac08925dbc14d414bd02eb45ffb4cecd912d1fce3883f867bd0103c192d3e4"
+checksum = "5db19298c5eeea2961e5b3bf190767a2d1f09b8802aeb5f258e42276350aff19"
 dependencies = [
  "bitflags 2.4.1",
  "bstr",
@@ -2640,9 +2565,9 @@ dependencies = [
 
 [[package]]
 name = "gix-hash"
-version = "0.13.1"
+version = "0.13.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
+checksum = "99c1e554a87759e672c7d2e37211e761aa390c61ffcd3753a57c51173143f3cb"
 dependencies = [
  "faster-hex",
  "thiserror",
@@ -2650,20 +2575,20 @@ dependencies = [
 
 [[package]]
 name = "gix-hashtable"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "409268480841ad008e81c17ca5a293393fbf9f2b6c2f85b8ab9de1f0c5176a16"
+checksum = "feb61880816d7ec4f0b20606b498147d480860ddd9133ba542628df2f548d3ca"
 dependencies = [
  "gix-hash",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
  "parking_lot 0.12.1",
 ]
 
 [[package]]
 name = "gix-ignore"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e73c07763a8005ae02cb5cf83040729cea9bb70c7cef68ec6c24159904c499a"
+checksum = "a215cc8cf21645bca131fcf6329d3ebd46299c47dbbe27df71bb1ca9e328b879"
 dependencies = [
  "bstr",
  "gix-glob",
@@ -2689,16 +2614,16 @@ dependencies = [
  "gix-object",
  "gix-traverse",
  "itoa",
- "memmap2",
+ "memmap2 0.7.1",
  "smallvec",
  "thiserror",
 ]
 
 [[package]]
 name = "gix-lock"
-version = "11.0.0"
+version = "11.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4feb1dcd304fe384ddc22edba9dd56a42b0800032de6537728cea2f033a4f37"
+checksum = "7e5c65e6a29830a435664891ced3f3c1af010f14900226019590ee0971a22f37"
 dependencies = [
  "gix-tempfile",
  "gix-utils",
@@ -2707,9 +2632,9 @@ dependencies = [
 
 [[package]]
 name = "gix-macros"
-version = "0.1.0"
+version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d8acb5ee668d55f0f2d19a320a3f9ef67a6999ad483e11135abcc2464ed18b6"
+checksum = "02a5bcaf6704d9354a3071cede7e77d366a5980c7352e102e2c2f9b645b1d3ae"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2784,7 +2709,7 @@ dependencies = [
  "gix-object",
  "gix-path",
  "gix-tempfile",
- "memmap2",
+ "memmap2 0.7.1",
  "parking_lot 0.12.1",
  "smallvec",
  "thiserror",
@@ -2814,9 +2739,9 @@ dependencies = [
 
 [[package]]
 name = "gix-path"
-version = "0.10.0"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a1d370115171e3ae03c5c6d4f7d096f2981a40ddccb98dfd704c773530ba73b"
+checksum = "d86d6fac2fabe07b67b7835f46d07571f68b11aa1aaecae94fe722ea4ef305e1"
 dependencies = [
  "bstr",
  "gix-trace",
@@ -2827,9 +2752,9 @@ dependencies = [
 
 [[package]]
 name = "gix-pathspec"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9cc7194fdcf43b4a1ccfa13ffae1d79f83beb4becff7761d88dd99faeafe625"
+checksum = "1dbbb92f75a38ef043c8bb830b339b38d0698d7f3746968b5fcbade7a880494d"
 dependencies = [
  "bitflags 2.4.1",
  "bstr",
@@ -2873,9 +2798,9 @@ dependencies = [
 
 [[package]]
 name = "gix-quote"
-version = "0.4.7"
+version = "0.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "475c86a97dd0127ba4465fbb239abac9ea10e68301470c9791a6dd5351cdc905"
+checksum = "4f84845efa535468bc79c5a87b9d29219f1da0313c8ecf0365a5daa7e72786f2"
 dependencies = [
  "bstr",
  "btoi",
@@ -2898,7 +2823,7 @@ dependencies = [
  "gix-path",
  "gix-tempfile",
  "gix-validate",
- "memmap2",
+ "memmap2 0.7.1",
  "thiserror",
  "winnow",
 ]
@@ -2950,9 +2875,9 @@ dependencies = [
 
 [[package]]
 name = "gix-sec"
-version = "0.10.0"
+version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92b9542ac025a8c02ed5d17b3fc031a111a384e859d0be3532ec4d58c40a0f28"
+checksum = "a36ea2c5907d64a9b4b5d3cc9f430e6c30f0509646b5e38eb275ca57c5bf29e2"
 dependencies = [
  "bitflags 2.4.1",
  "gix-path",
@@ -2977,9 +2902,9 @@ dependencies = [
 
 [[package]]
 name = "gix-tempfile"
-version = "11.0.0"
+version = "11.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05cc2205cf10d99f70b96e04e16c55d4c7cf33efc151df1f793e29fd12a931f8"
+checksum = "388dd29114a86ec69b28d1e26d6d63a662300ecf61ab3f4cc578f7d7dc9e7e23"
 dependencies = [
  "gix-fs",
  "libc",
@@ -2990,9 +2915,9 @@ dependencies = [
 
 [[package]]
 name = "gix-trace"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836"
+checksum = "b686a35799b53a9825575ca3f06481d0a053a409c4d97ffcf5ddd67a8760b497"
 
 [[package]]
 name = "gix-transport"
@@ -3031,9 +2956,9 @@ dependencies = [
 
 [[package]]
 name = "gix-url"
-version = "0.25.1"
+version = "0.25.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1b9ac8ed32ad45f9fc6c5f8c0be2ed911e544a5a19afd62d95d524ebaa95671"
+checksum = "0c427a1a11ccfa53a4a2da47d9442c2241deee63a154bc15cc14b8312fbc4005"
 dependencies = [
  "bstr",
  "gix-features",
@@ -3045,18 +2970,18 @@ dependencies = [
 
 [[package]]
 name = "gix-utils"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f"
+checksum = "9f82c41937f00e15a1f6cb0b55307f0ca1f77f4407ff2bf440be35aa688c6a3e"
 dependencies = [
  "fastrand 2.0.1",
 ]
 
 [[package]]
 name = "gix-validate"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e05cab2b03a45b866156e052aa38619f4ece4adcb2f79978bfc249bc3b21b8c5"
+checksum = "75b7d8e4274be69f284bbc7e6bb2ccf7065dbcdeba22d8c549f2451ae426883f"
 dependencies = [
  "bstr",
  "thiserror",
@@ -3108,15 +3033,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
 name = "globset"
-version = "0.4.13"
+version = "0.4.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
+checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1"
 dependencies = [
  "aho-corasick",
  "bstr",
- "fnv",
  "log",
- "regex",
+ "regex-automata 0.4.3",
+ "regex-syntax 0.8.2",
 ]
 
 [[package]]
@@ -3127,16 +3052,35 @@ checksum = "92620684d99f750bae383ecb3be3748142d6095760afd5cbcf2261e9a279d780"
 
 [[package]]
 name = "h2"
-version = "0.3.22"
+version = "0.3.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
+checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
 dependencies = [
  "bytes",
  "fnv",
  "futures-core",
  "futures-sink",
  "futures-util",
- "http",
+ "http 0.2.11",
+ "indexmap 2.1.0",
+ "slab",
+ "tokio",
+ "tokio-util",
+ "tracing",
+]
+
+[[package]]
+name = "h2"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943"
+dependencies = [
+ "bytes",
+ "fnv",
+ "futures-core",
+ "futures-sink",
+ "futures-util",
+ "http 1.0.0",
  "indexmap 2.1.0",
  "slab",
  "tokio",
@@ -3161,9 +3105,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.14.2"
+version = "0.14.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
 dependencies = [
  "ahash",
  "allocator-api2",
@@ -3175,7 +3119,7 @@ version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
 dependencies = [
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
 ]
 
 [[package]]
@@ -3187,7 +3131,7 @@ dependencies = [
  "base64 0.21.5",
  "bytes",
  "headers-core",
- "http",
+ "http 0.2.11",
  "httpdate",
  "mime",
  "sha1",
@@ -3199,7 +3143,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
 dependencies = [
- "http",
+ "http 0.2.11",
 ]
 
 [[package]]
@@ -3229,17 +3173,7 @@ version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437"
 dependencies = [
- "hmac 0.12.1",
-]
-
-[[package]]
-name = "hmac"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b"
-dependencies = [
- "crypto-mac 0.11.1",
- "digest 0.9.0",
+ "hmac",
 ]
 
 [[package]]
@@ -3248,7 +3182,7 @@ version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 dependencies = [
- "digest 0.10.7",
+ "digest",
 ]
 
 [[package]]
@@ -3283,13 +3217,47 @@ dependencies = [
 ]
 
 [[package]]
+name = "http"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea"
+dependencies = [
+ "bytes",
+ "fnv",
+ "itoa",
+]
+
+[[package]]
 name = "http-body"
 version = "0.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
 dependencies = [
  "bytes",
- "http",
+ "http 0.2.11",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "http-body"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643"
+dependencies = [
+ "bytes",
+ "http 1.0.0",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840"
+dependencies = [
+ "bytes",
+ "futures-util",
+ "http 1.0.0",
+ "http-body 1.0.0",
  "pin-project-lite",
 ]
 
@@ -3305,7 +3273,7 @@ version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6f560b665ad9f1572cfcaf034f7fb84338a7ce945216d64a90fd81f046a3caee"
 dependencies = [
- "http",
+ "http 0.2.11",
  "serde",
 ]
 
@@ -3319,7 +3287,7 @@ dependencies = [
  "async-channel",
  "base64 0.13.1",
  "futures-lite",
- "http",
+ "http 0.2.11",
  "infer",
  "pin-project-lite",
  "rand 0.7.3",
@@ -3352,9 +3320,9 @@ dependencies = [
  "futures-channel",
  "futures-core",
  "futures-util",
- "h2",
- "http",
- "http-body",
+ "h2 0.3.24",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "httparse",
  "httpdate",
  "itoa",
@@ -3367,11 +3335,31 @@ dependencies = [
 ]
 
 [[package]]
+name = "hyper"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "h2 0.4.2",
+ "http 1.0.0",
+ "http-body 1.0.0",
+ "httparse",
+ "httpdate",
+ "itoa",
+ "pin-project-lite",
+ "tokio",
+ "want",
+]
+
+[[package]]
 name = "hyper-reverse-proxy"
 version = "0.5.2-dev"
 source = "git+https://github.com/chesedo/hyper-reverse-proxy?branch=bug/host_header#5f82b7dffe940abf896fe47dadf6c8e87ddc670b"
 dependencies = [
- "hyper",
+ "hyper 0.14.27",
  "lazy_static",
  "tokio",
  "tracing",
@@ -3384,8 +3372,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
 dependencies = [
  "futures-util",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "log",
  "rustls",
  "rustls-native-certs",
@@ -3399,13 +3387,31 @@ version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
 dependencies = [
- "hyper",
+ "hyper 0.14.27",
  "pin-project-lite",
  "tokio",
  "tokio-io-timeout",
 ]
 
 [[package]]
+name = "hyper-util"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bdea9aac0dbe5a9240d68cfd9501e2db94222c6dc06843e06640b9e07f0fdc67"
+dependencies = [
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http 1.0.0",
+ "http-body 1.0.0",
+ "hyper 1.1.0",
+ "pin-project-lite",
+ "socket2 0.5.5",
+ "tokio",
+ "tracing",
+]
+
+[[package]]
 name = "hyperlocal"
 version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3413,7 +3419,7 @@ checksum = "0fafdf7b2b2de7c9784f76e02c0935e65a8117ec3b768644379983ab333ac98c"
 dependencies = [
  "futures-util",
  "hex",
- "hyper",
+ "hyper 0.14.27",
  "pin-project",
  "tokio",
 ]
@@ -3475,18 +3481,27 @@ dependencies = [
 ]
 
 [[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 = "ignore"
-version = "0.4.20"
+version = "0.4.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492"
+checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060"
 dependencies = [
+ "crossbeam-deque",
  "globset",
- "lazy_static",
  "log",
  "memchr",
- "regex",
+ "regex-automata 0.4.3",
  "same-file",
- "thread_local",
  "walkdir",
  "winapi-util",
 ]
@@ -3509,7 +3524,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
  "serde",
 ]
 
@@ -3544,7 +3559,7 @@ version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "js-sys",
  "wasm-bindgen",
  "web-sys",
@@ -3557,7 +3572,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f3d50eb225913c1903c788287ddd0b16369771e5abc988756a5e5927390ba04f"
 dependencies = [
  "base64 0.21.5",
- "hyper",
+ "hyper 0.14.27",
  "hyper-rustls",
  "ring 0.16.20",
  "serde",
@@ -3577,19 +3592,19 @@ dependencies = [
 
 [[package]]
 name = "io-extras"
-version = "0.18.0"
+version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d3c230ee517ee76b1cc593b52939ff68deda3fae9e41eca426c6b4993df51c4"
+checksum = "c301e73fb90e8a29e600a9f402d095765f74310d582916a952f618836a1bd1ed"
 dependencies = [
  "io-lifetimes",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
 name = "io-lifetimes"
-version = "2.0.2"
+version = "2.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bffb4def18c48926ccac55c1223e02865ce1a821751a95920448662696e7472c"
+checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c"
 
 [[package]]
 name = "ipconfig"
@@ -3639,6 +3654,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "itertools"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
+dependencies = [
+ "either",
+]
+
+[[package]]
 name = "itoa"
 version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3671,7 +3695,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
 dependencies = [
  "cesu8",
- "cfg-if 1.0.0",
+ "cfg-if",
  "combine",
  "jni-sys",
  "log",
@@ -3697,22 +3721,23 @@ dependencies = [
 
 [[package]]
 name = "js-sys"
-version = "0.3.65"
+version = "0.3.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
 dependencies = [
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "jsonwebtoken"
-version = "9.1.0"
+version = "9.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "155c4d7e39ad04c172c5e3a99c434ea3b4a7ba7960b38ecd562b270b097cce09"
+checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4"
 dependencies = [
  "base64 0.21.5",
+ "js-sys",
  "pem 3.0.2",
- "ring 0.17.5",
+ "ring 0.17.7",
  "serde",
  "serde_json",
  "simple_asn1",
@@ -3750,9 +3775,9 @@ checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
 name = "libgit2-sys"
-version = "0.16.1+1.7.1"
+version = "0.16.2+1.7.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2a2bb3680b094add03bb3732ec520ece34da31a8cd2d633d1389d0f0fb60d0c"
+checksum = "ee4126d8b4ee5c9d9ea891dd875cfdc1e9d0950437179104b183d7d8a74d24e8"
 dependencies = [
  "cc",
  "libc",
@@ -3779,9 +3804,9 @@ dependencies = [
 
 [[package]]
 name = "libsqlite3-sys"
-version = "0.26.0"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326"
+checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
 dependencies = [
  "cc",
  "pkg-config",
@@ -3808,9 +3833,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.11"
+version = "0.4.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
+checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456"
 
 [[package]]
 name = "lock_api"
@@ -3905,8 +3930,8 @@ version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
 dependencies = [
- "cfg-if 1.0.0",
- "digest 0.10.7",
+ "cfg-if",
+ "digest",
 ]
 
 [[package]]
@@ -3934,6 +3959,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "memmap2"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "deaba38d7abf1d4cca21cc89e932e542ba2b9258664d2a9ef0e61512039c9375"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "memoffset"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3984,9 +4018,9 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.9"
+version = "0.8.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
 dependencies = [
  "libc",
  "log",
@@ -4012,7 +4046,7 @@ dependencies = [
  "futures-io",
  "futures-util",
  "hex",
- "hmac 0.12.1",
+ "hmac",
  "lazy_static",
  "md-5",
  "pbkdf2",
@@ -4025,7 +4059,7 @@ dependencies = [
  "serde_bytes",
  "serde_with 1.14.0",
  "sha-1",
- "sha2 0.10.8",
+ "sha2",
  "socket2 0.4.10",
  "stringprep",
  "strsim",
@@ -4038,7 +4072,7 @@ dependencies = [
  "trust-dns-resolver 0.21.2",
  "typed-builder",
  "uuid",
- "webpki-roots 0.25.2",
+ "webpki-roots",
 ]
 
 [[package]]
@@ -4068,13 +4102,24 @@ checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
 dependencies = [
  "autocfg",
  "bitflags 1.3.2",
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
  "memoffset 0.6.5",
  "pin-utils",
 ]
 
 [[package]]
+name = "nix"
+version = "0.27.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+dependencies = [
+ "bitflags 2.4.1",
+ "cfg-if",
+ "libc",
+]
+
+[[package]]
 name = "nom"
 version = "7.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4194,7 +4239,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
 dependencies = [
  "crc32fast",
- "hashbrown 0.14.2",
+ "hashbrown 0.14.3",
  "indexmap 2.1.0",
  "memchr",
 ]
@@ -4210,15 +4255,9 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.18.0"
+version = "1.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-
-[[package]]
-name = "opaque-debug"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
+checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
 
 [[package]]
 name = "openssl-probe"
@@ -4228,6 +4267,22 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
 
 [[package]]
 name = "opentelemetry"
+version = "0.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "514d24875c140ed269eecc2d1b56d7b71b573716922a763c317fb1b1b4b58f15"
+dependencies = [
+ "async-trait",
+ "futures",
+ "js-sys",
+ "lazy_static",
+ "percent-encoding",
+ "pin-project",
+ "rand 0.8.5",
+ "thiserror",
+]
+
+[[package]]
+name = "opentelemetry"
 version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a"
@@ -4243,6 +4298,48 @@ dependencies = [
 ]
 
 [[package]]
+name = "opentelemetry-appender-tracing"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12c4bd073648dae8ac45cfc81588d74b3dc5f334119ac08567ddcbfe16f2d809"
+dependencies = [
+ "once_cell",
+ "opentelemetry 0.21.0",
+ "opentelemetry_sdk",
+ "tracing",
+ "tracing-core",
+ "tracing-subscriber",
+]
+
+[[package]]
+name = "opentelemetry-contrib"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e448fc8ad3687b1dd9073087941834f54093624c015a7fbd1f1efc5a38a7737"
+dependencies = [
+ "async-trait",
+ "http 0.2.11",
+ "indexmap 1.9.3",
+ "lazy_static",
+ "opentelemetry 0.12.0",
+ "opentelemetry-http 0.1.0",
+ "rmp",
+ "thiserror",
+]
+
+[[package]]
+name = "opentelemetry-http"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69a853d37ac1c02889211517007a99b2a90d3d7e89526f9af037ada84f1326a1"
+dependencies = [
+ "async-trait",
+ "http 0.2.11",
+ "opentelemetry 0.12.0",
+ "thiserror",
+]
+
+[[package]]
 name = "opentelemetry-http"
 version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4250,8 +4347,8 @@ checksum = "7f51189ce8be654f9b5f7e70e49967ed894e84a06fc35c6c042e64ac1fc5399e"
 dependencies = [
  "async-trait",
  "bytes",
- "http",
- "opentelemetry",
+ "http 0.2.11",
+ "opentelemetry 0.21.0",
 ]
 
 [[package]]
@@ -4262,8 +4359,8 @@ checksum = "f24cda83b20ed2433c68241f918d0f6fdec8b1d43b7a9590ab4420c5095ca930"
 dependencies = [
  "async-trait",
  "futures-core",
- "http",
- "opentelemetry",
+ "http 0.2.11",
+ "opentelemetry 0.21.0",
  "opentelemetry-proto",
  "opentelemetry-semantic-conventions",
  "opentelemetry_sdk",
@@ -4279,7 +4376,7 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a2e155ce5cc812ea3d1dffbd1539aed653de4bf4882d60e6e04dcf0901d674e1"
 dependencies = [
- "opentelemetry",
+ "opentelemetry 0.21.0",
  "opentelemetry_sdk",
  "prost 0.11.9",
  "tonic 0.9.2",
@@ -4291,7 +4388,7 @@ version = "0.13.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f5774f1ef1f982ef2a447f6ee04ec383981a3ab99c8e77a1a7b30182e65bbc84"
 dependencies = [
- "opentelemetry",
+ "opentelemetry 0.21.0",
 ]
 
 [[package]]
@@ -4307,10 +4404,11 @@ dependencies = [
  "futures-util",
  "glob",
  "once_cell",
- "opentelemetry",
+ "opentelemetry 0.21.0",
  "ordered-float",
  "percent-encoding",
  "rand 0.8.5",
+ "serde_json",
  "thiserror",
  "tokio",
  "tokio-stream",
@@ -4324,9 +4422,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
 
 [[package]]
 name = "ordered-float"
-version = "4.1.1"
+version = "4.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "536900a8093134cf9ccf00a27deb3532421099e958d9dd431135d0c7543ca1e8"
+checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e"
 dependencies = [
  "num-traits",
 ]
@@ -4386,7 +4484,7 @@ version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "instant",
  "libc",
  "redox_syscall 0.2.16",
@@ -4400,7 +4498,7 @@ version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
  "redox_syscall 0.4.1",
  "smallvec",
@@ -4419,7 +4517,7 @@ version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917"
 dependencies = [
- "digest 0.10.7",
+ "digest",
 ]
 
 [[package]]
@@ -4462,9 +4560,9 @@ dependencies = [
 
 [[package]]
 name = "percent-encoding"
-version = "2.3.0"
+version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
 
 [[package]]
 name = "pin-project"
@@ -4527,9 +4625,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
 
 [[package]]
 name = "portable-atomic"
-version = "1.5.1"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"
+checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0"
 
 [[package]]
 name = "portpicker"
@@ -4541,6 +4639,17 @@ dependencies = [
 ]
 
 [[package]]
+name = "posthog-core"
+version = "0.1.0"
+source = "git+https://github.com/shuttle-hq/posthog-rs?branch=main#4a8299fde3080bff550620c0853be9b83fee8f44"
+dependencies = [
+ "chrono",
+ "serde",
+ "serde_json",
+ "thiserror",
+]
+
+[[package]]
 name = "powerfmt"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4616,9 +4725,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.69"
+version = "1.0.70"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
 dependencies = [
  "unicode-ident",
 ]
@@ -4661,12 +4770,12 @@ dependencies = [
 
 [[package]]
 name = "prost"
-version = "0.12.2"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5a410fc7882af66deb8d01d01737353cf3ad6204c408177ba494291a626312"
+checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
 dependencies = [
  "bytes",
- "prost-derive 0.12.2",
+ "prost-derive 0.12.3",
 ]
 
 [[package]]
@@ -4684,9 +4793,9 @@ dependencies = [
 
 [[package]]
 name = "prost-derive"
-version = "0.12.2"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "065717a5dfaca4a83d2fe57db3487b311365200000551d7a364e715dbf4346bc"
+checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
 dependencies = [
  "anyhow",
  "itertools 0.11.0",
@@ -4697,11 +4806,11 @@ dependencies = [
 
 [[package]]
 name = "prost-types"
-version = "0.12.2"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8339f32236f590281e2f6368276441394fcd1b2133b549cc895d0ae80f2f9a52"
+checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e"
 dependencies = [
- "prost 0.12.2",
+ "prost 0.12.3",
 ]
 
 [[package]]
@@ -4880,15 +4989,6 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
@@ -4975,10 +5075,10 @@ dependencies = [
  "encoding_rs",
  "futures-core",
  "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
+ "h2 0.3.24",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "hyper-rustls",
  "ipnet",
  "js-sys",
@@ -5002,7 +5102,7 @@ dependencies = [
  "wasm-bindgen",
  "wasm-bindgen-futures",
  "web-sys",
- "webpki-roots 0.25.2",
+ "webpki-roots",
  "winreg",
 ]
 
@@ -5014,7 +5114,7 @@ checksum = "88a3e86aa6053e59030e7ce2d2a3b258dd08fc2d337d52f73f6cb480f5858690"
 dependencies = [
  "anyhow",
  "async-trait",
- "http",
+ "http 0.2.11",
  "reqwest",
  "serde",
  "task-local-extensions",
@@ -5032,8 +5132,8 @@ dependencies = [
  "chrono",
  "futures",
  "getrandom 0.2.11",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "parking_lot 0.11.2",
  "reqwest",
  "reqwest-middleware",
@@ -5055,6 +5155,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "retain_mut"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4389f1d5789befaf6029ebd9f7dac4af7f7e3d61b69d4f30e2ac02b57e7712b0"
+
+[[package]]
 name = "retry-policies"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5072,7 +5178,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "01ff60778f96fb5a48adbe421d21bf6578ed58c0872d712e7e08593c195adff8"
 dependencies = [
  "comma",
- "nix",
+ "nix 0.25.1",
  "regex",
  "tempfile",
  "thiserror",
@@ -5095,9 +5201,9 @@ dependencies = [
 
 [[package]]
 name = "ring"
-version = "0.17.5"
+version = "0.17.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b"
+checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
 dependencies = [
  "cc",
  "getrandom 0.2.11",
@@ -5130,13 +5236,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "roff"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316"
+
+[[package]]
 name = "rsa"
-version = "0.9.3"
+version = "0.9.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86ef35bf3e7fe15a53c4ab08a998e42271eab13eb0db224126bc7bc4c4bad96d"
+checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc"
 dependencies = [
  "const-oid",
- "digest 0.10.7",
+ "digest",
  "num-bigint-dig",
  "num-integer",
  "num-traits",
@@ -5150,41 +5262,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "rust-embed"
-version = "8.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1e7d90385b59f0a6bf3d3b757f3ca4ece2048265d70db20a2016043d4509a40"
-dependencies = [
- "rust-embed-impl",
- "rust-embed-utils",
- "walkdir",
-]
-
-[[package]]
-name = "rust-embed-impl"
-version = "8.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3d8c6fd84090ae348e63a84336b112b5c3918b3bf0493a581f7bd8ee623c29"
-dependencies = [
- "proc-macro2",
- "quote",
- "rust-embed-utils",
- "shellexpand",
- "syn 2.0.39",
- "walkdir",
-]
-
-[[package]]
-name = "rust-embed-utils"
-version = "8.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "873feff8cb7bf86fdf0a71bb21c95159f4e4a37dd7a4bd1855a940909b583ada"
-dependencies = [
- "sha2 0.10.8",
- "walkdir",
-]
-
-[[package]]
 name = "rustc-demangle"
 version = "0.1.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5235,9 +5312,9 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.25"
+version = "0.38.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
+checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a"
 dependencies = [
  "bitflags 2.4.1",
  "errno",
@@ -5245,7 +5322,7 @@ dependencies = [
  "libc",
  "linux-raw-sys",
  "once_cell",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
 ]
 
 [[package]]
@@ -5255,7 +5332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9"
 dependencies = [
  "log",
- "ring 0.17.5",
+ "ring 0.17.7",
  "rustls-webpki",
  "sct",
 ]
@@ -5287,7 +5364,7 @@ version = "0.101.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
 dependencies = [
- "ring 0.17.5",
+ "ring 0.17.7",
  "untrusted 0.9.0",
 ]
 
@@ -5297,7 +5374,7 @@ version = "0.7.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cfe3300a40b60e76a856237ad1fe2210da1f40686705a2211688bb5742109a63"
 dependencies = [
- "arrayvec 0.7.4",
+ "arrayvec",
  "bitflags 1.3.2",
  "doc-comment",
  "finl_unicode",
@@ -5362,7 +5439,7 @@ version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
 dependencies = [
- "ring 0.17.5",
+ "ring 0.17.7",
  "untrusted 0.9.0",
 ]
 
@@ -5415,9 +5492,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
 
 [[package]]
 name = "serde"
-version = "1.0.192"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
 dependencies = [
  "serde_derive",
 ]
@@ -5433,9 +5510,9 @@ dependencies = [
 
 [[package]]
 name = "serde_derive"
-version = "1.0.192"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -5562,9 +5639,9 @@ version = "0.10.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "cpufeatures",
- "digest 0.10.7",
+ "digest",
 ]
 
 [[package]]
@@ -5573,9 +5650,9 @@ version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "cpufeatures",
- "digest 0.10.7",
+ "digest",
 ]
 
 [[package]]
@@ -5586,26 +5663,13 @@ checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
 
 [[package]]
 name = "sha2"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
-dependencies = [
- "block-buffer 0.9.0",
- "cfg-if 1.0.0",
- "cpufeatures",
- "digest 0.9.0",
- "opaque-debug",
-]
-
-[[package]]
-name = "sha2"
 version = "0.10.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "cpufeatures",
- "digest 0.10.7",
+ "digest",
 ]
 
 [[package]]
@@ -5634,7 +5698,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-admin"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "clap",
@@ -5651,40 +5715,43 @@ dependencies = [
 
 [[package]]
 name = "shuttle-auth"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "async-stripe",
  "async-trait",
  "axum",
  "axum-extra",
- "axum-sessions",
  "base64 0.21.5",
+ "chrono",
  "clap",
- "http",
- "hyper",
+ "ctor",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "jsonwebtoken",
- "opentelemetry",
+ "once_cell",
+ "opentelemetry 0.21.0",
  "pem 2.0.1",
  "portpicker",
- "rand 0.8.5",
- "ring 0.17.5",
+ "pretty_assertions",
+ "ring 0.17.7",
  "serde",
  "serde_json",
  "shuttle-common",
+ "shuttle-common-tests",
  "sqlx",
- "strum 0.25.0",
  "thiserror",
  "tokio",
  "tower",
  "tracing",
  "tracing-opentelemetry",
  "tracing-subscriber",
+ "wiremock",
 ]
 
 [[package]]
 name = "shuttle-builder"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "async-trait",
  "clap",
@@ -5710,7 +5777,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-codegen"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "pretty_assertions",
  "proc-macro-error",
@@ -5727,7 +5794,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-common"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -5738,21 +5805,22 @@ dependencies = [
  "comfy-table",
  "crossterm 0.27.0",
  "headers",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "http-serde",
- "hyper",
+ "hyper 0.14.27",
  "jsonwebtoken",
  "once_cell",
- "opentelemetry",
- "opentelemetry-http",
+ "opentelemetry 0.21.0",
+ "opentelemetry-appender-tracing",
+ "opentelemetry-http 0.10.0",
  "opentelemetry-otlp",
  "opentelemetry_sdk",
  "pin-project",
  "proptest",
  "rand 0.8.5",
  "reqwest",
- "ring 0.17.5",
+ "ring 0.17.7",
  "rmp-serde",
  "rustrict",
  "semver 1.0.20",
@@ -5760,60 +5828,60 @@ dependencies = [
  "serde_json",
  "sqlx",
  "strum 0.25.0",
+ "test-context",
  "thiserror",
  "tokio",
  "tonic 0.10.2",
  "tower",
  "tower-http 0.4.4",
  "tracing",
+ "tracing-core",
  "tracing-fluent-assertions",
  "tracing-opentelemetry",
  "tracing-subscriber",
  "ttl_cache",
  "url",
- "utoipa",
  "uuid",
+ "wiremock",
  "zeroize",
 ]
 
 [[package]]
 name = "shuttle-common-tests"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "cargo-shuttle",
- "hyper",
+ "hyper 0.14.27",
  "portpicker",
  "reqwest",
+ "serde",
  "shuttle-common",
  "shuttle-proto",
  "tokio",
  "tokio-stream",
  "tonic 0.10.2",
  "tower",
+ "uuid",
 ]
 
 [[package]]
 name = "shuttle-deployer"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "async-trait",
  "axum",
- "bytes",
  "cargo_metadata 0.18.1",
  "chrono",
  "clap",
  "ctor",
  "flate2",
- "fqdn",
- "futures",
  "hex",
  "home",
- "hyper",
+ "hyper 0.14.27",
  "hyper-reverse-proxy",
  "once_cell",
- "opentelemetry",
- "opentelemetry-http",
+ "opentelemetry 0.21.0",
  "portpicker",
  "prost-types",
  "rand 0.8.5",
@@ -5834,21 +5902,19 @@ dependencies = [
  "toml 0.8.8",
  "tonic 0.10.2",
  "tower",
- "tower-http 0.4.4",
  "tracing",
  "tracing-opentelemetry",
  "tracing-subscriber",
  "ulid",
- "utoipa",
- "utoipa-swagger-ui",
  "uuid",
 ]
 
 [[package]]
 name = "shuttle-gateway"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
+ "async-posthog",
  "async-trait",
  "axum",
  "axum-server",
@@ -5859,23 +5925,24 @@ dependencies = [
  "flate2",
  "fqdn",
  "futures",
- "http",
- "hyper",
+ "http 0.2.11",
+ "hyper 0.14.27",
  "hyper-reverse-proxy",
  "instant-acme",
  "jsonwebtoken",
  "lazy_static",
  "num_cpus",
  "once_cell",
- "opentelemetry",
- "opentelemetry-http",
+ "opentelemetry 0.21.0",
+ "opentelemetry-contrib",
+ "opentelemetry-http 0.10.0",
  "pem 1.1.1",
  "pin-project",
  "portpicker",
  "rand 0.8.5",
  "rcgen",
  "reqwest",
- "ring 0.17.5",
+ "ring 0.17.7",
  "rmp-serde",
  "rustls",
  "rustls-pemfile",
@@ -5901,15 +5968,13 @@ dependencies = [
  "tracing-subscriber",
  "ttl_cache",
  "ulid",
- "utoipa",
- "utoipa-swagger-ui",
  "uuid",
  "x509-parser",
 ]
 
 [[package]]
 name = "shuttle-logger"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -5930,32 +5995,36 @@ dependencies = [
  "tonic 0.10.2",
  "tracing",
  "tracing-subscriber",
- "uuid",
 ]
 
 [[package]]
 name = "shuttle-orchestrator"
-version = "0.34.1"
+version = "0.39.0"
 
 [[package]]
 name = "shuttle-proto"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
+ "async-trait",
  "chrono",
  "futures-core",
- "prost 0.12.2",
+ "http 0.2.11",
+ "portpicker",
+ "prost 0.12.3",
  "prost-types",
  "serde_json",
  "shuttle-common",
+ "test-context",
  "tokio",
  "tonic 0.10.2",
+ "tower",
  "tracing",
 ]
 
 [[package]]
 name = "shuttle-provisioner"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "aws-config",
  "aws-sdk-rds",
@@ -5965,10 +6034,11 @@ dependencies = [
  "mongodb",
  "once_cell",
  "portpicker",
- "prost 0.12.2",
+ "prost 0.12.3",
  "rand 0.8.5",
  "serde_json",
  "shuttle-common",
+ "shuttle-common-tests",
  "shuttle-proto",
  "sqlx",
  "thiserror",
@@ -5980,7 +6050,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-resource-recorder"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "async-trait",
  "chrono",
@@ -6004,7 +6074,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-runtime"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -6012,7 +6082,7 @@ dependencies = [
  "chrono",
  "colored",
  "futures",
- "hyper",
+ "hyper 0.14.27",
  "portpicker",
  "prost-types",
  "rmp-serde",
@@ -6027,7 +6097,6 @@ dependencies = [
  "tokio",
  "tokio-stream",
  "tonic 0.10.2",
- "tower",
  "tracing-subscriber",
  "uuid",
  "wasi-common",
@@ -6037,7 +6106,7 @@ dependencies = [
 
 [[package]]
 name = "shuttle-service"
-version = "0.34.1"
+version = "0.39.0"
 dependencies = [
  "anyhow",
  "async-trait",
@@ -6050,7 +6119,6 @@ dependencies = [
  "thiserror",
  "tokio",
  "toml 0.8.8",
- "tower",
  "tracing",
 ]
 
@@ -6090,7 +6158,7 @@ version = "2.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
 dependencies = [
- "digest 0.10.7",
+ "digest",
  "rand_core 0.6.4",
 ]
 
@@ -6194,9 +6262,9 @@ dependencies = [
 
 [[package]]
 name = "spki"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a"
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
 dependencies = [
  "base64ct",
  "der",
@@ -6210,20 +6278,20 @@ checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a"
 
 [[package]]
 name = "sqlformat"
-version = "0.2.2"
+version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85"
+checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c"
 dependencies = [
- "itertools 0.11.0",
+ "itertools 0.12.0",
  "nom",
  "unicode_categories",
 ]
 
 [[package]]
 name = "sqlx"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e50c216e3624ec8e7ecd14c6a6a6370aad6ee5d8cfc3ab30b5162eeeef2ed33"
+checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf"
 dependencies = [
  "sqlx-core",
  "sqlx-macros",
@@ -6234,9 +6302,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-core"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d6753e460c998bbd4cd8c6f0ed9a64346fcca0723d6e75e52fdc351c5d2169d"
+checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd"
 dependencies = [
  "ahash",
  "atoi",
@@ -6265,7 +6333,7 @@ dependencies = [
  "rustls-pemfile",
  "serde",
  "serde_json",
- "sha2 0.10.8",
+ "sha2",
  "smallvec",
  "sqlformat",
  "thiserror",
@@ -6274,14 +6342,14 @@ dependencies = [
  "tracing",
  "url",
  "uuid",
- "webpki-roots 0.24.0",
+ "webpki-roots",
 ]
 
 [[package]]
 name = "sqlx-macros"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a793bb3ba331ec8359c1853bd39eed32cdd7baaf22c35ccf5c92a7e8d1189ec"
+checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -6292,10 +6360,11 @@ dependencies = [
 
 [[package]]
 name = "sqlx-macros-core"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0a4ee1e104e00dedb6aa5ffdd1343107b0a4702e862a84320ee7cc74782d96fc"
+checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841"
 dependencies = [
+ "atomic-write-file",
  "dotenvy",
  "either",
  "heck",
@@ -6305,7 +6374,7 @@ dependencies = [
  "quote",
  "serde",
  "serde_json",
- "sha2 0.10.8",
+ "sha2",
  "sqlx-core",
  "sqlx-mysql",
  "sqlx-postgres",
@@ -6318,9 +6387,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-mysql"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "864b869fdf56263f4c95c45483191ea0af340f9f3e3e7b4d57a61c7c87a970db"
+checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4"
 dependencies = [
  "atoi",
  "base64 0.21.5",
@@ -6329,7 +6398,7 @@ dependencies = [
  "bytes",
  "chrono",
  "crc",
- "digest 0.10.7",
+ "digest",
  "dotenvy",
  "either",
  "futures-channel",
@@ -6339,7 +6408,7 @@ dependencies = [
  "generic-array",
  "hex",
  "hkdf",
- "hmac 0.12.1",
+ "hmac",
  "itoa",
  "log",
  "md-5",
@@ -6350,7 +6419,7 @@ dependencies = [
  "rsa",
  "serde",
  "sha1",
- "sha2 0.10.8",
+ "sha2",
  "smallvec",
  "sqlx-core",
  "stringprep",
@@ -6362,9 +6431,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-postgres"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eb7ae0e6a97fb3ba33b23ac2671a5ce6e3cabe003f451abd5a56e7951d975624"
+checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24"
 dependencies = [
  "atoi",
  "base64 0.21.5",
@@ -6380,7 +6449,7 @@ dependencies = [
  "futures-util",
  "hex",
  "hkdf",
- "hmac 0.12.1",
+ "hmac",
  "home",
  "itoa",
  "log",
@@ -6391,7 +6460,7 @@ dependencies = [
  "serde",
  "serde_json",
  "sha1",
- "sha2 0.10.8",
+ "sha2",
  "smallvec",
  "sqlx-core",
  "stringprep",
@@ -6403,9 +6472,9 @@ dependencies = [
 
 [[package]]
 name = "sqlx-sqlite"
-version = "0.7.2"
+version = "0.7.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d59dc83cf45d89c555a577694534fcd1b55c545a816c816ce51f20bbe56a4f3f"
+checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490"
 dependencies = [
  "atoi",
  "chrono",
@@ -6422,6 +6491,7 @@ dependencies = [
  "sqlx-core",
  "tracing",
  "url",
+ "urlencoding",
  "uuid",
 ]
 
@@ -6639,7 +6709,7 @@ version = "3.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "fastrand 2.0.1",
  "redox_syscall 0.4.1",
  "rustix",
@@ -6708,7 +6778,7 @@ version = "1.1.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "once_cell",
 ]
 
@@ -6844,7 +6914,7 @@ dependencies = [
  "tokio",
  "tokio-rustls",
  "tungstenite",
- "webpki-roots 0.25.2",
+ "webpki-roots",
 ]
 
 [[package]]
@@ -6869,7 +6939,7 @@ source = "git+https://github.com/shuttle-hq/tokiotest-httpserver?branch=feat/bod
 dependencies = [
  "async-trait",
  "futures",
- "hyper",
+ "hyper 0.14.27",
  "lazy_static",
  "queues",
  "serde_json",
@@ -6970,10 +7040,10 @@ dependencies = [
  "bytes",
  "futures-core",
  "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
+ "h2 0.3.24",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "hyper-timeout",
  "percent-encoding",
  "pin-project",
@@ -6997,14 +7067,14 @@ dependencies = [
  "axum",
  "base64 0.21.5",
  "bytes",
- "h2",
- "http",
- "http-body",
- "hyper",
+ "h2 0.3.24",
+ "http 0.2.11",
+ "http-body 0.4.5",
+ "hyper 0.14.27",
  "hyper-timeout",
  "percent-encoding",
  "pin-project",
- "prost 0.12.2",
+ "prost 0.12.3",
  "tokio",
  "tokio-stream",
  "tower",
@@ -7043,8 +7113,8 @@ dependencies = [
  "bytes",
  "futures-core",
  "futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "http-range-header",
  "pin-project-lite",
  "tower-layer",
@@ -7057,15 +7127,13 @@ version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140"
 dependencies = [
- "base64 0.21.5",
  "bitflags 2.4.1",
  "bytes",
  "futures-core",
  "futures-util",
- "http",
- "http-body",
+ "http 0.2.11",
+ "http-body 0.4.5",
  "http-range-header",
- "mime",
  "pin-project-lite",
  "tower-layer",
  "tower-service",
@@ -7084,7 +7152,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4f8277387194ad48739f3516a54ef4486927ba53b8d889871f3715fb8f99f5aa"
 dependencies = [
- "http",
+ "http 0.2.11",
  "tower-layer",
  "tower-service",
  "url-escape",
@@ -7159,7 +7227,7 @@ checksum = "c67ac25c5407e7b961fafc6f7e9aa5958fd297aada2d20fa2ae1737357e55596"
 dependencies = [
  "js-sys",
  "once_cell",
- "opentelemetry",
+ "opentelemetry 0.21.0",
  "opentelemetry_sdk",
  "smallvec",
  "tracing",
@@ -7170,6 +7238,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "tracing-serde"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1"
+dependencies = [
+ "serde",
+ "tracing-core",
+]
+
+[[package]]
 name = "tracing-subscriber"
 version = "0.3.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -7179,12 +7257,15 @@ dependencies = [
  "nu-ansi-term",
  "once_cell",
  "regex",
+ "serde",
+ "serde_json",
  "sharded-slab",
  "smallvec",
  "thread_local",
  "tracing",
  "tracing-core",
  "tracing-log",
+ "tracing-serde",
 ]
 
 [[package]]
@@ -7194,7 +7275,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d"
 dependencies = [
  "async-trait",
- "cfg-if 1.0.0",
+ "cfg-if",
  "data-encoding",
  "enum-as-inner 0.4.0",
  "futures-channel",
@@ -7219,7 +7300,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3119112651c157f4488931a01e586aa459736e9d6046d3bd9105ffb69352d374"
 dependencies = [
  "async-trait",
- "cfg-if 1.0.0",
+ "cfg-if",
  "data-encoding",
  "enum-as-inner 0.6.0",
  "futures-channel",
@@ -7243,7 +7324,7 @@ version = "0.21.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "futures-util",
  "ipconfig",
  "lazy_static",
@@ -7263,7 +7344,7 @@ version = "0.23.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "10a3e6c3aff1718b3c73e395d1f35202ba2ffa847c6a62eea0db8fb4cfe30be6"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "futures-util",
  "ipconfig",
  "lru-cache",
@@ -7280,9 +7361,9 @@ dependencies = [
 
 [[package]]
 name = "try-lock"
-version = "0.2.4"
+version = "0.2.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
 
 [[package]]
 name = "trybuild"
@@ -7317,7 +7398,7 @@ dependencies = [
  "byteorder",
  "bytes",
  "data-encoding",
- "http",
+ "http 0.2.11",
  "httparse",
  "log",
  "rand 0.8.5",
@@ -7372,9 +7453,9 @@ dependencies = [
 
 [[package]]
 name = "unicode-bidi"
-version = "0.3.13"
+version = "0.3.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416"
 
 [[package]]
 name = "unicode-bom"
@@ -7435,12 +7516,12 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 
 [[package]]
 name = "url"
-version = "2.4.1"
+version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
 dependencies = [
  "form_urlencoded",
- "idna 0.4.0",
+ "idna 0.5.0",
  "percent-encoding",
  "serde",
 ]
@@ -7473,51 +7554,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
-name = "utoipa"
-version = "4.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ff05e3bac2c9428f57ade702667753ca3f5cf085e2011fe697de5bfd49aa72d"
-dependencies = [
- "indexmap 2.1.0",
- "serde",
- "serde_json",
- "utoipa-gen",
-]
-
-[[package]]
-name = "utoipa-gen"
-version = "4.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f0b6f4667edd64be0e820d6631a60433a269710b6ee89ac39525b872b76d61d"
-dependencies = [
- "proc-macro-error",
- "proc-macro2",
- "quote",
- "syn 2.0.39",
- "uuid",
-]
-
-[[package]]
-name = "utoipa-swagger-ui"
-version = "4.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "154517adf0d0b6e22e8e1f385628f14fcaa3db43531dc74303d3edef89d6dfe5"
-dependencies = [
- "axum",
- "mime_guess",
- "regex",
- "rust-embed",
- "serde",
- "serde_json",
- "utoipa",
- "zip",
-]
-
-[[package]]
 name = "uuid"
-version = "1.5.0"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
+checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
 dependencies = [
  "getrandom 0.2.11",
  "serde",
@@ -7639,19 +7679,19 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.88"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "wasm-bindgen-macro",
 ]
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.88"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
 dependencies = [
  "bumpalo",
  "log",
@@ -7664,11 +7704,11 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.38"
+version = "0.4.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02"
+checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "js-sys",
  "wasm-bindgen",
  "web-sys",
@@ -7676,9 +7716,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.88"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -7686,9 +7726,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.88"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -7699,9 +7739,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.88"
+version = "0.2.89"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
 
 [[package]]
 name = "wasm-encoder"
@@ -7714,9 +7754,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-encoder"
-version = "0.37.0"
+version = "0.38.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d135e8940b69dbee0f5b0a0be9c1cd6fa8b71d774904c13a3fcfc5dc265e43d"
+checksum = "0ad2b51884de9c7f4fe2fd1043fccb8dcad4b1e29558146ee57a144d15779f3f"
 dependencies = [
  "leb128",
 ]
@@ -7748,23 +7788,22 @@ dependencies = [
 
 [[package]]
 name = "wasmparser"
-version = "0.117.0"
+version = "0.118.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b206de0c992af9f0b51ef2fb9455623e0a19eb68f172cd8ba9cd0e46637f5ab"
+checksum = "95ee9723b928e735d53000dec9eae7b07a60e490c85ab54abb66659fc61bfcd9"
 dependencies = [
- "hashbrown 0.14.2",
  "indexmap 2.1.0",
  "semver 1.0.20",
 ]
 
 [[package]]
 name = "wasmprinter"
-version = "0.2.73"
+version = "0.2.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a4fdb34710b461c868c3f79a10a48b404f23b46fd471ab02bcaa60fd96c5c4b"
+checksum = "3d027eb8294904fc715ac0870cebe6b0271e96b90605ee21511e7565c4ce568c"
 dependencies = [
  "anyhow",
- "wasmparser 0.117.0",
+ "wasmparser 0.118.1",
 ]
 
 [[package]]
@@ -7777,7 +7816,7 @@ dependencies = [
  "async-trait",
  "bincode",
  "bumpalo",
- "cfg-if 1.0.0",
+ "cfg-if",
  "encoding_rs",
  "fxprof-processed-profile",
  "indexmap 2.1.0",
@@ -7813,7 +7852,7 @@ version = "13.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4711e5969236ecfbe70c807804ff9ffb5206c1dbb5c55c5e8200d9f7e8e76adf"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
 ]
 
 [[package]]
@@ -7830,7 +7869,7 @@ dependencies = [
  "rustix",
  "serde",
  "serde_derive",
- "sha2 0.10.8",
+ "sha2",
  "toml 0.5.11",
  "windows-sys 0.48.0",
  "zstd",
@@ -7864,7 +7903,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4e63f53c61ba05eb815f905c1738ad82c95333dd42ef5a8cc2aa3d7dfb2b08d7"
 dependencies = [
  "anyhow",
- "cfg-if 1.0.0",
+ "cfg-if",
  "cranelift-codegen",
  "cranelift-control",
  "cranelift-entity",
@@ -7928,7 +7967,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a615a2cf64a49c0dc659c7d850c6cd377b975e0abfdcf0888b282d274a82e730"
 dependencies = [
  "cc",
- "cfg-if 1.0.0",
+ "cfg-if",
  "rustix",
  "wasmtime-asm-macros",
  "wasmtime-versioned-export-macros",
@@ -7944,7 +7983,7 @@ dependencies = [
  "addr2line",
  "anyhow",
  "bincode",
- "cfg-if 1.0.0",
+ "cfg-if",
  "cpp_demangle",
  "gimli",
  "ittapi",
@@ -7980,7 +8019,7 @@ version = "13.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f323977cddf4a262d1b856366b665c5b4d01793c57b79fb42505b9fd9e61e5b"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "libc",
  "windows-sys 0.48.0",
 ]
@@ -7993,7 +8032,7 @@ checksum = "29e26461bba043f73cb4183f4ce0d606c0eaac112475867b11e5ea36fe1cac8e"
 dependencies = [
  "anyhow",
  "cc",
- "cfg-if 1.0.0",
+ "cfg-if",
  "encoding_rs",
  "indexmap 2.1.0",
  "libc",
@@ -8119,30 +8158,30 @@ dependencies = [
 
 [[package]]
 name = "wast"
-version = "68.0.0"
+version = "69.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7bf3081ac6bcb3a5b72a401693b3566feb529dc2b7e7b62ea544c8a30d0f4d05"
+checksum = "c1ee37317321afde358e4d7593745942c48d6d17e0e6e943704de9bbee121e7a"
 dependencies = [
  "leb128",
  "memchr",
  "unicode-width",
- "wasm-encoder 0.37.0",
+ "wasm-encoder 0.38.1",
 ]
 
 [[package]]
 name = "wat"
-version = "1.0.80"
+version = "1.0.82"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fabe07d22a837b3bd5662ba9e980d73de115c040923659a1801934c7ccebe49"
+checksum = "aeb338ee8dee4d4cd05e6426683f21c5087dc7cfc8903e839ccf48d43332da3c"
 dependencies = [
- "wast 68.0.0",
+ "wast 69.0.1",
 ]
 
 [[package]]
 name = "web-sys"
-version = "0.3.65"
+version = "0.3.66"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
+checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -8177,18 +8216,9 @@ dependencies = [
 
 [[package]]
 name = "webpki-roots"
-version = "0.24.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888"
-dependencies = [
- "rustls-webpki",
-]
-
-[[package]]
-name = "webpki-roots"
-version = "0.25.2"
+version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc"
+checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10"
 
 [[package]]
 name = "whoami"
@@ -8328,6 +8358,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.0",
+]
+
+[[package]]
 name = "windows-targets"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8358,6 +8397,21 @@ dependencies = [
 ]
 
 [[package]]
+name = "windows-targets"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.0",
+ "windows_aarch64_msvc 0.52.0",
+ "windows_i686_gnu 0.52.0",
+ "windows_i686_msvc 0.52.0",
+ "windows_x86_64_gnu 0.52.0",
+ "windows_x86_64_gnullvm 0.52.0",
+ "windows_x86_64_msvc 0.52.0",
+]
+
+[[package]]
 name = "windows_aarch64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8370,6 +8424,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8382,6 +8442,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8394,6 +8460,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8406,6 +8478,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8418,6 +8496,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8430,6 +8514,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -8442,10 +8532,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+
+[[package]]
 name = "winnow"
-version = "0.5.19"
+version = "0.5.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
+checksum = "b7e87b8dfbe3baffbe687eef2e164e32286eff31a5ee16463ce03d991643ec94"
 dependencies = [
  "memchr",
 ]
@@ -8456,18 +8552,42 @@ version = "0.50.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
 dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
  "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "winx"
-version = "0.36.2"
+version = "0.36.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "357bb8e2932df531f83b052264b050b81ba0df90ee5a59b2d1d3949f344f81e5"
+checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346"
 dependencies = [
  "bitflags 2.4.1",
- "windows-sys 0.48.0",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "wiremock"
+version = "0.6.0-rc.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94819bffc61c498ea8219c8ba084523abd5465ccb0c11be4d9ebc9fa1fbc3617"
+dependencies = [
+ "assert-json-diff",
+ "async-trait",
+ "base64 0.21.5",
+ "deadpool",
+ "futures",
+ "http 1.0.0",
+ "http-body-util",
+ "hyper 1.1.0",
+ "hyper-util",
+ "log",
+ "once_cell",
+ "regex",
+ "serde",
+ "serde_json",
+ "tokio",
+ "url",
 ]
 
 [[package]]
@@ -8558,18 +8678,18 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.7.26"
+version = "0.7.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0"
+checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.26"
+version = "0.7.31"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f"
+checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -8583,18 +8703,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
 
 [[package]]
-name = "zip"
-version = "0.6.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
-dependencies = [
- "byteorder",
- "crc32fast",
- "crossbeam-utils",
- "flate2",
-]
-
-[[package]]
 name = "zstd"
 version = "0.11.2+zstd.1.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/default.nix
index 9d0a0fc0ca08..befba6ffac56 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-shuttle/default.nix
@@ -10,18 +10,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-shuttle";
-  version = "0.34.1";
+  version = "0.39.0";
 
   src = fetchFromGitHub {
     owner = "shuttle-hq";
     repo = "shuttle";
     rev = "v${version}";
-    hash = "sha256-SAad1GS092a9LBzlnf1UMLGwKsNBOgWP0gjoW2M0SH4=";
+    hash = "sha256-U6C6pUl6Re3fYt5KlBItpErboYXctsotunsUpWmZxiY=";
   };
 
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
+      "async-posthog-0.2.3" = "sha256-V0f9+UKZkqh80p7UjINEbAW9y8cKBmJTRjAJZV3no1M=";
       "hyper-reverse-proxy-0.5.2-dev" = "sha256-R1ZXGgWvwHWRHmKX823QLqM6ZJW+tzWUXigKkAyI5OE=";
       "tokiotest-httpserver-0.2.1" = "sha256-IPUaglIDwCUoczCCnX+R1IBqtc0s8b8toKEL8zN3/i8=";
     };
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-tally/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-tally/default.nix
index 0d4218198233..cac76677c331 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-tally/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-tally/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "cargo-tally";
-  version = "1.0.38";
+  version = "1.0.39";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-OPl0/HhVMFp4EDEjBDjqVF5LGbz1T+0j/OiF8emHLxc=";
+    hash = "sha256-7YUS+MaUmZ9dopeailASZQdmJiyVLwdXV0agA1upXsE=";
   };
 
-  cargoHash = "sha256-Agdzm2uNJH59S+ok0AG3sYTs6tSEDoBgYEBXvgkNj0U=";
+  cargoHash = "sha256-eEfuFYl949Ps9cstO61j4GTdMHk2SjpRpWxK4onTgfw=";
 
   buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk_11_0.frameworks; [
     DiskArbitration
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-tauri/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-tauri/default.nix
index d8c43627b2dc..870285879d76 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-tauri/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-tauri/default.nix
@@ -17,20 +17,20 @@ let
 in
 rustPlatform.buildRustPackage rec {
   pname = "tauri";
-  version = "1.6.0";
+  version = "1.6.1";
 
   src = fetchFromGitHub {
     owner = "tauri-apps";
     repo = pname;
     rev = "tauri-v${version}";
-    hash = "sha256-0LKkGpbDT6bRzoggDmTmSB8UaT11OME7OXsr+M67WVU=";
+    hash = "sha256-P0/c9GTQRdErwE3/uuZpMqiTl/nFGSaHoWGRtBDjc8M=";
   };
 
   # Manually specify the sourceRoot since this crate depends on other crates in the workspace. Relevant info at
   # https://discourse.nixos.org/t/difficulty-using-buildrustpackage-with-a-src-containing-multiple-cargo-workspaces/10202
   sourceRoot = "${src.name}/tooling/cli";
 
-  cargoHash = "sha256-0GJrQQsHcl/7co2hSYHgBWX3NqJwbbnBAj3zdAjA4r8=";
+  cargoHash = "sha256-+uRjitfaSbjsO1yO5NL3gw+qjx4neiht3BDvWltogX0=";
 
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isLinux [ glibc libsoup cairo gtk3 webkitgtk ]
     ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-ui/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-ui/default.nix
index 7af23346f0fb..870b411afc9e 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-ui/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-ui/default.nix
@@ -2,7 +2,7 @@
 , rustPlatform
 , fetchCrate
 , pkg-config
-, libgit2_1_5
+, libgit2
 , openssl
 , stdenv
 , expat
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_5
+    libgit2
     openssl
   ] ++ lib.optionals stdenv.isLinux [
     expat
@@ -48,6 +48,10 @@ rustPlatform.buildRustPackage rec {
       --add-rpath ${lib.makeLibraryPath [ fontconfig libGL ]}
   '';
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "A GUI for Cargo";
     homepage = "https://github.com/slint-ui/cargo-ui";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-unused-features/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-unused-features/default.nix
index f6e3057ecffe..70518087e086 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-unused-features/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-unused-features/default.nix
@@ -3,7 +3,7 @@
 , fetchCrate
 , curl
 , pkg-config
-, libgit2_1_5
+, libgit2
 , openssl
 , stdenv
 , darwin
@@ -27,13 +27,17 @@ rustPlatform.buildRustPackage rec {
 
   buildInputs = [
     curl
-    libgit2_1_5
+    libgit2
     openssl
   ] ++ lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.CoreFoundation
     darwin.apple_sdk.frameworks.Security
   ];
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "A tool to find potential unused enabled feature flags and prune them";
     homepage = "https://github.com/timonpost/cargo-unused-features";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-update/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-update/default.nix
index 3b3418f38dc0..986f705455c6 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-update/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-update/default.nix
@@ -7,7 +7,7 @@
 , ronn
 , stdenv
 , curl
-, libgit2_1_5
+, libgit2
 , libssh2
 , openssl
 , zlib
@@ -35,7 +35,7 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_5
+    libgit2
     libssh2
     openssl
     zlib
@@ -55,6 +55,10 @@ rustPlatform.buildRustPackage rec {
     installManPage man/*.1
   '';
 
+  env = {
+    LIBGIT2_NO_VENDOR = 1;
+  };
+
   meta = with lib; {
     description = "A cargo subcommand for checking and applying updates to installed executables";
     homepage = "https://github.com/nabijaczleweli/cargo-update";
diff --git a/nixpkgs/pkgs/development/tools/rust/cargo-workspaces/default.nix b/nixpkgs/pkgs/development/tools/rust/cargo-workspaces/default.nix
index 5cb3c4de96b1..b087ef552ca9 100644
--- a/nixpkgs/pkgs/development/tools/rust/cargo-workspaces/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/cargo-workspaces/default.nix
@@ -2,7 +2,6 @@
 , rustPlatform
 , fetchCrate
 , pkg-config
-, libgit2_1_6
 , libssh2
 , openssl
 , zlib
@@ -26,7 +25,6 @@ rustPlatform.buildRustPackage rec {
   ];
 
   buildInputs = [
-    libgit2_1_6
     libssh2
     openssl
     zlib
diff --git a/nixpkgs/pkgs/development/tools/rust/probe-rs/default.nix b/nixpkgs/pkgs/development/tools/rust/probe-rs/default.nix
index 90ab81e4ddde..cb26888f1b05 100644
--- a/nixpkgs/pkgs/development/tools/rust/probe-rs/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/probe-rs/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "probe-rs";
-  version = "0.22.0";
+  version = "0.23.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-7bWx6ZILqdSDY/q51UP/BuCgMH0F4ePMSnclHeF2DY4=";
+    hash = "sha256-5V7eLnukVAcOSX52myvaTlDbemGp6mDaWrQc3w4P5MI=";
   };
 
-  cargoHash = "sha256-ynmKmXQrUnTcmo0S7FO+l/9EPuzgLCdUOPLuwoG4pbU=";
+  cargoHash = "sha256-sZl4FhaKIMJe7v5AAIM2w7M8Ev7vCht3owkvt0UhOu8=";
 
   cargoBuildFlags = [ "--features=cli" ];
 
diff --git a/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix b/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix
index 1dcd78112c4b..e202baeb92f6 100644
--- a/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/rust-analyzer/default.nix
@@ -13,14 +13,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rust-analyzer-unwrapped";
-  version = "2024-02-19";
-  cargoSha256 = "sha256-xrLjM2fx+IGkl0UQREH3PvdjpEkXWmFgG8V8/3mO674=";
+  version = "2024-02-26";
+  cargoSha256 = "sha256-qlLHynifRrMo1ZHFKDTXjsUnF6BFiiBH87ILBWCkDmE=";
 
   src = fetchFromGitHub {
     owner = "rust-lang";
     repo = "rust-analyzer";
     rev = version;
-    sha256 = "sha256-Oj/RPMridKpYt3eRqUIPg9YNrj6npG8THIGuWjsamnE=";
+    sha256 = "sha256-IBHMNEe3lspVdIzjpM2OVZiBFmFw1DKtdgVN5G41pRc=";
   };
 
   cargoBuildFlags = [ "--bin" "rust-analyzer" "--bin" "rust-analyzer-proc-macro-srv" ];
diff --git a/nixpkgs/pkgs/development/tools/rust/sqlx-cli/default.nix b/nixpkgs/pkgs/development/tools/rust/sqlx-cli/default.nix
index 16edbf5591d2..55cf34bdac28 100644
--- a/nixpkgs/pkgs/development/tools/rust/sqlx-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/sqlx-cli/default.nix
@@ -11,6 +11,7 @@
 , CoreFoundation
 , Security
 , SystemConfiguration
+, nix-update-script
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -72,6 +73,8 @@ rustPlatform.buildRustPackage rec {
     command = "sqlx --version";
   };
 
+  passthru.updateScript = nix-update-script { };
+
   meta = with lib; {
     description =
       "SQLx's associated command-line utility for managing databases, migrations, and enabling offline mode with sqlx::query!() and friends.";
diff --git a/nixpkgs/pkgs/development/tools/rust/typeshare/default.nix b/nixpkgs/pkgs/development/tools/rust/typeshare/default.nix
index 4f5eb0a5a6ec..9d9c554daaee 100644
--- a/nixpkgs/pkgs/development/tools/rust/typeshare/default.nix
+++ b/nixpkgs/pkgs/development/tools/rust/typeshare/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "typeshare";
-  version = "1.7.0";
+  version = "1.8.0";
 
   src = fetchFromGitHub {
     owner = "1password";
     repo = "typeshare";
     rev = "v${version}";
-    hash = "sha256-Ftr0YMrY6tPpfg25swYntBXLWGKT00PEz79aOiSgLsU=";
+    hash = "sha256-ykrtvXPXxNYrUQNScit+REb7/6mE0FOzBQxPdbWodgk=";
   };
 
-  cargoHash = "sha256-VIPIFdbyPcflqHHLkzpDugmw9+9CJRIv+Oy7PoaUZ5g=";
+  cargoHash = "sha256-/oIezLqd3hkWrfO2pml31de+pgpEXhXHxIxt10rPJZo=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/development/tools/rye/Cargo.lock b/nixpkgs/pkgs/development/tools/rye/Cargo.lock
index 85583e506891..0b4ed0aab033 100644
--- a/nixpkgs/pkgs/development/tools/rye/Cargo.lock
+++ b/nixpkgs/pkgs/development/tools/rye/Cargo.lock
@@ -403,25 +403,6 @@ dependencies = [
 ]
 
 [[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.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -811,6 +792,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "fslock"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb"
+dependencies = [
+ "libc",
+ "winapi",
+]
+
+[[package]]
 name = "generic-array"
 version = "0.14.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1059,6 +1050,32 @@ dependencies = [
 ]
 
 [[package]]
+name = "insta"
+version = "1.35.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c985c1bef99cf13c58fade470483d81a2bfe846ebde60ed28cc2dddec2df9e2"
+dependencies = [
+ "console",
+ "lazy_static",
+ "linked-hash-map",
+ "regex",
+ "serde",
+ "similar",
+ "yaml-rust",
+]
+
+[[package]]
+name = "insta-cmd"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1980f17994b79f75670aa90cfc8d35edc4aa248f16aa48b5e27835b080e452a2"
+dependencies = [
+ "insta",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
 name = "instant"
 version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1153,6 +1170,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "linked-hash-map"
+version = "0.5.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+
+[[package]]
 name = "linux-raw-sys"
 version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1615,26 +1638,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "rayon"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051"
-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 = "redox_syscall"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1792,7 +1795,7 @@ dependencies = [
 
 [[package]]
 name = "rye"
-version = "0.24.0"
+version = "0.27.0"
 dependencies = [
  "age",
  "anyhow",
@@ -1806,11 +1809,14 @@ dependencies = [
  "decompress",
  "dialoguer",
  "flate2",
+ "fslock",
  "git-testament",
  "globset",
  "hex",
  "home",
  "indicatif",
+ "insta",
+ "insta-cmd",
  "junction",
  "license",
  "memchr",
@@ -1837,7 +1843,6 @@ dependencies = [
  "toml_edit",
  "url",
  "walkdir",
- "whattheshell",
  "which",
  "winapi",
  "winreg",
@@ -2006,6 +2011,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
 
 [[package]]
+name = "similar"
+version = "2.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21"
+
+[[package]]
 name = "slug"
 version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2101,7 +2112,6 @@ dependencies = [
  "libc",
  "ntapi",
  "once_cell",
- "rayon",
  "winapi",
 ]
 
@@ -2515,16 +2525,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
 
 [[package]]
-name = "whattheshell"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c94d2698698cb1322e20292460fd158373af5fb2802afb6bea9ee17628efddb"
-dependencies = [
- "sysinfo",
- "thiserror",
-]
-
-[[package]]
 name = "which"
 version = "6.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2742,6 +2742,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "yaml-rust"
+version = "0.4.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
+dependencies = [
+ "linked-hash-map",
+]
+
+[[package]]
 name = "zerocopy"
 version = "0.7.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/nixpkgs/pkgs/development/tools/rye/default.nix b/nixpkgs/pkgs/development/tools/rye/default.nix
index 3c625b1edb3e..fb7db7343a0b 100644
--- a/nixpkgs/pkgs/development/tools/rye/default.nix
+++ b/nixpkgs/pkgs/development/tools/rye/default.nix
@@ -12,13 +12,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "rye";
-  version = "0.24.0";
+  version = "0.27.0";
 
   src = fetchFromGitHub {
     owner = "mitsuhiko";
     repo = "rye";
     rev = "refs/tags/${version}";
-    hash = "sha256-OiChd0qwgs3Wi4Xky27/99vBwaKNsq+4E+gpu5zwFqs=";
+    hash = "sha256-tqwjhA81UYCtZjz6X5tIZ91pDVPe4UU+sTKUIzmOHlM=";
   };
 
   cargoLock = {
@@ -53,6 +53,23 @@ rustPlatform.buildRustPackage rec {
 
   checkFlags = [
     "--skip=utils::test_is_inside_git_work_tree"
+
+    # The following require internet access to fetch a python binary
+    "--skip=test_add_and_sync_no_auto_sync"
+    "--skip=test_add_autosync"
+    "--skip=test_add_flask"
+    "--skip=test_add_from_find_links"
+    "--skip=test_basic_tool_behavior"
+    "--skip=test_config_empty"
+    "--skip=test_config_get_set_multiple"
+    "--skip=test_config_incompatible_format_and_show_path"
+    "--skip=test_config_show_path"
+    "--skip=test_empty_sync"
+    "--skip=test_fetch"
+    "--skip=test_init_default"
+    "--skip=test_init_lib"
+    "--skip=test_init_script"
+    "--skip=test_lint_and_format"
   ];
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/development/tools/sentry-cli/default.nix b/nixpkgs/pkgs/development/tools/sentry-cli/default.nix
index 46c83790d064..be37733dfda3 100644
--- a/nixpkgs/pkgs/development/tools/sentry-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/sentry-cli/default.nix
@@ -1,6 +1,7 @@
 { rustPlatform
 , fetchFromGitHub
 , lib
+, installShellFiles
 , openssl
 , pkg-config
 , stdenv
@@ -10,13 +11,13 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "sentry-cli";
-  version = "2.28.0";
+  version = "2.28.6";
 
   src = fetchFromGitHub {
     owner = "getsentry";
     repo = "sentry-cli";
     rev = version;
-    sha256 = "sha256-KC+2ZJGMd5xjekRRgkKB09v9+h6CS94fs6/Px3Pn54Q=";
+    sha256 = "sha256-cynq7w0xLnLafStcfrG27PNHVoMu4TxFIwwrWjj9ynM=";
   };
   doCheck = false;
 
@@ -24,9 +25,16 @@ rustPlatform.buildRustPackage rec {
   OPENSSL_NO_VENDOR = 1;
 
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ CoreServices Security SystemConfiguration ];
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ installShellFiles pkg-config ];
 
-  cargoHash = "sha256-XaFRA0lpTuuV/bfEFR2JzyQIPEBdfFSuhBrKNASnfdo=";
+  cargoHash = "sha256-MChhtWbwi5/1GMXxlKov8LrO+kp7D6u4u1lmEjZvyP8=";
+
+  postInstall = ''
+    installShellCompletion --cmd sentry-cli \
+        --bash <($out/bin/sentry-cli completions bash) \
+        --fish <($out/bin/sentry-cli completions fish) \
+        --zsh <($out/bin/sentry-cli completions zsh)
+  '';
 
   meta = with lib; {
     homepage = "https://docs.sentry.io/cli/";
diff --git a/nixpkgs/pkgs/development/tools/spring-boot-cli/default.nix b/nixpkgs/pkgs/development/tools/spring-boot-cli/default.nix
index 5e92ac17f7bc..b22a8ae8c54c 100644
--- a/nixpkgs/pkgs/development/tools/spring-boot-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/spring-boot-cli/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "spring-boot-cli";
-  version = "3.2.2";
+  version = "3.2.3";
 
   src = fetchzip {
     url = "mirror://maven/org/springframework/boot/${finalAttrs.pname}/${finalAttrs.version}/${finalAttrs.pname}-${finalAttrs.version}-bin.zip";
-    hash = "sha256-Jlczhy4Nfquhrm+SO/MRfBsHrHRHDkU4TUTTPTH7aVk=";
+    hash = "sha256-H4QYEp5QfWLdcQybrBE49eMPXvt68gjEjJMQvh1drZs=";
   };
 
   nativeBuildInputs = [ makeWrapper installShellFiles ];
diff --git a/nixpkgs/pkgs/development/tools/turso-cli/default.nix b/nixpkgs/pkgs/development/tools/turso-cli/default.nix
index 155360affbf7..374fe9f3bfaf 100644
--- a/nixpkgs/pkgs/development/tools/turso-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/turso-cli/default.nix
@@ -8,13 +8,13 @@
 }:
 buildGoModule rec {
   pname = "turso-cli";
-  version = "0.88.6";
+  version = "0.88.8";
 
   src = fetchFromGitHub {
     owner = "tursodatabase";
     repo = "turso-cli";
     rev = "v${version}";
-    hash = "sha256-u8TZFgeDeZVRcP4ICgUrI4qhqlL1lhTSVDmWK3Ozku4=";
+    hash = "sha256-F+/xCs35ugdr2KlHbZ01wE9AX3qhsxvfaly/yDCcGJI=";
   };
 
   vendorHash = "sha256-rTeW2RQhcdwJTAMQELm4cdObJbm8gk/I2Qz3Wk3+zpI=";
diff --git a/nixpkgs/pkgs/development/tools/twilio-cli/default.nix b/nixpkgs/pkgs/development/tools/twilio-cli/default.nix
index f862b036ac2b..032796e760ca 100644
--- a/nixpkgs/pkgs/development/tools/twilio-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/twilio-cli/default.nix
@@ -2,11 +2,11 @@
 
 stdenvNoCC.mkDerivation (finalAttrs: {
   pname = "twilio-cli";
-  version = "5.18.0";
+  version = "5.19.0";
 
   src = fetchzip {
     url = "https://twilio-cli-prod.s3.amazonaws.com/twilio-v${finalAttrs.version}/twilio-v${finalAttrs.version}.tar.gz";
-    hash = "sha256-PdfcNRRc2LmYpS5p8y5rfP8vW9z8u72kK7RMu18tsVs=";
+    hash = "sha256-BU4ozZbBNtHdcyaxyvvZ966/FGydqbSnGxSSuky9LtM=";
   };
 
   buildInputs = [ nodejs-slim ];
diff --git a/nixpkgs/pkgs/development/tools/vultr-cli/default.nix b/nixpkgs/pkgs/development/tools/vultr-cli/default.nix
index e3be6f0366fd..fc557907e4df 100644
--- a/nixpkgs/pkgs/development/tools/vultr-cli/default.nix
+++ b/nixpkgs/pkgs/development/tools/vultr-cli/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "vultr-cli";
-  version = "2.22.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "vultr";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-DdiMrmvLa2ZaZen//+Qz4UxZwvn8DNgH9mYp/Q8Z4Uw=";
+    hash = "sha256-9akEDsBj2EpZtUBh0+Dck5otsmFzdvJshXxOtYVdi1o=";
   };
 
-  vendorHash = "sha256-3sXqpeOZSiysZYOv15c+ZkMZOwqy3UCkvBEB1szaWFA=";
+  vendorHash = "sha256-jkl36S7h1l6FeeHEhc+PKOQO9Uq/4L5wTb8+PhG2exY=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/development/tools/wails/default.nix b/nixpkgs/pkgs/development/tools/wails/default.nix
index d0902b1c5cff..c94139f7feda 100644
--- a/nixpkgs/pkgs/development/tools/wails/default.nix
+++ b/nixpkgs/pkgs/development/tools/wails/default.nix
@@ -14,16 +14,16 @@
 
 buildGoModule rec {
   pname = "wails";
-  version = "2.7.1";
+  version = "2.8.0";
 
   src = fetchFromGitHub {
     owner = "wailsapp";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-KC5BkIaDLWT1soHr1FpfZWnEzyZTMUPaGMTap7P1W98=";
+    hash = "sha256-MHwIRanmgpjTKM+ILSQheCd9+XUwVTCVrREqntxpv7Q=";
   } + "/v2";
 
-  vendorHash = "sha256-EoWsDo39tS4KbcOVgrd1esSzEseC2+ZfMj4+KvymwF8=";
+  vendorHash = "sha256-0cGmJEi7OfMZS7ObPBLHOVqKfvnlpHBiGRjSdV6wxE4=";
 
   proxyVendor = true;
 
diff --git a/nixpkgs/pkgs/development/tools/wxformbuilder/default.nix b/nixpkgs/pkgs/development/tools/wxformbuilder/default.nix
index e8f888680bad..8914620074d5 100644
--- a/nixpkgs/pkgs/development/tools/wxformbuilder/default.nix
+++ b/nixpkgs/pkgs/development/tools/wxformbuilder/default.nix
@@ -11,7 +11,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "wxformbuilder";
-  version = "4.0.0";
+  version = "4.1.0";
 
   src = fetchFromGitHub {
     owner = "wxFormBuilder";
@@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: {
         --replace "\$Format:%(describe)\$" "$(git -C $out rev-parse --short HEAD)"
       rm -rf $out/.git
     '';
-    hash = "sha256-Lqta+u9WVwUREsR7aH+2DJn0oM5QwlwRSBImuwNkmS4=";
+    hash = "sha256-Ob+6MAf2iQGd3lgeN+dLfscpmYYrzD3dsN+2ZmvJog0=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/development/web/bun/default.nix b/nixpkgs/pkgs/development/web/bun/default.nix
index 40828aa1909e..916f125dcc49 100644
--- a/nixpkgs/pkgs/development/web/bun/default.nix
+++ b/nixpkgs/pkgs/development/web/bun/default.nix
@@ -12,7 +12,7 @@
 }:
 
 stdenvNoCC.mkDerivation rec {
-  version = "1.0.28";
+  version = "1.0.29";
   pname = "bun";
 
   src = passthru.sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
@@ -51,19 +51,19 @@ stdenvNoCC.mkDerivation rec {
     sources = {
       "aarch64-darwin" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
-        hash = "sha256-kw39m8zD1f4uGjs2r/J2j8YbjbKDjZmFWxzf/x81poM=";
+        hash = "sha256-tcrFHzGJkpVDkrEUff6OR4i76E2+dmYIXuwJ3BiNvQc=";
       };
       "aarch64-linux" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
-        hash = "sha256-eJr3mWusSNrDqPHV5PwVsfGK4o57XDsBHozpPJE7HsU=";
+        hash = "sha256-ujiVw1Pemlo+OHPj8JtazNzYVziq8a65mYdXcS5ViL4=";
       };
       "x86_64-darwin" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64.zip";
-        hash = "sha256-qkVy1w+MrlBplX0CLuW0yufnZ/+ETkJPSm/91KpAR+c=";
+        hash = "sha256-rY9VixMXgn8E2NzZpJg873eADM9ZnJnAkdAVnj91S2o=";
       };
       "x86_64-linux" = fetchurl {
         url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
-        hash = "sha256-a9upDXwlgmvF99ulUplrscWrsGp/7AsLTfx1FPYY41s=";
+        hash = "sha256-mhDFX6Z1UFGXLqDbUAt8TP/8Ejavzu+WdFGayrtS2Ns=";
       };
     };
     updateScript = writeShellScript "update-bun" ''
diff --git a/nixpkgs/pkgs/games/ferium/default.nix b/nixpkgs/pkgs/games/ferium/default.nix
index 8c923d0b7bec..903dd70222f6 100644
--- a/nixpkgs/pkgs/games/ferium/default.nix
+++ b/nixpkgs/pkgs/games/ferium/default.nix
@@ -2,18 +2,18 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "ferium";
-  version = "4.5.0";
+  version = "4.5.2";
 
   src = fetchFromGitHub {
     owner = "gorilla-devs";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-1avmzaIDz4/ARewB7yLYMBVtwdkY4FFfwcHAZSyg1Xc=";
+    sha256 = "sha256-tYRs6HfFTdUZqWal9pLZ0uUNCPr3+zQz5JV2ohOLIP8=";
   };
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
-  cargoHash = "sha256-IOnTJ/0mul7buBDNHkeqMM9NrFiX58xa03bVGrbAdNg=";
+  cargoHash = "sha256-5ClBS42hWw3ULEG1Qn+fiM6dvJ+xS4Dusy3BCj5Cvbg=";
 
   # Disable the GUI file picker so that GTK/XDG dependencies aren't used
   buildNoDefaultFeatures = true;
diff --git a/nixpkgs/pkgs/games/hyperrogue/default.nix b/nixpkgs/pkgs/games/hyperrogue/default.nix
index 48febdc8ac04..ddbe41df430e 100644
--- a/nixpkgs/pkgs/games/hyperrogue/default.nix
+++ b/nixpkgs/pkgs/games/hyperrogue/default.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hyperrogue";
-  version = "13.0b";
+  version = "13.0c";
 
   src = fetchFromGitHub {
     owner = "zenorogue";
     repo = "hyperrogue";
     rev = "v${version}";
-    sha256 = "sha256-n3CD1p0weWW9P3WnS05bauFbtShocleSACk4VOXzEeY=";
+    sha256 = "sha256-eELR/1GzR9wWJ433rIpueMu9omlsl1y5rmvG3GgSHZA=";
   };
 
   CXXFLAGS = [
diff --git a/nixpkgs/pkgs/games/openmw/tes3mp.nix b/nixpkgs/pkgs/games/openmw/tes3mp.nix
index 915c006f9137..318c28aff922 100644
--- a/nixpkgs/pkgs/games/openmw/tes3mp.nix
+++ b/nixpkgs/pkgs/games/openmw/tes3mp.nix
@@ -7,14 +7,13 @@
 , luajit
 , makeWrapper
 , symlinkJoin
-, disable-warnings-if-gcc13
 }:
 
 # revisions are taken from https://github.com/GrimKriegor/TES3MP-deploy
 
 let
   # raknet could also be split into dev and lib outputs
-  raknet = disable-warnings-if-gcc13 (stdenv.mkDerivation {
+  raknet = stdenv.mkDerivation {
     pname = "raknet";
     version = "unstable-2020-01-19";
 
@@ -46,7 +45,7 @@ let
     installPhase = ''
       install -Dm555 lib/libRakNetLibStatic.a $out/lib/libRakNetLibStatic.a
     '';
-  });
+  };
 
   coreScripts = stdenv.mkDerivation {
     pname = "corescripts";
diff --git a/nixpkgs/pkgs/games/shattered-pixel-dungeon/summoning-pixel-dungeon.nix b/nixpkgs/pkgs/games/shattered-pixel-dungeon/summoning-pixel-dungeon.nix
index 488110684c09..5e7ed1b817e0 100644
--- a/nixpkgs/pkgs/games/shattered-pixel-dungeon/summoning-pixel-dungeon.nix
+++ b/nixpkgs/pkgs/games/shattered-pixel-dungeon/summoning-pixel-dungeon.nix
@@ -18,7 +18,7 @@ callPackage ./generic.nix rec {
 
   patches = [(substitute {
     src = ./disable-git-version.patch;
-    replacements = [ "--subst-var-by" "version" version ];
+    substitutions = [ "--subst-var-by" "version" version ];
   })];
 
   depsHash = "sha256-0P/BcjNnbDN25DguRcCyzPuUG7bouxEx1ySodIbSwvg=";
diff --git a/nixpkgs/pkgs/games/unnethack/default.nix b/nixpkgs/pkgs/games/unnethack/default.nix
index af402a7de935..f328b8c01eed 100644
--- a/nixpkgs/pkgs/games/unnethack/default.nix
+++ b/nixpkgs/pkgs/games/unnethack/default.nix
@@ -33,6 +33,11 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  # Fails at startup due to off-by-one:
+  #   https://github.com/NixOS/nixpkgs/issues/292113#issuecomment-1969989058
+  # TODO: drop it once 6.x branch releases.
+  hardeningDisable = [ "fortify3" ];
+
   # Fails the build occasionally due to missing buid depends:
   #   ./../sys/unix/unixmain.c:9:10: fatal error: date.h: No such file or directory
   # TODO: remove once upstream issue is fixed:
diff --git a/nixpkgs/pkgs/games/vintagestory/default.nix b/nixpkgs/pkgs/games/vintagestory/default.nix
index 474b5e2ddbac..182f0621bfed 100644
--- a/nixpkgs/pkgs/games/vintagestory/default.nix
+++ b/nixpkgs/pkgs/games/vintagestory/default.nix
@@ -20,11 +20,11 @@
 
 stdenv.mkDerivation rec {
   pname = "vintagestory";
-  version = "1.19.3";
+  version = "1.19.4";
 
   src = fetchurl {
     url = "https://cdn.vintagestory.at/gamefiles/stable/vs_client_linux-x64_${version}.tar.gz";
-    hash = "sha256-ULxwNdQLQCWJqCTiGtT1X/Y32f406FT/UPAJNBYrV/s=";
+    hash = "sha256-A5NIWy902a0W/Y/sJL+qPrEJwCiU/TNIm7G3BtU6gzM=";
   };
 
 
diff --git a/nixpkgs/pkgs/kde/default.nix b/nixpkgs/pkgs/kde/default.nix
new file mode 100644
index 000000000000..02c8650e6ec6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/default.nix
@@ -0,0 +1,84 @@
+{
+  lib,
+  generateSplicesForMkScope,
+  makeScopeWithSplicing',
+  fetchurl,
+  fetchFromGitLab,
+  libsForQt5,
+  qt6Packages,
+  cmark,
+  gpgme,
+  taglib,
+  wayland-protocols,
+  wayland,
+  zxing-cpp,
+}: let
+  allPackages = self: let
+    frameworks = import ./frameworks {inherit (self) callPackage;};
+    gear = import ./gear {inherit (self) callPackage;};
+    plasma = import ./plasma {inherit (self) callPackage;};
+
+    sets = ["gear" "frameworks" "plasma"];
+
+    loadUrls = set: lib.importJSON (./generated/sources + "/${set}.json");
+    allUrls = lib.attrsets.mergeAttrsList (map loadUrls sets);
+
+    sources = lib.mapAttrs (_: v:
+      (fetchurl {
+        inherit (v) url hash;
+      })
+      // {inherit (v) version;})
+    allUrls;
+  in (
+    qt6Packages
+    // frameworks
+    // gear
+    // plasma
+    // {
+      inherit sources;
+
+      mkKdeDerivation = self.callPackage (import ./lib/mk-kde-derivation.nix self) {};
+
+      # THIRD PARTY
+      inherit
+        cmark
+        gpgme
+        taglib
+        wayland
+        wayland-protocols
+        zxing-cpp
+        ;
+
+      # Alias to match metadata
+      kquickimageeditor = self.kquickimageedit;
+
+      # Alias because it's just data
+      plasma-wayland-protocols = libsForQt5.plasma-wayland-protocols;
+
+      selenium-webdriver-at-spi = null; # Used for integration tests that we don't run, stub
+      # Not ported to Qt6 yet
+      kdevelop-pg-qt = null;
+      okteta = null;
+      libmediawiki = null;
+
+      alpaka = self.callPackage ./misc/alpaka {};
+      kdiagram = self.callPackage ./misc/kdiagram {};
+      kdsoap-ws-discovery-client = self.callPackage ./misc/kdsoap-ws-discovery-client {};
+      kirigami-addons = self.callPackage ./misc/kirigami-addons {};
+      kio-fuse = self.callPackage ./misc/kio-fuse {};
+      ktextaddons = self.callPackage ./misc/ktextaddons {};
+      kunifiedpush = self.callPackage ./misc/kunifiedpush {};
+      kweathercore = self.callPackage ./misc/kweathercore {};
+      mpvqt = self.callPackage ./misc/mpvqt {};
+      oxygen-icons = self.callPackage ./misc/oxygen-icons {};
+      phonon = self.callPackage ./misc/phonon {};
+      phonon-vlc = self.callPackage ./misc/phonon-vlc {};
+      polkit-qt-1 = self.callPackage ./misc/polkit-qt-1 {};
+      pulseaudio-qt = self.callPackage ./misc/pulseaudio-qt {};
+    }
+  );
+in
+  makeScopeWithSplicing' {
+    otherSplices = generateSplicesForMkScope "kdePackages";
+    f = allPackages;
+  }
diff --git a/nixpkgs/pkgs/kde/frameworks/attica/default.nix b/nixpkgs/pkgs/kde/frameworks/attica/default.nix
new file mode 100644
index 000000000000..05b5c1e59be9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/attica/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "attica";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/baloo/default.nix b/nixpkgs/pkgs/kde/frameworks/baloo/default.nix
new file mode 100644
index 000000000000..517e5285a4e0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/baloo/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  lmdb,
+}:
+mkKdeDerivation {
+  pname = "baloo";
+
+  extraBuildInputs = [qtdeclarative lmdb];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/bluez-qt/default.nix b/nixpkgs/pkgs/kde/frameworks/bluez-qt/default.nix
new file mode 100644
index 000000000000..3bccb4309af7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/bluez-qt/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "bluez-qt";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/breeze-icons/default.nix b/nixpkgs/pkgs/kde/frameworks/breeze-icons/default.nix
new file mode 100644
index 000000000000..103903c04cb4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/breeze-icons/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  python3,
+  libxml2,
+}:
+mkKdeDerivation {
+  pname = "breeze-icons";
+
+  extraNativeBuildInputs = [
+    (python3.withPackages (ps: [ps.lxml]))
+    libxml2
+  ];
+
+  # lots of icons, takes forever, does absolutely nothing
+  dontStrip = true;
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/default.nix b/nixpkgs/pkgs/kde/frameworks/default.nix
new file mode 100644
index 000000000000..302be8ad3eba
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/default.nix
@@ -0,0 +1,74 @@
+{callPackage}: {
+  attica = callPackage ./attica {};
+  baloo = callPackage ./baloo {};
+  bluez-qt = callPackage ./bluez-qt {};
+  breeze-icons = callPackage ./breeze-icons {};
+  extra-cmake-modules = callPackage ./extra-cmake-modules {};
+  frameworkintegration = callPackage ./frameworkintegration {};
+  kapidox = callPackage ./kapidox {};
+  karchive = callPackage ./karchive {};
+  kauth = callPackage ./kauth {};
+  kbookmarks = callPackage ./kbookmarks {};
+  kcalendarcore = callPackage ./kcalendarcore {};
+  kcmutils = callPackage ./kcmutils {};
+  kcodecs = callPackage ./kcodecs {};
+  kcolorscheme = callPackage ./kcolorscheme {};
+  kcompletion = callPackage ./kcompletion {};
+  kconfig = callPackage ./kconfig {};
+  kconfigwidgets = callPackage ./kconfigwidgets {};
+  kcontacts = callPackage ./kcontacts {};
+  kcoreaddons = callPackage ./kcoreaddons {};
+  kcrash = callPackage ./kcrash {};
+  kdav = callPackage ./kdav {};
+  kdbusaddons = callPackage ./kdbusaddons {};
+  kdeclarative = callPackage ./kdeclarative {};
+  kded = callPackage ./kded {};
+  kdesu = callPackage ./kdesu {};
+  kdnssd = callPackage ./kdnssd {};
+  kdoctools = callPackage ./kdoctools {};
+  kfilemetadata = callPackage ./kfilemetadata {};
+  kglobalaccel = callPackage ./kglobalaccel {};
+  kguiaddons = callPackage ./kguiaddons {};
+  kholidays = callPackage ./kholidays {};
+  ki18n = callPackage ./ki18n {};
+  kiconthemes = callPackage ./kiconthemes {};
+  kidletime = callPackage ./kidletime {};
+  kimageformats = callPackage ./kimageformats {};
+  kio = callPackage ./kio {};
+  kirigami = callPackage ./kirigami {};
+  kitemmodels = callPackage ./kitemmodels {};
+  kitemviews = callPackage ./kitemviews {};
+  kjobwidgets = callPackage ./kjobwidgets {};
+  knewstuff = callPackage ./knewstuff {};
+  knotifications = callPackage ./knotifications {};
+  knotifyconfig = callPackage ./knotifyconfig {};
+  kpackage = callPackage ./kpackage {};
+  kparts = callPackage ./kparts {};
+  kpeople = callPackage ./kpeople {};
+  kplotting = callPackage ./kplotting {};
+  kpty = callPackage ./kpty {};
+  kquickcharts = callPackage ./kquickcharts {};
+  krunner = callPackage ./krunner {};
+  kservice = callPackage ./kservice {};
+  kstatusnotifieritem = callPackage ./kstatusnotifieritem {};
+  ksvg = callPackage ./ksvg {};
+  ktexteditor = callPackage ./ktexteditor {};
+  ktexttemplate = callPackage ./ktexttemplate {};
+  ktextwidgets = callPackage ./ktextwidgets {};
+  kunitconversion = callPackage ./kunitconversion {};
+  kuserfeedback = callPackage ./kuserfeedback {};
+  kwallet = callPackage ./kwallet {};
+  kwidgetsaddons = callPackage ./kwidgetsaddons {};
+  kwindowsystem = callPackage ./kwindowsystem {};
+  kxmlgui = callPackage ./kxmlgui {};
+  modemmanager-qt = callPackage ./modemmanager-qt {};
+  networkmanager-qt = callPackage ./networkmanager-qt {};
+  prison = callPackage ./prison {};
+  purpose = callPackage ./purpose {};
+  qqc2-desktop-style = callPackage ./qqc2-desktop-style {};
+  solid = callPackage ./solid {};
+  sonnet = callPackage ./sonnet {};
+  syndication = callPackage ./syndication {};
+  syntax-highlighting = callPackage ./syntax-highlighting {};
+  threadweaver = callPackage ./threadweaver {};
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/default.nix b/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/default.nix
new file mode 100644
index 000000000000..0a06cf4a8772
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/default.nix
@@ -0,0 +1,8 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "extra-cmake-modules";
+
+  outputs = ["out"];
+
+  setupHook = ./ecm-hook.sh;
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh b/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh
new file mode 100644
index 000000000000..b6c50059868f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/extra-cmake-modules/ecm-hook.sh
@@ -0,0 +1,128 @@
+# shellcheck shell=bash
+# Variables we use here are set by the stdenv, no use complaining about them
+# shellcheck disable=SC2164
+
+ecmEnvHook() {
+    addToSearchPath XDG_DATA_DIRS "$1/share"
+    addToSearchPath XDG_CONFIG_DIRS "$1/etc/xdg"
+}
+addEnvHooks "$targetOffset" ecmEnvHook
+
+ecmPostHook() {
+    # Because we need to use absolute paths here, we must set *all* the paths.
+    # Keep this in sync with https://github.com/KDE/extra-cmake-modules/blob/master/kde-modules/KDEInstallDirs6.cmake
+    if [ "$(uname)" = "Darwin" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_BUNDLEDIR=${!outputBin}/Applications/KDE"
+    fi
+
+    cmakeFlags+=" -DKDE_INSTALL_EXECROOTDIR=${!outputBin}"
+    cmakeFlags+=" -DKDE_INSTALL_BINDIR=${!outputBin}/bin"
+    cmakeFlags+=" -DKDE_INSTALL_SBINDIR=${!outputBin}/sbin"
+    cmakeFlags+=" -DKDE_INSTALL_LIBDIR=${!outputLib}/lib"
+    cmakeFlags+=" -DKDE_INSTALL_LIBEXECDIR=${!outputLib}/libexec"
+    cmakeFlags+=" -DKDE_INSTALL_CMAKEPACKAGEDIR=${!outputDev}/lib/cmake"
+
+    if [ -n "${qtPluginPrefix-}" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_QTPLUGINDIR=${!outputBin}/$qtPluginPrefix"
+        cmakeFlags+=" -DKDE_INSTALL_PLUGINDIR=${!outputBin}/$qtPluginPrefix"
+    fi
+
+    if [ -n "${qtQmlPrefix-}" ]; then
+        cmakeFlags+=" -DKDE_INSTALL_QMLDIR=${!outputBin}/$qtQmlPrefix"
+    fi
+
+    cmakeFlags+=" -DKDE_INSTALL_INCLUDEDIR=${!outputInclude}/include"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALSTATEDIR=/var"
+    cmakeFlags+=" -DKDE_INSTALL_SHAREDSTATEDIR=/com"  # ???
+    cmakeFlags+=" -DKDE_INSTALL_DATAROOTDIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DATADIR=${!outputBin}/share"
+    cmakeFlags+=" -DKDE_INSTALL_DOCBUNDLEDIR=${!outputBin}/share/doc/HTML"
+    cmakeFlags+=" -DKDE_INSTALL_KCFGDIR=${!outputBin}/share/config.kcfg"
+    cmakeFlags+=" -DKDE_INSTALL_KCONFUPDATEDIR=${!outputBin}/share/kconf_update"
+    cmakeFlags+=" -DKDE_INSTALL_KAPPTEMPLATESDIR=${!outputDev}/share/kdevappwizard/templates"
+    cmakeFlags+=" -DKDE_INSTALL_KFILETEMPLATESDIR=${!outputDev}/share/kdevfiletemplates/templates"
+    cmakeFlags+=" -DKDE_INSTALL_KXMLGUIDIR=${!outputBin}/share/kxmlgui6"
+    cmakeFlags+=" -DKDE_INSTALL_KNOTIFYRCDIR=${!outputBin}/share/knotifications6"
+    cmakeFlags+=" -DKDE_INSTALL_ICONDIR=${!outputBin}/share/icons"
+    cmakeFlags+=" -DKDE_INSTALL_LOCALEDIR=${!outputLib}/share/locale"
+    cmakeFlags+=" -DKDE_INSTALL_SOUNDDIR=${!outputBin}/share/sounds"
+    cmakeFlags+=" -DKDE_INSTALL_TEMPLATEDIR=${!outputBin}/share/templates"
+    cmakeFlags+=" -DKDE_INSTALL_WALLPAPERDIR=${!outputBin}/share/wallpapers"
+    cmakeFlags+=" -DKDE_INSTALL_APPDIR=${!outputBin}/share/applications"
+    cmakeFlags+=" -DKDE_INSTALL_DESKTOPDIR=${!outputBin}/share/desktop-directories"
+    cmakeFlags+=" -DKDE_INSTALL_MIMEDIR=${!outputBin}/share/mime/packages"
+    cmakeFlags+=" -DKDE_INSTALL_METAINFODIR=${!outputBin}/share/appdata"
+    cmakeFlags+=" -DKDE_INSTALL_QTQCHDIR=${!outputLib}/share/doc/qch"
+    cmakeFlags+=" -DKDE_INSTALL_QCHDIR=${!outputLib}/share/doc/qch"
+    cmakeFlags+=" -DKDE_INSTALL_MANDIR=${!outputBin}/share/man"
+    cmakeFlags+=" -DKDE_INSTALL_INFODIR=${!outputBin}/share/info"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSDIR=${!outputBin}/share/dbus-1"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSINTERFACEDIR=${!outputBin}/share/dbus-1/interfaces"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSERVICEDIR=${!outputBin}/share/dbus-1/services"
+    cmakeFlags+=" -DKDE_INSTALL_DBUSSYSTEMSERVICEDIR=${!outputBin}/share/dbus-1/system-services"
+    cmakeFlags+=" -DKDE_INSTALL_SYSCONFDIR=${!outputBin}/etc"
+    cmakeFlags+=" -DKDE_INSTALL_CONFDIR=${!outputBin}/etc/xdg"
+    cmakeFlags+=" -DKDE_INSTALL_AUTOSTARTDIR=${!outputBin}/etc/xdg/autostart"
+    cmakeFlags+=" -DKDE_INSTALL_LOGGINGCATEGORIESDIR=${!outputLib}/share/qlogging-categories6"
+    cmakeFlags+=" -DKDE_INSTALL_SYSTEMDUNITDIR=${!outputBin}/lib/systemd"
+    cmakeFlags+=" -DKDE_INSTALL_SYSTEMDUSERUNITDIR=${!outputBin}/share/systemd/user"
+}
+postHooks+=(ecmPostHook)
+
+xdgDataSubdirs=( \
+    "config.kcfg" "kconf_update" "knotifications6" "icons" "locale" "sounds" "templates" \
+    "wallpapers" "applications" "desktop-directories" "mime" "appdata" "dbus-1" \
+)
+
+# ecmHostPathsSeen is an associative array of the paths that have already been
+# seen by ecmHostPathHook.
+declare -gA ecmHostPathsSeen
+
+ecmHostPathIsNotSeen() {
+    if [[ -n "${ecmHostPathsSeen["$1"]:-}" ]]; then
+        # The path has been seen before.
+        return 1
+    else
+        # The path has not been seen before.
+        # Now it is seen, so record it.
+        ecmHostPathsSeen["$1"]=1
+        return 0
+    fi
+}
+
+ecmHostPathHook() {
+    ecmHostPathIsNotSeen "$1" || return 0
+
+    local xdgConfigDir="$1/etc/xdg"
+    if [ -d "$xdgConfigDir" ]
+    then
+        qtWrapperArgs+=(--prefix XDG_CONFIG_DIRS : "$xdgConfigDir")
+    fi
+
+    for xdgDataSubdir in "${xdgDataSubdirs[@]}"
+    do
+        if [ -d "$1/share/$xdgDataSubdir" ]
+        then
+            qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$1/share")
+            break
+        fi
+    done
+
+    local manDir="$1/man"
+    if [ -d "$manDir" ]
+    then
+        qtWrapperArgs+=(--prefix MANPATH : "$manDir")
+    fi
+
+    local infoDir="$1/info"
+    if [ -d "$infoDir" ]
+    then
+        qtWrapperArgs+=(--prefix INFOPATH : "$infoDir")
+    fi
+
+    if [ -d "$1/dbus-1" ]
+    then
+        propagatedUserEnvPkgs+=" $1"
+    fi
+}
+addEnvHooks "$targetOffset" ecmHostPathHook
diff --git a/nixpkgs/pkgs/kde/frameworks/frameworkintegration/default.nix b/nixpkgs/pkgs/kde/frameworks/frameworkintegration/default.nix
new file mode 100644
index 000000000000..3607c115c301
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/frameworkintegration/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  packagekit-qt,
+}:
+mkKdeDerivation {
+  pname = "frameworkintegration";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [packagekit-qt];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kapidox/default.nix b/nixpkgs/pkgs/kde/frameworks/kapidox/default.nix
new file mode 100644
index 000000000000..2544e7921f87
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kapidox/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kapidox";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/karchive/default.nix b/nixpkgs/pkgs/kde/frameworks/karchive/default.nix
new file mode 100644
index 000000000000..fe124e1187d1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/karchive/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qttools,
+  pkg-config,
+  xz,
+}:
+mkKdeDerivation {
+  pname = "karchive";
+
+  extraNativeBuildInputs = [qttools pkg-config];
+  extraBuildInputs = [xz];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kauth/default.nix b/nixpkgs/pkgs/kde/frameworks/kauth/default.nix
new file mode 100644
index 000000000000..df033770a303
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kauth/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kauth";
+
+  # Late resolve paths so things end up in their own prefix
+  # FIXME(later): discuss with upstream
+  patches = [./fix-paths.patch];
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kauth/fix-paths.patch b/nixpkgs/pkgs/kde/frameworks/kauth/fix-paths.patch
new file mode 100644
index 000000000000..6444a7610c47
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kauth/fix-paths.patch
@@ -0,0 +1,17 @@
+diff --git a/KF6AuthConfig.cmake.in b/KF6AuthConfig.cmake.in
+index 4ee3f92..65a40d5 100644
+--- a/KF6AuthConfig.cmake.in
++++ b/KF6AuthConfig.cmake.in
+@@ -4,9 +4,9 @@ set(KAUTH_STUB_FILES_DIR "@PACKAGE_KDE_INSTALL_DATADIR_KF@/kauth/")
+ 
+ set(KAUTH_BACKEND_NAME "@KAUTH_BACKEND_NAME@")
+ set(KAUTH_HELPER_BACKEND_NAME "@KAUTH_HELPER_BACKEND_NAME@")
+-set(KAUTH_POLICY_FILES_INSTALL_DIR "@KAUTH_POLICY_FILES_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_DIR "@KAUTH_HELPER_INSTALL_DIR@")
+-set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "@KAUTH_HELPER_INSTALL_ABSOLUTE_DIR@")
++set(KAUTH_POLICY_FILES_INSTALL_DIR "${KDE_INSTALL_DATADIR}/polkit-1/actions")
++set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}")
++set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${KDE_INSTALL_LIBEXECDIR}")
+ 
+ include(CMakeFindDependencyMacro)
+ 
diff --git a/nixpkgs/pkgs/kde/frameworks/kbookmarks/default.nix b/nixpkgs/pkgs/kde/frameworks/kbookmarks/default.nix
new file mode 100644
index 000000000000..ac9255e6f83d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kbookmarks/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kbookmarks";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcalendarcore/default.nix b/nixpkgs/pkgs/kde/frameworks/kcalendarcore/default.nix
new file mode 100644
index 000000000000..c80117749e11
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcalendarcore/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  libical,
+}:
+mkKdeDerivation {
+  pname = "kcalendarcore";
+
+  extraBuildInputs = [libical];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcmutils/default.nix b/nixpkgs/pkgs/kde/frameworks/kcmutils/default.nix
new file mode 100644
index 000000000000..bb6ecb110ee0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcmutils/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kcmutils";
+
+  extraPropagatedBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcodecs/default.nix b/nixpkgs/pkgs/kde/frameworks/kcodecs/default.nix
new file mode 100644
index 000000000000..409666658ddf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcodecs/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  gperf,
+}:
+mkKdeDerivation {
+  pname = "kcodecs";
+
+  extraNativeBuildInputs = [qttools];
+  extraBuildInputs = [gperf];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcolorscheme/default.nix b/nixpkgs/pkgs/kde/frameworks/kcolorscheme/default.nix
new file mode 100644
index 000000000000..05f32ce574f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcolorscheme/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcolorscheme";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcompletion/default.nix b/nixpkgs/pkgs/kde/frameworks/kcompletion/default.nix
new file mode 100644
index 000000000000..c07f274e08ee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcompletion/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kcompletion";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kconfig/default.nix b/nixpkgs/pkgs/kde/frameworks/kconfig/default.nix
new file mode 100644
index 000000000000..b29a081524c7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kconfig/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kconfig";
+
+  extraNativeBuildInputs = [qttools];
+  extraPropagatedBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kconfigwidgets/default.nix b/nixpkgs/pkgs/kde/frameworks/kconfigwidgets/default.nix
new file mode 100644
index 000000000000..354972d005ae
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kconfigwidgets/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kconfigwidgets";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcontacts/default.nix b/nixpkgs/pkgs/kde/frameworks/kcontacts/default.nix
new file mode 100644
index 000000000000..57e35a90a9ae
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcontacts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcontacts";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcoreaddons/default.nix b/nixpkgs/pkgs/kde/frameworks/kcoreaddons/default.nix
new file mode 100644
index 000000000000..12c6ae5d770b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcoreaddons/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qttools,
+  shared-mime-info,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kcoreaddons";
+
+  extraNativeBuildInputs = [qttools shared-mime-info];
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kcrash/default.nix b/nixpkgs/pkgs/kde/frameworks/kcrash/default.nix
new file mode 100644
index 000000000000..b3ade8fd6763
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kcrash/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcrash";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdav/default.nix b/nixpkgs/pkgs/kde/frameworks/kdav/default.nix
new file mode 100644
index 000000000000..d53562fc9038
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdav/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdav";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdbusaddons/default.nix b/nixpkgs/pkgs/kde/frameworks/kdbusaddons/default.nix
new file mode 100644
index 000000000000..f7d80a5746f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdbusaddons/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kdbusaddons";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdeclarative/default.nix b/nixpkgs/pkgs/kde/frameworks/kdeclarative/default.nix
new file mode 100644
index 000000000000..8b05ec66b0f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdeclarative/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  spirv-tools,
+}:
+mkKdeDerivation {
+  pname = "kdeclarative";
+
+  extraNativeBuildInputs = [spirv-tools];
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kded/default.nix b/nixpkgs/pkgs/kde/frameworks/kded/default.nix
new file mode 100644
index 000000000000..dc6fa84d5347
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kded/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kded";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdesu/default.nix b/nixpkgs/pkgs/kde/frameworks/kdesu/default.nix
new file mode 100644
index 000000000000..ae7ed3a33c38
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdesu/default.nix
@@ -0,0 +1,7 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdesu";
+
+  # Look for NixOS SUID wrapper first
+  patches = [./kdesu-search-for-wrapped-daemon-first.patch];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch b/nixpkgs/pkgs/kde/frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch
new file mode 100644
index 000000000000..1379707f02fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdesu/kdesu-search-for-wrapped-daemon-first.patch
@@ -0,0 +1,38 @@
+From 01af4d2a098e5819c09bca37568941dcd4b89d0b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= <malaquias@gmail.com>
+Date: Thu, 16 Jul 2020 13:21:42 -0300
+Subject: [PATCH] Search for the daemon first in /run/wrappers/bin
+
+If looking first in libexec, the eventually wrapped one in
+/run/wrappers/bin can not be found.
+---
+ src/client.cpp | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/src/client.cpp b/src/client.cpp
+index 44fbacd..6b5abf5 100644
+--- a/src/client.cpp
++++ b/src/client.cpp
+@@ -384,11 +384,14 @@ int KDEsuClient::stopServer()
+ 
+ static QString findDaemon()
+ {
+-    QString daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
+-    if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
+-        daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
+-        if (daemon.isEmpty()) {
+-            qCWarning(KSU_LOG) << "kdesud daemon not found.";
++    QString daemon = QFile::decodeName("/run/wrappers/bin/kdesud");
++    if (!QFile::exists(daemon)) { // if not in wrappers
++        daemon = QFile::decodeName(KDE_INSTALL_FULL_LIBEXECDIR_KF "/kdesud");
++        if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH
++            daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud"));
++            if (daemon.isEmpty()) {
++                qCWarning(KSU_LOG) << "kdesud daemon not found.";
++            }
+         }
+     }
+     return daemon;
+-- 
+2.27.0
+
diff --git a/nixpkgs/pkgs/kde/frameworks/kdnssd/default.nix b/nixpkgs/pkgs/kde/frameworks/kdnssd/default.nix
new file mode 100644
index 000000000000..3241dcf9c2fb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdnssd/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  avahi,
+}:
+mkKdeDerivation {
+  pname = "kdnssd";
+
+  extraNativeBuildInputs = [qttools];
+  extraBuildInputs = [avahi];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kdoctools/default.nix b/nixpkgs/pkgs/kde/frameworks/kdoctools/default.nix
new file mode 100644
index 000000000000..8e8341997a2b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kdoctools/default.nix
@@ -0,0 +1,18 @@
+{
+  mkKdeDerivation,
+  docbook_xml_dtd_45,
+  docbook-xsl-nons,
+  perl,
+  perlPackages,
+}:
+mkKdeDerivation {
+  pname = "kdoctools";
+
+  # lots of self-references, the output is pretty small (~5MB), not worth trying to untangle
+  outputs = ["out"];
+
+  # Perl could be used both at build time and at runtime.
+  extraNativeBuildInputs = [perl perlPackages.URI];
+  extraBuildInputs = [docbook_xml_dtd_45 docbook-xsl-nons];
+  extraPropagatedBuildInputs = [perl perlPackages.URI];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch b/nixpkgs/pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch
new file mode 100644
index 000000000000..3b3631fb3abe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kfilemetadata/cmake-install-paths.patch
@@ -0,0 +1,14 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 84cc68c..2e02194 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -85,7 +85,7 @@ install(TARGETS KF6FileMetaData EXPORT KF6FileMetaDataTargets ${KF_INSTALL_TARGE
+
+ install(EXPORT KF6FileMetaDataTargets
+         NAMESPACE KF6::
+-        DESTINATION ${KDE_INSTALL_LIBDIR}/cmake/KF6FileMetaData
++        DESTINATION ${KDE_INSTALL_FULL_CMAKEPACKAGEDIR}/KF6FileMetaData
+         FILE KF6FileMetaDataTargets.cmake)
+
+ install(FILES
+ 
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/frameworks/kfilemetadata/default.nix b/nixpkgs/pkgs/kde/frameworks/kfilemetadata/default.nix
new file mode 100644
index 000000000000..0e9fd5489e7e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kfilemetadata/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  attr,
+  ebook_tools,
+  exiv2,
+  ffmpeg,
+  kconfig,
+  kdegraphics-mobipocket,
+  libappimage,
+}:
+mkKdeDerivation {
+  pname = "kfilemetadata";
+
+  # Fix installing cmake files into wrong directory
+  # FIXME(later): upstream
+  patches = [./cmake-install-paths.patch];
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [attr ebook_tools exiv2 ffmpeg kconfig kdegraphics-mobipocket libappimage];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kglobalaccel/default.nix b/nixpkgs/pkgs/kde/frameworks/kglobalaccel/default.nix
new file mode 100644
index 000000000000..b7d5e627d64f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kglobalaccel/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kglobalaccel";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kguiaddons/default.nix b/nixpkgs/pkgs/kde/frameworks/kguiaddons/default.nix
new file mode 100644
index 000000000000..899786eefbda
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kguiaddons/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  pkg-config,
+  wayland,
+}:
+mkKdeDerivation {
+  pname = "kguiaddons";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwayland wayland];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kholidays/default.nix b/nixpkgs/pkgs/kde/frameworks/kholidays/default.nix
new file mode 100644
index 000000000000..07702734a06b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kholidays/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kholidays";
+
+  extraNativeBuildInputs = [qttools];
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/ki18n/default.nix b/nixpkgs/pkgs/kde/frameworks/ki18n/default.nix
new file mode 100644
index 000000000000..2a082a9dfe57
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/ki18n/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "ki18n";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kiconthemes/default.nix b/nixpkgs/pkgs/kde/frameworks/kiconthemes/default.nix
new file mode 100644
index 000000000000..378a3f7f87b7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kiconthemes/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kiconthemes";
+
+  extraBuildInputs = [
+    qtdeclarative
+    qtsvg
+    qttools
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kidletime/default.nix b/nixpkgs/pkgs/kde/frameworks/kidletime/default.nix
new file mode 100644
index 000000000000..8fd68f04ec14
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kidletime/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  pkg-config,
+  wayland-protocols,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "kidletime";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwayland xorg.libXScrnSaver wayland-protocols];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kimageformats/default.nix b/nixpkgs/pkgs/kde/frameworks/kimageformats/default.nix
new file mode 100644
index 000000000000..21c84cb56992
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kimageformats/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libheif,
+  libjxl,
+  libavif,
+  libraw,
+  openexr_3,
+}:
+mkKdeDerivation {
+  pname = "kimageformats";
+
+  extraCmakeFlags = ["-DKIMAGEFORMATS_HEIF=1"];
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libheif libjxl libavif libraw openexr_3];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kio/0001-Remove-impure-smbd-search-path.patch b/nixpkgs/pkgs/kde/frameworks/kio/0001-Remove-impure-smbd-search-path.patch
new file mode 100644
index 000000000000..e541f7a05e8d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kio/0001-Remove-impure-smbd-search-path.patch
@@ -0,0 +1,25 @@
+From af54a2a37655df26a33bc6783cb472c38f65322f Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Sun, 28 Mar 2021 10:31:12 -0500
+Subject: [PATCH 1/2] Remove impure smbd search path
+
+---
+ src/core/ksambashare.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/ksambashare.cpp b/src/core/ksambashare.cpp
+index e810ce4..7cfb4e6 100644
+--- a/src/core/ksambashare.cpp
++++ b/src/core/ksambashare.cpp
+@@ -61,7 +61,7 @@ KSambaSharePrivate::~KSambaSharePrivate()
+ bool KSambaSharePrivate::isSambaInstalled()
+ {
+     const bool daemonExists =
+-        !QStandardPaths::findExecutable(QStringLiteral("smbd"), {QStringLiteral("/usr/sbin/"), QStringLiteral("/usr/local/sbin/")}).isEmpty();
++        !QStandardPaths::findExecutable(QStringLiteral("smbd")).isEmpty();
+     if (!daemonExists) {
+         qCDebug(KIO_CORE_SAMBASHARE) << "KSambaShare: Could not find smbd";
+     }
+-- 
+2.30.1
+
diff --git a/nixpkgs/pkgs/kde/frameworks/kio/default.nix b/nixpkgs/pkgs/kde/frameworks/kio/default.nix
new file mode 100644
index 000000000000..03c2da9e0f5a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kio/default.nix
@@ -0,0 +1,18 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qttools,
+  acl,
+  attr,
+}:
+mkKdeDerivation {
+  pname = "kio";
+
+  patches = [
+    # Remove hardcoded smbd search path
+    # FIXME(later): discuss with upstream?
+    ./0001-Remove-impure-smbd-search-path.patch
+  ];
+
+  extraBuildInputs = [qt5compat qttools acl attr];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kirigami/default.nix b/nixpkgs/pkgs/kde/frameworks/kirigami/default.nix
new file mode 100644
index 000000000000..ee33f2e7b81c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kirigami/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qttools,
+  qtdeclarative,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kirigami";
+
+  extraNativeBuildInputs = [qtsvg qttools];
+  extraBuildInputs = [qtdeclarative];
+  extraPropagatedBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kitemmodels/default.nix b/nixpkgs/pkgs/kde/frameworks/kitemmodels/default.nix
new file mode 100644
index 000000000000..22476d21c4e4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kitemmodels/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kitemmodels";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kitemviews/default.nix b/nixpkgs/pkgs/kde/frameworks/kitemviews/default.nix
new file mode 100644
index 000000000000..b9831f05ea99
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kitemviews/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kitemviews";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kjobwidgets/default.nix b/nixpkgs/pkgs/kde/frameworks/kjobwidgets/default.nix
new file mode 100644
index 000000000000..27e9720d84e1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kjobwidgets/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kjobwidgets";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/knewstuff/default.nix b/nixpkgs/pkgs/kde/frameworks/knewstuff/default.nix
new file mode 100644
index 000000000000..934167daf055
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/knewstuff/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qttools,
+  kcmutils,
+}:
+mkKdeDerivation {
+  pname = "knewstuff";
+
+  # Late resolve knsrcdir so other things install to their own prefix
+  # FIXME(later): upstream
+  patches = [./delay-resolving-knsrcdir.patch];
+
+  extraBuildInputs = [qtdeclarative qttools];
+  extraPropagatedBuildInputs = [kcmutils];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch b/nixpkgs/pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch
new file mode 100644
index 000000000000..15f85aa422fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/knewstuff/delay-resolving-knsrcdir.patch
@@ -0,0 +1,14 @@
+diff --git a/KF6NewStuffCoreConfig.cmake.in b/KF6NewStuffCoreConfig.cmake.in
+index d70f7132..f75e9fce 100644
+--- a/KF6NewStuffCoreConfig.cmake.in
++++ b/KF6NewStuffCoreConfig.cmake.in
+@@ -20,7 +20,7 @@ if (NOT @BUILD_SHARED_LIBS@)
+     endif()
+ endif()
+
+-set(KDE_INSTALL_KNSRCDIR "@KDE_INSTALL_DATADIR@/knsrcfiles")
++set(KDE_INSTALL_KNSRCDIR "${KDE_INSTALL_DATADIR}/knsrcfiles")
+
+ include("${CMAKE_CURRENT_LIST_DIR}/KF6NewStuffCoreTargets.cmake")
+ @PACKAGE_INCLUDE_CORE_QCHTARGETS@
+ 
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/frameworks/knotifications/default.nix b/nixpkgs/pkgs/kde/frameworks/knotifications/default.nix
new file mode 100644
index 000000000000..232d4469f0e6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/knotifications/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtdeclarative,
+  libcanberra,
+}:
+mkKdeDerivation {
+  pname = "knotifications";
+
+  extraNativeBuildInputs = [qttools];
+  extraBuildInputs = [qtdeclarative libcanberra];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/knotifyconfig/default.nix b/nixpkgs/pkgs/kde/frameworks/knotifyconfig/default.nix
new file mode 100644
index 000000000000..9c778a322b67
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/knotifyconfig/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  libcanberra,
+}:
+mkKdeDerivation {
+  pname = "knotifyconfig";
+
+  extraBuildInputs = [libcanberra];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kpackage/default.nix b/nixpkgs/pkgs/kde/frameworks/kpackage/default.nix
new file mode 100644
index 000000000000..8f99e10047c0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kpackage/default.nix
@@ -0,0 +1,8 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kpackage";
+
+  # Follow symlinks when resolving packages
+  # FIXME(later): upstream
+  patches = [./follow-symlinks.patch];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kpackage/follow-symlinks.patch b/nixpkgs/pkgs/kde/frameworks/kpackage/follow-symlinks.patch
new file mode 100644
index 000000000000..8f0af89e1666
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kpackage/follow-symlinks.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kpackage/packageloader.cpp b/src/kpackage/packageloader.cpp
+index 9dbd1f6..c50a6e5 100644
+--- a/src/kpackage/packageloader.cpp
++++ b/src/kpackage/packageloader.cpp
+@@ -128,7 +128,7 @@ QList<KPluginMetaData> PackageLoader::listPackages(const QString &packageFormat,
+     }
+
+     for (auto const &plugindir : std::as_const(paths)) {
+-        QDirIterator it(plugindir, QStringList{QStringLiteral("metadata.json")}, QDir::Files, QDirIterator::Subdirectories);
++        QDirIterator it(plugindir, QStringList{QStringLiteral("metadata.json")}, QDir::Files, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         std::unordered_set<QString> dirs;
+         while (it.hasNext()) {
+             it.next();
diff --git a/nixpkgs/pkgs/kde/frameworks/kparts/default.nix b/nixpkgs/pkgs/kde/frameworks/kparts/default.nix
new file mode 100644
index 000000000000..547e8b1b016e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kparts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kparts";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kpeople/default.nix b/nixpkgs/pkgs/kde/frameworks/kpeople/default.nix
new file mode 100644
index 000000000000..18d56704c2d8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kpeople/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kpeople";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kplotting/default.nix b/nixpkgs/pkgs/kde/frameworks/kplotting/default.nix
new file mode 100644
index 000000000000..b23c198fd879
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kplotting/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kplotting";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kpty/default.nix b/nixpkgs/pkgs/kde/frameworks/kpty/default.nix
new file mode 100644
index 000000000000..d60c2a5665f2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kpty/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kpty";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kquickcharts/default.nix b/nixpkgs/pkgs/kde/frameworks/kquickcharts/default.nix
new file mode 100644
index 000000000000..305df6000403
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kquickcharts/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kquickcharts";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/krunner/default.nix b/nixpkgs/pkgs/kde/frameworks/krunner/default.nix
new file mode 100644
index 000000000000..f817c1560c26
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/krunner/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  plasma-activities,
+}:
+mkKdeDerivation {
+  pname = "krunner";
+
+  extraBuildInputs = [plasma-activities];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kservice/default.nix b/nixpkgs/pkgs/kde/frameworks/kservice/default.nix
new file mode 100644
index 000000000000..3da4fd1fdd75
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kservice/default.nix
@@ -0,0 +1,10 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kservice";
+
+  patches = [
+    # follow symlinks when generating sycoca
+    # FIXME(later): upstream
+    ./qdiriterator-follow-symlinks.patch
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kservice/qdiriterator-follow-symlinks.patch b/nixpkgs/pkgs/kde/frameworks/kservice/qdiriterator-follow-symlinks.patch
new file mode 100644
index 000000000000..fdd8b4d81a18
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kservice/qdiriterator-follow-symlinks.patch
@@ -0,0 +1,13 @@
+diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp
+index b125299..0682b90 100644
+--- a/src/sycoca/kbuildsycoca.cpp
++++ b/src/sycoca/kbuildsycoca.cpp
+@@ -207,7 +207,7 @@ bool KBuildSycoca::build()
+         const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
+         qCDebug(SYCOCA) << "Looking for subdir" << m_resourceSubdir << "=>" << dirs;
+         for (const QString &dir : dirs) {
+-            QDirIterator it(dir, QDirIterator::Subdirectories);
++            QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+             while (it.hasNext()) {
+                 const QString filePath = it.next();
+                 Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
diff --git a/nixpkgs/pkgs/kde/frameworks/kstatusnotifieritem/default.nix b/nixpkgs/pkgs/kde/frameworks/kstatusnotifieritem/default.nix
new file mode 100644
index 000000000000..bc3b255caaeb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kstatusnotifieritem/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kstatusnotifieritem";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/ksvg/default.nix b/nixpkgs/pkgs/kde/frameworks/ksvg/default.nix
new file mode 100644
index 000000000000..82dbce5c0829
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/ksvg/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "ksvg";
+
+  extraBuildInputs = [qtdeclarative qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/ktexteditor/default.nix b/nixpkgs/pkgs/kde/frameworks/ktexteditor/default.nix
new file mode 100644
index 000000000000..9a666c4e6a61
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/ktexteditor/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtspeech,
+  editorconfig-core-c,
+}:
+mkKdeDerivation {
+  pname = "ktexteditor";
+
+  extraBuildInputs = [qtdeclarative qtspeech editorconfig-core-c];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/ktexttemplate/default.nix b/nixpkgs/pkgs/kde/frameworks/ktexttemplate/default.nix
new file mode 100644
index 000000000000..673a10863ac6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/ktexttemplate/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "ktexttemplate";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/ktextwidgets/default.nix b/nixpkgs/pkgs/kde/frameworks/ktextwidgets/default.nix
new file mode 100644
index 000000000000..a90de215c598
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/ktextwidgets/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtspeech,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "ktextwidgets";
+
+  extraBuildInputs = [
+    qtspeech
+    qttools
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kunitconversion/default.nix b/nixpkgs/pkgs/kde/frameworks/kunitconversion/default.nix
new file mode 100644
index 000000000000..1d7cb52566d4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kunitconversion/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kunitconversion";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kuserfeedback/default.nix b/nixpkgs/pkgs/kde/frameworks/kuserfeedback/default.nix
new file mode 100644
index 000000000000..979362e6bfb8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kuserfeedback/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kuserfeedback";
+
+  # Disable server-side stuff we don't care about
+  extraCmakeFlags = ["-DENABLE_CONSOLE=0" "-DENABLE_CLI=0"];
+  extraNativeBuildInputs = [qttools qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kwallet/default.nix b/nixpkgs/pkgs/kde/frameworks/kwallet/default.nix
new file mode 100644
index 000000000000..3fffce1f3068
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kwallet/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  libgcrypt,
+  kdoctools,
+}:
+mkKdeDerivation {
+  pname = "kwallet";
+
+  extraBuildInputs = [libgcrypt kdoctools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kwidgetsaddons/default.nix b/nixpkgs/pkgs/kde/frameworks/kwidgetsaddons/default.nix
new file mode 100644
index 000000000000..09dfb3228d05
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kwidgetsaddons/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kwidgetsaddons";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kwindowsystem/default.nix b/nixpkgs/pkgs/kde/frameworks/kwindowsystem/default.nix
new file mode 100644
index 000000000000..711638cb106c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kwindowsystem/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtdeclarative,
+  qtwayland,
+  pkg-config,
+  wayland,
+}:
+mkKdeDerivation {
+  pname = "kwindowsystem";
+
+  extraNativeBuildInputs = [qttools pkg-config];
+  extraBuildInputs = [qtdeclarative qtwayland wayland];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/kxmlgui/default.nix b/nixpkgs/pkgs/kde/frameworks/kxmlgui/default.nix
new file mode 100644
index 000000000000..64734cde5af6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/kxmlgui/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kxmlgui";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/modemmanager-qt/default.nix b/nixpkgs/pkgs/kde/frameworks/modemmanager-qt/default.nix
new file mode 100644
index 000000000000..34a6f1954842
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/modemmanager-qt/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  modemmanager,
+}:
+mkKdeDerivation {
+  pname = "modemmanager-qt";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraPropagatedBuildInputs = [modemmanager];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/networkmanager-qt/default.nix b/nixpkgs/pkgs/kde/frameworks/networkmanager-qt/default.nix
new file mode 100644
index 000000000000..bdec89a9ca1d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/networkmanager-qt/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  pkg-config,
+  networkmanager,
+}:
+mkKdeDerivation {
+  pname = "networkmanager-qt";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtdeclarative];
+  extraPropagatedBuildInputs = [networkmanager];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/prison/default.nix b/nixpkgs/pkgs/kde/frameworks/prison/default.nix
new file mode 100644
index 000000000000..6411be8a34cf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/prison/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtmultimedia,
+  qrencode,
+  libdmtx,
+}:
+mkKdeDerivation {
+  pname = "prison";
+
+  extraBuildInputs = [qtdeclarative qtmultimedia qrencode libdmtx];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/purpose/default.nix b/nixpkgs/pkgs/kde/frameworks/purpose/default.nix
new file mode 100644
index 000000000000..8bf85ae19afe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/purpose/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  kaccounts-integration,
+  kdeclarative,
+  prison,
+}:
+mkKdeDerivation {
+  pname = "purpose";
+
+  extraBuildInputs = [qtdeclarative];
+  extraPropagatedBuildInputs = [kaccounts-integration kdeclarative prison];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/qqc2-desktop-style/default.nix b/nixpkgs/pkgs/kde/frameworks/qqc2-desktop-style/default.nix
new file mode 100644
index 000000000000..13d7c9c92153
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/qqc2-desktop-style/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  sonnet,
+}:
+mkKdeDerivation {
+  pname = "qqc2-desktop-style";
+
+  extraBuildInputs = [qtdeclarative];
+  extraPropagatedBuildInputs = [sonnet];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/solid/default.nix b/nixpkgs/pkgs/kde/frameworks/solid/default.nix
new file mode 100644
index 000000000000..941422848058
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/solid/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qttools,
+  bison,
+  flex,
+  libimobiledevice,
+}:
+mkKdeDerivation {
+  pname = "solid";
+
+  # Also search /run/wrappers for mount/umount
+  patches = [./fix-search-path.patch];
+
+  extraNativeBuildInputs = [qttools bison flex];
+  extraBuildInputs = [libimobiledevice];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/solid/fix-search-path.patch b/nixpkgs/pkgs/kde/frameworks/solid/fix-search-path.patch
new file mode 100644
index 000000000000..010aa1f3efcc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/solid/fix-search-path.patch
@@ -0,0 +1,17 @@
+diff --git a/src/solid/devices/backends/fstab/fstabhandling.cpp b/src/solid/devices/backends/fstab/fstabhandling.cpp
+index ac2a628..7ee46cc 100644
+--- a/src/solid/devices/backends/fstab/fstabhandling.cpp
++++ b/src/solid/devices/backends/fstab/fstabhandling.cpp
+@@ -275,7 +275,11 @@ bool Solid::Backends::Fstab::FstabHandling::callSystemCommand(const QString &com
+                                                               const QObject *receiver,
+                                                               std::function<void(QProcess *)> callback)
+ {
+-    static const QStringList searchPaths{QStringLiteral("/sbin"), QStringLiteral("/bin"), QStringLiteral("/usr/sbin"), QStringLiteral("/usr/bin")};
++    static const QStringList searchPaths{QStringLiteral("/run/wrappers/bin"),
++                                         QStringLiteral("/sbin"),
++                                         QStringLiteral("/bin"),
++                                         QStringLiteral("/usr/sbin"),
++                                         QStringLiteral("/usr/bin")};
+     static const QString joinedPaths = searchPaths.join(QLatin1Char(':'));
+     const QString exec = QStandardPaths::findExecutable(commandName, searchPaths);
+     if (exec.isEmpty()) {
diff --git a/nixpkgs/pkgs/kde/frameworks/sonnet/default.nix b/nixpkgs/pkgs/kde/frameworks/sonnet/default.nix
new file mode 100644
index 000000000000..d0775de9bb18
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/sonnet/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qttools,
+  pkg-config,
+  aspell,
+  hunspell,
+}:
+mkKdeDerivation {
+  pname = "sonnet";
+
+  extraNativeBuildInputs = [qttools pkg-config];
+  extraBuildInputs = [qtdeclarative aspell hunspell];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/syndication/default.nix b/nixpkgs/pkgs/kde/frameworks/syndication/default.nix
new file mode 100644
index 000000000000..cec50a6777f7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/syndication/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "syndication";
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/syntax-highlighting/default.nix b/nixpkgs/pkgs/kde/frameworks/syntax-highlighting/default.nix
new file mode 100644
index 000000000000..4ce448e937d5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/syntax-highlighting/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qttools,
+  perl,
+}:
+mkKdeDerivation {
+  pname = "syntax-highlighting";
+
+  extraBuildInputs = [qtdeclarative];
+  extraNativeBuildInputs = [qttools perl];
+}
diff --git a/nixpkgs/pkgs/kde/frameworks/threadweaver/default.nix b/nixpkgs/pkgs/kde/frameworks/threadweaver/default.nix
new file mode 100644
index 000000000000..9da07c2af2ac
--- /dev/null
+++ b/nixpkgs/pkgs/kde/frameworks/threadweaver/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "threadweaver";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix
new file mode 100644
index 000000000000..bc863c026709
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-calendar-tools/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-calendar-tools";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix
new file mode 100644
index 000000000000..ffa28766a4e1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-calendar/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-calendar";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix
new file mode 100644
index 000000000000..b8c1c5bf92cc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-contacts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-contacts";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix
new file mode 100644
index 000000000000..191944a9e90d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-import-wizard/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-import-wizard";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix
new file mode 100644
index 000000000000..8796f7220134
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-mime/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "akonadi-mime";
+
+  extraNativeBuildInputs = [shared-mime-info];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix
new file mode 100644
index 000000000000..a1cd161a510f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-notes/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "akonadi-notes";
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix b/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix
new file mode 100644
index 000000000000..87f743f86c30
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi-search/default.nix
@@ -0,0 +1,33 @@
+{
+  mkKdeDerivation,
+  sources,
+  corrosion,
+  xapian,
+  rustPlatform,
+  cargo,
+  rustc,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-euUaB+QCwwwPjrUq+3NHt0hjDSW5gch8MwS57KmtIWI=",
+}:
+mkKdeDerivation rec {
+  pname = "akonadi-search";
+  inherit (sources.${pname}) version;
+
+  cargoRoot = "agent/rs/htmlparser";
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    sourceRoot = "${pname}-${version}/${cargoRoot}";
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadi/default.nix b/nixpkgs/pkgs/kde/gear/akonadi/default.nix
new file mode 100644
index 000000000000..20fd1f54b1ec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadi/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qttools,
+  accounts-qt,
+  kaccounts-integration,
+  shared-mime-info,
+  xz,
+}:
+mkKdeDerivation {
+  pname = "akonadi";
+
+  # FIXME(later): investigate nixpkgs patches
+
+  extraNativeBuildInputs = [qttools shared-mime-info];
+  extraBuildInputs = [kaccounts-integration accounts-qt xz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix b/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix
new file mode 100644
index 000000000000..4820faea5705
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akonadiconsole/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  xapian,
+}:
+mkKdeDerivation {
+  pname = "akonadiconsole";
+
+  extraBuildInputs = [xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/akregator/default.nix b/nixpkgs/pkgs/kde/gear/akregator/default.nix
new file mode 100644
index 000000000000..4d52e4947b78
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/akregator/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "akregator";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/alligator/default.nix b/nixpkgs/pkgs/kde/gear/alligator/default.nix
new file mode 100644
index 000000000000..bf3a4fb53b9d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/alligator/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "alligator";
+}
diff --git a/nixpkgs/pkgs/kde/gear/analitza/default.nix b/nixpkgs/pkgs/kde/gear/analitza/default.nix
new file mode 100644
index 000000000000..318c0b648279
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/analitza/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtsvg,
+  qttools,
+  qtdeclarative,
+  eigen,
+}:
+mkKdeDerivation {
+  pname = "analitza";
+
+  extraNativeBuildInputs = [qt5compat qtsvg qttools];
+  extraBuildInputs = [qtdeclarative eigen];
+}
diff --git a/nixpkgs/pkgs/kde/gear/angelfish/default.nix b/nixpkgs/pkgs/kde/gear/angelfish/default.nix
new file mode 100644
index 000000000000..133509e78b7a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/angelfish/default.nix
@@ -0,0 +1,32 @@
+{
+  mkKdeDerivation,
+  sources,
+  qtsvg,
+  qtwebengine,
+  corrosion,
+  rustPlatform,
+  cargo,
+  rustc,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-kkoLWJvPx1Hq+MQkPgTffrTFYgVlVfKdmJq5ExAW1NE=",
+  qcoro,
+}:
+mkKdeDerivation rec {
+  pname = "angelfish";
+  inherit (sources.${pname}) version;
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion qtsvg qtwebengine qcoro];
+}
diff --git a/nixpkgs/pkgs/kde/gear/arianna/default.nix b/nixpkgs/pkgs/kde/gear/arianna/default.nix
new file mode 100644
index 000000000000..d3a63bc19455
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/arianna/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qthttpserver,
+  qtsvg,
+  qtwebchannel,
+  qtwebengine,
+  kitemmodels,
+  kquickcharts,
+}:
+mkKdeDerivation {
+  pname = "arianna";
+
+  extraBuildInputs = [
+    qthttpserver
+    qtsvg
+    qtwebchannel
+    qtwebengine
+    kitemmodels
+    kquickcharts
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ark/default.nix b/nixpkgs/pkgs/kde/gear/ark/default.nix
new file mode 100644
index 000000000000..ae443c21cf84
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ark/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  libarchive,
+  libzip,
+}:
+mkKdeDerivation {
+  pname = "ark";
+
+  extraBuildInputs = [libarchive libzip];
+}
diff --git a/nixpkgs/pkgs/kde/gear/artikulate/default.nix b/nixpkgs/pkgs/kde/gear/artikulate/default.nix
new file mode 100644
index 000000000000..c82db10260f7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/artikulate/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "artikulate";
+
+  extraBuildInputs = [qtmultimedia];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix b/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix
new file mode 100644
index 000000000000..c2f5c2558826
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiocd-kio/default.nix
@@ -0,0 +1,24 @@
+{
+  lib,
+  mkKdeDerivation,
+  cdparanoia,
+  flac,
+  libogg,
+  libvorbis,
+  substituteAll,
+  lame,
+  opusTools,
+}:
+mkKdeDerivation {
+  pname = "audiocd-kio";
+
+  patches = [
+    (substituteAll {
+      src = ./encoder-paths.patch;
+      lame = lib.getExe lame;
+      opusenc = "${opusTools}/bin/opusenc";
+    })
+  ];
+
+  extraBuildInputs = [cdparanoia flac libogg libvorbis];
+}
diff --git a/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch b/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch
new file mode 100644
index 000000000000..c39835a8b1f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiocd-kio/encoder-paths.patch
@@ -0,0 +1,35 @@
+diff --git a/plugins/lame/encoderlame.cpp b/plugins/lame/encoderlame.cpp
+index 48d1d76..2643d6a 100644
+--- a/plugins/lame/encoderlame.cpp
++++ b/plugins/lame/encoderlame.cpp
+@@ -244,7 +244,7 @@ long EncoderLame::readInit(long /*size*/)
+ 
+     // -r raw/pcm
+     // -s 44.1 (because it is raw you have to specify this)
+-    *(d->currentEncodeProcess) << QStringLiteral("lame") << QStringLiteral("--verbose") << QStringLiteral("-r") << QStringLiteral("-s")
++    *(d->currentEncodeProcess) << QStringLiteral("@lame@") << QStringLiteral("--verbose") << QStringLiteral("-r") << QStringLiteral("-s")
+                                << QStringLiteral("44.1");
+     *(d->currentEncodeProcess) << args;
+     if (Settings::self()->id3_tag())
+diff --git a/plugins/opus/encoderopus.cpp b/plugins/opus/encoderopus.cpp
+index ef297fb..465bb3e 100644
+--- a/plugins/opus/encoderopus.cpp
++++ b/plugins/opus/encoderopus.cpp
+@@ -82,7 +82,7 @@ QWidget *EncoderOpus::getConfigureWidget(KConfigSkeleton **manager) const
+ bool EncoderOpus::init()
+ {
+     // Determine if opusenc is installed on the system or not.
+-    if (QStandardPaths::findExecutable(QStringLiteral("opusenc")).isEmpty())
++    if (QStandardPaths::findExecutable(QStringLiteral("@opusenc@")).isEmpty())
+         return false;
+ 
+     return true;
+@@ -140,7 +140,7 @@ long EncoderOpus::readInit(long /*size*/)
+ 
+     // --raw raw/pcm
+     // --raw-rate 44100 (because it is raw you have to specify this)
+-    *(d->currentEncodeProcess) << QStringLiteral("opusenc") << QStringLiteral("--raw") << QStringLiteral("--raw-rate") << QStringLiteral("44100");
++    *(d->currentEncodeProcess) << QStringLiteral("@opusenc@") << QStringLiteral("--raw") << QStringLiteral("--raw-rate") << QStringLiteral("44100");
+     *(d->currentEncodeProcess) << args;
+     *d->currentEncodeProcess << trackInfo;
+ 
diff --git a/nixpkgs/pkgs/kde/gear/audiotube/default.nix b/nixpkgs/pkgs/kde/gear/audiotube/default.nix
new file mode 100644
index 000000000000..60e646cd71c1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/audiotube/default.nix
@@ -0,0 +1,53 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtmultimedia,
+  qtsvg,
+  extra-cmake-modules,
+  futuresql,
+  kcoreaddons,
+  kcrash,
+  ki18n,
+  kirigami-addons,
+  kirigami,
+  kwindowsystem,
+  purpose,
+  qcoro,
+  python3,
+}: let
+  ps = python3.pkgs;
+  pythonDeps = [
+    ps.yt-dlp
+    ps.ytmusicapi
+  ];
+in
+  mkKdeDerivation {
+    pname = "audiotube";
+
+    extraNativeBuildInputs = [
+      ps.pybind11
+    ];
+
+    extraBuildInputs =
+      [
+        qtdeclarative
+        qtmultimedia
+        qtsvg
+
+        extra-cmake-modules
+        futuresql
+        kirigami
+        kirigami-addons
+        kcoreaddons
+        ki18n
+        kcrash
+        kwindowsystem
+        purpose
+        qcoro
+      ]
+      ++ pythonDeps;
+
+    qtWrapperArgs = [
+      "--prefix PYTHONPATH : ${ps.makePythonPath pythonDeps}"
+    ];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix b/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix
new file mode 100644
index 000000000000..ca638bef6074
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/baloo-widgets/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "baloo-widgets";
+}
diff --git a/nixpkgs/pkgs/kde/gear/blinken/default.nix b/nixpkgs/pkgs/kde/gear/blinken/default.nix
new file mode 100644
index 000000000000..ac5f4273ebd5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/blinken/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "blinken";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/bomber/default.nix b/nixpkgs/pkgs/kde/gear/bomber/default.nix
new file mode 100644
index 000000000000..a0e2ea97428c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/bomber/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "bomber";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/bovo/default.nix b/nixpkgs/pkgs/kde/gear/bovo/default.nix
new file mode 100644
index 000000000000..bc48853616ef
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/bovo/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "bovo";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix b/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix
new file mode 100644
index 000000000000..b6632a384d65
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/calendarsupport/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "calendarsupport";
+}
diff --git a/nixpkgs/pkgs/kde/gear/calindori/default.nix b/nixpkgs/pkgs/kde/gear/calindori/default.nix
new file mode 100644
index 000000000000..f0b21c7986a7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/calindori/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qqc2-desktop-style,
+}:
+mkKdeDerivation {
+  pname = "calindori";
+
+  extraBuildInputs = [
+    qtsvg
+    qqc2-desktop-style
+  ];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/cantor/default.nix b/nixpkgs/pkgs/kde/gear/cantor/default.nix
new file mode 100644
index 000000000000..42963aabbba0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/cantor/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "cantor";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/cervisia/default.nix b/nixpkgs/pkgs/kde/gear/cervisia/default.nix
new file mode 100644
index 000000000000..d8546e9d8a30
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/cervisia/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "cervisia";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/colord-kde/default.nix b/nixpkgs/pkgs/kde/gear/colord-kde/default.nix
new file mode 100644
index 000000000000..adacf19ba9a3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/colord-kde/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  lcms2,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "colord-kde";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [lcms2 xorg.libXrandr];
+}
diff --git a/nixpkgs/pkgs/kde/gear/default.nix b/nixpkgs/pkgs/kde/gear/default.nix
new file mode 100644
index 000000000000..629711d72286
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/default.nix
@@ -0,0 +1,248 @@
+{callPackage}: {
+  akonadi = callPackage ./akonadi {};
+  akonadi-calendar = callPackage ./akonadi-calendar {};
+  akonadi-calendar-tools = callPackage ./akonadi-calendar-tools {};
+  akonadiconsole = callPackage ./akonadiconsole {};
+  akonadi-contacts = callPackage ./akonadi-contacts {};
+  akonadi-import-wizard = callPackage ./akonadi-import-wizard {};
+  akonadi-mime = callPackage ./akonadi-mime {};
+  akonadi-notes = callPackage ./akonadi-notes {};
+  akonadi-search = callPackage ./akonadi-search {};
+  akregator = callPackage ./akregator {};
+  alligator = callPackage ./alligator {};
+  analitza = callPackage ./analitza {};
+  angelfish = callPackage ./angelfish {};
+  arianna = callPackage ./arianna {};
+  ark = callPackage ./ark {};
+  artikulate = callPackage ./artikulate {};
+  audiocd-kio = callPackage ./audiocd-kio {};
+  audiotube = callPackage ./audiotube {};
+  baloo-widgets = callPackage ./baloo-widgets {};
+  blinken = callPackage ./blinken {};
+  bomber = callPackage ./bomber {};
+  bovo = callPackage ./bovo {};
+  calendarsupport = callPackage ./calendarsupport {};
+  calindori = callPackage ./calindori {};
+  cantor = callPackage ./cantor {};
+  cervisia = callPackage ./cervisia {};
+  colord-kde = callPackage ./colord-kde {};
+  dolphin = callPackage ./dolphin {};
+  dolphin-plugins = callPackage ./dolphin-plugins {};
+  dragon = callPackage ./dragon {};
+  elisa = callPackage ./elisa {};
+  eventviews = callPackage ./eventviews {};
+  falkon = callPackage ./falkon {};
+  ffmpegthumbs = callPackage ./ffmpegthumbs {};
+  filelight = callPackage ./filelight {};
+  ghostwriter = callPackage ./ghostwriter {};
+  granatier = callPackage ./granatier {};
+  grantlee-editor = callPackage ./grantlee-editor {};
+  grantleetheme = callPackage ./grantleetheme {};
+  gwenview = callPackage ./gwenview {};
+  incidenceeditor = callPackage ./incidenceeditor {};
+  isoimagewriter = callPackage ./isoimagewriter {};
+  itinerary = callPackage ./itinerary {};
+  juk = callPackage ./juk {};
+  k3b = callPackage ./k3b {};
+  kaccounts-integration = callPackage ./kaccounts-integration {};
+  kaccounts-providers = callPackage ./kaccounts-providers {};
+  kaddressbook = callPackage ./kaddressbook {};
+  kajongg = callPackage ./kajongg {};
+  kalarm = callPackage ./kalarm {};
+  kalgebra = callPackage ./kalgebra {};
+  kalk = callPackage ./kalk {};
+  kalzium = callPackage ./kalzium {};
+  kamera = callPackage ./kamera {};
+  kamoso = callPackage ./kamoso {};
+  kanagram = callPackage ./kanagram {};
+  kapman = callPackage ./kapman {};
+  kapptemplate = callPackage ./kapptemplate {};
+  kasts = callPackage ./kasts {};
+  kate = callPackage ./kate {};
+  katomic = callPackage ./katomic {};
+  kbackup = callPackage ./kbackup {};
+  kblackbox = callPackage ./kblackbox {};
+  kblocks = callPackage ./kblocks {};
+  kbounce = callPackage ./kbounce {};
+  kbreakout = callPackage ./kbreakout {};
+  kbruch = callPackage ./kbruch {};
+  kcachegrind = callPackage ./kcachegrind {};
+  kcalc = callPackage ./kcalc {};
+  kcalutils = callPackage ./kcalutils {};
+  kcharselect = callPackage ./kcharselect {};
+  kclock = callPackage ./kclock {};
+  kcolorchooser = callPackage ./kcolorchooser {};
+  kcron = callPackage ./kcron {};
+  kdebugsettings = callPackage ./kdebugsettings {};
+  kdeconnect-kde = callPackage ./kdeconnect-kde {};
+  kde-dev-scripts = callPackage ./kde-dev-scripts {};
+  kde-dev-utils = callPackage ./kde-dev-utils {};
+  kdeedu-data = callPackage ./kdeedu-data {};
+  kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket {};
+  kdegraphics-thumbnailers = callPackage ./kdegraphics-thumbnailers {};
+  kde-inotify-survey = callPackage ./kde-inotify-survey {};
+  kdenetwork-filesharing = callPackage ./kdenetwork-filesharing {};
+  kdenlive = callPackage ./kdenlive {};
+  kdepim-addons = callPackage ./kdepim-addons {};
+  kdepim-runtime = callPackage ./kdepim-runtime {};
+  kdesdk-kio = callPackage ./kdesdk-kio {};
+  kdesdk-thumbnailers = callPackage ./kdesdk-thumbnailers {};
+  kdevelop = callPackage ./kdevelop {};
+  kdev-php = callPackage ./kdev-php {};
+  kdev-python = callPackage ./kdev-python {};
+  kdf = callPackage ./kdf {};
+  kdialog = callPackage ./kdialog {};
+  kdiamond = callPackage ./kdiamond {};
+  keditbookmarks = callPackage ./keditbookmarks {};
+  keysmith = callPackage ./keysmith {};
+  kfind = callPackage ./kfind {};
+  kfourinline = callPackage ./kfourinline {};
+  kgeography = callPackage ./kgeography {};
+  kget = callPackage ./kget {};
+  kgoldrunner = callPackage ./kgoldrunner {};
+  kgpg = callPackage ./kgpg {};
+  khangman = callPackage ./khangman {};
+  khealthcertificate = callPackage ./khealthcertificate {};
+  khelpcenter = callPackage ./khelpcenter {};
+  kidentitymanagement = callPackage ./kidentitymanagement {};
+  kig = callPackage ./kig {};
+  kigo = callPackage ./kigo {};
+  killbots = callPackage ./killbots {};
+  kimagemapeditor = callPackage ./kimagemapeditor {};
+  kimap = callPackage ./kimap {};
+  kio-admin = callPackage ./kio-admin {};
+  kio-extras = callPackage ./kio-extras {};
+  kio-extras-kf5 = callPackage ./kio-extras-kf5 {};
+  kio-gdrive = callPackage ./kio-gdrive {};
+  kio-zeroconf = callPackage ./kio-zeroconf {};
+  kipi-plugins = callPackage ./kipi-plugins {};
+  kirigami-gallery = callPackage ./kirigami-gallery {};
+  kiriki = callPackage ./kiriki {};
+  kiten = callPackage ./kiten {};
+  kitinerary = callPackage ./kitinerary {};
+  kjournald = callPackage ./kjournald {};
+  kjumpingcube = callPackage ./kjumpingcube {};
+  kldap = callPackage ./kldap {};
+  kleopatra = callPackage ./kleopatra {};
+  klettres = callPackage ./klettres {};
+  klickety = callPackage ./klickety {};
+  klines = callPackage ./klines {};
+  kmag = callPackage ./kmag {};
+  kmahjongg = callPackage ./kmahjongg {};
+  kmail = callPackage ./kmail {};
+  kmail-account-wizard = callPackage ./kmail-account-wizard {};
+  kmailtransport = callPackage ./kmailtransport {};
+  kmbox = callPackage ./kmbox {};
+  kmime = callPackage ./kmime {};
+  kmines = callPackage ./kmines {};
+  kmix = callPackage ./kmix {};
+  kmousetool = callPackage ./kmousetool {};
+  kmouth = callPackage ./kmouth {};
+  kmplot = callPackage ./kmplot {};
+  knavalbattle = callPackage ./knavalbattle {};
+  knetwalk = callPackage ./knetwalk {};
+  knights = callPackage ./knights {};
+  knotes = callPackage ./knotes {};
+  koko = callPackage ./koko {};
+  kolf = callPackage ./kolf {};
+  kollision = callPackage ./kollision {};
+  kolourpaint = callPackage ./kolourpaint {};
+  kompare = callPackage ./kompare {};
+  kongress = callPackage ./kongress {};
+  konqueror = callPackage ./konqueror {};
+  konquest = callPackage ./konquest {};
+  konsole = callPackage ./konsole {};
+  kontact = callPackage ./kontact {};
+  kontactinterface = callPackage ./kontactinterface {};
+  kontrast = callPackage ./kontrast {};
+  konversation = callPackage ./konversation {};
+  kopeninghours = callPackage ./kopeninghours {};
+  korganizer = callPackage ./korganizer {};
+  kosmindoormap = callPackage ./kosmindoormap {};
+  kpat = callPackage ./kpat {};
+  kpimtextedit = callPackage ./kpimtextedit {};
+  kpkpass = callPackage ./kpkpass {};
+  kpmcore = callPackage ./kpmcore {};
+  kpublictransport = callPackage ./kpublictransport {};
+  kqtquickcharts = callPackage ./kqtquickcharts {};
+  krdc = callPackage ./krdc {};
+  krecorder = callPackage ./krecorder {};
+  kreversi = callPackage ./kreversi {};
+  krfb = callPackage ./krfb {};
+  kross-interpreters = callPackage ./kross-interpreters {};
+  kruler = callPackage ./kruler {};
+  ksanecore = callPackage ./ksanecore {};
+  kshisen = callPackage ./kshisen {};
+  ksirk = callPackage ./ksirk {};
+  ksmtp = callPackage ./ksmtp {};
+  ksnakeduel = callPackage ./ksnakeduel {};
+  kspaceduel = callPackage ./kspaceduel {};
+  ksquares = callPackage ./ksquares {};
+  ksudoku = callPackage ./ksudoku {};
+  ksystemlog = callPackage ./ksystemlog {};
+  kteatime = callPackage ./kteatime {};
+  ktimer = callPackage ./ktimer {};
+  ktnef = callPackage ./ktnef {};
+  ktorrent = callPackage ./ktorrent {};
+  ktouch = callPackage ./ktouch {};
+  ktrip = callPackage ./ktrip {};
+  ktuberling = callPackage ./ktuberling {};
+  kturtle = callPackage ./kturtle {};
+  kubrick = callPackage ./kubrick {};
+  kwalletmanager = callPackage ./kwalletmanager {};
+  kwave = callPackage ./kwave {};
+  kweather = callPackage ./kweather {};
+  kwordquiz = callPackage ./kwordquiz {};
+  libgravatar = callPackage ./libgravatar {};
+  libkcddb = callPackage ./libkcddb {};
+  libkcompactdisc = callPackage ./libkcompactdisc {};
+  libkdcraw = callPackage ./libkdcraw {};
+  libkdegames = callPackage ./libkdegames {};
+  libkdepim = callPackage ./libkdepim {};
+  libkeduvocdocument = callPackage ./libkeduvocdocument {};
+  libkexiv2 = callPackage ./libkexiv2 {};
+  libkgapi = callPackage ./libkgapi {};
+  libkipi = callPackage ./libkipi {};
+  libkleo = callPackage ./libkleo {};
+  libkmahjongg = callPackage ./libkmahjongg {};
+  libkomparediff2 = callPackage ./libkomparediff2 {};
+  libksane = callPackage ./libksane {};
+  libksieve = callPackage ./libksieve {};
+  libktorrent = callPackage ./libktorrent {};
+  lokalize = callPackage ./lokalize {};
+  lskat = callPackage ./lskat {};
+  mailcommon = callPackage ./mailcommon {};
+  mailimporter = callPackage ./mailimporter {};
+  marble = callPackage ./marble {};
+  markdownpart = callPackage ./markdownpart {};
+  mbox-importer = callPackage ./mbox-importer {};
+  merkuro = callPackage ./merkuro {};
+  messagelib = callPackage ./messagelib {};
+  mimetreeparser = callPackage ./mimetreeparser {};
+  minuet = callPackage ./minuet {};
+  neochat = callPackage ./neochat {};
+  okular = callPackage ./okular {};
+  palapeli = callPackage ./palapeli {};
+  parley = callPackage ./parley {};
+  partitionmanager = callPackage ./partitionmanager {};
+  picmi = callPackage ./picmi {};
+  pimcommon = callPackage ./pimcommon {};
+  pim-data-exporter = callPackage ./pim-data-exporter {};
+  pim-sieve-editor = callPackage ./pim-sieve-editor {};
+  plasmatube = callPackage ./plasmatube {};
+  poxml = callPackage ./poxml {};
+  qmlkonsole = callPackage ./qmlkonsole {};
+  rocs = callPackage ./rocs {};
+  signon-kwallet-extension = callPackage ./signon-kwallet-extension {};
+  skanlite = callPackage ./skanlite {};
+  skanpage = callPackage ./skanpage {};
+  spectacle = callPackage ./spectacle {};
+  step = callPackage ./step {};
+  svgpart = callPackage ./svgpart {};
+  sweeper = callPackage ./sweeper {};
+  telly-skout = callPackage ./telly-skout {};
+  tokodon = callPackage ./tokodon {};
+  umbrello = callPackage ./umbrello {};
+  yakuake = callPackage ./yakuake {};
+  zanshin = callPackage ./zanshin {};
+}
diff --git a/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix b/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix
new file mode 100644
index 000000000000..cc88d732389f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dolphin-plugins/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dolphin-plugins";
+}
diff --git a/nixpkgs/pkgs/kde/gear/dolphin/default.nix b/nixpkgs/pkgs/kde/gear/dolphin/default.nix
new file mode 100644
index 000000000000..eb70e9c9d086
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dolphin/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dolphin";
+}
diff --git a/nixpkgs/pkgs/kde/gear/dragon/default.nix b/nixpkgs/pkgs/kde/gear/dragon/default.nix
new file mode 100644
index 000000000000..0b1900203c05
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/dragon/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "dragon";
+}
diff --git a/nixpkgs/pkgs/kde/gear/elisa/default.nix b/nixpkgs/pkgs/kde/gear/elisa/default.nix
new file mode 100644
index 000000000000..4f4437a5794c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/elisa/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+  vlc,
+}:
+mkKdeDerivation {
+  pname = "elisa";
+
+  extraBuildInputs = [qtmultimedia vlc];
+}
diff --git a/nixpkgs/pkgs/kde/gear/eventviews/default.nix b/nixpkgs/pkgs/kde/gear/eventviews/default.nix
new file mode 100644
index 000000000000..d9d0eeb7d798
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/eventviews/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "eventviews";
+}
diff --git a/nixpkgs/pkgs/kde/gear/falkon/default.nix b/nixpkgs/pkgs/kde/gear/falkon/default.nix
new file mode 100644
index 000000000000..3fb5a9e16dbb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/falkon/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+  qtwebchannel,
+  qtwebengine,
+  qttools,
+  python3Packages,
+}:
+mkKdeDerivation {
+  pname = "falkon";
+
+  extraNativeBuildInputs = [qttools qtwebchannel qtwebengine];
+  extraBuildInputs = [extra-cmake-modules qtwebchannel qtwebengine python3Packages.pyside6];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix b/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix
new file mode 100644
index 000000000000..62bd0e10378c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ffmpegthumbs/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  ffmpeg,
+}:
+mkKdeDerivation {
+  pname = "ffmpegthumbs";
+
+  extraBuildInputs = [ffmpeg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/filelight/default.nix b/nixpkgs/pkgs/kde/gear/filelight/default.nix
new file mode 100644
index 000000000000..938cedda3af1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/filelight/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "filelight";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix b/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix
new file mode 100644
index 000000000000..b3620992ee40
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ghostwriter/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qttools,
+  qtwebchannel,
+  qtwebengine,
+  qt5compat,
+  pkg-config,
+  hunspell,
+  kdoctools,
+}:
+mkKdeDerivation {
+  pname = "ghostwriter";
+
+  extraNativeBuildInputs = [pkg-config kdoctools];
+  extraBuildInputs = [qtsvg qttools qtwebchannel qtwebengine qt5compat hunspell];
+}
diff --git a/nixpkgs/pkgs/kde/gear/granatier/default.nix b/nixpkgs/pkgs/kde/gear/granatier/default.nix
new file mode 100644
index 000000000000..66a763a962fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/granatier/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "granatier";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix b/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix
new file mode 100644
index 000000000000..a80ea7d8b939
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/grantlee-editor/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "grantlee-editor";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix b/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix
new file mode 100644
index 000000000000..5e21e92a54e5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/grantleetheme/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "grantleetheme";
+}
diff --git a/nixpkgs/pkgs/kde/gear/gwenview/default.nix b/nixpkgs/pkgs/kde/gear/gwenview/default.nix
new file mode 100644
index 000000000000..0f9e64696e38
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/gwenview/default.nix
@@ -0,0 +1,32 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtwayland,
+  pkg-config,
+  cfitsio,
+  exiv2,
+  baloo,
+  kimageannotator,
+  lcms2,
+  libtiff,
+  wayland,
+  wayland-protocols,
+}:
+mkKdeDerivation {
+  pname = "gwenview";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtsvg
+    qtwayland
+
+    cfitsio
+    exiv2
+    baloo
+    kimageannotator
+    lcms2
+    libtiff
+    wayland
+    wayland-protocols
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix b/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix
new file mode 100644
index 000000000000..cf8c1e7857c4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/incidenceeditor/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "incidenceeditor";
+}
diff --git a/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix b/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix
new file mode 100644
index 000000000000..daad31ea436b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/isoimagewriter/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "isoimagewriter";
+
+  extraBuildInputs = [qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/itinerary/default.nix b/nixpkgs/pkgs/kde/gear/itinerary/default.nix
new file mode 100644
index 000000000000..29c129132071
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/itinerary/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtlocation,
+  qtpositioning,
+  shared-mime-info,
+  libical,
+}:
+mkKdeDerivation {
+  pname = "itinerary";
+
+  # FIXME: this should really be fixed at ECM level somehow
+  patches = [./optional-runtime-dependencies.patch];
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+  extraBuildInputs = [qtlocation qtpositioning libical];
+}
diff --git a/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch b/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch
new file mode 100644
index 000000000000..004122fab4c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/itinerary/optional-runtime-dependencies.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55ae3280..cac86220 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -85,8 +85,8 @@ ecm_find_qmlmodule(QtPositioning 6.0)
+ ecm_find_qmlmodule(org.kde.kitemmodels 5.245)
+ ecm_find_qmlmodule(org.kde.prison 5.245)
+ ecm_find_qmlmodule(org.kde.prison.scanner 5.245)
+-ecm_find_qmlmodule(org.kde.kosmindoormap 24.02 REQUIRED)
+-ecm_find_qmlmodule(org.kde.kopeninghours 24.02 REQUIRED)
++ecm_find_qmlmodule(org.kde.kosmindoormap 24.02)
++ecm_find_qmlmodule(org.kde.kopeninghours 24.02)
+ 
+ # runtime dependencies are build-time dependencies on Android
+ if (ANDROID)
diff --git a/nixpkgs/pkgs/kde/gear/juk/default.nix b/nixpkgs/pkgs/kde/gear/juk/default.nix
new file mode 100644
index 000000000000..dec454d2385b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/juk/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  taglib,
+}:
+mkKdeDerivation {
+  pname = "juk";
+
+  extraBuildInputs = [qtsvg taglib];
+}
diff --git a/nixpkgs/pkgs/kde/gear/k3b/default.nix b/nixpkgs/pkgs/kde/gear/k3b/default.nix
new file mode 100644
index 000000000000..ab6b39a2f5e4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/k3b/default.nix
@@ -0,0 +1,53 @@
+{
+  lib,
+  mkKdeDerivation,
+  pkg-config,
+  qtwebengine,
+  shared-mime-info,
+  libdvdread,
+  flac,
+  libmad,
+  libsndfile,
+  lame,
+  libvorbis,
+  libsamplerate,
+  cdrdao,
+  cdrtools,
+  dvdplusrwtools,
+  libburn,
+  normalize,
+  sox,
+  transcode,
+  vcdimager,
+}:
+mkKdeDerivation {
+  pname = "k3b";
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+
+  # FIXME: Musicbrainz 2.x???, musepack
+  extraBuildInputs = [
+    qtwebengine
+    libdvdread
+    flac
+    libmad
+    libsndfile
+    lame
+    libvorbis
+    libsamplerate
+  ];
+
+  qtWrapperArgs = [
+    "--prefix PATH ':' ${lib.makeBinPath [
+      cdrdao
+      cdrtools
+      dvdplusrwtools
+      libburn
+      normalize
+      sox
+      transcode
+      vcdimager
+      flac
+    ]}"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix b/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix
new file mode 100644
index 000000000000..1b927d3e01ef
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaccounts-integration/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  intltool,
+}:
+mkKdeDerivation {
+  pname = "kaccounts-integration";
+
+  propagatedNativeBuildInputs = [intltool];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix b/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix
new file mode 100644
index 000000000000..6cd2fd7e3304
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaccounts-providers/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  intltool,
+  qtdeclarative,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "kaccounts-providers";
+
+  extraNativeBuildInputs = [intltool];
+  extraBuildInputs = [qtdeclarative qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix b/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix
new file mode 100644
index 000000000000..d4e2c5820038
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kaddressbook/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kaddressbook";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kajongg/default.nix b/nixpkgs/pkgs/kde/gear/kajongg/default.nix
new file mode 100644
index 000000000000..651ac3b3115a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kajongg/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  python3,
+}:
+mkKdeDerivation {
+  pname = "kajongg";
+
+  extraBuildInputs = [qtsvg python3 python3.pkgs.twisted];
+  # FIXME: completely horked, is actually a Python app, needs a lot of fixing
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalarm/default.nix b/nixpkgs/pkgs/kde/gear/kalarm/default.nix
new file mode 100644
index 000000000000..439f92206967
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalarm/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kalarm";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalgebra/default.nix b/nixpkgs/pkgs/kde/gear/kalgebra/default.nix
new file mode 100644
index 000000000000..89aaafc04c96
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalgebra/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtwebengine,
+  ncurses,
+  readline,
+}:
+mkKdeDerivation {
+  pname = "kalgebra";
+
+  extraBuildInputs = [qtsvg qtwebengine ncurses readline];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalk/default.nix b/nixpkgs/pkgs/kde/gear/kalk/default.nix
new file mode 100644
index 000000000000..b2cce371346e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalk/default.nix
@@ -0,0 +1,25 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qqc2-desktop-style,
+  kirigami-addons,
+  pkg-config,
+  bison,
+  flex,
+  gmp,
+  mpfr,
+  libqalculate,
+}:
+mkKdeDerivation {
+  pname = "kalk";
+
+  extraNativeBuildInputs = [pkg-config bison flex];
+  extraBuildInputs = [
+    qtdeclarative
+    qqc2-desktop-style
+    kirigami-addons
+    gmp
+    mpfr
+    libqalculate
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kalzium/default.nix b/nixpkgs/pkgs/kde/gear/kalzium/default.nix
new file mode 100644
index 000000000000..7e46128dc967
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kalzium/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  ocaml,
+  eigen,
+  openbabel,
+  qtsvg,
+  qtscxml,
+}:
+mkKdeDerivation {
+  pname = "kalzium";
+
+  # FIXME: look into how to make it find libfacile
+  extraNativeBuildInputs = [pkg-config ocaml];
+  extraBuildInputs = [eigen openbabel qtsvg qtscxml];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kamera/default.nix b/nixpkgs/pkgs/kde/gear/kamera/default.nix
new file mode 100644
index 000000000000..3ab21c99f4ed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kamera/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libgphoto2,
+}:
+mkKdeDerivation {
+  pname = "kamera";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libgphoto2];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kamoso/default.nix b/nixpkgs/pkgs/kde/gear/kamoso/default.nix
new file mode 100644
index 000000000000..b83e193f3117
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kamoso/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kamoso";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kanagram/default.nix b/nixpkgs/pkgs/kde/gear/kanagram/default.nix
new file mode 100644
index 000000000000..4a12b6153e15
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kanagram/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtspeech,
+}:
+mkKdeDerivation {
+  pname = "kanagram";
+
+  extraBuildInputs = [qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kapman/default.nix b/nixpkgs/pkgs/kde/gear/kapman/default.nix
new file mode 100644
index 000000000000..2b3599ccd3f3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kapman/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kapman";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix b/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix
new file mode 100644
index 000000000000..0559bc33e522
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kapptemplate/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kapptemplate";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kasts/default.nix b/nixpkgs/pkgs/kde/gear/kasts/default.nix
new file mode 100644
index 000000000000..94fa949a78d7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kasts/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  pkg-config,
+  qqc2-desktop-style,
+  taglib,
+  libvlc,
+}:
+mkKdeDerivation {
+  pname = "kasts";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qqc2-desktop-style
+    taglib
+    libvlc
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kate/default.nix b/nixpkgs/pkgs/kde/gear/kate/default.nix
new file mode 100644
index 000000000000..044b7b35e8b5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kate/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kate";
+}
diff --git a/nixpkgs/pkgs/kde/gear/katomic/default.nix b/nixpkgs/pkgs/kde/gear/katomic/default.nix
new file mode 100644
index 000000000000..22ce4c19c216
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/katomic/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "katomic";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbackup/default.nix b/nixpkgs/pkgs/kde/gear/kbackup/default.nix
new file mode 100644
index 000000000000..aca459e19264
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbackup/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  libarchive,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "kbackup";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [qt5compat libarchive];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kblackbox/default.nix b/nixpkgs/pkgs/kde/gear/kblackbox/default.nix
new file mode 100644
index 000000000000..2aba074ac562
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kblackbox/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kblackbox";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kblocks/default.nix b/nixpkgs/pkgs/kde/gear/kblocks/default.nix
new file mode 100644
index 000000000000..e184971a9491
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kblocks/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kblocks";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbounce/default.nix b/nixpkgs/pkgs/kde/gear/kbounce/default.nix
new file mode 100644
index 000000000000..d94cd2cbf351
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbounce/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kbounce";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbreakout/default.nix b/nixpkgs/pkgs/kde/gear/kbreakout/default.nix
new file mode 100644
index 000000000000..34e9e8435779
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbreakout/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kbreakout";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kbruch/default.nix b/nixpkgs/pkgs/kde/gear/kbruch/default.nix
new file mode 100644
index 000000000000..ea034aa275b9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kbruch/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kbruch";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix b/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix
new file mode 100644
index 000000000000..9023492d1740
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcachegrind/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kcachegrind";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcalc/default.nix b/nixpkgs/pkgs/kde/gear/kcalc/default.nix
new file mode 100644
index 000000000000..66bffedbb3c0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcalc/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  gmp,
+  mpfr,
+  kdoctools,
+}:
+mkKdeDerivation {
+  pname = "kcalc";
+
+  extraNativeBuildInputs = [kdoctools];
+  extraBuildInputs = [qt5compat gmp mpfr];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcalutils/default.nix b/nixpkgs/pkgs/kde/gear/kcalutils/default.nix
new file mode 100644
index 000000000000..1b58cce9ff00
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcalutils/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcalutils";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcharselect/default.nix b/nixpkgs/pkgs/kde/gear/kcharselect/default.nix
new file mode 100644
index 000000000000..1fffb87d32cd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcharselect/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcharselect";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kclock/default.nix b/nixpkgs/pkgs/kde/gear/kclock/default.nix
new file mode 100644
index 000000000000..97db5fd92f0e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kclock/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "kclock";
+
+  extraBuildInputs = [qtsvg qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix b/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix
new file mode 100644
index 000000000000..5e82c5c2c36f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcolorchooser/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcolorchooser";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kcron/default.nix b/nixpkgs/pkgs/kde/gear/kcron/default.nix
new file mode 100644
index 000000000000..b1707101d49f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kcron/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kcron";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix b/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix
new file mode 100644
index 000000000000..7e82f80b8114
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-dev-scripts/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kde-dev-scripts";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix b/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix
new file mode 100644
index 000000000000..6efce8354eec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-dev-utils/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "kde-dev-utils";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix b/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix
new file mode 100644
index 000000000000..810fa3984093
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kde-inotify-survey/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kde-inotify-survey";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix b/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix
new file mode 100644
index 000000000000..47431c60aa2d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdebugsettings/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdebugsettings";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix b/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix
new file mode 100644
index 000000000000..fd8868cf41c2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdeconnect-kde/default.nix
@@ -0,0 +1,20 @@
+{
+  mkKdeDerivation,
+  qtconnectivity,
+  qtmultimedia,
+  qtwayland,
+  pkg-config,
+  wayland,
+  wayland-protocols,
+  libfakekey,
+}:
+mkKdeDerivation {
+  pname = "kdeconnect-kde";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtconnectivity qtmultimedia qtwayland wayland wayland-protocols libfakekey];
+
+  extraCmakeFlags = [
+    "-DQtWaylandScanner_EXECUTABLE=${qtwayland}/libexec/qtwaylandscanner"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix b/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix
new file mode 100644
index 000000000000..74bc3921389c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdeedu-data/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdeedu-data";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix b/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix
new file mode 100644
index 000000000000..7636cbe1dd27
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-mobipocket/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kdegraphics-mobipocket";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix
new file mode 100644
index 000000000000..bfb3ba1fc850
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  substituteAll,
+  ghostscript,
+}:
+mkKdeDerivation {
+  pname = "kdegraphics-thumbnailers";
+
+  patches = [
+    # Hardcode patches to Ghostscript so PDF thumbnails work OOTB.
+    # Intentionally not doing the same for dvips because TeX is big.
+    (substituteAll {
+      gs = "${ghostscript}/bin/gs";
+      src = ./gs-paths.patch;
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch
new file mode 100644
index 000000000000..5aa4a8d7444c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdegraphics-thumbnailers/gs-paths.patch
@@ -0,0 +1,22 @@
+diff --git a/ps/gscreator.cpp b/ps/gscreator.cpp
+index 5b84e49..cbb7c25 100644
+--- a/ps/gscreator.cpp
++++ b/ps/gscreator.cpp
+@@ -101,7 +101,7 @@ static const char *epsprolog =
+     "[ ] 0 setdash newpath false setoverprint false setstrokeadjust\n";
+ 
+ static const char * gsargs_ps[] = {
+-    "gs",
++    "@gs@",
+     "-sDEVICE=png16m",
+     "-sOutputFile=-",
+     "-dSAFER",
+@@ -120,7 +120,7 @@ static const char * gsargs_ps[] = {
+ };
+ 
+ static const char * gsargs_eps[] = {
+-    "gs",
++    "@gs@",
+     "-sDEVICE=png16m",
+     "-sOutputFile=-",
+     "-dSAFER",
diff --git a/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix
new file mode 100644
index 000000000000..a91dc2529503
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kdenetwork-filesharing";
+
+  patches = [./smbd-path.patch];
+
+  extraBuildInputs = [qtdeclarative];
+
+  # We can't actually install samba via PackageKit, so let's not confuse users any more than we have to
+  extraCmakeFlags = ["-DSAMBA_INSTALL=OFF"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch
new file mode 100644
index 000000000000..e6e4e73333a7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenetwork-filesharing/smbd-path.patch
@@ -0,0 +1,14 @@
+diff --git a/samba/filepropertiesplugin/sambausershareplugin.cpp b/samba/filepropertiesplugin/sambausershareplugin.cpp
+index d5c8d77..11c45d4 100644
+--- a/samba/filepropertiesplugin/sambausershareplugin.cpp
++++ b/samba/filepropertiesplugin/sambausershareplugin.cpp
+@@ -112,7 +112,8 @@ SambaUserSharePlugin::SambaUserSharePlugin(QObject *parent)
+ bool SambaUserSharePlugin::isSambaInstalled()
+ {
+     return QFile::exists(QStringLiteral("/usr/sbin/smbd"))
+-        || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"));
++        || QFile::exists(QStringLiteral("/usr/local/sbin/smbd"))
++        || QFile::exists(QStringLiteral("/run/current-system/sw/bin/smbd"));
+ }
+ 
+ void SambaUserSharePlugin::showSambaStatus()
diff --git a/nixpkgs/pkgs/kde/gear/kdenlive/default.nix b/nixpkgs/pkgs/kde/gear/kdenlive/default.nix
new file mode 100644
index 000000000000..49643826b9e2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenlive/default.nix
@@ -0,0 +1,40 @@
+{
+  mkKdeDerivation,
+  substituteAll,
+  qtsvg,
+  qtmultimedia,
+  qtnetworkauth,
+  ffmpeg-full,
+  mediainfo,
+  mlt,
+  shared-mime-info,
+  libv4l,
+  frei0r,
+}:
+mkKdeDerivation {
+  pname = "kdenlive";
+
+  patches = [
+    (
+      substituteAll {
+        src = ./dependency-paths.patch;
+        inherit mediainfo mlt;
+        ffmpeg = ffmpeg-full;
+      }
+    )
+  ];
+
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qtnetworkauth
+
+    mlt
+    shared-mime-info
+    libv4l
+  ];
+
+  qtWrapperArgs = [
+    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch b/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch
new file mode 100644
index 000000000000..7fd04bd5114d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdenlive/dependency-paths.patch
@@ -0,0 +1,46 @@
+diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
+index 029849e5f..8befe4888 100644
+--- a/src/kdenlivesettings.kcfg
++++ b/src/kdenlivesettings.kcfg
+@@ -517,7 +517,7 @@
+   <group name="env">
+     <entry name="mltpath" type="Path">
+       <label>Mlt framework install path.</label>
+-      <default></default>
++      <default>@mlt@/share/mlt-7/profiles</default>
+     </entry>
+ 
+     <entry name="kdenliverendererpath" type="Path">
+@@ -527,27 +527,27 @@
+ 
+     <entry name="meltpath" type="Path">
+       <label>Mlt melt renderer install path.</label>
+-      <default></default>
++      <default>@mlt@/bin/melt</default>
+     </entry>
+ 
+     <entry name="ffmpegpath" type="Path">
+       <label>FFmpeg / Libav binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffmpeg</default>
+     </entry>
+ 
+     <entry name="ffplaypath" type="Path">
+       <label>FFplay / avplay binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffplay</default>
+     </entry>
+ 
+     <entry name="ffprobepath" type="Path">
+       <label>FFprobe / avprobe binary path.</label>
+-      <default></default>
++      <default>@ffmpeg@/bin/ffprobe</default>
+     </entry>
+ 
+     <entry name="mediainfopath" type="Path">
+       <label>mediaInfo binary path.</label>
+-      <default></default>
++      <default>@mediainfo@/bin/mediainfo</default>
+     </entry>
+ 
+     <entry name="processingthreads" type="Int">
diff --git a/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix b/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix
new file mode 100644
index 000000000000..66c24a91bdee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdepim-addons/default.nix
@@ -0,0 +1,35 @@
+{
+  mkKdeDerivation,
+  sources,
+  rustPlatform,
+  cargo,
+  rustc,
+  corrosion,
+  discount,
+  alpaka,
+  # provided as callPackage input to enable easier overrides through overlays
+  cargoHash ? "sha256-z2W2TxyN6Ye+KUaqz5nPAG5zxeABu/UXWuz+XpDpNfc=",
+}:
+mkKdeDerivation rec {
+  pname = "kdepim-addons";
+
+  inherit (sources.${pname}) version;
+
+  cargoRoot = "plugins/webengineurlinterceptor/adblock";
+
+  cargoDeps = rustPlatform.fetchCargoTarball {
+    # include version in the name so we invalidate the FOD
+    name = "${pname}-${version}";
+    src = sources.${pname};
+    sourceRoot = "${pname}-${version}/${cargoRoot}";
+    hash = cargoHash;
+  };
+
+  extraNativeBuildInputs = [
+    rustPlatform.cargoSetupHook
+    cargo
+    rustc
+  ];
+
+  extraBuildInputs = [corrosion discount alpaka];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix b/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix
new file mode 100644
index 000000000000..75c0d927ce80
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdepim-runtime/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+  qtnetworkauth,
+  qtspeech,
+  qtwebengine,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "kdepim-runtime";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  # FIXME: libkolabxml, libetebase
+  extraBuildInputs = [qtnetworkauth qtspeech qtwebengine cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix b/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix
new file mode 100644
index 000000000000..24715d90f6c9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdesdk-kio/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdesdk-kio";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix b/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix
new file mode 100644
index 000000000000..727fff83b3d2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdesdk-thumbnailers/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdesdk-thumbnailers";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdev-php/default.nix b/nixpkgs/pkgs/kde/gear/kdev-php/default.nix
new file mode 100644
index 000000000000..79e34ab94b46
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdev-php/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdev-php";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdev-python/default.nix b/nixpkgs/pkgs/kde/gear/kdev-python/default.nix
new file mode 100644
index 000000000000..91a52fc7226c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdev-python/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdev-python";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdevelop/default.nix b/nixpkgs/pkgs/kde/gear/kdevelop/default.nix
new file mode 100644
index 000000000000..c38d6f93681b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdevelop/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+}:
+mkKdeDerivation {
+  pname = "kdevelop";
+
+  extraBuildInputs = [extra-cmake-modules];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdf/default.nix b/nixpkgs/pkgs/kde/gear/kdf/default.nix
new file mode 100644
index 000000000000..8021e701cbaa
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdialog/default.nix b/nixpkgs/pkgs/kde/gear/kdialog/default.nix
new file mode 100644
index 000000000000..2ef126650578
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdialog/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdialog";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kdiamond/default.nix b/nixpkgs/pkgs/kde/gear/kdiamond/default.nix
new file mode 100644
index 000000000000..a45a3c6f1093
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kdiamond/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kdiamond";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix b/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix
new file mode 100644
index 000000000000..8eec9c76ec75
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/keditbookmarks/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "keditbookmarks";
+}
diff --git a/nixpkgs/pkgs/kde/gear/keysmith/default.nix b/nixpkgs/pkgs/kde/gear/keysmith/default.nix
new file mode 100644
index 000000000000..a468409ff182
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/keysmith/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  pkg-config,
+  libsodium,
+}:
+mkKdeDerivation {
+  pname = "keysmith";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtsvg libsodium];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kfind/default.nix b/nixpkgs/pkgs/kde/gear/kfind/default.nix
new file mode 100644
index 000000000000..c0216e301575
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kfind/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kfind";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kfourinline/default.nix b/nixpkgs/pkgs/kde/gear/kfourinline/default.nix
new file mode 100644
index 000000000000..5e1d6fba0ef0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kfourinline/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kfourinline";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgeography/default.nix b/nixpkgs/pkgs/kde/gear/kgeography/default.nix
new file mode 100644
index 000000000000..aa9f878bbb9b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgeography/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kgeography";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kget/default.nix b/nixpkgs/pkgs/kde/gear/kget/default.nix
new file mode 100644
index 000000000000..d6a4fadfd5d6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kget/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qgpgme,
+  libmms,
+}:
+mkKdeDerivation {
+  pname = "kget";
+
+  extraBuildInputs = [qgpgme libmms];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix b/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix
new file mode 100644
index 000000000000..8d303e07cac7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgoldrunner/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "kgoldrunner";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kgpg/default.nix b/nixpkgs/pkgs/kde/gear/kgpg/default.nix
new file mode 100644
index 000000000000..65f9a55221b5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kgpg/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  gpgme,
+}:
+mkKdeDerivation {
+  pname = "kgpg";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [gpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khangman/default.nix b/nixpkgs/pkgs/kde/gear/khangman/default.nix
new file mode 100644
index 000000000000..27da76e397e3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khangman/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "khangman";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix b/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix
new file mode 100644
index 000000000000..6d5461bffc3c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khealthcertificate/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "khealthcertificate";
+
+  extraNativeBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix b/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix
new file mode 100644
index 000000000000..d60e16e3c163
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/khelpcenter/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  xapian,
+}:
+mkKdeDerivation {
+  pname = "khelpcenter";
+
+  extraBuildInputs = [qtwebengine xapian];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix b/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix
new file mode 100644
index 000000000000..c66c416fd7ce
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kidentitymanagement/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "kidentitymanagement";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kig/default.nix b/nixpkgs/pkgs/kde/gear/kig/default.nix
new file mode 100644
index 000000000000..a3e4de99e6a8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kig/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kig";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kigo/default.nix b/nixpkgs/pkgs/kde/gear/kigo/default.nix
new file mode 100644
index 000000000000..819fb69b0c0f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kigo/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kigo";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/killbots/default.nix b/nixpkgs/pkgs/kde/gear/killbots/default.nix
new file mode 100644
index 000000000000..03dcdb0d31fe
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/killbots/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "killbots";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix b/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix
new file mode 100644
index 000000000000..fa19f24cd34b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kimagemapeditor/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "kimagemapeditor";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kimap/default.nix b/nixpkgs/pkgs/kde/gear/kimap/default.nix
new file mode 100644
index 000000000000..d106166ec4a6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kimap/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "kimap";
+
+  extraBuildInputs = [cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-admin/default.nix b/nixpkgs/pkgs/kde/gear/kio-admin/default.nix
new file mode 100644
index 000000000000..042253978983
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-admin/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-admin";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix b/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix
new file mode 100644
index 000000000000..d92f7a61b8a2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-extras-kf5/default.nix
@@ -0,0 +1,62 @@
+{
+  stdenv,
+  sources,
+  kio-extras,
+  cmake,
+  libsForQt5,
+  samba,
+  libssh,
+  libmtp,
+  libimobiledevice,
+  gperf,
+  libtirpc,
+  openexr,
+  taglib,
+  libappimage,
+}:
+stdenv.mkDerivation rec {
+  pname = "kio-extras-kf5";
+  inherit (sources.${pname}) version;
+
+  src = sources.${pname};
+
+  nativeBuildInputs = with libsForQt5; [
+    cmake
+    extra-cmake-modules
+    wrapQtAppsHook
+  ];
+
+  buildInputs = with libsForQt5; [
+    qtbase
+
+    kactivities
+    kactivities-stats
+    karchive
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kdbusaddons
+    kdnssd
+    kdoctools
+    kdsoap
+    kguiaddons
+    ki18n
+    kio
+    libkexiv2
+    phonon
+    solid
+    syntax-highlighting
+
+    samba
+    libssh
+    libmtp
+    libimobiledevice
+    gperf
+    libtirpc
+    openexr
+    taglib
+    libappimage
+  ];
+
+  meta = kio-extras.meta;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-extras/default.nix b/nixpkgs/pkgs/kde/gear/kio-extras/default.nix
new file mode 100644
index 000000000000..b80f9175a5e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-extras/default.nix
@@ -0,0 +1,45 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtsvg,
+  pkg-config,
+  libkexiv2,
+  samba,
+  libssh,
+  libmtp,
+  libimobiledevice,
+  gperf,
+  libtirpc,
+  openexr,
+  taglib,
+  shared-mime-info,
+  libappimage,
+  xorg,
+  kio,
+}:
+mkKdeDerivation {
+  pname = "kio-extras";
+
+  extraNativeBuildInputs = [pkg-config shared-mime-info];
+  extraBuildInputs = [
+    qt5compat
+    qtsvg
+    libkexiv2
+
+    samba
+    libssh
+    libmtp
+    libimobiledevice
+    gperf
+    libtirpc
+    openexr
+    taglib
+    libappimage
+    xorg.libXcursor
+  ];
+
+  postInstall = ''
+    substituteInPlace $out/share/dbus-1/services/org.kde.kmtpd5.service \
+      --replace-fail Exec=$out/libexec/kf6/kiod6 Exec=${kio}/libexec/kf6/kiod6
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix b/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix
new file mode 100644
index 000000000000..1c28dd3dcd10
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-gdrive/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-gdrive";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix b/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix
new file mode 100644
index 000000000000..0b731162af83
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kio-zeroconf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kio-zeroconf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix b/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix
new file mode 100644
index 000000000000..a0a074b86a97
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kipi-plugins/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kipi-plugins";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix b/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix
new file mode 100644
index 000000000000..e3ff036ad5e8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kirigami-gallery/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kirigami-gallery";
+
+  extraBuildInputs = [qtsvg];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kiriki/default.nix b/nixpkgs/pkgs/kde/gear/kiriki/default.nix
new file mode 100644
index 000000000000..a8344ef973cb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kiriki/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kiriki";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kiten/default.nix b/nixpkgs/pkgs/kde/gear/kiten/default.nix
new file mode 100644
index 000000000000..5f87c6c66b39
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kiten/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kiten";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kitinerary/default.nix b/nixpkgs/pkgs/kde/gear/kitinerary/default.nix
new file mode 100644
index 000000000000..de3f4ef00005
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kitinerary/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtdeclarative,
+  shared-mime-info,
+  poppler,
+  libphonenumber,
+  protobuf,
+}:
+mkKdeDerivation {
+  pname = "kitinerary";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [
+    qtsvg
+    qtdeclarative
+    poppler
+    libphonenumber
+    protobuf
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kjournald/default.nix b/nixpkgs/pkgs/kde/gear/kjournald/default.nix
new file mode 100644
index 000000000000..d03e8b815ae4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kjournald/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  pkg-config,
+  systemd,
+}:
+mkKdeDerivation {
+  pname = "kjournald";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtdeclarative systemd];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix b/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix
new file mode 100644
index 000000000000..c13ece29da89
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kjumpingcube/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kjumpingcube";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kldap/default.nix b/nixpkgs/pkgs/kde/gear/kldap/default.nix
new file mode 100644
index 000000000000..99c17b169147
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kldap/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  cyrus_sasl,
+  openldap,
+}:
+mkKdeDerivation {
+  pname = "kldap";
+
+  extraBuildInputs = [cyrus_sasl openldap];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kleopatra/default.nix b/nixpkgs/pkgs/kde/gear/kleopatra/default.nix
new file mode 100644
index 000000000000..58d3f4b5a9cf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kleopatra/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+  akonadi-mime,
+}:
+mkKdeDerivation {
+  pname = "kleopatra";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [akonadi-mime];
+}
diff --git a/nixpkgs/pkgs/kde/gear/klettres/default.nix b/nixpkgs/pkgs/kde/gear/klettres/default.nix
new file mode 100644
index 000000000000..ecf58d98fc37
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klettres/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "klettres";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/klickety/default.nix b/nixpkgs/pkgs/kde/gear/klickety/default.nix
new file mode 100644
index 000000000000..0df68937124b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klickety/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "klickety";
+}
diff --git a/nixpkgs/pkgs/kde/gear/klines/default.nix b/nixpkgs/pkgs/kde/gear/klines/default.nix
new file mode 100644
index 000000000000..5399962382b0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/klines/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "klines";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmag/default.nix b/nixpkgs/pkgs/kde/gear/kmag/default.nix
new file mode 100644
index 000000000000..24e6643b3b59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmag/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmag";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix b/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix
new file mode 100644
index 000000000000..9ad776f3c6f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmahjongg/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+  libkmahjongg,
+}:
+mkKdeDerivation {
+  pname = "kmahjongg";
+
+  extraBuildInputs = [qtdeclarative qtsvg];
+
+  qtWrapperArgs = ["--prefix XDG_DATA_DIRS : ${libkmahjongg}/share"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix b/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix
new file mode 100644
index 000000000000..d030eabcce01
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmail-account-wizard/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmail-account-wizard";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmail/default.nix b/nixpkgs/pkgs/kde/gear/kmail/default.nix
new file mode 100644
index 000000000000..f3f659fbaf5f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmail/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmail";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix b/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix
new file mode 100644
index 000000000000..cf1bf8c1b223
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmailtransport/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmailtransport";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmbox/default.nix b/nixpkgs/pkgs/kde/gear/kmbox/default.nix
new file mode 100644
index 000000000000..ef840d3eda4d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmbox/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmbox";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmime/default.nix b/nixpkgs/pkgs/kde/gear/kmime/default.nix
new file mode 100644
index 000000000000..52e2b97da392
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmime/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmime";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmines/default.nix b/nixpkgs/pkgs/kde/gear/kmines/default.nix
new file mode 100644
index 000000000000..32a8c179f0ec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmines/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmines";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmix/default.nix b/nixpkgs/pkgs/kde/gear/kmix/default.nix
new file mode 100644
index 000000000000..b83392baa7df
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmix/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmix";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmousetool/default.nix b/nixpkgs/pkgs/kde/gear/kmousetool/default.nix
new file mode 100644
index 000000000000..8ba8615cbbe6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmousetool/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "kmousetool";
+
+  extraBuildInputs = [qtmultimedia xorg.libXt];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmouth/default.nix b/nixpkgs/pkgs/kde/gear/kmouth/default.nix
new file mode 100644
index 000000000000..75d044b1c686
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmouth/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtspeech,
+}:
+mkKdeDerivation {
+  pname = "kmouth";
+
+  extraBuildInputs = [qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kmplot/default.nix b/nixpkgs/pkgs/kde/gear/kmplot/default.nix
new file mode 100644
index 000000000000..55f4a21d0e6a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kmplot/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kmplot";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix b/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix
new file mode 100644
index 000000000000..6a98a2826d1f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knavalbattle/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "knavalbattle";
+}
diff --git a/nixpkgs/pkgs/kde/gear/knetwalk/default.nix b/nixpkgs/pkgs/kde/gear/knetwalk/default.nix
new file mode 100644
index 000000000000..c77a714e5949
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knetwalk/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "knetwalk";
+
+  extraNativeBuildInputs = [_7zz];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knights/default.nix b/nixpkgs/pkgs/kde/gear/knights/default.nix
new file mode 100644
index 000000000000..1fa6519fe16e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knights/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtspeech,
+  _7zz,
+}:
+mkKdeDerivation {
+  pname = "knights";
+
+  extraNativeBuildInputs = [_7zz];
+  extraBuildInputs = [qtsvg qtspeech];
+}
diff --git a/nixpkgs/pkgs/kde/gear/knotes/default.nix b/nixpkgs/pkgs/kde/gear/knotes/default.nix
new file mode 100644
index 000000000000..bca10fcf13da
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/knotes/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "knotes";
+}
diff --git a/nixpkgs/pkgs/kde/gear/koko/default.nix b/nixpkgs/pkgs/kde/gear/koko/default.nix
new file mode 100644
index 000000000000..c2b42bc693e7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/koko/default.nix
@@ -0,0 +1,46 @@
+{
+  fetchurl,
+  mkKdeDerivation,
+  pkg-config,
+  qtmultimedia,
+  qtpositioning,
+  qtsvg,
+  exiv2,
+  kirigami-addons,
+  kquickimageeditor,
+}: let
+  # URLs snapshotted through
+  # https://web.archive.org/save/$url
+  # Update when stale enough I guess?
+  admin1 = fetchurl {
+    url = "https://web.archive.org/web/20210714035424if_/http://download.geonames.org/export/dump/admin1CodesASCII.txt";
+    sha256 = "0r783yzajs26hvccdy4jv2v06xfgadx2g90fz3yn7lx8flz4nhwm";
+  };
+  admin2 = fetchurl {
+    url = "https://web.archive.org/web/20210714035427if_/http://download.geonames.org/export/dump/admin2Codes.txt";
+    sha256 = "1n5nzp3xblhr93rb1sadi5vfbw29slv5lc6cxq21h3x3cg0mwqh3";
+  };
+  cities1000 = fetchurl {
+    url = "https://web.archive.org/web/20210714035406if_/http://download.geonames.org/export/dump/cities1000.zip";
+    sha256 = "0cwbfff8gzci5zrahh6d53b9b3bfv1cbwlv0k6076531i1c7md9p";
+  };
+in
+  mkKdeDerivation {
+    pname = "koko";
+
+    prePatch = ''
+      ln -s ${admin1}     src/admin1CodesASCII.txt
+      ln -s ${admin2}     src/admin2Codes.txt
+      ln -s ${cities1000} src/cities1000.zip
+    '';
+
+    extraNativeBuildInputs = [pkg-config];
+    extraBuildInputs = [
+      qtmultimedia
+      qtpositioning
+      qtsvg
+      exiv2
+      kirigami-addons
+      kquickimageeditor
+    ];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/kolf/default.nix b/nixpkgs/pkgs/kde/gear/kolf/default.nix
new file mode 100644
index 000000000000..94e170ae6d33
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kolf/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kolf";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kollision/default.nix b/nixpkgs/pkgs/kde/gear/kollision/default.nix
new file mode 100644
index 000000000000..325510cdf2ee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kollision/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kollision";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix b/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix
new file mode 100644
index 000000000000..d5dbacca3843
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kolourpaint/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kolourpaint";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kompare/default.nix b/nixpkgs/pkgs/kde/gear/kompare/default.nix
new file mode 100644
index 000000000000..93580fc90dbf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kompare/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kompare";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kongress/default.nix b/nixpkgs/pkgs/kde/gear/kongress/default.nix
new file mode 100644
index 000000000000..8ac8807eb68e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kongress/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kongress";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konqueror/default.nix b/nixpkgs/pkgs/kde/gear/konqueror/default.nix
new file mode 100644
index 000000000000..09093db5f358
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konqueror/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  hunspell,
+}:
+mkKdeDerivation {
+  pname = "konqueror";
+
+  extraBuildInputs = [qtwebengine hunspell];
+
+  extraCmakeFlags = [
+    "-DWebEngineDictConverter_EXECUTABLE=${qtwebengine}/libexec/qwebengine_convert_dict"
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konquest/default.nix b/nixpkgs/pkgs/kde/gear/konquest/default.nix
new file mode 100644
index 000000000000..54bd2f6048dd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konquest/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtscxml,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "konquest";
+
+  extraBuildInputs = [qtscxml qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konsole/default.nix b/nixpkgs/pkgs/kde/gear/konsole/default.nix
new file mode 100644
index 000000000000..8cd29b8a4f91
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konsole/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "konsole";
+
+  extraBuildInputs = [qt5compat qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontact/default.nix b/nixpkgs/pkgs/kde/gear/kontact/default.nix
new file mode 100644
index 000000000000..fe258eea446b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontact/default.nix
@@ -0,0 +1,23 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  akregator,
+  kaddressbook,
+  kmail,
+  knotes,
+  korganizer,
+  zanshin,
+}:
+mkKdeDerivation {
+  pname = "kontact";
+
+  extraBuildInputs = [
+    qtwebengine
+    akregator
+    kaddressbook
+    kmail
+    knotes
+    korganizer
+    zanshin
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix b/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix
new file mode 100644
index 000000000000..4c7d6acab1ca
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontactinterface/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kontactinterface";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kontrast/default.nix b/nixpkgs/pkgs/kde/gear/kontrast/default.nix
new file mode 100644
index 000000000000..60bf03534ba1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kontrast/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qcoro,
+}:
+mkKdeDerivation {
+  pname = "kontrast";
+
+  extraBuildInputs = [qtsvg qcoro];
+}
diff --git a/nixpkgs/pkgs/kde/gear/konversation/default.nix b/nixpkgs/pkgs/kde/gear/konversation/default.nix
new file mode 100644
index 000000000000..d7d5d3c2fb89
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/konversation/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtmultimedia,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "konversation";
+
+  extraBuildInputs = [qtmultimedia qt5compat qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix b/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix
new file mode 100644
index 000000000000..b315d765fb39
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kopeninghours/default.nix
@@ -0,0 +1,20 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  bison,
+  flex,
+  boost,
+  python3,
+}:
+mkKdeDerivation {
+  pname = "kopeninghours";
+
+  extraNativeBuildInputs = [bison flex];
+  extraBuildInputs = [
+    qtdeclarative
+    (boost.override {
+      enablePython = true;
+      python = python3;
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/korganizer/default.nix b/nixpkgs/pkgs/kde/gear/korganizer/default.nix
new file mode 100644
index 000000000000..dfea744563e3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/korganizer/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "korganizer";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix b/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix
new file mode 100644
index 000000000000..11b5c5cef398
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kosmindoormap/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  bison,
+  flex,
+}:
+mkKdeDerivation {
+  pname = "kosmindoormap";
+
+  extraNativeBuildInputs = [bison flex];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpat/default.nix b/nixpkgs/pkgs/kde/gear/kpat/default.nix
new file mode 100644
index 000000000000..23b99dddb9f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpat/default.nix
@@ -0,0 +1,21 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  _7zz,
+  shared-mime-info,
+  black-hole-solver,
+  freecell-solver,
+  libkdegames,
+}:
+mkKdeDerivation {
+  pname = "kpat";
+
+  extraNativeBuildInputs = [_7zz shared-mime-info];
+  extraBuildInputs = [
+    qtsvg
+    black-hole-solver
+    freecell-solver
+  ];
+
+  qtWrapperArgs = ["--prefix XDG_DATA_DIRS : ${libkdegames}/share"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix b/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix
new file mode 100644
index 000000000000..0c33280cc059
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpimtextedit/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "kpimtextedit";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpkpass/default.nix b/nixpkgs/pkgs/kde/gear/kpkpass/default.nix
new file mode 100644
index 000000000000..a2f116f67d77
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpkpass/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "kpkpass";
+
+  extraNativeBuildInputs = [shared-mime-info];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kpmcore/default.nix b/nixpkgs/pkgs/kde/gear/kpmcore/default.nix
new file mode 100644
index 000000000000..9dfa4f3d6813
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpmcore/default.nix
@@ -0,0 +1,74 @@
+{
+  lib,
+  mkKdeDerivation,
+  writeText,
+  pkg-config,
+  cryptsetup,
+  lvm2,
+  mdadm,
+  smartmontools,
+  systemdMinimal,
+  util-linux,
+  btrfs-progs,
+  dosfstools,
+  e2fsprogs,
+  exfatprogs,
+  f2fs-tools,
+  fatresize,
+  hfsprogs,
+  jfsutils,
+  nilfs-utils,
+  ntfs3g,
+  reiser4progs,
+  reiserfsprogs,
+  udftools,
+  xfsprogs,
+  zfs,
+}: let
+  # https://github.com/KDE/kpmcore/blob/06f15334ecfbe871730a90dbe2b694ba060ee998/src/util/externalcommand_whitelist.h
+  runtimeDeps = [
+    cryptsetup
+    lvm2
+    mdadm
+    smartmontools
+    systemdMinimal
+    util-linux
+
+    btrfs-progs
+    dosfstools
+    e2fsprogs
+    exfatprogs
+    f2fs-tools
+    fatresize
+    hfsprogs
+    jfsutils
+    nilfs-utils
+    ntfs3g
+    reiser4progs
+    reiserfsprogs
+    udftools
+    xfsprogs
+    zfs
+
+    # FIXME: Missing command: hfsck hformat fsck.nilfs2 {fsck,mkfs,debugfs,tunefs}.ocfs2
+    # FIXME: audit to see if these are all still required
+  ];
+
+  trustedprefixes = writeText "kpmcore-trustedprefixes" (lib.concatStringsSep "\n" (map lib.getBin runtimeDeps));
+in
+  mkKdeDerivation {
+    pname = "kpmcore";
+
+    postPatch = ''
+      cp ${trustedprefixes} src/util/trustedprefixes
+    '';
+
+    preConfigure = ''
+      substituteInPlace src/util/CMakeLists.txt \
+        --replace \$\{POLKITQT-1_POLICY_FILES_INSTALL_DIR\} $out/share/polkit-1/actions
+      substituteInPlace src/backend/corebackend.cpp \
+        --replace /usr/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy $out/share/polkit-1/actions/org.kde.kpmcore.externalcommand.policy
+    '';
+
+    extraNativeBuildInputs = [pkg-config];
+  }
diff --git a/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix b/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix
new file mode 100644
index 000000000000..bc1a663b7762
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kpublictransport/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  pkg-config,
+}:
+mkKdeDerivation {
+  pname = "kpublictransport";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix b/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix
new file mode 100644
index 000000000000..682cd0531b7b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kqtquickcharts/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kqtquickcharts";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/krdc/default.nix b/nixpkgs/pkgs/kde/gear/krdc/default.nix
new file mode 100644
index 000000000000..75806e233b63
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krdc/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  libssh,
+  libvncserver,
+  freerdp,
+}:
+mkKdeDerivation {
+  pname = "krdc";
+
+  extraBuildInputs = [libssh libvncserver freerdp];
+}
diff --git a/nixpkgs/pkgs/kde/gear/krecorder/default.nix b/nixpkgs/pkgs/kde/gear/krecorder/default.nix
new file mode 100644
index 000000000000..d6553f4d1fcb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krecorder/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "krecorder";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kreversi/default.nix b/nixpkgs/pkgs/kde/gear/kreversi/default.nix
new file mode 100644
index 000000000000..8ad4233e1f1a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kreversi/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kreversi";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/krfb/default.nix b/nixpkgs/pkgs/kde/gear/krfb/default.nix
new file mode 100644
index 000000000000..03789537f63e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/krfb/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  libvncserver,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "krfb";
+
+  extraCmakeFlags = [
+    "-DQtWaylandScanner_EXECUTABLE=${qtwayland}/libexec/qtwaylandscanner"
+  ];
+
+  extraBuildInputs = [qtwayland libvncserver xorg.libXdamage];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix b/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix
new file mode 100644
index 000000000000..4040fa401ef9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kross-interpreters/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+}:
+mkKdeDerivation {
+  pname = "kross-interpreters";
+
+  extraBuildInputs = [extra-cmake-modules];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kruler/default.nix b/nixpkgs/pkgs/kde/gear/kruler/default.nix
new file mode 100644
index 000000000000..311dcc3bd840
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kruler/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kruler";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksanecore/default.nix b/nixpkgs/pkgs/kde/gear/ksanecore/default.nix
new file mode 100644
index 000000000000..7f7e63fb2caf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksanecore/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  sane-backends,
+}:
+mkKdeDerivation {
+  pname = "ksanecore";
+
+  extraBuildInputs = [sane-backends];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kshisen/default.nix b/nixpkgs/pkgs/kde/gear/kshisen/default.nix
new file mode 100644
index 000000000000..efa2b024d716
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kshisen/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kshisen";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksirk/default.nix b/nixpkgs/pkgs/kde/gear/ksirk/default.nix
new file mode 100644
index 000000000000..5c4196a7aff0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksirk/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "ksirk";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksmtp/default.nix b/nixpkgs/pkgs/kde/gear/ksmtp/default.nix
new file mode 100644
index 000000000000..c098ddd49c81
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksmtp/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "ksmtp";
+
+  extraBuildInputs = [qt5compat cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix b/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix
new file mode 100644
index 000000000000..b741df477f33
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksnakeduel/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "ksnakeduel";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix b/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix
new file mode 100644
index 000000000000..1f4272b5cac9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kspaceduel/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kspaceduel";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksquares/default.nix b/nixpkgs/pkgs/kde/gear/ksquares/default.nix
new file mode 100644
index 000000000000..683a64a5bf59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksquares/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ksquares";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksudoku/default.nix b/nixpkgs/pkgs/kde/gear/ksudoku/default.nix
new file mode 100644
index 000000000000..6f293bd26e1e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksudoku/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "ksudoku";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix b/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix
new file mode 100644
index 000000000000..604a52cc560b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ksystemlog/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qt5compat,
+  audit,
+}:
+mkKdeDerivation {
+  pname = "ksystemlog";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qt5compat audit];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kteatime/default.nix b/nixpkgs/pkgs/kde/gear/kteatime/default.nix
new file mode 100644
index 000000000000..81d20ec270be
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kteatime/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kteatime";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktimer/default.nix b/nixpkgs/pkgs/kde/gear/ktimer/default.nix
new file mode 100644
index 000000000000..898b4a802e13
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktimer/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "ktimer";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktnef/default.nix b/nixpkgs/pkgs/kde/gear/ktnef/default.nix
new file mode 100644
index 000000000000..7fcd568ade72
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktnef/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktnef";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktorrent/default.nix b/nixpkgs/pkgs/kde/gear/ktorrent/default.nix
new file mode 100644
index 000000000000..92e0646e696a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktorrent/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  taglib,
+  libmaxminddb,
+}:
+mkKdeDerivation {
+  pname = "ktorrent";
+
+  extraBuildInputs = [qtwebengine taglib libmaxminddb];
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktouch/default.nix b/nixpkgs/pkgs/kde/gear/ktouch/default.nix
new file mode 100644
index 000000000000..7f744a9f79d5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktouch/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktouch";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktrip/default.nix b/nixpkgs/pkgs/kde/gear/ktrip/default.nix
new file mode 100644
index 000000000000..87351e5e5490
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktrip/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ktrip";
+}
diff --git a/nixpkgs/pkgs/kde/gear/ktuberling/default.nix b/nixpkgs/pkgs/kde/gear/ktuberling/default.nix
new file mode 100644
index 000000000000..5602ac870479
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/ktuberling/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "ktuberling";
+
+  extraBuildInputs = [qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kturtle/default.nix b/nixpkgs/pkgs/kde/gear/kturtle/default.nix
new file mode 100644
index 000000000000..f55f7e92a03a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kturtle/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kturtle";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kubrick/default.nix b/nixpkgs/pkgs/kde/gear/kubrick/default.nix
new file mode 100644
index 000000000000..c8bedf44c2de
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kubrick/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  libGLU,
+}:
+mkKdeDerivation {
+  pname = "kubrick";
+
+  extraBuildInputs = [qtsvg libGLU];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix b/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix
new file mode 100644
index 000000000000..72ebd76ffa3a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwalletmanager/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwalletmanager";
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwave/default.nix b/nixpkgs/pkgs/kde/gear/kwave/default.nix
new file mode 100644
index 000000000000..1c0f82ac7b3d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwave/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwave";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/kweather/default.nix b/nixpkgs/pkgs/kde/gear/kweather/default.nix
new file mode 100644
index 000000000000..51d17a0a1e59
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kweather/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtcharts,
+  qqc2-desktop-style,
+  kholidays,
+}:
+mkKdeDerivation {
+  pname = "kweather";
+
+  extraBuildInputs = [qtsvg qtcharts qqc2-desktop-style kholidays];
+}
diff --git a/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix b/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix
new file mode 100644
index 000000000000..82989919f6e0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/kwordquiz/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  qqc2-desktop-style,
+}:
+mkKdeDerivation {
+  pname = "kwordquiz";
+
+  extraBuildInputs = [
+    qtsvg
+    qtmultimedia
+    qqc2-desktop-style
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libgravatar/default.nix b/nixpkgs/pkgs/kde/gear/libgravatar/default.nix
new file mode 100644
index 000000000000..ddbdfa6dc6c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libgravatar/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libgravatar";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkcddb/default.nix b/nixpkgs/pkgs/kde/gear/libkcddb/default.nix
new file mode 100644
index 000000000000..8325f19cedff
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkcddb/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  libmusicbrainz5,
+}:
+mkKdeDerivation {
+  pname = "libkcddb";
+
+  extraBuildInputs = [libmusicbrainz5];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix b/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix
new file mode 100644
index 000000000000..66615d3791d6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkcompactdisc/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  alsa-lib,
+}:
+mkKdeDerivation {
+  pname = "libkcompactdisc";
+
+  extraBuildInputs = [alsa-lib];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix b/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix
new file mode 100644
index 000000000000..df6717b22ded
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdcraw/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libraw,
+}:
+mkKdeDerivation {
+  pname = "libkdcraw";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libraw];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdegames/default.nix b/nixpkgs/pkgs/kde/gear/libkdegames/default.nix
new file mode 100644
index 000000000000..95a0265f0836
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdegames/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  svgcleaner,
+  qtdeclarative,
+  qtsvg,
+  openal,
+  libsndfile,
+}:
+mkKdeDerivation {
+  pname = "libkdegames";
+
+  extraNativeBuildInputs = [_7zz svgcleaner];
+  extraBuildInputs = [openal libsndfile qtdeclarative qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkdepim/default.nix b/nixpkgs/pkgs/kde/gear/libkdepim/default.nix
new file mode 100644
index 000000000000..d682c45225eb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkdepim/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "libkdepim";
+
+  extraNativeBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix b/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix
new file mode 100644
index 000000000000..f67c4e0ba497
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkeduvocdocument/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libkeduvocdocument";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix b/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix
new file mode 100644
index 000000000000..fa5cb7851ea2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkexiv2/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  pkg-config,
+  exiv2,
+}:
+mkKdeDerivation {
+  pname = "libkexiv2";
+
+  extraBuildInputs = [qt5compat exiv2];
+  extraNativeBuildInputs = [pkg-config];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkgapi/default.nix b/nixpkgs/pkgs/kde/gear/libkgapi/default.nix
new file mode 100644
index 000000000000..87d3beb23c50
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkgapi/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qttools,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "libkgapi";
+
+  extraBuildInputs = [qttools cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkipi/default.nix b/nixpkgs/pkgs/kde/gear/libkipi/default.nix
new file mode 100644
index 000000000000..965cf158a3dc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkipi/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libkipi";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkleo/default.nix b/nixpkgs/pkgs/kde/gear/libkleo/default.nix
new file mode 100644
index 000000000000..47cd88fee577
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkleo/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  boost,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "libkleo";
+
+  extraBuildInputs = [qt5compat boost];
+  extraPropagatedBuildInputs = [qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix b/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix
new file mode 100644
index 000000000000..f411605318a2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkmahjongg/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  _7zz,
+  svgcleaner,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "libkmahjongg";
+
+  extraNativeBuildInputs = [_7zz svgcleaner];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix b/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix
new file mode 100644
index 000000000000..43cccc19603f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libkomparediff2/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "libkomparediff2";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libksane/default.nix b/nixpkgs/pkgs/kde/gear/libksane/default.nix
new file mode 100644
index 000000000000..319d47b8b2d9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libksane/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "libksane";
+}
diff --git a/nixpkgs/pkgs/kde/gear/libksieve/default.nix b/nixpkgs/pkgs/kde/gear/libksieve/default.nix
new file mode 100644
index 000000000000..cec2f027b73d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libksieve/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  cyrus_sasl,
+}:
+mkKdeDerivation {
+  pname = "libksieve";
+
+  extraBuildInputs = [qtwebengine cyrus_sasl];
+}
diff --git a/nixpkgs/pkgs/kde/gear/libktorrent/default.nix b/nixpkgs/pkgs/kde/gear/libktorrent/default.nix
new file mode 100644
index 000000000000..263cbb3cadb3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/libktorrent/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  doxygen,
+  qt5compat,
+  boost,
+  gmp,
+  libgcrypt,
+}:
+mkKdeDerivation {
+  pname = "libktorrent";
+
+  extraNativeBuildInputs = [doxygen];
+  extraBuildInputs = [qt5compat];
+  extraPropagatedBuildInputs = [boost gmp libgcrypt];
+}
diff --git a/nixpkgs/pkgs/kde/gear/lokalize/default.nix b/nixpkgs/pkgs/kde/gear/lokalize/default.nix
new file mode 100644
index 000000000000..a50845f258bb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/lokalize/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "lokalize";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/lskat/default.nix b/nixpkgs/pkgs/kde/gear/lskat/default.nix
new file mode 100644
index 000000000000..e1b83925feb8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/lskat/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "lskat";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mailcommon/default.nix b/nixpkgs/pkgs/kde/gear/mailcommon/default.nix
new file mode 100644
index 000000000000..44b2b283896e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mailcommon/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "mailcommon";
+
+  extraBuildInputs = [qtwebengine qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mailimporter/default.nix b/nixpkgs/pkgs/kde/gear/mailimporter/default.nix
new file mode 100644
index 000000000000..d43e0a2288f9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mailimporter/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "mailimporter";
+}
diff --git a/nixpkgs/pkgs/kde/gear/marble/default.nix b/nixpkgs/pkgs/kde/gear/marble/default.nix
new file mode 100644
index 000000000000..1f6e574ed312
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/marble/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "marble";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/markdownpart/default.nix b/nixpkgs/pkgs/kde/gear/markdownpart/default.nix
new file mode 100644
index 000000000000..e40b6d03f883
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/markdownpart/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "markdownpart";
+}
diff --git a/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix b/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix
new file mode 100644
index 000000000000..7d1a6730e84d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mbox-importer/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "mbox-importer";
+}
diff --git a/nixpkgs/pkgs/kde/gear/merkuro/default.nix b/nixpkgs/pkgs/kde/gear/merkuro/default.nix
new file mode 100644
index 000000000000..7ad2c3637f70
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/merkuro/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  libplasma,
+}:
+mkKdeDerivation {
+  pname = "merkuro";
+
+  extraBuildInputs = [qtsvg libplasma];
+}
diff --git a/nixpkgs/pkgs/kde/gear/messagelib/default.nix b/nixpkgs/pkgs/kde/gear/messagelib/default.nix
new file mode 100644
index 000000000000..47058be34826
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/messagelib/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "messagelib";
+
+  extraPropagatedBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix b/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix
new file mode 100644
index 000000000000..3bebd8aee726
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/mimetreeparser/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  qtdeclarative,
+  qgpgme,
+}:
+mkKdeDerivation {
+  pname = "mimetreeparser";
+
+  extraBuildInputs = [qt5compat qtdeclarative qgpgme];
+}
diff --git a/nixpkgs/pkgs/kde/gear/minuet/default.nix b/nixpkgs/pkgs/kde/gear/minuet/default.nix
new file mode 100644
index 000000000000..bbfe47b2796f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/minuet/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  qtsvg,
+  fluidsynth,
+}:
+mkKdeDerivation {
+  pname = "minuet";
+
+  extraBuildInputs = [qtdeclarative qtsvg fluidsynth];
+}
diff --git a/nixpkgs/pkgs/kde/gear/neochat/default.nix b/nixpkgs/pkgs/kde/gear/neochat/default.nix
new file mode 100644
index 000000000000..ac50d06db8c9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/neochat/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtlocation,
+  qtwebview,
+  kunifiedpush,
+}:
+mkKdeDerivation {
+  pname = "neochat";
+
+  extraBuildInputs = [qtlocation qtwebview kunifiedpush];
+}
diff --git a/nixpkgs/pkgs/kde/gear/okular/default.nix b/nixpkgs/pkgs/kde/gear/okular/default.nix
new file mode 100644
index 000000000000..4f2ad1f8e3b0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/okular/default.nix
@@ -0,0 +1,30 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtspeech,
+  qtsvg,
+  poppler,
+  libtiff,
+  libspectre,
+  libzip,
+  djvulibre,
+  ebook_tools,
+  discount,
+}:
+mkKdeDerivation {
+  pname = "okular";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtspeech
+    qtsvg
+
+    poppler
+    libtiff
+    libspectre
+    libzip
+    djvulibre
+    ebook_tools
+    discount
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/palapeli/default.nix b/nixpkgs/pkgs/kde/gear/palapeli/default.nix
new file mode 100644
index 000000000000..01cc8774d06d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/palapeli/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "palapeli";
+
+  extraNativeBuildInputs = [shared-mime-info];
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/parley/default.nix b/nixpkgs/pkgs/kde/gear/parley/default.nix
new file mode 100644
index 000000000000..75f01c94e9d5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/parley/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtmultimedia,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "parley";
+
+  extraBuildInputs = [qtsvg qtmultimedia qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix b/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix
new file mode 100644
index 000000000000..1b3b06f8d68b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/partitionmanager/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  kpmcore,
+}:
+mkKdeDerivation {
+  pname = "partitionmanager";
+
+  propagatedUserEnvPkgs = [kpmcore];
+}
diff --git a/nixpkgs/pkgs/kde/gear/picmi/default.nix b/nixpkgs/pkgs/kde/gear/picmi/default.nix
new file mode 100644
index 000000000000..a5dd853fba52
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/picmi/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "picmi";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix b/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix
new file mode 100644
index 000000000000..da2097f46763
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pim-data-exporter/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "pim-data-exporter";
+}
diff --git a/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix b/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix
new file mode 100644
index 000000000000..66df72016321
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pim-sieve-editor/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "pim-sieve-editor";
+}
diff --git a/nixpkgs/pkgs/kde/gear/pimcommon/default.nix b/nixpkgs/pkgs/kde/gear/pimcommon/default.nix
new file mode 100644
index 000000000000..ddb467638c65
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/pimcommon/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qttools,
+}:
+mkKdeDerivation {
+  pname = "pimcommon";
+
+  extraBuildInputs = [qttools];
+}
diff --git a/nixpkgs/pkgs/kde/gear/plasmatube/default.nix b/nixpkgs/pkgs/kde/gear/plasmatube/default.nix
new file mode 100644
index 000000000000..db28e47c78c8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/plasmatube/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtquick3d,
+  qtsvg,
+  purpose,
+  pkg-config,
+  mpv,
+}:
+mkKdeDerivation {
+  pname = "plasmatube";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtquick3d qtsvg mpv];
+  extraPropagatedBuildInputs = [purpose];
+}
diff --git a/nixpkgs/pkgs/kde/gear/poxml/default.nix b/nixpkgs/pkgs/kde/gear/poxml/default.nix
new file mode 100644
index 000000000000..3c22e5e4b1e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/poxml/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "poxml";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix b/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix
new file mode 100644
index 000000000000..c48dbad18204
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/qmlkonsole/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "qmlkonsole";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/rocs/default.nix b/nixpkgs/pkgs/kde/gear/rocs/default.nix
new file mode 100644
index 000000000000..73e7143f8df0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/rocs/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "rocs";
+
+  extraBuildInputs = [boost];
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix b/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix
new file mode 100644
index 000000000000..15900552d50f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/signon-kwallet-extension/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  signond,
+}:
+mkKdeDerivation {
+  pname = "signon-kwallet-extension";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [signond];
+
+  # NB: not actually broken, just makes it install to $out instead of $signon/lib/extensions
+  # This is useless without a wrapped signond.
+  # FIXME: wrap signond with SSO_EXTENSIONS_DIR=$wrapper/lib/extensions
+  extraCmakeFlags = ["-DINSTALL_BROKEN_SIGNON_EXTENSION=1"];
+}
diff --git a/nixpkgs/pkgs/kde/gear/skanlite/default.nix b/nixpkgs/pkgs/kde/gear/skanlite/default.nix
new file mode 100644
index 000000000000..c64594d3fd09
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/skanlite/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+}:
+mkKdeDerivation {
+  pname = "skanlite";
+
+  extraBuildInputs = [qt5compat];
+}
diff --git a/nixpkgs/pkgs/kde/gear/skanpage/default.nix b/nixpkgs/pkgs/kde/gear/skanpage/default.nix
new file mode 100644
index 000000000000..a7352da8466c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/skanpage/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  tesseractLanguages ? [],
+  tesseract5,
+  leptonica,
+}:
+mkKdeDerivation {
+  pname = "skanpage";
+
+  extraBuildInputs = [
+    (tesseract5.override {enableLanguages = tesseractLanguages;})
+    leptonica
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/gear/spectacle/default.nix b/nixpkgs/pkgs/kde/gear/spectacle/default.nix
new file mode 100644
index 000000000000..1b5539230cbd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/spectacle/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  qtmultimedia,
+}:
+mkKdeDerivation {
+  pname = "spectacle";
+
+  extraBuildInputs = [qtwayland qtmultimedia];
+}
diff --git a/nixpkgs/pkgs/kde/gear/step/default.nix b/nixpkgs/pkgs/kde/gear/step/default.nix
new file mode 100644
index 000000000000..7e403a24d902
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/step/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  qttools,
+  qtsvg,
+  pkg-config,
+  eigen,
+  shared-mime-info,
+  gsl,
+  libqalculate,
+}:
+mkKdeDerivation {
+  pname = "step";
+
+  extraNativeBuildInputs = [qttools qtsvg pkg-config shared-mime-info];
+  extraBuildInputs = [eigen gsl libqalculate];
+}
diff --git a/nixpkgs/pkgs/kde/gear/svgpart/default.nix b/nixpkgs/pkgs/kde/gear/svgpart/default.nix
new file mode 100644
index 000000000000..44f25d0312b1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/svgpart/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "svgpart";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/sweeper/default.nix b/nixpkgs/pkgs/kde/gear/sweeper/default.nix
new file mode 100644
index 000000000000..f914ce9574be
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/sweeper/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  plasma-activities-stats,
+}:
+mkKdeDerivation {
+  pname = "sweeper";
+
+  extraBuildInputs = [plasma-activities-stats];
+}
diff --git a/nixpkgs/pkgs/kde/gear/telly-skout/default.nix b/nixpkgs/pkgs/kde/gear/telly-skout/default.nix
new file mode 100644
index 000000000000..c19ecf6b42d7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/telly-skout/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "telly-skout";
+}
diff --git a/nixpkgs/pkgs/kde/gear/tokodon/default.nix b/nixpkgs/pkgs/kde/gear/tokodon/default.nix
new file mode 100644
index 000000000000..464f354f41ed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/tokodon/default.nix
@@ -0,0 +1,17 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtmultimedia,
+  qtsvg,
+  qtwebsockets,
+  qtwebview,
+  mpv,
+  kitemmodels,
+  sonnet,
+}:
+mkKdeDerivation {
+  pname = "tokodon";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtmultimedia qtsvg qtwebsockets qtwebview mpv kitemmodels sonnet];
+}
diff --git a/nixpkgs/pkgs/kde/gear/umbrello/default.nix b/nixpkgs/pkgs/kde/gear/umbrello/default.nix
new file mode 100644
index 000000000000..6aca83a9e825
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/umbrello/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "umbrello";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/gear/yakuake/default.nix b/nixpkgs/pkgs/kde/gear/yakuake/default.nix
new file mode 100644
index 000000000000..420ec08f670b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/yakuake/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "yakuake";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/gear/zanshin/default.nix b/nixpkgs/pkgs/kde/gear/zanshin/default.nix
new file mode 100644
index 000000000000..357b6963ff09
--- /dev/null
+++ b/nixpkgs/pkgs/kde/gear/zanshin/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "zanshin";
+
+  extraBuildInputs = [boost];
+}
diff --git a/nixpkgs/pkgs/kde/generated/dependencies.json b/nixpkgs/pkgs/kde/generated/dependencies.json
new file mode 100644
index 000000000000..57d3a96728ac
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/dependencies.json
@@ -0,0 +1,6133 @@
+{
+  "dependencies": {
+    "accessibility-inspector": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "ki18n",
+      "kxmlgui",
+      "libqaccessibilityclient"
+    ],
+    "akonadi": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "akonadi-calendar": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kcontacts",
+      "kdbusaddons",
+      "kidentitymanagement",
+      "kmailtransport",
+      "knotifications",
+      "messagelib"
+    ],
+    "akonadi-calendar-tools": [
+      "akonadi",
+      "akonadi-calendar",
+      "calendarsupport",
+      "extra-cmake-modules",
+      "kcalendarcore"
+    ],
+    "akonadi-contacts": [
+      "akonadi",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kcodecs",
+      "kcontacts",
+      "kmime",
+      "ktextaddons",
+      "ktexttemplate",
+      "prison"
+    ],
+    "akonadi-import-wizard": [
+      "akonadi",
+      "extra-cmake-modules",
+      "kcontacts",
+      "kidentitymanagement",
+      "kmailtransport",
+      "mailcommon",
+      "mailimporter",
+      "messagelib",
+      "pimcommon",
+      "qtkeychain"
+    ],
+    "akonadi-mime": [
+      "akonadi",
+      "extra-cmake-modules",
+      "kmime"
+    ],
+    "akonadi-notes": [
+      "akonadi",
+      "extra-cmake-modules",
+      "kmime"
+    ],
+    "akonadi-search": [
+      "akonadi",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcmutils",
+      "kcontacts",
+      "kmime",
+      "krunner",
+      "ktextaddons"
+    ],
+    "akonadiclient": [
+      "akonadi",
+      "akonadi-contacts",
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kmime"
+    ],
+    "akonadiconsole": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "akonadi-search",
+      "calendarsupport",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcontacts",
+      "kimap",
+      "kmime",
+      "libkdepim",
+      "messagelib"
+    ],
+    "akregator": [
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kcodecs",
+      "kontactinterface",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "kuserfeedback",
+      "libkdepim",
+      "messagelib",
+      "pimcommon"
+    ],
+    "alkimia": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knewstuff",
+      "ktextwidgets",
+      "kxmlgui",
+      "libplasma"
+    ],
+    "alligator": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "syndication"
+    ],
+    "alpaka": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kguiaddons",
+      "ki18n",
+      "kirigami",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "amarok": [
+      "attica",
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdeclarative",
+      "kdnssd",
+      "kdoctools",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "knewstuff",
+      "knotifications",
+      "kpackage",
+      "ktexteditor",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "phonon",
+      "qca",
+      "solid",
+      "threadweaver"
+    ],
+    "amor": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "analitza": [
+      "extra-cmake-modules"
+    ],
+    "angelfish": [
+      "extra-cmake-modules",
+      "futuresql",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kwindowsystem",
+      "purpose",
+      "qqc2-desktop-style"
+    ],
+    "arianna": [
+      "baloo",
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kfilemetadata",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kquickcharts",
+      "kwindowsystem",
+      "qqc2-desktop-style"
+    ],
+    "ark": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kparts",
+      "kpty",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "arkade": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kirigami",
+      "kpackage"
+    ],
+    "artikulate": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcrash",
+      "ki18n",
+      "kirigami",
+      "knewstuff"
+    ],
+    "atcore": [
+      "extra-cmake-modules"
+    ],
+    "atlantik": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "knotifications",
+      "knotifyconfig",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "attica": [
+      "extra-cmake-modules"
+    ],
+    "audex": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkcddb",
+      "solid"
+    ],
+    "audiocd-kio": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "libkcddb",
+      "libkcompactdisc"
+    ],
+    "aura-browser": [
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdeclarative",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kpackage",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma",
+      "plasma-workspace",
+      "solid"
+    ],
+    "baloo": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kfilemetadata",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "solid"
+    ],
+    "baloo-widgets": [
+      "baloo",
+      "extra-cmake-modules",
+      "kconfig",
+      "kfilemetadata",
+      "ki18n",
+      "kio"
+    ],
+    "basket": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knotifications",
+      "kparts",
+      "kservice",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "phonon"
+    ],
+    "blinken": [
+      "extra-cmake-modules",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kxmlgui",
+      "phonon"
+    ],
+    "bluedevil": [
+      "bluez-qt",
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "solid"
+    ],
+    "bluez-qt": [
+      "extra-cmake-modules"
+    ],
+    "bomber": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "bovo": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "breeze": [
+      "extra-cmake-modules",
+      "frameworkintegration",
+      "kcmutils",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdecoration",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kirigami",
+      "kwindowsystem"
+    ],
+    "breeze-gtk": [
+      "breeze",
+      "extra-cmake-modules"
+    ],
+    "breeze-icons": [
+      "extra-cmake-modules"
+    ],
+    "breeze-plymouth": [
+      "extra-cmake-modules"
+    ],
+    "calendarsupport": [
+      "akonadi",
+      "akonadi-calendar",
+      "akonadi-notes",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kholidays",
+      "kidentitymanagement",
+      "kmime",
+      "ktextaddons"
+    ],
+    "calindori": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "knotifications",
+      "kpeople"
+    ],
+    "calligra": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdiagram",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-activities",
+      "sonnet",
+      "threadweaver"
+    ],
+    "calligraplan": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdiagram",
+      "kguiaddons",
+      "kholidays",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "kparts",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-activities",
+      "threadweaver"
+    ],
+    "cantor": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knewstuff",
+      "kparts",
+      "ktexteditor",
+      "ktextwidgets",
+      "kxmlgui",
+      "syntax-highlighting"
+    ],
+    "cervisia": [
+      "extra-cmake-modules",
+      "kdesu",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kitemviews",
+      "knotifications",
+      "kparts",
+      "ktextwidgets",
+      "kwidgetsaddons"
+    ],
+    "choqok": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "knotifyconfig",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "purpose",
+      "sonnet"
+    ],
+    "codevis": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "knewstuff",
+      "ktexteditor",
+      "ktextwidgets",
+      "kuserfeedback",
+      "plasma-activities"
+    ],
+    "colord-kde": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kitemmodels",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "croutons": [
+      "extra-cmake-modules"
+    ],
+    "daykountdown": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kwidgetsaddons"
+    ],
+    "digikam": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kimageformats",
+      "kio",
+      "knotifications",
+      "knotifyconfig",
+      "kservice",
+      "kwindowsystem",
+      "kxmlgui",
+      "solid",
+      "threadweaver"
+    ],
+    "discover": [
+      "appstream-qt",
+      "attica",
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kirigami-addons",
+      "knewstuff",
+      "knotifications",
+      "kservice",
+      "kstatusnotifieritem",
+      "kuserfeedback",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "packagekit-qt",
+      "purpose",
+      "selenium-webdriver-at-spi"
+    ],
+    "dolphin": [
+      "baloo",
+      "baloo-widgets",
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kio-extras",
+      "knewstuff",
+      "knotifications",
+      "kparts",
+      "ktextwidgets",
+      "kuserfeedback",
+      "kwindowsystem",
+      "packagekit-qt",
+      "phonon",
+      "plasma-activities",
+      "solid"
+    ],
+    "dolphin-plugins": [
+      "dolphin",
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kservice",
+      "ktexteditor",
+      "ktextwidgets",
+      "kxmlgui",
+      "solid"
+    ],
+    "dragon": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kparts",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "phonon",
+      "solid"
+    ],
+    "drkonqi": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kitemmodels",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid",
+      "syntax-highlighting"
+    ],
+    "elf-dissector": [
+      "extra-cmake-modules"
+    ],
+    "elisa": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "kxmlgui",
+      "qqc2-desktop-style"
+    ],
+    "eloquens": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami"
+    ],
+    "eventviews": [
+      "akonadi",
+      "akonadi-calendar",
+      "calendarsupport",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kconfigwidgets",
+      "kdiagram",
+      "kmime",
+      "libkdepim"
+    ],
+    "falkon": [
+      "karchive",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kio",
+      "kwallet",
+      "purpose"
+    ],
+    "ffmpegthumbs": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kio"
+    ],
+    "fielding": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami"
+    ],
+    "filelight": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kirigami-addons",
+      "kxmlgui"
+    ],
+    "flatpak-kcm": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kitemmodels"
+    ],
+    "frameworkintegration": [
+      "appstream-qt",
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kconfigwidgets",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "knewstuff",
+      "knotifications",
+      "kpackage",
+      "kwidgetsaddons",
+      "oxygen-icons"
+    ],
+    "francis": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kwindowsystem",
+      "qqc2-desktop-style"
+    ],
+    "futuresql": [
+      "extra-cmake-modules"
+    ],
+    "gcompris": [
+      "extra-cmake-modules"
+    ],
+    "ghostwriter": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kxmlgui",
+      "sonnet"
+    ],
+    "glaxnimate": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kxmlgui"
+    ],
+    "gpgme": [
+      "libgpg-error"
+    ],
+    "granatier": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "grantlee-editor": [
+      "akonadi-contacts",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kimap",
+      "ktextaddons",
+      "ktexttemplate",
+      "messagelib",
+      "pimcommon"
+    ],
+    "grantleetheme": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "knewstuff",
+      "ktexttemplate",
+      "kxmlgui"
+    ],
+    "gwenview": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "knewstuff",
+      "knotifications",
+      "kparts",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkdcraw",
+      "phonon",
+      "plasma-activities",
+      "purpose",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "haruna": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "mpvqt"
+    ],
+    "hash-o-matic": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kwindowsystem",
+      "libkleo",
+      "qqc2-desktop-style"
+    ],
+    "heaptrack": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdiagram",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "threadweaver"
+    ],
+    "incidenceeditor": [
+      "akonadi",
+      "akonadi-mime",
+      "calendarsupport",
+      "eventviews",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kdiagram",
+      "kidentitymanagement",
+      "kldap",
+      "kmime",
+      "kpimtextedit",
+      "libkdepim",
+      "pimcommon"
+    ],
+    "index-fm": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kservice",
+      "mauikit",
+      "mauikit-filebrowsing"
+    ],
+    "isoimagewriter": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kwidgetsaddons",
+      "solid"
+    ],
+    "itinerary": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kfilemetadata",
+      "khealthcertificate",
+      "kholidays",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "kitinerary",
+      "knotifications",
+      "kosmindoormap",
+      "kpkpass",
+      "kpublictransport",
+      "kunitconversion",
+      "kwindowsystem",
+      "libquotient",
+      "networkmanager-qt",
+      "prison",
+      "qqc2-desktop-style"
+    ],
+    "juk": [
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kstatusnotifieritem",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "phonon"
+    ],
+    "k3b": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkcddb",
+      "solid"
+    ],
+    "kaccounts-integration": [
+      "accounts-qt",
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kwallet",
+      "qcoro",
+      "signond"
+    ],
+    "kaccounts-providers": [
+      "extra-cmake-modules",
+      "kaccounts-integration",
+      "ki18n",
+      "kio",
+      "kpackage"
+    ],
+    "kactivitymanagerd": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kio",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "kaddressbook": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-search",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kontactinterface",
+      "kuserfeedback",
+      "libkdepim",
+      "pimcommon"
+    ],
+    "kajongg": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "libkmahjongg"
+    ],
+    "kalarm": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcontacts",
+      "kcrash",
+      "kdbusaddons",
+      "kglobalaccel",
+      "kguiaddons",
+      "kholidays",
+      "ki18n",
+      "kidentitymanagement",
+      "kio",
+      "kitemmodels",
+      "kjobwidgets",
+      "kmailtransport",
+      "kmime",
+      "knotifications",
+      "knotifyconfig",
+      "kservice",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "phonon"
+    ],
+    "kalgebra": [
+      "analitza",
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libplasma"
+    ],
+    "kalk": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kunitconversion"
+    ],
+    "kalm": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons"
+    ],
+    "kalternatives": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kwidgetsaddons"
+    ],
+    "kalzium": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kitemviews",
+      "knewstuff",
+      "kplotting",
+      "ktextwidgets",
+      "kunitconversion",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kamera": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kxmlgui"
+    ],
+    "kamoso": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "purpose"
+    ],
+    "kanagram": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "kxmlgui",
+      "libkeduvocdocument",
+      "sonnet"
+    ],
+    "kapidox": [
+      "extra-cmake-modules"
+    ],
+    "kapman": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kapptemplate": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio"
+    ],
+    "karchive": [
+      "extra-cmake-modules"
+    ],
+    "kasts": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "qtkeychain",
+      "syndication",
+      "threadweaver"
+    ],
+    "kasync": [
+      "extra-cmake-modules"
+    ],
+    "kate": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "knewstuff",
+      "ktexteditor",
+      "ktextwidgets",
+      "kuserfeedback"
+    ],
+    "katomic": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "knewstuff",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kauth": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kwindowsystem",
+      "polkit-qt-1"
+    ],
+    "kbackup": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knotifications",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kbibtex": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kparts",
+      "ktexteditor",
+      "kwallet",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kblackbox": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kblocks": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kbookmarks": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons"
+    ],
+    "kbounce": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kbreakout": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kbruch": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kcachegrind": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kcalc": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kguiaddons",
+      "ki18n",
+      "knotifications",
+      "kxmlgui"
+    ],
+    "kcalendarcore": [
+      "extra-cmake-modules"
+    ],
+    "kcalutils": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kidentitymanagement",
+      "ktexttemplate"
+    ],
+    "kcgroups": [
+      "extra-cmake-modules"
+    ],
+    "kcharselect": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kclock": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kstatusnotifieritem",
+      "libplasma"
+    ],
+    "kcm-grub2": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "ki18n",
+      "kio",
+      "packagekit-qt",
+      "solid"
+    ],
+    "kcmutils": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kitemviews",
+      "kxmlgui"
+    ],
+    "kcodecs": [
+      "extra-cmake-modules"
+    ],
+    "kcolorchooser": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kxmlgui"
+    ],
+    "kcolorscheme": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kguiaddons",
+      "ki18n"
+    ],
+    "kcompletion": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kconfig",
+      "kwidgetsaddons"
+    ],
+    "kconfig": [
+      "extra-cmake-modules"
+    ],
+    "kconfigwidgets": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "kcontacts": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n"
+    ],
+    "kcoreaddons": [
+      "extra-cmake-modules"
+    ],
+    "kcrash": [
+      "extra-cmake-modules",
+      "kcoreaddons"
+    ],
+    "kcron": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfigwidgets",
+      "kdoctools",
+      "ki18n",
+      "kio"
+    ],
+    "kdav": [
+      "extra-cmake-modules",
+      "kio"
+    ],
+    "kdav2": [
+      "extra-cmake-modules",
+      "kcoreaddons"
+    ],
+    "kdb": [
+      "extra-cmake-modules",
+      "kcoreaddons"
+    ],
+    "kdbusaddons": [
+      "extra-cmake-modules"
+    ],
+    "kde-cli-tools": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdesu",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "kparts",
+      "kpty",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid"
+    ],
+    "kde-dev-scripts": [
+      "extra-cmake-modules",
+      "kdoctools"
+    ],
+    "kde-dev-utils": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kparts",
+      "kwidgetsaddons"
+    ],
+    "kde-gtk-config": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdecoration",
+      "kguiaddons",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "kde-inotify-survey": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdeclarative",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid",
+      "syntax-highlighting"
+    ],
+    "kdebugsettings": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kitemviews",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "selenium-webdriver-at-spi"
+    ],
+    "kdeclarative": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "kdeconnect-kde": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "knotifications",
+      "kpackage",
+      "kpeople",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwindowsystem",
+      "modemmanager-qt",
+      "plasma-wayland-protocols",
+      "pulseaudio-qt",
+      "qqc2-desktop-style",
+      "solid"
+    ],
+    "kdecoration": [
+      "extra-cmake-modules",
+      "ki18n"
+    ],
+    "kded": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kservice"
+    ],
+    "kdeedu-data": [
+      "extra-cmake-modules"
+    ],
+    "kdegraphics-mobipocket": [
+      "extra-cmake-modules"
+    ],
+    "kdegraphics-thumbnailers": [
+      "extra-cmake-modules",
+      "karchive",
+      "kdegraphics-mobipocket",
+      "kio",
+      "libkdcraw",
+      "libkexiv2"
+    ],
+    "kdenetwork-filesharing": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "packagekit-qt",
+      "qcoro"
+    ],
+    "kdenlive": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "karchive",
+      "kbookmarks",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kfilemetadata",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kplotting",
+      "kservice",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "purpose"
+    ],
+    "kdepim-addons": [
+      "akonadi",
+      "akonadi-calendar",
+      "akonadi-contacts",
+      "akonadi-import-wizard",
+      "akonadi-notes",
+      "calendarsupport",
+      "eventviews",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "incidenceeditor",
+      "kaddressbook",
+      "kcalendarcore",
+      "kcalutils",
+      "kconfig",
+      "kcontacts",
+      "kdbusaddons",
+      "kdeclarative",
+      "kguiaddons",
+      "kholidays",
+      "kiconthemes",
+      "kidentitymanagement",
+      "kimap",
+      "kio",
+      "kitinerary",
+      "kmailtransport",
+      "kparts",
+      "kpimtextedit",
+      "kpkpass",
+      "ktextaddons",
+      "ktexttemplate",
+      "ktnef",
+      "kxmlgui",
+      "libgravatar",
+      "libkdepim",
+      "libkleo",
+      "libksieve",
+      "mailcommon",
+      "mailimporter",
+      "messagelib",
+      "pimcommon",
+      "prison"
+    ],
+    "kdepim-runtime": [
+      "akonadi",
+      "akonadi-calendar",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "akonadi-notes",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcontacts",
+      "kdav",
+      "kidentitymanagement",
+      "kimap",
+      "kio",
+      "kitemmodels",
+      "kldap",
+      "kmailtransport",
+      "kmbox",
+      "kmime",
+      "knotifications",
+      "knotifyconfig",
+      "ktextaddons",
+      "ktextwidgets",
+      "kwindowsystem",
+      "libkgapi",
+      "qtkeychain"
+    ],
+    "kdeplasma-addons": [
+      "attica",
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kglobalaccel",
+      "kholidays",
+      "ki18n",
+      "kio",
+      "kirigami-addons",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "kpackage",
+      "krunner",
+      "kservice",
+      "kunitconversion",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libplasma",
+      "plasma-nano",
+      "plasma-workspace",
+      "plasma5support",
+      "selenium-webdriver-at-spi",
+      "solid",
+      "sonnet"
+    ],
+    "kdesdk-kio": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kio"
+    ],
+    "kdesdk-thumbnailers": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio"
+    ],
+    "kdesu": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kpty"
+    ],
+    "kdesvn": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "kparts",
+      "kservice",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kdev-css": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "kdevelop-pg-qt",
+      "ki18n",
+      "ktexteditor"
+    ],
+    "kdev-embedded": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "kitemmodels",
+      "knewstuff",
+      "ktexteditor",
+      "threadweaver"
+    ],
+    "kdev-executebrowser": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "kitemmodels",
+      "ktexteditor"
+    ],
+    "kdev-krazy2": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "kitemmodels",
+      "ktexteditor",
+      "threadweaver"
+    ],
+    "kdev-mercurial": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n"
+    ],
+    "kdev-php": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kdevelop",
+      "kdevelop-pg-qt",
+      "ki18n",
+      "ktexteditor",
+      "threadweaver"
+    ],
+    "kdev-python": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "ktexteditor",
+      "threadweaver"
+    ],
+    "kdev-ruby": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "ktexteditor"
+    ],
+    "kdev-upload": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kdevelop",
+      "ki18n",
+      "kio",
+      "kitemmodels",
+      "ktexteditor"
+    ],
+    "kdev-valgrind": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "kitemmodels",
+      "ktexteditor"
+    ],
+    "kdev-verapp": [
+      "extra-cmake-modules",
+      "kdevelop",
+      "ki18n",
+      "ktexteditor"
+    ],
+    "kdev-xdebug": [
+      "extra-cmake-modules",
+      "kdev-executebrowser",
+      "kdevelop",
+      "ki18n",
+      "kitemmodels",
+      "ktexteditor"
+    ],
+    "kdevelop": [
+      "kdevelop-pg-qt",
+      "kitemmodels",
+      "knotifyconfig",
+      "ktexteditor",
+      "libkomparediff2",
+      "libksysguard",
+      "okteta",
+      "threadweaver"
+    ],
+    "kdevelop-pg-qt": [
+      "extra-cmake-modules"
+    ],
+    "kdf": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kdiagram": [
+      "extra-cmake-modules"
+    ],
+    "kdialog": [
+      "extra-cmake-modules",
+      "kdbusaddons",
+      "kguiaddons",
+      "kiconthemes",
+      "kio",
+      "knotifications",
+      "ktextwidgets",
+      "kwindowsystem"
+    ],
+    "kdiamond": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "knotifications",
+      "knotifyconfig",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kdiff3": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kparts",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kdnssd": [
+      "extra-cmake-modules"
+    ],
+    "kdoctools": [
+      "extra-cmake-modules",
+      "karchive",
+      "ki18n"
+    ],
+    "kdsoap-ws-discovery-client": [
+      "extra-cmake-modules",
+      "kdsoap"
+    ],
+    "keditbookmarks": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcodecs",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kparts",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "keurocalc": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kexi": [
+      "breeze",
+      "breeze-icons",
+      "extra-cmake-modules",
+      "karchive",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdb",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kproperty",
+      "kreport",
+      "ktexteditor",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "marble"
+    ],
+    "keysmith": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kdbusaddons",
+      "kguiaddons",
+      "ki18n",
+      "kirigami",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "kfilemetadata": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcoreaddons",
+      "ki18n",
+      "poppler",
+      "taglib"
+    ],
+    "kfind": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcoreaddons",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kfloppy": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kfourinline": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdnssd",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kgamma": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kdoctools",
+      "ki18n"
+    ],
+    "kgeography": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kitemviews",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kgeotag": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kxmlgui",
+      "libkexiv2",
+      "marble"
+    ],
+    "kget": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "knotifications",
+      "knotifyconfig",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libktorrent"
+    ],
+    "kglobalaccel": [
+      "extra-cmake-modules"
+    ],
+    "kglobalacceld": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kglobalaccel",
+      "kio",
+      "kjobwidgets",
+      "kservice",
+      "kwindowsystem"
+    ],
+    "kgoldrunner": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kgpg": [
+      "akonadi-contacts",
+      "extra-cmake-modules",
+      "karchive",
+      "kcodecs",
+      "kconfigwidgets",
+      "kcontacts",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kstatusnotifieritem",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "kgraphviewer": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kparts",
+      "kwidgetsaddons"
+    ],
+    "kguiaddons": [
+      "extra-cmake-modules",
+      "plasma-wayland-protocols",
+      "wayland"
+    ],
+    "khangman": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "knotifications",
+      "libkeduvocdocument"
+    ],
+    "khealthcertificate": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcodecs",
+      "ki18n"
+    ],
+    "khelpcenter": [
+      "extra-cmake-modules",
+      "karchive",
+      "kbookmarks",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kservice",
+      "ktexttemplate",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "khipu": [
+      "analitza",
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kitemmodels",
+      "kitemviews",
+      "knewstuff",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kholidays": [
+      "extra-cmake-modules"
+    ],
+    "ki18n": [
+      "extra-cmake-modules"
+    ],
+    "kiconthemes": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcolorscheme",
+      "kconfigwidgets",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "kid3": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kidentitymanagement": [
+      "extra-cmake-modules",
+      "kirigami-addons",
+      "kpimtextedit",
+      "ktextaddons"
+    ],
+    "kidletime": [
+      "extra-cmake-modules",
+      "plasma-wayland-protocols",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "kig": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kparts",
+      "ktexteditor",
+      "kxmlgui"
+    ],
+    "kigo": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kile": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kparts",
+      "ktexteditor",
+      "kwindowsystem",
+      "kxmlgui",
+      "okular"
+    ],
+    "killbots": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kimageformats": [
+      "extra-cmake-modules",
+      "karchive"
+    ],
+    "kimagemapeditor": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kparts",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kimap": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kmime"
+    ],
+    "kinfocenter": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "plasma-systemmonitor",
+      "selenium-webdriver-at-spi",
+      "solid",
+      "systemsettings",
+      "xdg-desktop-portal-kde"
+    ],
+    "kio": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kbookmarks",
+      "kcolorscheme",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid"
+    ],
+    "kio-admin": [
+      "extra-cmake-modules",
+      "kio",
+      "polkit-qt-1"
+    ],
+    "kio-extras": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdnssd",
+      "kdoctools",
+      "kdsoap",
+      "kdsoap-ws-discovery-client",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "libkexiv2",
+      "phonon",
+      "plasma-activities",
+      "plasma-activities-stats",
+      "qcoro",
+      "solid",
+      "syntax-highlighting"
+    ],
+    "kio-fuse": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kio"
+    ],
+    "kio-gdrive": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "libkgapi",
+      "purpose",
+      "qtkeychain"
+    ],
+    "kio-gopher": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio"
+    ],
+    "kio-s3": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kio"
+    ],
+    "kio-stash": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kdbusaddons",
+      "ki18n",
+      "kio"
+    ],
+    "kio-zeroconf": [
+      "extra-cmake-modules",
+      "kdbusaddons",
+      "kdnssd",
+      "ki18n",
+      "kio"
+    ],
+    "kipi-plugins": [
+      "extra-cmake-modules",
+      "kconfig",
+      "ki18n",
+      "kio",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkipi",
+      "libmediawiki"
+    ],
+    "kirigami": [
+      "extra-cmake-modules"
+    ],
+    "kirigami-addons": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kirigami"
+    ],
+    "kirigami-gallery": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kirigami",
+      "kitemmodels"
+    ],
+    "kiriki": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kirogi": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdnssd",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons"
+    ],
+    "kitemmodels": [
+      "extra-cmake-modules"
+    ],
+    "kitemviews": [
+      "extra-cmake-modules"
+    ],
+    "kiten": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kxmlgui"
+    ],
+    "kitinerary": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcodecs",
+      "kcontacts",
+      "ki18n",
+      "kmime",
+      "kpkpass",
+      "zxing-cpp"
+    ],
+    "kitinerary-workbench": [
+      "extra-cmake-modules",
+      "kio",
+      "kitinerary",
+      "ktexteditor"
+    ],
+    "kjobwidgets": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "knotifications",
+      "kwidgetsaddons"
+    ],
+    "kjots": [
+      "akonadi",
+      "akonadi-notes",
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kio",
+      "kmime",
+      "kontactinterface",
+      "kparts",
+      "kpimtextedit",
+      "ktextaddons",
+      "ktexttemplate",
+      "kxmlgui"
+    ],
+    "kjournald": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n"
+    ],
+    "kjumpingcube": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kldap": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "qtkeychain"
+    ],
+    "kleopatra": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kidentitymanagement",
+      "kio",
+      "kitemmodels",
+      "kmailtransport",
+      "kmime",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkleo",
+      "mimetreeparser"
+    ],
+    "klettres": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "knewstuff",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "phonon"
+    ],
+    "klevernotes": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "qqc2-desktop-style"
+    ],
+    "klickety": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "klimbgrades": [
+      "extra-cmake-modules",
+      "kconfig",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons"
+    ],
+    "klines": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kmag": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kxmlgui",
+      "libqaccessibilityclient"
+    ],
+    "kmahjongg": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "knewstuff",
+      "kxmlgui",
+      "libkdegames",
+      "libkmahjongg"
+    ],
+    "kmail": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "akonadi-search",
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcalendarcore",
+      "kcalutils",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcontacts",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kidentitymanagement",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "kldap",
+      "kmailtransport",
+      "kmime",
+      "knotifications",
+      "knotifyconfig",
+      "kontactinterface",
+      "kparts",
+      "kpimtextedit",
+      "kservice",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "ktextwidgets",
+      "ktnef",
+      "kuserfeedback",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libgravatar",
+      "libkdepim",
+      "libkleo",
+      "libksieve",
+      "mailcommon",
+      "messagelib",
+      "pimcommon",
+      "qtkeychain",
+      "sonnet"
+    ],
+    "kmail-account-wizard": [
+      "akonadi",
+      "extra-cmake-modules",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kidentitymanagement",
+      "kmailtransport",
+      "kmime"
+    ],
+    "kmailtransport": [
+      "extra-cmake-modules",
+      "ksmtp",
+      "libkgapi",
+      "qtkeychain"
+    ],
+    "kmbox": [
+      "extra-cmake-modules",
+      "kmime"
+    ],
+    "kmenuedit": [
+      "extra-cmake-modules",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kwindowsystem",
+      "kxmlgui",
+      "sonnet"
+    ],
+    "kmime": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "ki18n"
+    ],
+    "kmines": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kmix": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "ki18n",
+      "knotifications",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "solid"
+    ],
+    "kmoretools": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kwidgetsaddons"
+    ],
+    "kmousetool": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "phonon"
+    ],
+    "kmouth": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kmplot": [
+      "extra-cmake-modules",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kparts",
+      "ktextwidgets",
+      "kwidgetsaddons"
+    ],
+    "kmymoney": [
+      "akonadi",
+      "alkimia",
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kdiagram",
+      "kguiaddons",
+      "kholidays",
+      "ki18n",
+      "kiconthemes",
+      "kidentitymanagement",
+      "kio",
+      "kitemmodels",
+      "kitemviews",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "knavalbattle": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdnssd",
+      "kdoctools",
+      "ki18n",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "knetwalk": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "knewstuff": [
+      "attica",
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kpackage",
+      "kwidgetsaddons",
+      "syndication"
+    ],
+    "knights": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kplotting",
+      "ksvg",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames",
+      "libplasma"
+    ],
+    "knotes": [
+      "akonadi",
+      "akonadi-notes",
+      "akonadi-search",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kcalutils",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdnssd",
+      "kdoctools",
+      "kglobalaccel",
+      "kiconthemes",
+      "kitemmodels",
+      "kitemviews",
+      "kmime",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kontactinterface",
+      "kparts",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "ktexttemplate",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "pimcommon"
+    ],
+    "knotifications": [
+      "extra-cmake-modules",
+      "kconfig"
+    ],
+    "knotifyconfig": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kxmlgui",
+      "phonon"
+    ],
+    "kodaskanna": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "purpose"
+    ],
+    "koko": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdeclarative",
+      "kfilemetadata",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "knotifications",
+      "kquickimageeditor",
+      "purpose"
+    ],
+    "kolf": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kollision": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kolorfill": [
+      "extra-cmake-modules",
+      "kirigami"
+    ],
+    "kolourpaint": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libksane"
+    ],
+    "kommit": [
+      "dolphin",
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "ktexteditor",
+      "ktextwidgets",
+      "kxmlgui",
+      "syntax-highlighting"
+    ],
+    "kompare": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "kiconthemes",
+      "kjobwidgets",
+      "kparts",
+      "ktexteditor",
+      "kwidgetsaddons",
+      "libkomparediff2"
+    ],
+    "kongress": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "knotifications"
+    ],
+    "konqueror": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kcrash",
+      "kdbusaddons",
+      "kdesu",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kparts",
+      "kwindowsystem",
+      "plasma-activities"
+    ],
+    "konquest": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "konsole": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "kpty",
+      "kservice",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "kontact": [
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kontactinterface",
+      "ktexttemplate",
+      "libkdepim",
+      "pimcommon"
+    ],
+    "kontactinterface": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kparts",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "kontrast": [
+      "extra-cmake-modules",
+      "futuresql",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons"
+    ],
+    "konversation": [
+      "extra-cmake-modules",
+      "karchive",
+      "kbookmarks",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kitemviews",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "kooka": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kservice",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "sonnet"
+    ],
+    "kookbook": [
+      "extra-cmake-modules"
+    ],
+    "kopeninghours": [
+      "extra-cmake-modules",
+      "kholidays",
+      "ki18n"
+    ],
+    "kopete": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdnssd",
+      "kdoctools",
+      "ki18n",
+      "kidentitymanagement",
+      "knotifyconfig",
+      "kparts",
+      "ktexteditor",
+      "kwallet",
+      "libkleo",
+      "phonon"
+    ],
+    "korganizer": [
+      "akonadi",
+      "akonadi-calendar",
+      "akonadi-contacts",
+      "akonadi-notes",
+      "calendarsupport",
+      "eventviews",
+      "extra-cmake-modules",
+      "incidenceeditor",
+      "kcalendarcore",
+      "kcalutils",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcontacts",
+      "kcoreaddons",
+      "kcrash",
+      "kdiagram",
+      "kdoctools",
+      "kholidays",
+      "ki18n",
+      "kiconthemes",
+      "kidentitymanagement",
+      "kitemviews",
+      "kjobwidgets",
+      "kldap",
+      "kmailtransport",
+      "kmime",
+      "knewstuff",
+      "kontactinterface",
+      "kparts",
+      "kuserfeedback",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkdepim",
+      "pimcommon"
+    ],
+    "kosmindoormap": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kopeninghours",
+      "kpublictransport",
+      "kservice"
+    ],
+    "kpackage": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n"
+    ],
+    "kparts": [
+      "extra-cmake-modules",
+      "kio",
+      "knotifications",
+      "kxmlgui"
+    ],
+    "kpat": [
+      "extra-cmake-modules",
+      "kio",
+      "libkdegames"
+    ],
+    "kpeople": [
+      "extra-cmake-modules",
+      "kcontacts",
+      "kcoreaddons",
+      "ki18n",
+      "kitemviews",
+      "kwidgetsaddons"
+    ],
+    "kpeoplevcard": [
+      "extra-cmake-modules",
+      "kcontacts",
+      "kcoreaddons",
+      "ki18n",
+      "kpeople"
+    ],
+    "kphotoalbum": [
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdcraw",
+      "marble",
+      "phonon",
+      "purpose"
+    ],
+    "kpimtextedit": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "ktextaddons",
+      "ktexttemplate",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "kpipewire": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "plasma-wayland-protocols",
+      "wayland"
+    ],
+    "kpkpass": [
+      "extra-cmake-modules",
+      "karchive"
+    ],
+    "kplotting": [
+      "extra-cmake-modules"
+    ],
+    "kpmcore": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kwidgetsaddons",
+      "polkit-qt-1"
+    ],
+    "kproperty": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "kwidgetsaddons"
+    ],
+    "kpty": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n"
+    ],
+    "kpublictransport": [
+      "extra-cmake-modules",
+      "ki18n",
+      "networkmanager-qt"
+    ],
+    "kqtquickcharts": [
+      "extra-cmake-modules"
+    ],
+    "kquickcharts": [
+      "extra-cmake-modules"
+    ],
+    "kquickimageeditor": [
+      "extra-cmake-modules"
+    ],
+    "krdc": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kdnssd",
+      "ki18n",
+      "kiconthemes",
+      "knotifications",
+      "knotifyconfig",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-activities"
+    ],
+    "krecorder": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kwindowsystem"
+    ],
+    "kregexpeditor": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kservice",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "krename": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "kservice",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kreport": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "kproperty",
+      "kwidgetsaddons"
+    ],
+    "kreversi": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "krfb": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdnssd",
+      "kdoctools",
+      "ki18n",
+      "knotifications",
+      "kpipewire",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-wayland-protocols"
+    ],
+    "kronometer": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kruler": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "knotifications",
+      "kstatusnotifieritem",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "krunner": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kitemmodels",
+      "threadweaver"
+    ],
+    "krusader": [
+      "extra-cmake-modules",
+      "karchive",
+      "kbookmarks",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "knotifications",
+      "kparts",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "solid"
+    ],
+    "ksanecore": [
+      "extra-cmake-modules",
+      "ki18n"
+    ],
+    "kscreen": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kpackage",
+      "kservice",
+      "ksvg",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "layer-shell-qt",
+      "libkscreen",
+      "libplasma"
+    ],
+    "kscreenlocker": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kglobalaccel",
+      "ki18n",
+      "kidletime",
+      "knotifications",
+      "kservice",
+      "ksvg",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "layer-shell-qt",
+      "libkscreen",
+      "libplasma",
+      "wayland"
+    ],
+    "kseexpr": [
+      "extra-cmake-modules",
+      "ki18n"
+    ],
+    "kservice": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n"
+    ],
+    "kshisen": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kxmlgui",
+      "libkdegames",
+      "libkmahjongg"
+    ],
+    "ksirk": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "kwallet",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "ksmtp": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kio"
+    ],
+    "ksnakeduel": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kspaceduel": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "ksquares": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "ksshaskpass": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kwallet",
+      "kwidgetsaddons"
+    ],
+    "kstatusnotifieritem": [
+      "extra-cmake-modules",
+      "kwindowsystem"
+    ],
+    "ksudoku": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "ksvg": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "kirigami"
+    ],
+    "ksystemlog": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kitemviews",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "ksystemstats": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kio",
+      "libksysguard",
+      "solid"
+    ],
+    "kteatime": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "knotifications",
+      "knotifyconfig",
+      "ktextwidgets",
+      "kxmlgui"
+    ],
+    "ktechlab": [
+      "ktexteditor"
+    ],
+    "ktextaddons": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "qtkeychain",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "ktexteditor": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kconfig",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kparts",
+      "ktextwidgets",
+      "kxmlgui",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "ktexttemplate": [
+      "extra-cmake-modules"
+    ],
+    "ktextwidgets": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "ki18n",
+      "kwidgetsaddons",
+      "sonnet"
+    ],
+    "ktimer": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kstatusnotifieritem",
+      "kwidgetsaddons"
+    ],
+    "ktimetracker": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kstatusnotifieritem",
+      "ktextwidgets",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "ktnef": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kcontacts"
+    ],
+    "ktorrent": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kcompletion",
+      "kcrash",
+      "kdnssd",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "kplotting",
+      "kstatusnotifieritem",
+      "ktextwidgets",
+      "kxmlgui",
+      "libktorrent",
+      "phonon",
+      "solid",
+      "syndication"
+    ],
+    "ktouch": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kitemviews",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "ktrip": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kpublictransport",
+      "qqc2-desktop-style"
+    ],
+    "ktuberling": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kturtle": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "ktextwidgets",
+      "kxmlgui"
+    ],
+    "kubrick": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "kunifiedpush": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kcoreaddons",
+      "kservice"
+    ],
+    "kunitconversion": [
+      "extra-cmake-modules",
+      "kconfig",
+      "ki18n"
+    ],
+    "kup": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kidletime",
+      "kjobwidgets",
+      "knotifications",
+      "kwidgetsaddons",
+      "libplasma",
+      "plasma5support",
+      "solid"
+    ],
+    "kuserfeedback": [
+      "extra-cmake-modules"
+    ],
+    "kwallet": [
+      "extra-cmake-modules",
+      "gpgme",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kiconthemes",
+      "knotifications",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "qca"
+    ],
+    "kwallet-pam": [
+      "extra-cmake-modules",
+      "kwallet"
+    ],
+    "kwalletmanager": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "kwave": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "kwayland": [
+      "extra-cmake-modules",
+      "plasma-wayland-protocols",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "kweather": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kweathercore",
+      "libplasma"
+    ],
+    "kweathercore": [
+      "extra-cmake-modules",
+      "kholidays",
+      "ki18n"
+    ],
+    "kwidgetsaddons": [
+      "extra-cmake-modules"
+    ],
+    "kwin": [
+      "breeze",
+      "breeze-icons",
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdeclarative",
+      "kdecoration",
+      "kdoctools",
+      "kglobalaccel",
+      "kglobalacceld",
+      "ki18n",
+      "kidletime",
+      "kirigami",
+      "knewstuff",
+      "knotifications",
+      "kpackage",
+      "kpipewire",
+      "kscreenlocker",
+      "kservice",
+      "ksvg",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "libqaccessibilityclient",
+      "plasma-activities",
+      "plasma-wayland-protocols",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "kwindowsystem": [
+      "extra-cmake-modules",
+      "plasma-wayland-protocols",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "kwordquiz": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kirigami-addons",
+      "knewstuff",
+      "libkeduvocdocument"
+    ],
+    "kwrited": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "knotifications",
+      "kpty"
+    ],
+    "kxmlgui": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kitemviews",
+      "ktextwidgets",
+      "kwidgetsaddons"
+    ],
+    "kxstitch": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "labplot": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kitemviews",
+      "knewstuff",
+      "kparts",
+      "ktexteditor",
+      "kuserfeedback",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "latte-dock": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdeclarative",
+      "kdoctools",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "knewstuff",
+      "knotifications",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "plasma-activities",
+      "plasma-workspace"
+    ],
+    "layer-shell-qt": [
+      "extra-cmake-modules",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "libgravatar": [
+      "extra-cmake-modules",
+      "pimcommon"
+    ],
+    "libkcddb": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons"
+    ],
+    "libkcompactdisc": [
+      "extra-cmake-modules",
+      "ki18n",
+      "phonon",
+      "solid"
+    ],
+    "libkdcraw": [
+      "extra-cmake-modules"
+    ],
+    "libkdegames": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcolorscheme",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kdnssd",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "knewstuff",
+      "kxmlgui"
+    ],
+    "libkdepim": [
+      "extra-cmake-modules",
+      "kcompletion",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "libkeduvocdocument": [
+      "extra-cmake-modules",
+      "karchive",
+      "ki18n",
+      "kio"
+    ],
+    "libkexiv2": [
+      "extra-cmake-modules"
+    ],
+    "libkgapi": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcontacts",
+      "kwallet"
+    ],
+    "libkipi": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kservice",
+      "kxmlgui"
+    ],
+    "libkleo": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kcolorscheme",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kitemmodels",
+      "ktextaddons",
+      "kwidgetsaddons"
+    ],
+    "libkmahjongg": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "libkomparediff2": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kxmlgui"
+    ],
+    "libksane": [
+      "extra-cmake-modules",
+      "ki18n",
+      "ksanecore",
+      "ktextwidgets",
+      "kwallet",
+      "kwidgetsaddons"
+    ],
+    "libkscreen": [
+      "extra-cmake-modules",
+      "plasma-wayland-protocols",
+      "wayland"
+    ],
+    "libksieve": [
+      "extra-cmake-modules",
+      "kidentitymanagement",
+      "kimap",
+      "kmailtransport",
+      "kmime",
+      "ktextaddons",
+      "libkdepim",
+      "pimcommon"
+    ],
+    "libksysguard": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "knewstuff",
+      "kpackage",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid"
+    ],
+    "libktorrent": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcrash",
+      "ki18n",
+      "kio",
+      "solid"
+    ],
+    "libmediawiki": [
+      "extra-cmake-modules",
+      "kcoreaddons"
+    ],
+    "libplasma": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "knotifications",
+      "kpackage",
+      "kparts",
+      "ksvg",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "plasma-activities"
+    ],
+    "libqaccessibilityclient": [
+      "extra-cmake-modules"
+    ],
+    "libqmycroft": [
+      "extra-cmake-modules"
+    ],
+    "licensedigger": [
+      "extra-cmake-modules"
+    ],
+    "licentia": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kitemmodels"
+    ],
+    "lokalize": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kxmlgui",
+      "sonnet"
+    ],
+    "lskat": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "mailcommon": [
+      "akonadi",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "karchive",
+      "kcodecs",
+      "kmailtransport",
+      "kmime",
+      "libkdepim",
+      "mailimporter",
+      "messagelib",
+      "pimcommon"
+    ],
+    "mailimporter": [
+      "akonadi",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "kmime",
+      "pimcommon"
+    ],
+    "marble": [
+      "extra-cmake-modules"
+    ],
+    "mark": [
+      "extra-cmake-modules",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kxmlgui"
+    ],
+    "markdownpart": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kparts"
+    ],
+    "marknote": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami"
+    ],
+    "massif-visualizer": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kdiagram",
+      "kgraphviewer",
+      "ki18n",
+      "kio",
+      "kparts"
+    ],
+    "mauikit": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "knotifications",
+      "kwindowsystem",
+      "mauiman"
+    ],
+    "mauikit-accounts": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "mauikit"
+    ],
+    "mauikit-calendar": [
+      "akonadi-calendar",
+      "akonadi-contacts",
+      "calendarsupport",
+      "eventviews",
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "mauikit"
+    ],
+    "mauikit-documents": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "mauikit"
+    ],
+    "mauikit-filebrowsing": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "mauikit"
+    ],
+    "mauikit-imagetools": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kquickimageeditor",
+      "mauikit"
+    ],
+    "mauikit-terminal": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "mauikit"
+    ],
+    "mauikit-texteditor": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "mauikit",
+      "syntax-highlighting"
+    ],
+    "mbox-importer": [
+      "akonadi",
+      "extra-cmake-modules",
+      "mailcommon",
+      "mailimporter"
+    ],
+    "merkuro": [
+      "akonadi",
+      "akonadi-calendar",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcalutils",
+      "kconfigwidgets",
+      "kcontacts",
+      "kdepim-runtime",
+      "kirigami",
+      "kirigami-addons",
+      "kmime",
+      "kwindowsystem",
+      "kxmlgui",
+      "mailcommon",
+      "mimetreeparser",
+      "qqc2-desktop-style"
+    ],
+    "messagelib": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "akonadi-search",
+      "extra-cmake-modules",
+      "grantleetheme",
+      "kcolorscheme",
+      "kcontacts",
+      "kidentitymanagement",
+      "kmailtransport",
+      "kmbox",
+      "kmime",
+      "kpimtextedit",
+      "kservice",
+      "ktextaddons",
+      "ktexttemplate",
+      "libgravatar",
+      "libkdepim",
+      "libkleo",
+      "pimcommon",
+      "qca"
+    ],
+    "milou": [
+      "extra-cmake-modules",
+      "ki18n",
+      "krunner",
+      "libplasma"
+    ],
+    "mimetreeparser": [
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kmbox",
+      "kmime",
+      "kwidgetsaddons",
+      "libkleo"
+    ],
+    "minuet": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n"
+    ],
+    "modemmanager-qt": [
+      "extra-cmake-modules"
+    ],
+    "mpvqt": [
+      "extra-cmake-modules"
+    ],
+    "neochat": [
+      "cmark",
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "knotifications",
+      "kquickcharts",
+      "kquickimageeditor",
+      "kstatusnotifieritem",
+      "kwindowsystem",
+      "libquotient",
+      "prison",
+      "qcoro",
+      "qqc2-desktop-style",
+      "qtkeychain",
+      "selenium-webdriver-at-spi",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "networkmanager-qt": [
+      "extra-cmake-modules"
+    ],
+    "notae": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kwindowsystem",
+      "syntax-highlighting"
+    ],
+    "ocean-sound-theme": [
+      "extra-cmake-modules"
+    ],
+    "okteta": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kcompletion",
+      "kconfigwidgets",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kitemviews",
+      "knewstuff",
+      "kparts",
+      "kservice",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "okular": [
+      "breeze-icons",
+      "karchive",
+      "kbookmarks",
+      "kdegraphics-mobipocket",
+      "ki18n",
+      "kio",
+      "kparts",
+      "kpty",
+      "ktextwidgets",
+      "kxmlgui",
+      "libkexiv2",
+      "phonon",
+      "plasma-activities",
+      "purpose",
+      "threadweaver"
+    ],
+    "oxygen": [
+      "extra-cmake-modules",
+      "frameworkintegration",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdecoration",
+      "kguiaddons",
+      "ki18n",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma"
+    ],
+    "oxygen-icons": [
+      "extra-cmake-modules"
+    ],
+    "oxygen-sounds": [
+      "extra-cmake-modules"
+    ],
+    "palapeli": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kitemviews",
+      "knotifications",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "parley": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "knotifications",
+      "ktextwidgets",
+      "kxmlgui",
+      "libkeduvocdocument",
+      "sonnet"
+    ],
+    "partitionmanager": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "kpmcore",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "perceptualcolor": [
+      "extra-cmake-modules"
+    ],
+    "peruse": [
+      "baloo",
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdeclarative",
+      "kfilemetadata",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "knewstuff"
+    ],
+    "phonon": [
+      "extra-cmake-modules"
+    ],
+    "phonon-gstreamer": [
+      "phonon"
+    ],
+    "phonon-vlc": [
+      "extra-cmake-modules",
+      "phonon"
+    ],
+    "picmi": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "knewstuff",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "libkdegames"
+    ],
+    "pim-data-exporter": [
+      "akonadi",
+      "akonadi-notes",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcontacts",
+      "kidentitymanagement",
+      "kmailtransport",
+      "kmime",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "kuserfeedback",
+      "mailcommon",
+      "pimcommon"
+    ],
+    "pim-sieve-editor": [
+      "extra-cmake-modules",
+      "kimap",
+      "kmailtransport",
+      "kuserfeedback",
+      "kxmlgui",
+      "libksieve",
+      "pimcommon",
+      "qtkeychain"
+    ],
+    "pimcommon": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-search",
+      "extra-cmake-modules",
+      "kcalendarcore",
+      "kcmutils",
+      "kconfig",
+      "kcontacts",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kimap",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "kldap",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "kservice",
+      "ktextaddons",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkdepim",
+      "purpose",
+      "sonnet"
+    ],
+    "plank-player": [
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdeclarative",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma",
+      "plasma-workspace",
+      "solid"
+    ],
+    "plasma-activities": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kwindowsystem"
+    ],
+    "plasma-activities-stats": [
+      "extra-cmake-modules",
+      "plasma-activities"
+    ],
+    "plasma-bigscreen": [
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kpackage",
+      "kservice",
+      "ksvg",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma",
+      "plasma-activities",
+      "plasma-activities-stats",
+      "plasma-workspace",
+      "plasma5support",
+      "solid"
+    ],
+    "plasma-browser-integration": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kfilemetadata",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "krunner",
+      "kservice",
+      "kstatusnotifieritem",
+      "plasma-activities",
+      "plasma-workspace",
+      "purpose"
+    ],
+    "plasma-camera": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami"
+    ],
+    "plasma-desktop": [
+      "attica",
+      "baloo",
+      "breeze",
+      "extra-cmake-modules",
+      "kactivitymanagerd",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kded",
+      "kfilemetadata",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kio-extras",
+      "kirigami-addons",
+      "kitemmodels",
+      "kitemviews",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kpackage",
+      "kparts",
+      "krunner",
+      "kservice",
+      "ktextwidgets",
+      "kunitconversion",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libksysguard",
+      "libplasma",
+      "packagekit-qt",
+      "plasma-activities",
+      "plasma-activities-stats",
+      "plasma-integration",
+      "plasma-workspace",
+      "powerdevil",
+      "qqc2-desktop-style",
+      "selenium-webdriver-at-spi",
+      "solid",
+      "sonnet",
+      "systemsettings",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "plasma-dialer": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kpeople",
+      "kwindowsystem",
+      "modemmanager-qt",
+      "wayland"
+    ],
+    "plasma-disks": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "solid"
+    ],
+    "plasma-firewall": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n"
+    ],
+    "plasma-integration": [
+      "breeze",
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "wayland"
+    ],
+    "plasma-mobile": [
+      "bluedevil",
+      "bluez-qt",
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami-addons",
+      "kitemmodels",
+      "kjobwidgets",
+      "knotifications",
+      "kpackage",
+      "kservice",
+      "kwayland",
+      "kwin",
+      "kwindowsystem",
+      "libkscreen",
+      "libplasma",
+      "milou",
+      "modemmanager-qt",
+      "networkmanager-qt",
+      "plasma-nm",
+      "plasma-pa",
+      "plasma-workspace",
+      "qqc2-breeze-style"
+    ],
+    "plasma-nano": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kitemmodels",
+      "kservice",
+      "ksvg",
+      "kwayland",
+      "kwindowsystem",
+      "libplasma"
+    ],
+    "plasma-nm": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kpackage",
+      "kservice",
+      "ksvg",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma",
+      "modemmanager-qt",
+      "networkmanager-qt",
+      "qcoro",
+      "solid"
+    ],
+    "plasma-pa": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdeclarative",
+      "kglobalaccel",
+      "ki18n",
+      "kirigami-addons",
+      "kpackage",
+      "kstatusnotifieritem",
+      "ksvg",
+      "libplasma",
+      "plasma-workspace",
+      "selenium-webdriver-at-spi"
+    ],
+    "plasma-pass": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kitemmodels",
+      "libplasma",
+      "plasma5support"
+    ],
+    "plasma-phonebook": [
+      "extra-cmake-modules",
+      "kcontacts",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kpeople"
+    ],
+    "plasma-remotecontrollers": [
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kpackage",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma",
+      "plasma-workspace",
+      "solid",
+      "wayland"
+    ],
+    "plasma-sdk": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "kjobwidgets",
+      "kpackage",
+      "kparts",
+      "ksvg",
+      "ktexteditor",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "plasma5support",
+      "solid",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "plasma-settings": [
+      "extra-cmake-modules",
+      "kauth",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami-addons",
+      "kservice",
+      "libplasma",
+      "modemmanager-qt",
+      "networkmanager-qt",
+      "solid"
+    ],
+    "plasma-simplemenu": [
+      "extra-cmake-modules",
+      "ki18n",
+      "libplasma"
+    ],
+    "plasma-systemmonitor": [
+      "attica",
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami-addons",
+      "kitemmodels",
+      "knewstuff",
+      "kpackage",
+      "kservice",
+      "kwindowsystem",
+      "libksysguard"
+    ],
+    "plasma-thunderbolt": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "knotifications",
+      "kservice"
+    ],
+    "plasma-vault": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kitemmodels",
+      "kjobwidgets",
+      "kpackage",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libksysguard",
+      "libplasma",
+      "networkmanager-qt",
+      "plasma-activities",
+      "solid"
+    ],
+    "plasma-wayland-protocols": [
+      "extra-cmake-modules"
+    ],
+    "plasma-welcome": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "ksvg",
+      "kwindowsystem",
+      "libplasma"
+    ],
+    "plasma-workspace": [
+      "appstream-qt",
+      "attica",
+      "baloo",
+      "extra-cmake-modules",
+      "kauth",
+      "kbookmarks",
+      "kcmutils",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdeclarative",
+      "kded",
+      "kdesu",
+      "kfilemetadata",
+      "kglobalaccel",
+      "kglobalacceld",
+      "kguiaddons",
+      "kholidays",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kio-extras",
+      "kirigami-addons",
+      "kitemmodels",
+      "kitemviews",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kpackage",
+      "kparts",
+      "kpipewire",
+      "kquickcharts",
+      "krunner",
+      "kscreenlocker",
+      "kservice",
+      "kstatusnotifieritem",
+      "ktexteditor",
+      "ktextwidgets",
+      "kunitconversion",
+      "kuserfeedback",
+      "kwallet",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwin",
+      "kwindowsystem",
+      "kxmlgui",
+      "layer-shell-qt",
+      "libkexiv2",
+      "libkscreen",
+      "libksysguard",
+      "libplasma",
+      "milou",
+      "networkmanager-qt",
+      "packagekit-qt",
+      "phonon",
+      "plasma-activities",
+      "plasma-activities-stats",
+      "plasma-nano",
+      "plasma-wayland-protocols",
+      "plasma5support",
+      "polkit-qt-1",
+      "prison",
+      "qqc2-desktop-style",
+      "selenium-webdriver-at-spi",
+      "solid",
+      "sonnet",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "plasma5support": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "knotifications",
+      "kservice",
+      "libksysguard",
+      "libplasma",
+      "solid"
+    ],
+    "plasmatube": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "mpvqt",
+      "purpose",
+      "qtkeychain"
+    ],
+    "plymouth-kcm": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "kservice",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "polkit-kde-agent-1": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "ki18n",
+      "kwindowsystem",
+      "polkit-qt-1"
+    ],
+    "powerdevil": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kidletime",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kwindowsystem",
+      "kxmlgui",
+      "libkscreen",
+      "plasma-activities",
+      "plasma-workspace",
+      "solid"
+    ],
+    "powerplant": [
+      "extra-cmake-modules",
+      "futuresql",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "qqc2-desktop-style"
+    ],
+    "poxml": [
+      "extra-cmake-modules",
+      "kdoctools"
+    ],
+    "print-manager": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "knotifications",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "libplasma"
+    ],
+    "prison": [
+      "extra-cmake-modules",
+      "zxing-cpp"
+    ],
+    "pulseaudio-qt": [
+      "extra-cmake-modules"
+    ],
+    "purpose": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kservice"
+    ],
+    "qmlkonsole": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kpty",
+      "kwindowsystem"
+    ],
+    "qqc2-breeze-style": [
+      "extra-cmake-modules",
+      "kcodecs",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kguiaddons",
+      "kiconthemes",
+      "kirigami",
+      "kquickcharts"
+    ],
+    "qqc2-desktop-style": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kiconthemes",
+      "kirigami",
+      "sonnet"
+    ],
+    "qrca": [
+      "extra-cmake-modules",
+      "kcontacts",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "knotifications",
+      "kservice",
+      "networkmanager-qt",
+      "prison",
+      "purpose"
+    ],
+    "raven": [
+      "akonadi",
+      "akonadi-contacts",
+      "akonadi-mime",
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdeclarative",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "kldap",
+      "kmailtransport",
+      "kmime",
+      "libkdepim",
+      "mailcommon",
+      "messagelib",
+      "pimcommon"
+    ],
+    "rkward": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "knotifications",
+      "kparts",
+      "ktexteditor",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "rocs": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kitemviews",
+      "ktexteditor",
+      "kxmlgui"
+    ],
+    "rolisteam": [
+      "extra-cmake-modules"
+    ],
+    "rsibreak": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kconfigwidgets",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "ki18n",
+      "kidletime",
+      "knotifications",
+      "knotifyconfig",
+      "ktextwidgets",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "ruqola": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kidletime",
+      "kio",
+      "kitemviews",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kstatusnotifieritem",
+      "ktextaddons",
+      "ktextwidgets",
+      "kuserfeedback",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "prison",
+      "purpose",
+      "qtkeychain",
+      "selenium-webdriver-at-spi",
+      "sonnet",
+      "syntax-highlighting"
+    ],
+    "samba-mounter": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcmutils",
+      "kconfig",
+      "ki18n",
+      "kio",
+      "solid"
+    ],
+    "sddm-kcm": [
+      "extra-cmake-modules",
+      "karchive",
+      "kauth",
+      "kcmutils",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "knewstuff",
+      "kservice"
+    ],
+    "selenium-webdriver-at-spi": [
+      "extra-cmake-modules",
+      "kpipewire",
+      "kwayland",
+      "kwin",
+      "kwindowsystem",
+      "wayland"
+    ],
+    "signon-kwallet-extension": [
+      "extra-cmake-modules",
+      "kwallet"
+    ],
+    "skanlite": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kxmlgui",
+      "libksane"
+    ],
+    "skanpage": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kirigami",
+      "kquickimageeditor",
+      "ksanecore",
+      "kxmlgui",
+      "purpose"
+    ],
+    "skrooge": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemviews",
+      "kjobwidgets",
+      "knewstuff",
+      "knotifyconfig",
+      "kparts",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-activities"
+    ],
+    "smaragd": [
+      "kconfig",
+      "kcoreaddons",
+      "kdecoration",
+      "ki18n",
+      "kwidgetsaddons"
+    ],
+    "smb4k": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kdnssd",
+      "kdoctools",
+      "kdsoap",
+      "kdsoap-ws-discovery-client",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kjobwidgets",
+      "knotifications",
+      "kstatusnotifieritem",
+      "kwallet",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "solid"
+    ],
+    "solid": [
+      "extra-cmake-modules"
+    ],
+    "sonnet": [
+      "extra-cmake-modules"
+    ],
+    "spacebar": [
+      "extra-cmake-modules",
+      "futuresql",
+      "kconfig",
+      "kcontacts",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kpeople",
+      "modemmanager-qt",
+      "qcoro"
+    ],
+    "spectacle": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "kguiaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "knotifications",
+      "kpipewire",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "layer-shell-qt",
+      "purpose",
+      "wayland"
+    ],
+    "step": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knewstuff",
+      "kplotting",
+      "ktextwidgets",
+      "kxmlgui"
+    ],
+    "subtitlecomposer": [
+      "breeze-icons",
+      "extra-cmake-modules",
+      "kcodecs",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kio",
+      "ktextwidgets",
+      "kwidgetsaddons",
+      "kxmlgui",
+      "sonnet"
+    ],
+    "svgpart": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kparts"
+    ],
+    "sweeper": [
+      "extra-cmake-modules",
+      "kbookmarks",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "ki18n",
+      "ktextwidgets",
+      "kxmlgui",
+      "plasma-activities-stats"
+    ],
+    "symboleditor": [
+      "extra-cmake-modules",
+      "kconfig",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons",
+      "kxmlgui"
+    ],
+    "symmy": [
+      "extra-cmake-modules",
+      "kdoctools",
+      "ki18n",
+      "kio",
+      "kwidgetsaddons"
+    ],
+    "syndication": [
+      "extra-cmake-modules",
+      "kcodecs"
+    ],
+    "syntax-highlighting": [
+      "extra-cmake-modules"
+    ],
+    "systemdgenie": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcrash",
+      "ki18n",
+      "kxmlgui"
+    ],
+    "systemsettings": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcrash",
+      "kdbusaddons",
+      "kdoctools",
+      "kguiaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "kitemmodels",
+      "kitemviews",
+      "knotifications",
+      "krunner",
+      "kservice",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "plasma-activities"
+    ],
+    "tellico": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "kcrash",
+      "kdoctools",
+      "kfilemetadata",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kitemmodels",
+      "knewstuff",
+      "kparts",
+      "ktexteditor",
+      "kxmlgui",
+      "libkcddb",
+      "libksane"
+    ],
+    "telly-skout": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons"
+    ],
+    "threadweaver": [
+      "extra-cmake-modules"
+    ],
+    "toad": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "kwindowsystem"
+    ],
+    "tokodon": [
+      "extra-cmake-modules",
+      "kcolorscheme",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "kitemmodels",
+      "knotifications",
+      "kunifiedpush",
+      "kwindowsystem",
+      "mpvqt",
+      "purpose",
+      "qqc2-desktop-style",
+      "qtkeychain",
+      "selenium-webdriver-at-spi"
+    ],
+    "trojita": [
+      "akonadi-contacts",
+      "extra-cmake-modules",
+      "sonnet"
+    ],
+    "umbrello": [
+      "extra-cmake-modules",
+      "karchive",
+      "kcompletion",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdev-php",
+      "kdevelop",
+      "kdevelop-pg-qt",
+      "kdoctools",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "ktexteditor",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui"
+    ],
+    "upnp-lib-qt": [
+      "extra-cmake-modules",
+      "kdsoap"
+    ],
+    "vail": [
+      "extra-cmake-modules",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "ki18n",
+      "kio",
+      "kirigami",
+      "kirigami-addons",
+      "knotifications",
+      "kwindowsystem",
+      "qqc2-desktop-style",
+      "qtkeychain"
+    ],
+    "vakzination": [
+      "kconfig",
+      "kcoreaddons",
+      "khealthcertificate",
+      "ki18n",
+      "kirigami",
+      "kitinerary",
+      "prison"
+    ],
+    "vvave": [
+      "extra-cmake-modules",
+      "kconfig",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "mauikit",
+      "mauikit-accounts",
+      "mauikit-filebrowsing"
+    ],
+    "wacomtablet": [
+      "extra-cmake-modules",
+      "kcmutils",
+      "kconfig",
+      "kcoreaddons",
+      "kdbusaddons",
+      "kdoctools",
+      "kglobalaccel",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "libplasma",
+      "plasma5support"
+    ],
+    "washipad": [
+      "extra-cmake-modules"
+    ],
+    "xdg-desktop-portal-kde": [
+      "extra-cmake-modules",
+      "kauth",
+      "kcodecs",
+      "kcompletion",
+      "kconfig",
+      "kconfigwidgets",
+      "kcoreaddons",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "kirigami",
+      "kitemviews",
+      "kjobwidgets",
+      "knotifications",
+      "kservice",
+      "kstatusnotifieritem",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem",
+      "kxmlgui",
+      "solid",
+      "wayland",
+      "wayland-protocols"
+    ],
+    "xdg-portal-test-kde": [
+      "extra-cmake-modules",
+      "ki18n",
+      "kio",
+      "knotifications",
+      "kwayland"
+    ],
+    "xwaylandvideobridge": [
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "knotifications",
+      "kpipewire",
+      "kstatusnotifieritem",
+      "kwindowsystem"
+    ],
+    "yakuake": [
+      "extra-cmake-modules",
+      "karchive",
+      "kconfig",
+      "kcoreaddons",
+      "kcrash",
+      "kdbusaddons",
+      "kglobalaccel",
+      "ki18n",
+      "kiconthemes",
+      "kio",
+      "knewstuff",
+      "knotifications",
+      "knotifyconfig",
+      "kparts",
+      "kstatusnotifieritem",
+      "kwayland",
+      "kwidgetsaddons",
+      "kwindowsystem"
+    ],
+    "zanshin": [
+      "akonadi",
+      "akonadi-calendar",
+      "extra-cmake-modules",
+      "kcoreaddons",
+      "ki18n",
+      "kontactinterface",
+      "krunner",
+      "kwindowsystem"
+    ]
+  },
+  "version": "56eceecf"
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/generated/licenses.json b/nixpkgs/pkgs/kde/generated/licenses.json
new file mode 100644
index 000000000000..5b3e4359cf94
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/licenses.json
@@ -0,0 +1,2873 @@
+{
+  "akonadi": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ],
+  "akonadi-calendar": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "akonadi-calendar-tools": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "akonadi-contacts": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "akonadi-import-wizard": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "akonadi-mime": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "akonadi-notes": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "akonadi-search": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "akonadiconsole": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "akregator": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "alligator": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "analitza": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "angelfish": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "arianna": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "ark": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "MIT"
+  ],
+  "artikulate": [
+    "BSD-2-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "attica": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "audiocd-kio": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-3.0-or-later"
+  ],
+  "audiotube": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "baloo": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "bzip2-1.0.6"
+  ],
+  "baloo-widgets": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "blinken": [
+    "CC0-1.0",
+    "GFDL-1.2-only",
+    "GPL-2.0-or-later",
+    "LicenseRef-SJFonts"
+  ],
+  "bluedevil": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "bluez-qt": [
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "bomber": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "bovo": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "breeze": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ],
+  "breeze-grub": [
+    "BSD-2-Clause",
+    "CC-BY-SA-4.0",
+    "Font-exception-2.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "breeze-gtk": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "breeze-icons": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "breeze-plymouth": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "calendarsupport": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "calindori": [
+    "BSD-2-Clause",
+    "CC-BY-4.0",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later"
+  ],
+  "cantor": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "cervisia": [
+    "CC0-1.0"
+  ],
+  "colord-kde": [
+    "CC0-1.0",
+    "LGPL-3.0-or-later"
+  ],
+  "discover": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "dolphin": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "dolphin-plugins": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "MIT"
+  ],
+  "dragon": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "drkonqi": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "elisa": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "eventviews": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "extra-cmake-modules": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "MIT"
+  ],
+  "falkon": [
+    "CC0-1.0"
+  ],
+  "ffmpegthumbs": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "filelight": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "flatpak-kcm": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "frameworkintegration": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "ghostwriter": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later"
+  ],
+  "granatier": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only"
+  ],
+  "grantlee-editor": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "grantleetheme": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "gwenview": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "incidenceeditor": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "isoimagewriter": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later"
+  ],
+  "itinerary": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "juk": [
+    "CC0-1.0"
+  ],
+  "k3b": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kaccounts-integration": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kaccounts-providers": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kactivitymanagerd": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kaddressbook": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kajongg": [
+    "CC0-1.0",
+    "GPL-2.0"
+  ],
+  "kalarm": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kalgebra": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kalk": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later"
+  ],
+  "kalzium": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kamera": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kamoso": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later"
+  ],
+  "kanagram": [
+    "CC0-1.0"
+  ],
+  "kapidox": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-3.0-or-later"
+  ],
+  "kapman": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kapptemplate": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "karchive": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kasts": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kate": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "MIT"
+  ],
+  "katomic": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kauth": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "kbackup": [
+    "CC0-1.0"
+  ],
+  "kblackbox": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kblocks": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kbookmarks": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kbounce": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kbreakout": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kbruch": [
+    "CC0-1.0",
+    "GFDL-1.2-only",
+    "GPL-2.0-or-later"
+  ],
+  "kcachegrind": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-Qt-Commercial",
+    "Qt-LGPL-exception-1.1"
+  ],
+  "kcalc": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kcalendarcore": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-or-later"
+  ],
+  "kcalutils": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kcharselect": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kclock": [
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kcmutils": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kcodecs": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "MIT",
+    "MPL-1.1"
+  ],
+  "kcolorchooser": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "kcolorscheme": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kcompletion": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kconfig": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kconfigwidgets": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kcontacts": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kcoreaddons": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-Qt-Commercial",
+    "MPL-1.1",
+    "Qt-LGPL-exception-1.1"
+  ],
+  "kcrash": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kcron": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kdav": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kdbusaddons": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kde-cli-tools": [
+    "Artistic-2.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kde-dev-scripts": [
+    "BSD-2-Clause",
+    "CC0-1.0"
+  ],
+  "kde-dev-utils": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kde-gtk-config": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kde-inotify-survey": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kdebugsettings": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kdeclarative": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ],
+  "kdeconnect-kde": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kdecoration": [
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kded": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kdeedu-data": [
+    "CC0-1.0"
+  ],
+  "kdegraphics-mobipocket": [
+    "CC0-1.0"
+  ],
+  "kdegraphics-thumbnailers": [
+    "CC0-1.0"
+  ],
+  "kdenetwork-filesharing": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kdenlive": [
+    "Apache-2.0",
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "BSL-1.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kdepim-addons": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kdepim-runtime": [
+    "AGPL-3.0-or-later",
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kdeplasma-addons": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kdesdk-kio": [
+    "CC0-1.0"
+  ],
+  "kdesdk-thumbnailers": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kdesu": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kdev-php": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kdev-python": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ],
+  "kdevelop": [
+    "Apache-2.0",
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "BSL-1.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-MIT-KDevelop-Ideal",
+    "LicenseRef-Qt-Commercial",
+    "LicenseRef-Qt-LGPL-exception-1.0",
+    "MIT",
+    "Qt-GPL-exception-1.0"
+  ],
+  "kdf": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kdialog": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kdiamond": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kdnssd": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kdoctools": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "keditbookmarks": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "keysmith": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later"
+  ],
+  "kfilemetadata": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kfind": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kfourinline": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kgamma": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kgeography": [
+    "CC0-1.0"
+  ],
+  "kget": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "kglobalaccel": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kglobalacceld": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kgoldrunner": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kgpg": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kguiaddons": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "khangman": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "khealthcertificate": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "MIT",
+    "W3C-20150513"
+  ],
+  "khelpcenter": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only"
+  ],
+  "kholidays": [
+    "BSD-2-Clause",
+    "Bison-exception-2.2",
+    "CC0-1.0",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "ki18n": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "ODbL-1.0"
+  ],
+  "kiconthemes": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kidentitymanagement": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kidletime": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kig": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kigo": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "killbots": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kimageformats": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kimagemapeditor": [
+    "CC0-1.0"
+  ],
+  "kimap": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kinfocenter": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kio": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kio-admin": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kio-extras": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kio-extras-kf5": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kio-gdrive": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kio-zeroconf": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only"
+  ],
+  "kipi-plugins": [
+    "CC0-1.0"
+  ],
+  "kirigami": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kirigami-gallery": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0"
+  ],
+  "kiriki": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "kitemmodels": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later"
+  ],
+  "kitemviews": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kiten": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LicenseRef-EDRDG"
+  ],
+  "kitinerary": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "ODbL-1.0"
+  ],
+  "kjobwidgets": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kjournald": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-or-later",
+    "MIT"
+  ],
+  "kjumpingcube": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kldap": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "MIT"
+  ],
+  "kleopatra": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "klettres": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only"
+  ],
+  "klickety": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "klines": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kmag": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GFDL-1.2-only",
+    "GPL-2.0-or-later"
+  ],
+  "kmahjongg": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kmail": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kmail-account-wizard": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kmailtransport": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kmbox": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kmenuedit": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later"
+  ],
+  "kmime": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "kmines": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kmix": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kmousetool": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kmouth": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "kmplot": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "knavalbattle": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "knetwalk": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "knewstuff": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "knights": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "knotes": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "knotifications": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "knotifyconfig": [
+    "CC0-1.0",
+    "LGPL-2.0-only"
+  ],
+  "koko": [
+    "BSD-3-Clause",
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kolf": [
+    "CC0-1.0"
+  ],
+  "kollision": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kolourpaint": [
+    "CC0-1.0"
+  ],
+  "kompare": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kongress": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later"
+  ],
+  "konqueror": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-Qt-Commercial",
+    "LicenseRef-Qt-exception",
+    "Qt-GPL-exception-1.0"
+  ],
+  "konquest": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "konsole": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ],
+  "kontact": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kontactinterface": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kontrast": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later"
+  ],
+  "konversation": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kopeninghours": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "korganizer": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "kosmindoormap": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "MIT",
+    "ODbL-1.0"
+  ],
+  "kpackage": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kparts": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kpat": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kpeople": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "kpimtextedit": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kpipewire": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kpkpass": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kplotting": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kpmcore": [
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later",
+    "MIT"
+  ],
+  "kpty": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kpublictransport": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "MIT",
+    "ODbL-1.0"
+  ],
+  "kqtquickcharts": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "kquickcharts": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "krdc": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "krecorder": [
+    "BSD-3-Clause",
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "GPL-3.0-or-later"
+  ],
+  "kreversi": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only"
+  ],
+  "krfb": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kross-interpreters": [
+    "CC0-1.0"
+  ],
+  "kruler": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "krunner": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "ksanecore": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kscreen": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kscreenlocker": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kservice": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kshisen": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ksirk": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ksmtp": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "ksnakeduel": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kspaceduel": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ksquares": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ksshaskpass": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kstatusnotifieritem": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "ksudoku": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "ksvg": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "ksystemlog": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ksystemstats": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kteatime": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "ktexteditor": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "MIT"
+  ],
+  "ktexttemplate": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "ktextwidgets": [
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "ktimer": [
+    "BSD-3-Clause",
+    "CC0-1.0"
+  ],
+  "ktnef": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "ktorrent": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "ktouch": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "ktrip": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "ktuberling": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kturtle": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later"
+  ],
+  "kubrick": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kunitconversion": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "kuserfeedback": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "MIT"
+  ],
+  "kwallet": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-or-later"
+  ],
+  "kwallet-pam": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "kwalletmanager": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "kwave": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kwayland": [
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kwayland-integration": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kweather": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "kwidgetsaddons": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "kwin": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kwindowsystem": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "kwordquiz": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "kwrited": [
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "kxmlgui": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "layer-shell-qt": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-3.0-or-later",
+    "MIT"
+  ],
+  "libgravatar": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "libkcddb": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "libkcompactdisc": [
+    "CC0-1.0"
+  ],
+  "libkdcraw": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "libkdegames": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "ICS",
+    "LGPL-2.0-only"
+  ],
+  "libkdepim": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "libkeduvocdocument": [
+    "BSD-1-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "libkexiv2": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "libkgapi": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "libkipi": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "libkleo": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GCC-exception-3.1",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "libkmahjongg": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "libkomparediff2": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "libksane": [
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "libkscreen": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "libksieve": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "libksysguard": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "libktorrent": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "MIT"
+  ],
+  "libplasma": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-Qt-Commercial",
+    "Qt-LGPL-exception-1.1"
+  ],
+  "lokalize": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-Qt-Commercial-exception-1.0"
+  ],
+  "lskat": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "mailcommon": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "mailimporter": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "marble": [
+    "Apache-2.0",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-Qt-Commercial",
+    "MIT",
+    "Qt-LGPL-exception-1.1"
+  ],
+  "markdownpart": [
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "mbox-importer": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "merkuro": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-Qt-Commercial-exception-1.0"
+  ],
+  "messagelib": [
+    "BSD-3-Clause",
+    "BSL-1.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "milou": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "mimetreeparser": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFULLR",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "minuet": [
+    "CC0-1.0"
+  ],
+  "modemmanager-qt": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "neochat": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "networkmanager-qt": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "ocean-sound-theme": [
+    "BSD-2-Clause",
+    "CC-BY-SA-4.0",
+    "CC0-1.0"
+  ],
+  "okular": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT",
+    "X11"
+  ],
+  "oxygen": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "oxygen-sounds": [
+    "BSD-2-Clause",
+    "CC-BY-3.0",
+    "CC0-1.0",
+    "LGPL-3.0-or-later"
+  ],
+  "palapeli": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "parley": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "partitionmanager": [
+    "CC-BY-4.0",
+    "CC0-1.0",
+    "GFDL-1.2-or-later",
+    "GPL-3.0-or-later",
+    "LGPL-3.0-or-later",
+    "MIT"
+  ],
+  "picmi": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "pim-data-exporter": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "pim-sieve-editor": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "pimcommon": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "plasma-activities": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "plasma-activities-stats": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-browser-integration": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-or-later",
+    "MIT"
+  ],
+  "plasma-desktop": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "plasma-disks": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-firewall": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "FSFAP",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "plasma-integration": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-KFQF-Accepted-GPL",
+    "LicenseRef-Qt-Commercial"
+  ],
+  "plasma-mobile": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "plasma-nano": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "MIT"
+  ],
+  "plasma-nm": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-pa": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-sdk": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later"
+  ],
+  "plasma-systemmonitor": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-thunderbolt": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "plasma-vault": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plasma-welcome": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "plasma-workspace": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LGPL-3.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT",
+    "None"
+  ],
+  "plasma-workspace-wallpapers": [],
+  "plasma5support": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "plasmatube": [
+    "CC-BY-SA-4.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "plymouth-kcm": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "polkit-kde-agent-1": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "powerdevil": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-only",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "poxml": [
+    "CC0-1.0"
+  ],
+  "print-manager": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "prison": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "MIT"
+  ],
+  "purpose": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "qmlkonsole": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later"
+  ],
+  "qqc2-breeze-style": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-KFQF-Accepted-GPL"
+  ],
+  "qqc2-desktop-style": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "LicenseRef-KFQF-Accepted-GPL",
+    "LicenseRef-Qt-Commercial"
+  ],
+  "rocs": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "sddm-kcm": [
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "signon-kwallet-extension": [
+    "CC0-1.0"
+  ],
+  "skanlite": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "skanpage": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "solid": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "sonnet": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-or-later"
+  ],
+  "spectacle": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "step": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "svgpart": [
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later"
+  ],
+  "sweeper": [
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "syndication": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "Qt-Commercial-exception-1.0"
+  ],
+  "syntax-highlighting": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "MIT"
+  ],
+  "systemsettings": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.1-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "telly-skout": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "LGPL-2.1-or-later"
+  ],
+  "threadweaver": [
+    "CC0-1.0",
+    "LGPL-2.0-or-later"
+  ],
+  "tokodon": [
+    "BSD-2-Clause",
+    "BSD-3-Clause",
+    "BSL-1.0",
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-2.1-or-later",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "LicenseRef-KDE-Accepted-LGPL"
+  ],
+  "umbrello": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-2.0-or-later",
+    "GPL-3.0-only",
+    "GPL-3.0-or-later",
+    "LGPL-2.0-only",
+    "LGPL-2.0-or-later",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "wacomtablet": [],
+  "xdg-desktop-portal-kde": [
+    "BSD-2-Clause",
+    "CC0-1.0",
+    "GPL-2.0-or-later",
+    "LGPL-2.0-or-later",
+    "LGPL-2.1-only",
+    "LGPL-3.0-only",
+    "LicenseRef-KDE-Accepted-LGPL",
+    "MIT"
+  ],
+  "yakuake": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL"
+  ],
+  "zanshin": [
+    "CC0-1.0",
+    "GPL-2.0-only",
+    "GPL-3.0-only",
+    "LicenseRef-KDE-Accepted-GPL",
+    "MIT"
+  ]
+}
diff --git a/nixpkgs/pkgs/kde/generated/projects.json b/nixpkgs/pkgs/kde/generated/projects.json
new file mode 100644
index 000000000000..e534519b216a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/projects.json
@@ -0,0 +1,8078 @@
+{
+  ".github": {
+    "description": "Please see https://docs.github.com/en/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file for more information",
+    "name": ".github",
+    "project_path": "sysadmin/.github",
+    "repo_path": "sysadmin/.github"
+  },
+  "abakus": {
+    "description": "Simple, keyboard-driven calculator",
+    "name": "abakus",
+    "project_path": "playground/utils/abakus",
+    "repo_path": "utilities/abakus"
+  },
+  "about-distro": {
+    "description": "Moved to KInfoCenter source.",
+    "name": "about-distro",
+    "project_path": "unmaintained/about-distro",
+    "repo_path": "unmaintained/about-distro"
+  },
+  "accessibility-inspector": {
+    "description": "Inspect your application accessibility tree",
+    "name": "accessibility-inspector",
+    "project_path": "extragear/accessibility/accessibility-inspector",
+    "repo_path": "accessibility/accessibility-inspector"
+  },
+  "accounts-qt": {
+    "description": null,
+    "name": "accounts-qt",
+    "project_path": "third-party/libaccounts-qt",
+    "repo_path": null
+  },
+  "activities-support": {
+    "description": "Plugins for 3rd party applications to be able to support activities and Share Like Connect.",
+    "name": "activities-support",
+    "project_path": "unmaintained/activities-support",
+    "repo_path": "unmaintained/activities-support"
+  },
+  "akademy-badges": {
+    "description": "Conference badge generation tooling",
+    "name": "akademy-badges",
+    "project_path": "community/akademy-badges",
+    "repo_path": "websites/akademy-badges"
+  },
+  "akademy-checkin": {
+    "description": "Conference check-in management system",
+    "name": "akademy-checkin",
+    "project_path": "community/akademy-checkin",
+    "repo_path": "websites/akademy-checkin"
+  },
+  "aki": {
+    "description": "Extensive IRC client for KDE4.",
+    "name": "aki",
+    "project_path": "unmaintained/aki",
+    "repo_path": "unmaintained/aki"
+  },
+  "akonadi": {
+    "description": "Cross-desktop storage service for PIM data providing concurrent access",
+    "name": "akonadi",
+    "project_path": "kde/pim/akonadi",
+    "repo_path": "pim/akonadi"
+  },
+  "akonadi-airsync": {
+    "description": "Akonadi Resource to download emails from MS Exchange servers",
+    "name": "akonadi-airsync",
+    "project_path": "playground/pim/akonadi-airsync",
+    "repo_path": "pim/akonadi-airsync"
+  },
+  "akonadi-calendar": {
+    "description": "Akonadi calendar integration",
+    "name": "akonadi-calendar",
+    "project_path": "kde/pim/akonadi-calendar",
+    "repo_path": "pim/akonadi-calendar"
+  },
+  "akonadi-calendar-tools": {
+    "description": "Console applications and utilities for managing calendars in Akonadi",
+    "name": "akonadi-calendar-tools",
+    "project_path": "kde/pim/akonadi-calendar-tools",
+    "repo_path": "pim/akonadi-calendar-tools"
+  },
+  "akonadi-contacts": {
+    "description": "Libraries and daemons to implement Contact Management in Akonadi",
+    "name": "akonadi-contacts",
+    "project_path": "kde/pim/akonadi-contacts",
+    "repo_path": "pim/akonadi-contacts"
+  },
+  "akonadi-exchange": {
+    "description": "Akonadi plugin for Exchange groupware functionality",
+    "name": "akonadi-exchange",
+    "project_path": "playground/pim/akonadi-exchange",
+    "repo_path": "pim/akonadi-exchange"
+  },
+  "akonadi-facebook": {
+    "description": "Makes events, contacts, notes and messages from Facebook available in KDE.",
+    "name": "akonadi-facebook",
+    "project_path": "unmaintained/akonadi-facebook",
+    "repo_path": "unmaintained/akonadi-facebook"
+  },
+  "akonadi-git-resource": {
+    "description": "Akonadi Git Resource allows you to see your commits in kmail.",
+    "name": "akonadi-git-resource",
+    "project_path": "unmaintained/akonadi-git-resource",
+    "repo_path": "unmaintained/akonadi-git-resource"
+  },
+  "akonadi-google-applets": {
+    "description": "Plasma applets for Akonadi google resources",
+    "name": "akonadi-google-applets",
+    "project_path": "unmaintained/akonadi-google-applets",
+    "repo_path": "unmaintained/akonadi-google-applets"
+  },
+  "akonadi-googledata-resource": {
+    "description": "It hosts 2 resources for akonadi that enables KDE-PIM apps to sync/edit/add/delete entries (either contacts or calendar events) from a google account.",
+    "name": "akonadi-googledata-resource",
+    "project_path": "unmaintained/akonadi-googledata-resource",
+    "repo_path": "unmaintained/akonadi-googledata-resource"
+  },
+  "akonadi-import-wizard": {
+    "description": "Assistant to import external PIM data into Akonadi for use in KDE PIM apps",
+    "name": "akonadi-import-wizard",
+    "project_path": "kde/pim/akonadi-import-wizard",
+    "repo_path": "pim/akonadi-import-wizard"
+  },
+  "akonadi-mime": {
+    "description": "Helpers to make working with emails through Akonadi easier",
+    "name": "akonadi-mime",
+    "project_path": "kde/pim/akonadi-mime",
+    "repo_path": "pim/akonadi-mime"
+  },
+  "akonadi-notes": {
+    "description": "Libraries and daemons to implement note management in Akonadi",
+    "name": "akonadi-notes",
+    "project_path": "kde/pim/akonadi-notes",
+    "repo_path": "pim/akonadi-notes"
+  },
+  "akonadi-phabricator-resource": {
+    "description": "Synchronize your Phabricator tasks with KOrganizer",
+    "name": "akonadi-phabricator-resource",
+    "project_path": "playground/pim/akonadi-phabricator-resource",
+    "repo_path": "pim/akonadi-phabricator-resource"
+  },
+  "akonadi-search": {
+    "description": "Libraries and daemons to implement searching in Akonadi",
+    "name": "akonadi-search",
+    "project_path": "kde/pim/akonadi-search",
+    "repo_path": "pim/akonadi-search"
+  },
+  "akonadi-sugarcrm": {
+    "description": "Accessing the addressbook of a SugarCRM web service",
+    "name": "akonadi-sugarcrm",
+    "project_path": "unmaintained/akonadi-sugarcrm",
+    "repo_path": "unmaintained/akonadi-sugarcrm"
+  },
+  "akonadi-vkontakte": {
+    "description": "Makes contacts, notes and messages from VKontakte.ru social network available in KDE.",
+    "name": "akonadi-vkontakte",
+    "project_path": "unmaintained/akonadi-vkontakte",
+    "repo_path": "unmaintained/akonadi-vkontakte"
+  },
+  "akonadiclient": {
+    "description": "Command-line interface to Akonadi",
+    "name": "akonadiclient",
+    "project_path": "playground/pim/akonadiclient",
+    "repo_path": "pim/akonadiclient"
+  },
+  "akonadiconsole": {
+    "description": "Application for debugging Akonadi Resources",
+    "name": "akonadiconsole",
+    "project_path": "kde/pim/akonadiconsole",
+    "repo_path": "pim/akonadiconsole"
+  },
+  "akregator": {
+    "description": "RSS Feed Reader",
+    "name": "akregator",
+    "project_path": "kde/pim/akregator",
+    "repo_path": "pim/akregator"
+  },
+  "akunambol": {
+    "description": "Akunambol is a KDE SyncML client for your Akonadi Storage. a.k.a, it synchronizes your data with another device.",
+    "name": "akunambol",
+    "project_path": "unmaintained/akunambol",
+    "repo_path": "unmaintained/akunambol"
+  },
+  "alkimia": {
+    "description": "Library used by KDE finance applications",
+    "name": "alkimia",
+    "project_path": "extragear/office/alkimia",
+    "repo_path": "office/alkimia"
+  },
+  "alligator": {
+    "description": "Kirigami-based RSS reader",
+    "name": "alligator",
+    "project_path": "extragear/network/alligator",
+    "repo_path": "network/alligator"
+  },
+  "alpaka": {
+    "description": "Kirigami client for Ollama",
+    "name": "alpaka",
+    "project_path": "playground/utils/alpaka",
+    "repo_path": "utilities/alpaka"
+  },
+  "amarok": {
+    "description": "Powerful music player that lets you rediscover your music",
+    "name": "amarok",
+    "project_path": "extragear/multimedia/amarok",
+    "repo_path": "multimedia/amarok"
+  },
+  "amarok-history": {
+    "description": "Amarok history",
+    "name": "amarok-history",
+    "project_path": "extragear/multimedia/amarok/amarok-history",
+    "repo_path": "historical/amarok-history"
+  },
+  "amor": {
+    "description": "Amusing Misuse of Resources animation that sits on top of the curent window.",
+    "name": "amor",
+    "project_path": "playground/games/amor",
+    "repo_path": "games/amor"
+  },
+  "analitza": {
+    "description": "Library that lets you add mathematical features to your program",
+    "name": "analitza",
+    "project_path": "kde/kdeedu/analitza",
+    "repo_path": "education/analitza"
+  },
+  "android-builder": {
+    "description": "Build environment and SDK for cross-building KDE applications for Android.",
+    "name": "android-builder",
+    "project_path": "unmaintained/android-builder",
+    "repo_path": "unmaintained/android-builder"
+  },
+  "android-qt": {
+    "description": "Android port of Qt Framework",
+    "name": "android-qt",
+    "project_path": "unmaintained/necessitas/android-qt",
+    "repo_path": "unmaintained/android-qt"
+  },
+  "android-qt-creator": {
+    "description": "Android port of Qt Creator IDE",
+    "name": "android-qt-creator",
+    "project_path": "unmaintained/necessitas/android-qt-creator",
+    "repo_path": "unmaintained/android-qt-creator"
+  },
+  "android-qt-mobility": {
+    "description": "Android port of Qt Mobility",
+    "name": "android-qt-mobility",
+    "project_path": "unmaintained/necessitas/android-qt-mobility",
+    "repo_path": "unmaintained/android-qt-mobility"
+  },
+  "android-qt-ndk": {
+    "description": "NDK repository for the Android port of Qt.",
+    "name": "android-qt-ndk",
+    "project_path": "unmaintained/necessitas/android-qt-ndk",
+    "repo_path": "unmaintained/android-qt-ndk"
+  },
+  "android-qt5-qtbase": {
+    "description": "Android Qt5 QtBase module",
+    "name": "android-qt5-qtbase",
+    "project_path": "unmaintained/necessitas/android-qt5-qtbase",
+    "repo_path": "unmaintained/android-qt5-qtbase"
+  },
+  "android-qtwebkit": {
+    "description": "QtWebkit port to Android",
+    "name": "android-qtwebkit",
+    "project_path": "unmaintained/necessitas/android-qtwebkit",
+    "repo_path": "unmaintained/android-qtwebkit"
+  },
+  "angelfish": {
+    "description": "Web browser for Plasma Mobile",
+    "name": "angelfish",
+    "project_path": "extragear/base/angelfish",
+    "repo_path": "network/angelfish"
+  },
+  "apper": {
+    "description": "Package management application using PackageKit",
+    "name": "apper",
+    "project_path": "extragear/sysadmin/apper",
+    "repo_path": "system/apper"
+  },
+  "appimage-packaging": {
+    "description": "Recipes and other materials needed to create application AppImages",
+    "name": "appimage-packaging",
+    "project_path": "playground/packaging/appimage-packaging",
+    "repo_path": "packaging/appimage-packaging"
+  },
+  "appmenu-runner": {
+    "description": "AppMenu runner that allows to quickly find any action exported in AppMenu",
+    "name": "appmenu-runner",
+    "project_path": "unmaintained/appmenu-runner",
+    "repo_path": "unmaintained/appmenu-runner"
+  },
+  "appstream-qt": {
+    "description": null,
+    "name": "appstream-qt",
+    "project_path": "third-party/appstream",
+    "repo_path": null
+  },
+  "appstream-runner": {
+    "description": "KRunner plugin for looking up the search into the software database to suggest software that wasn't found.",
+    "name": "appstream-runner",
+    "project_path": "unmaintained/appstream-runner",
+    "repo_path": "unmaintained/appstream-runner"
+  },
+  "arca": {
+    "description": "Maui Archiver for compressed files",
+    "name": "arca",
+    "project_path": "playground/base/arca",
+    "repo_path": "maui/arca"
+  },
+  "arianna": {
+    "description": "EPub Reader for mobile devices",
+    "name": "arianna",
+    "project_path": "extragear/graphics/arianna",
+    "repo_path": "graphics/arianna"
+  },
+  "ark": {
+    "description": "File archiver by KDE",
+    "name": "ark",
+    "project_path": "kde/kdeutils/ark",
+    "repo_path": "utilities/ark"
+  },
+  "arkade": {
+    "description": "Collection of Arcade games developed in Kirigami",
+    "name": "arkade",
+    "project_path": "playground/games/arkade",
+    "repo_path": "games/arkade"
+  },
+  "artikulate": {
+    "description": "Pronunciation trainer to improve your skills by listening to native speakers",
+    "name": "artikulate",
+    "project_path": "kde/kdeedu/artikulate",
+    "repo_path": "education/artikulate"
+  },
+  "artikulate-data": {
+    "description": "Artikulate course data files",
+    "name": "artikulate-data",
+    "project_path": "playground/edu/artikulate-data",
+    "repo_path": "education/artikulate-data"
+  },
+  "assemblygen": {
+    "description": "A tool that generates .NET/mono assemblies from SMOKE libraries.",
+    "name": "assemblygen",
+    "project_path": "unmaintained/assemblygen",
+    "repo_path": "unmaintained/assemblygen"
+  },
+  "asynqt": {
+    "description": "Framework which provides convenience methods that make QFuture actually useful",
+    "name": "asynqt",
+    "project_path": "playground/libs/asynqt",
+    "repo_path": "libraries/asynqt"
+  },
+  "atcore": {
+    "description": "Library for connection and management of 3D printers (Atelier Core)",
+    "name": "atcore",
+    "project_path": "extragear/base/atcore",
+    "repo_path": "libraries/atcore"
+  },
+  "atcore-cli": {
+    "description": "Open Source 3D Printing Host - CLI Interface",
+    "name": "atcore-cli",
+    "project_path": "playground/base/atcore-cli",
+    "repo_path": "utilities/atcore-cli"
+  },
+  "atelier": {
+    "description": "Desktop interface to control 3D printers powered by AtCore",
+    "name": "atelier",
+    "project_path": "playground/base/atelier",
+    "repo_path": "utilities/atelier"
+  },
+  "atlantik": {
+    "description": "Atlantik Game",
+    "name": "atlantik",
+    "project_path": "playground/games/atlantik",
+    "repo_path": "games/atlantik"
+  },
+  "attica": {
+    "description": "Attica is a Qt library that implements the Open Collaboration Services API.\n\nMailing list: https://lists.freedesktop.org/mailman/listinfo/ocs\nInternet Relay Chat: #ocs@freenode",
+    "name": "attica",
+    "project_path": "frameworks/attica",
+    "repo_path": "frameworks/attica"
+  },
+  "audex": {
+    "description": "Tool for ripping compact discs",
+    "name": "audex",
+    "project_path": "playground/multimedia/audex",
+    "repo_path": "multimedia/audex"
+  },
+  "audiocd-kio": {
+    "description": "KIO worker for accessing audio CDs",
+    "name": "audiocd-kio",
+    "project_path": "kde/kdemultimedia/audiocd-kio",
+    "repo_path": "multimedia/audiocd-kio"
+  },
+  "audiotube": {
+    "description": "Client for YouTube Music",
+    "name": "audiotube",
+    "project_path": "extragear/multimedia/audiotube",
+    "repo_path": "multimedia/audiotube"
+  },
+  "aura-browser": {
+    "description": "Browser for a fully immersed Big Screen experience allowing you to navigate the world wide web using just your remote control",
+    "name": "aura-browser",
+    "project_path": "kde/workspace/aura-browser",
+    "repo_path": "plasma/aura-browser"
+  },
+  "automoc": {
+    "description": "Automoc",
+    "name": "automoc",
+    "project_path": "kdesupport/automoc",
+    "repo_path": "unmaintained/automoc"
+  },
+  "babe": {
+    "description": "Babe Media Player",
+    "name": "babe",
+    "project_path": "unmaintained/babe",
+    "repo_path": "unmaintained/babe"
+  },
+  "baloo": {
+    "description": "Baloo is a framework for searching and managing metadata.",
+    "name": "baloo",
+    "project_path": "frameworks/baloo",
+    "repo_path": "frameworks/baloo"
+  },
+  "baloo-widgets": {
+    "description": "Widgets for Baloo",
+    "name": "baloo-widgets",
+    "project_path": "kde/applications/baloo-widgets",
+    "repo_path": "libraries/baloo-widgets"
+  },
+  "bangarang": {
+    "description": "",
+    "name": "bangarang",
+    "project_path": "playground/multimedia/bangarang",
+    "repo_path": "unmaintained/bangarang"
+  },
+  "basket": {
+    "description": "Notes and to-dos organizer",
+    "name": "basket",
+    "project_path": "playground/utils/basket",
+    "repo_path": "utilities/basket"
+  },
+  "bigscreen-application-launcher-skill": {
+    "description": "Voice application launcher skill for Plasma Bigscreen",
+    "name": "bigscreen-application-launcher-skill",
+    "project_path": "playground/utils/bigscreen-application-launcher-skill",
+    "repo_path": "plasma-bigscreen/bigscreen-application-launcher-skill"
+  },
+  "bigscreen-debos-image-rpi4": {
+    "description": "Recipes and other materials needed to build a Plasma Bigscreen image for Raspberry Pi4 devices, using DebOS",
+    "name": "bigscreen-debos-image-rpi4",
+    "project_path": "playground/utils/bigscreen-debos-image-rpi4",
+    "repo_path": "plasma-bigscreen/bigscreen-debos-image-rpi4"
+  },
+  "bigscreen-image-settings": {
+    "description": "Recipes and other materials needed to build Plasma Bigscreen images",
+    "name": "bigscreen-image-settings",
+    "project_path": "playground/utils/bigscreen-image-settings",
+    "repo_path": "plasma-bigscreen/bigscreen-image-settings"
+  },
+  "bigscreen-platform-skill": {
+    "description": "Platform control skill for Plasma Bigscreen, providing Window Management Features for Voice Applications on Bigscreen Platform",
+    "name": "bigscreen-platform-skill",
+    "project_path": "playground/utils/bigscreen-platform-skill",
+    "repo_path": "plasma-bigscreen/bigscreen-platform-skill"
+  },
+  "binschema": {
+    "description": "Code generator that produces code to read Microsoft Office files",
+    "name": "binschema",
+    "project_path": "playground/libs/binschema",
+    "repo_path": "libraries/binschema"
+  },
+  "blinken": {
+    "description": "Memory Enhancement Game",
+    "name": "blinken",
+    "project_path": "kde/kdeedu/blinken",
+    "repo_path": "education/blinken"
+  },
+  "blogilo": {
+    "description": "Application to create, edit and update your blog content.",
+    "name": "blogilo",
+    "project_path": "unmaintained/blogilo",
+    "repo_path": "unmaintained/blogilo"
+  },
+  "bluedevil": {
+    "description": "Bluedevil adds Bluetooth capabilities to KDE Plasma",
+    "name": "bluedevil",
+    "project_path": "kde/workspace/bluedevil",
+    "repo_path": "plasma/bluedevil"
+  },
+  "bluez-qt": {
+    "description": "Qt wrapper for Bluez 5 DBus API",
+    "name": "bluez-qt",
+    "project_path": "frameworks/bluez-qt",
+    "repo_path": "frameworks/bluez-qt"
+  },
+  "bodega-client": {
+    "description": "Library and client applications for the Make Play Live content store.",
+    "name": "bodega-client",
+    "project_path": "unmaintained/bodega-client",
+    "repo_path": "unmaintained/bodega-client"
+  },
+  "bodega-server": {
+    "description": "Server and content importers for the Bodega content system.",
+    "name": "bodega-server",
+    "project_path": "unmaintained/bodega-server",
+    "repo_path": "unmaintained/bodega-server"
+  },
+  "bodega-webapp-client": {
+    "description": "A web application client for the Bodega Content System",
+    "name": "bodega-webapp-client",
+    "project_path": "unmaintained/bodega-webapp-client",
+    "repo_path": "unmaintained/bodega-webapp-client"
+  },
+  "bodega-webapp-manager": {
+    "description": "Web application to manage an instance of Bodega Server",
+    "name": "bodega-webapp-manager",
+    "project_path": "unmaintained/bodega-webapp-manager",
+    "repo_path": "unmaintained/bodega-webapp-manager"
+  },
+  "bomber": {
+    "description": "Bomber is a single player arcade game",
+    "name": "bomber",
+    "project_path": "kde/kdegames/bomber",
+    "repo_path": "games/bomber"
+  },
+  "bonsai": {
+    "description": "Mobile Git repository manager",
+    "name": "bonsai",
+    "project_path": "playground/base/bonsai",
+    "repo_path": "maui/bonsai"
+  },
+  "bookmanager": {
+    "description": "A simple E-book manager and viewer.",
+    "name": "bookmanager",
+    "project_path": "unmaintained/bookmanager",
+    "repo_path": "unmaintained/bookmanager"
+  },
+  "bovo": {
+    "description": "Bovo is a Gomoku like game for two players",
+    "name": "bovo",
+    "project_path": "kde/kdegames/bovo",
+    "repo_path": "games/bovo"
+  },
+  "breeze": {
+    "description": "Artwork, styles and assets for the Breeze visual style for the Plasma Desktop",
+    "name": "breeze",
+    "project_path": "kde/workspace/breeze",
+    "repo_path": "plasma/breeze"
+  },
+  "breeze-grub": {
+    "description": "GRUB theme for the Breeze visual style for the Plasma Desktop",
+    "name": "breeze-grub",
+    "project_path": "kde/workspace/breeze-grub",
+    "repo_path": "plasma/breeze-grub"
+  },
+  "breeze-gtk": {
+    "description": "Breeze widget theme for GTK 2 and 3",
+    "name": "breeze-gtk",
+    "project_path": "kde/workspace/breeze-gtk",
+    "repo_path": "plasma/breeze-gtk"
+  },
+  "breeze-icons": {
+    "description": "Breeze icon theme.",
+    "name": "breeze-icons",
+    "project_path": "frameworks/breeze-icons",
+    "repo_path": "frameworks/breeze-icons"
+  },
+  "breeze-plymouth": {
+    "description": "Plymouth theme for the Breeze visual style for the Plasma Desktop",
+    "name": "breeze-plymouth",
+    "project_path": "kde/workspace/breeze-plymouth",
+    "repo_path": "plasma/breeze-plymouth"
+  },
+  "brooklyn": {
+    "description": "Protocol independent software which forwards messages between various chat services.",
+    "name": "brooklyn",
+    "project_path": "playground/utils/brookyln",
+    "repo_path": "unmaintained/brooklyn"
+  },
+  "brprint3d": {
+    "description": "Printer Host Open Source to 3D Printing",
+    "name": "brprint3d",
+    "project_path": "unmaintained/brprint3d",
+    "repo_path": "unmaintained/brprint3d"
+  },
+  "brun": {
+    "description": "Maui Calculator app",
+    "name": "brun",
+    "project_path": "playground/base/brun",
+    "repo_path": "maui/brun"
+  },
+  "buho": {
+    "description": "Task and Note Keeper",
+    "name": "buho",
+    "project_path": "playground/base/buho",
+    "repo_path": "maui/buho"
+  },
+  "cagibi": {
+    "description": "Experimental cache/proxy system for SSDP (Simple Service Discovery Protocol, used as service/device discovery system in UPnP).",
+    "name": "cagibi",
+    "project_path": "unmaintained/cagibi",
+    "repo_path": "unmaintained/cagibi"
+  },
+  "calamares-bigscreen-branding": {
+    "description": "Plasma Bigscreen branding and customization for Calamares",
+    "name": "calamares-bigscreen-branding",
+    "project_path": "playground/utils/calamares-bigscreen-branding",
+    "repo_path": "plasma-bigscreen/calamares-bigscreen-branding"
+  },
+  "calendarsupport": {
+    "description": "Library that provides calendar support for PIM",
+    "name": "calendarsupport",
+    "project_path": "kde/pim/calendarsupport",
+    "repo_path": "pim/calendarsupport"
+  },
+  "calindori": {
+    "description": "Calendar for Plasma Mobile",
+    "name": "calindori",
+    "project_path": "extragear/pim/calindori",
+    "repo_path": "plasma-mobile/calindori"
+  },
+  "calligra": {
+    "description": "Office and graphic art suite by KDE",
+    "name": "calligra",
+    "project_path": "calligra/calligra",
+    "repo_path": "office/calligra"
+  },
+  "calligra-history": {
+    "description": "The home of inactive branches for Calligra Suite.",
+    "name": "calligra-history",
+    "project_path": "calligra/calligra-history",
+    "repo_path": "historical/calligra-history"
+  },
+  "calligraplan": {
+    "description": "Project management application",
+    "name": "calligraplan",
+    "project_path": "calligra/calligraplan",
+    "repo_path": "office/calligraplan"
+  },
+  "cantor": {
+    "description": "Front end to powerful mathematics and statistics packages",
+    "name": "cantor",
+    "project_path": "kde/kdeedu/cantor",
+    "repo_path": "education/cantor"
+  },
+  "cervisia": {
+    "description": "GUI for CVS",
+    "name": "cervisia",
+    "project_path": "kde/kdesdk/cervisia",
+    "repo_path": "sdk/cervisia"
+  },
+  "chocolatey-packaging": {
+    "description": "Packaging information necessary to generate Chocolatey.org packages",
+    "name": "chocolatey-packaging",
+    "project_path": "playground/devtools/chocolatey-packaging",
+    "repo_path": "packaging/chocolatey-packaging"
+  },
+  "choqok": {
+    "description": "Microblogging client by KDE",
+    "name": "choqok",
+    "project_path": "extragear/network/choqok",
+    "repo_path": "network/choqok"
+  },
+  "cirkuit": {
+    "description": "KDE interface for LaTeX graphic tools (such as TikZ, Gnuplot, Circuit Macros) to produce publication-ready pictures.\n\nPlease use \"bugs.kde.org\":https://bugs.kde.org/wizard.cgi?package=cirkuit&kbugreport=1 to file bug reports and wishes.",
+    "name": "cirkuit",
+    "project_path": "unmaintained/cirkuit",
+    "repo_path": "unmaintained/cirkuit"
+  },
+  "clazy": {
+    "description": "Qt-oriented static code analyzer based on the Clang framework",
+    "name": "clazy",
+    "project_path": "extragear/sdk/clazy",
+    "repo_path": "sdk/clazy"
+  },
+  "cmark": {
+    "description": null,
+    "name": "cmark",
+    "project_path": "third-party/cmark",
+    "repo_path": null
+  },
+  "cmetronome": {
+    "description": "Command line metronome",
+    "name": "cmetronome",
+    "project_path": "playground/utils/cmetronome",
+    "repo_path": "unmaintained/cmetronome"
+  },
+  "cocoon": {
+    "description": "A GUI for Git.",
+    "name": "cocoon",
+    "project_path": "playground/sdk/cocoon",
+    "repo_path": "unmaintained/cocoon"
+  },
+  "codevis": {
+    "description": "Codevis is an analysis and visualization tool designed to assist in code maintenance for C++ codebases.",
+    "name": "codevis",
+    "project_path": "playground/sdk/codevis",
+    "repo_path": "sdk/codevis"
+  },
+  "colibri": {
+    "description": "Alternative notifications for KDE Plasma Desktop",
+    "name": "colibri",
+    "project_path": "unmaintained/colibri",
+    "repo_path": "unmaintained/colibri"
+  },
+  "colord-kde": {
+    "description": "Provides interfaces and session daemon to colord",
+    "name": "colord-kde",
+    "project_path": "playground/graphics/colord-kde",
+    "repo_path": "graphics/colord-kde"
+  },
+  "confine": {
+    "description": "Replacement to the KIOSK tool",
+    "name": "confine",
+    "project_path": "playground/utils/confine",
+    "repo_path": "utilities/confine"
+  },
+  "conquirere": {
+    "description": "Nepomuk powered research tool.",
+    "name": "conquirere",
+    "project_path": "unmaintained/conquirere",
+    "repo_path": "unmaintained/conquirere"
+  },
+  "contour": {
+    "description": "A new and innovative usage paradigm for mobile devices",
+    "name": "contour",
+    "project_path": "unmaintained/contour",
+    "repo_path": "unmaintained/contour"
+  },
+  "craft": {
+    "description": "Open source meta build system and package manager",
+    "name": "craft",
+    "project_path": "kdesupport/craft",
+    "repo_path": "packaging/craft"
+  },
+  "craft-blueprints-community": {
+    "description": "Project build blueprints for Craft not related to KDE software",
+    "name": "craft-blueprints-community",
+    "project_path": "kdesupport/craft-blueprints-community",
+    "repo_path": "packaging/craft-blueprints-community"
+  },
+  "craft-blueprints-kde": {
+    "description": "Project build blueprints for Craft \u2014 the meta build system and package manager",
+    "name": "craft-blueprints-kde",
+    "project_path": "kdesupport/craft-blueprints-kde",
+    "repo_path": "packaging/craft-blueprints-kde"
+  },
+  "craftmaster": {
+    "description": "Orchestrate multiple Craft instance configurations",
+    "name": "craftmaster",
+    "project_path": "kdesupport/craftmaster",
+    "repo_path": "packaging/craftmaster"
+  },
+  "croutons": {
+    "description": "Library for asynchronous Qt, including QML-friendly futures and C++20 coroutine integration",
+    "name": "croutons",
+    "project_path": "extragear/libs/croutons",
+    "repo_path": "libraries/croutons"
+  },
+  "cutehmi": {
+    "description": "Open-source HMI (Human Machine Interface) software written in C++ and QML",
+    "name": "cutehmi",
+    "project_path": "playground/base/cutehmi",
+    "repo_path": "sdk/cutehmi"
+  },
+  "cutepaste": {
+    "description": "Client application for paste.kde.org written in Qt",
+    "name": "cutepaste",
+    "project_path": "unmaintained/cutepaste",
+    "repo_path": "unmaintained/cutepaste"
+  },
+  "cxx11-cmake-modules": {
+    "description": "CMake modules for detecting C++11 features supported by the compiler",
+    "name": "cxx11-cmake-modules",
+    "project_path": "playground/base/cxx11-cmake-modules",
+    "repo_path": "libraries/cxx11-cmake-modules"
+  },
+  "daykountdown": {
+    "description": "A simple date countdown app written for KDE Plasma, using Kirigami.",
+    "name": "daykountdown",
+    "project_path": "playground/utilities/daykountdown",
+    "repo_path": "utilities/daykountdown"
+  },
+  "declarative-plasmoids": {
+    "description": "a repository for developing declarative plasmoids for the plasma desktop and mobile",
+    "name": "declarative-plasmoids",
+    "project_path": "unmaintained/declarative-plasmoids",
+    "repo_path": "unmaintained/declarative-plasmoids"
+  },
+  "dekorator": {
+    "description": "KWin plugin to support pixmap decorations in KDE",
+    "name": "dekorator",
+    "project_path": "unmaintained/dekorator",
+    "repo_path": "unmaintained/dekorator"
+  },
+  "dferry": {
+    "description": "D-Bus library and tools",
+    "name": "dferry",
+    "project_path": "playground/sdk/dferry",
+    "repo_path": "sdk/dferry"
+  },
+  "digikam": {
+    "description": "digiKam is an advanced open-source digital photo management application that runs on Linux, Windows, and MacOS. The application provides a comprehensive set of tools for importing, managing, editing, and sharing photos and raw files.",
+    "name": "digikam",
+    "project_path": "extragear/graphics/digikam",
+    "repo_path": "graphics/digikam"
+  },
+  "digikam-doc": {
+    "description": "Documentation for the digiKam photo management application",
+    "name": "digikam-doc",
+    "project_path": "extragear/graphics/digikam/digikam-doc",
+    "repo_path": "documentation/digikam-doc"
+  },
+  "digikam-software-compilation": {
+    "description": "Advanced digital photo management application by KDE, which makes importing and organizing digital photos a 'snap'.",
+    "name": "digikam-software-compilation",
+    "project_path": "unmaintained/digikam-software-compilation",
+    "repo_path": "unmaintained/digikam-software-compilation"
+  },
+  "digikam-test-data": {
+    "description": "Data required to support running unit tests for digiKam",
+    "name": "digikam-test-data",
+    "project_path": "extragear/graphics/digikam-test-data",
+    "repo_path": "graphics/digikam-test-data"
+  },
+  "discover": {
+    "description": "KDE and Plasma resources management GUI",
+    "name": "discover",
+    "project_path": "kde/workspace/discover",
+    "repo_path": "plasma/discover"
+  },
+  "distro-release-notifier": {
+    "description": "",
+    "name": "distro-release-notifier",
+    "project_path": "playground/base/distro-release-notifier",
+    "repo_path": "system/distro-release-notifier"
+  },
+  "docker-neon-all": {
+    "description": "Docker packaging environment for KDE Neon, including everything",
+    "name": "docker-neon-all",
+    "project_path": "playground/packaging/docker-neon-all",
+    "repo_path": "packaging/docker-neon-all"
+  },
+  "documentation-develop-kde-org": {
+    "description": "Hugo based website containing tutorials and other articles useful for KDE Development",
+    "name": "documentation-develop-kde-org",
+    "project_path": "documentation/develop-kde-org",
+    "repo_path": "documentation/develop-kde-org"
+  },
+  "documentation-docs-kdenlive-org": {
+    "description": "Documentation for Kdenlive",
+    "name": "documentation-docs-kdenlive-org",
+    "project_path": "documentation/docs-kdenlive-org",
+    "repo_path": "documentation/docs-kdenlive-org"
+  },
+  "dolphin": {
+    "description": "File manager by KDE",
+    "name": "dolphin",
+    "project_path": "kde/applications/dolphin",
+    "repo_path": "system/dolphin"
+  },
+  "dolphin-plugins": {
+    "description": "Plugins for Dolphin",
+    "name": "dolphin-plugins",
+    "project_path": "kde/kdesdk/dolphin-plugins",
+    "repo_path": "sdk/dolphin-plugins"
+  },
+  "doxyqml": {
+    "description": "Doxygen filter to allow generation of API Documentation for QML",
+    "name": "doxyqml",
+    "project_path": "playground/sdk/doxyqml",
+    "repo_path": "sdk/doxyqml"
+  },
+  "dragon": {
+    "description": "Multimedia player with the focus on simplicity, not features",
+    "name": "dragon",
+    "project_path": "kde/kdemultimedia/dragon",
+    "repo_path": "multimedia/dragon"
+  },
+  "drkonqi": {
+    "description": "Crash handler for KDE software",
+    "name": "drkonqi",
+    "project_path": "kde/workspace/drkonqi",
+    "repo_path": "plasma/drkonqi"
+  },
+  "drkonqi-pk-debug-installer": {
+    "description": "PackageKit based debug package installer (for debian-like distros) for DrKonqi",
+    "name": "drkonqi-pk-debug-installer",
+    "project_path": "playground/base/drkonqi-pk-debug-installer",
+    "repo_path": "system/drkonqi-pk-debug-installer"
+  },
+  "dummy": {
+    "description": "Systems testing repository",
+    "name": "dummy",
+    "project_path": "sysadmin/dummy",
+    "repo_path": "sysadmin/dummy"
+  },
+  "ebookreader": {
+    "description": "This project aims at providing a cross-platform e-book reader adapted for touch screens by using Qt/QML for its frontend and okular core library for its backend",
+    "name": "ebookreader",
+    "project_path": "unmaintained/ebookreader",
+    "repo_path": "unmaintained/ebookreader"
+  },
+  "elf-dissector": {
+    "description": "Tools for inspecting, analyzing and optimizing ELF files",
+    "name": "elf-dissector",
+    "project_path": "extragear/sdk/elf-dissector",
+    "repo_path": "sdk/elf-dissector"
+  },
+  "elisa": {
+    "description": "Simple music player aiming to provide a nice experience for its users",
+    "name": "elisa",
+    "project_path": "kde/kdemultimedia/elisa",
+    "repo_path": "multimedia/elisa"
+  },
+  "eloquens": {
+    "description": "Generate the lorem ipsum text",
+    "name": "eloquens",
+    "project_path": "kdereview/eloquens",
+    "repo_path": "sdk/eloquens"
+  },
+  "emerge": {
+    "description": "Stub - this project has been renamed",
+    "name": "emerge",
+    "project_path": "unmaintained/emerge",
+    "repo_path": "unmaintained/emerge"
+  },
+  "emerge-history": {
+    "description": "complete svn history of emerge",
+    "name": "emerge-history",
+    "project_path": "kdesupport/emerge-history",
+    "repo_path": "unmaintained/emerge-history"
+  },
+  "eventviews": {
+    "description": "Library for displaying and creating events and calendars",
+    "name": "eventviews",
+    "project_path": "kde/pim/eventviews",
+    "repo_path": "pim/eventviews"
+  },
+  "extra-cmake-modules": {
+    "description": "Extra modules and scripts for CMake.",
+    "name": "extra-cmake-modules",
+    "project_path": "frameworks/extra-cmake-modules",
+    "repo_path": "frameworks/extra-cmake-modules"
+  },
+  "eyeos-style": {
+    "description": "KStyle for EyeOS",
+    "name": "eyeos-style",
+    "project_path": "playground/base/eyeos-style",
+    "repo_path": "unmaintained/eyeos-style"
+  },
+  "falkon": {
+    "description": "Cross-platform Qt-based web browser",
+    "name": "falkon",
+    "project_path": "extragear/network/falkon",
+    "repo_path": "network/falkon"
+  },
+  "ffmpegthumbs": {
+    "description": "FFmpeg-based thumbnail creator for video files",
+    "name": "ffmpegthumbs",
+    "project_path": "kde/kdemultimedia/ffmpegthumbs",
+    "repo_path": "multimedia/ffmpegthumbs"
+  },
+  "fielding": {
+    "description": "A simple REST API testing tool",
+    "name": "fielding",
+    "project_path": "playground/utils/fielding",
+    "repo_path": "utilities/fielding"
+  },
+  "filelight": {
+    "description": "Quickly visualize your disk space usage",
+    "name": "filelight",
+    "project_path": "kde/kdeutils/filelight",
+    "repo_path": "utilities/filelight"
+  },
+  "flatpak-kcm": {
+    "description": "Flatpak Permissions Management KCM",
+    "name": "flatpak-kcm",
+    "project_path": "kde/workspace/flatpak-kcm",
+    "repo_path": "plasma/flatpak-kcm"
+  },
+  "flatpak-kde-applications": {
+    "description": "Flatpak packaging files for some KDE Applications",
+    "name": "flatpak-kde-applications",
+    "project_path": "playground/packaging/flatpak-kde-applications",
+    "repo_path": "packaging/flatpak-kde-applications"
+  },
+  "flatpak-kde-runtime": {
+    "description": "Files to generate a repository with org.kde.Platform and Sdk",
+    "name": "flatpak-kde-runtime",
+    "project_path": "playground/packaging/flatpak-kde-runtime",
+    "repo_path": "packaging/flatpak-kde-runtime"
+  },
+  "flickr-runner": {
+    "description": "Flickr",
+    "name": "flickr-runner",
+    "project_path": "unmaintained/flickr-runner",
+    "repo_path": "unmaintained/flickr-runner"
+  },
+  "frameworkintegration": {
+    "description": "Framework providing components to allow applications to integrate with a KDE Workspace",
+    "name": "frameworkintegration",
+    "project_path": "frameworks/frameworkintegration",
+    "repo_path": "frameworks/frameworkintegration"
+  },
+  "francis": {
+    "description": "Track your time",
+    "name": "francis",
+    "project_path": "extragear/utils/francis",
+    "repo_path": "utilities/francis"
+  },
+  "futuresql": {
+    "description": "Non-blocking Qt database framework",
+    "name": "futuresql",
+    "project_path": "kdesupport/futuresql",
+    "repo_path": "libraries/futuresql"
+  },
+  "gcompris": {
+    "description": "High-quality educational software suite for children aged 2 to 10",
+    "name": "gcompris",
+    "project_path": "extragear/edu/gcompris",
+    "repo_path": "education/gcompris"
+  },
+  "gcompris-data": {
+    "description": "Data files for GCompris",
+    "name": "gcompris-data",
+    "project_path": "extragear/edu/gcompris-data",
+    "repo_path": "education/gcompris-data"
+  },
+  "gestures-kde": {
+    "description": "Handles gestures of multi touch input devices",
+    "name": "gestures-kde",
+    "project_path": "unmaintained/gestures-kde",
+    "repo_path": "unmaintained/gestures-kde"
+  },
+  "ghostwriter": {
+    "description": "Text editor for Markdown",
+    "name": "ghostwriter",
+    "project_path": "kde/office/ghostwriter",
+    "repo_path": "office/ghostwriter"
+  },
+  "ginkgo": {
+    "description": "Ginkgo is a generic resource navigator and editor for Nepomuk, the KDE semantic toolkit.",
+    "name": "ginkgo",
+    "project_path": "playground/utils/ginkgo",
+    "repo_path": "unmaintained/ginkgo"
+  },
+  "git-lab": {
+    "description": "Command-line client for GitLab",
+    "name": "git-lab",
+    "project_path": "playground/sdk/git-lab",
+    "repo_path": "sdk/git-lab"
+  },
+  "glaxnimate": {
+    "description": "Simple vector animation program.",
+    "name": "glaxnimate",
+    "project_path": "playground/graphics/glaxnimate",
+    "repo_path": "graphics/glaxnimate"
+  },
+  "gluon": {
+    "description": "An open framework for developing, playing and distributing games.",
+    "name": "gluon",
+    "project_path": "unmaintained/gluon",
+    "repo_path": "unmaintained/gluon"
+  },
+  "gluon-blocks": {
+    "description": "The first game for KDE/Gluon",
+    "name": "gluon-blocks",
+    "project_path": "unmaintained/gluon-blocks",
+    "repo_path": "unmaintained/gluon-blocks"
+  },
+  "gpgme": {
+    "description": null,
+    "name": "gpgme",
+    "project_path": "third-party/gpgme",
+    "repo_path": null
+  },
+  "gpgmepp": {
+    "description": "GPGME++ Library",
+    "name": "gpgmepp",
+    "project_path": "unmaintained/gpgmepp",
+    "repo_path": "unmaintained/gpgmepp"
+  },
+  "granatier": {
+    "description": "Granatier is a clone of the classic Bomberman game",
+    "name": "granatier",
+    "project_path": "kde/kdegames/granatier",
+    "repo_path": "games/granatier"
+  },
+  "grantlee-editor": {
+    "description": "Utilities and tools to manage themes in KDE PIM applications",
+    "name": "grantlee-editor",
+    "project_path": "kde/pim/grantlee-editor",
+    "repo_path": "pim/grantlee-editor"
+  },
+  "grantleetheme": {
+    "description": "Library that provides Grantlee theme support",
+    "name": "grantleetheme",
+    "project_path": "kde/pim/grantleetheme",
+    "repo_path": "pim/grantleetheme"
+  },
+  "gwenview": {
+    "description": "Image viewer by KDE",
+    "name": "gwenview",
+    "project_path": "kde/kdegraphics/gwenview",
+    "repo_path": "graphics/gwenview"
+  },
+  "haruna": {
+    "description": "Open source video player built with Qt/QML and libmpv.",
+    "name": "haruna",
+    "project_path": "kde/kdemultimedia/haruna",
+    "repo_path": "multimedia/haruna"
+  },
+  "hash-o-matic": {
+    "description": "Simple hash validator allowing to compare two files, generate the checksum of a file and verify if a hash matches a file.",
+    "name": "hash-o-matic",
+    "project_path": "kdereview/utils/hash-o-matic",
+    "repo_path": "utilities/hash-o-matic"
+  },
+  "heaptrack": {
+    "description": "A heap memory profiler for Linux",
+    "name": "heaptrack",
+    "project_path": "extragear/sdk/heaptrack",
+    "repo_path": "sdk/heaptrack"
+  },
+  "homebrew-kde": {
+    "description": "Homebrew formulas for building KDE software on macOS",
+    "name": "homebrew-kde",
+    "project_path": "playground/devtools/homebrew-kde",
+    "repo_path": "packaging/homebrew-kde"
+  },
+  "homerun": {
+    "description": "An application launcher for KDE Plasma desktop",
+    "name": "homerun",
+    "project_path": "unmaintained/homerun",
+    "repo_path": "unmaintained/homerun"
+  },
+  "ikona": {
+    "description": "Icon editing companion",
+    "name": "ikona",
+    "project_path": "extragear/sdk/ikona",
+    "repo_path": "sdk/ikona"
+  },
+  "incidenceeditor": {
+    "description": "Library that provides calendar incidence editor",
+    "name": "incidenceeditor",
+    "project_path": "kde/pim/incidenceeditor",
+    "repo_path": "pim/incidenceeditor"
+  },
+  "index-fm": {
+    "description": "Multi-platform file manager",
+    "name": "index-fm",
+    "project_path": "playground/base/index-fm",
+    "repo_path": "maui/index-fm"
+  },
+  "inqlude-client": {
+    "description": "Command-line client for inqlude.org",
+    "name": "inqlude-client",
+    "project_path": "playground/sdk/inqlude-client",
+    "repo_path": "sdk/inqlude-client"
+  },
+  "isoimagewriter": {
+    "description": "Program to write hybrid ISO files onto USB disks",
+    "name": "isoimagewriter",
+    "project_path": "extragear/utils/isoimagewriter",
+    "repo_path": "utilities/isoimagewriter"
+  },
+  "itinerary": {
+    "description": "Itinerary and boarding pass management application",
+    "name": "itinerary",
+    "project_path": "kde/pim/itinerary",
+    "repo_path": "pim/itinerary"
+  },
+  "jovie": {
+    "description": "Jovie is the KDE text to speech system application",
+    "name": "jovie",
+    "project_path": "unmaintained/jovie",
+    "repo_path": "unmaintained/jovie"
+  },
+  "jsmoke": {
+    "description": "Smoke bindings for QtScript.",
+    "name": "jsmoke",
+    "project_path": "unmaintained/jsmoke",
+    "repo_path": "unmaintained/jsmoke"
+  },
+  "juk": {
+    "description": "Audio jukebox app, supporting collections of MP3, Ogg Vorbis and FLAC audio files",
+    "name": "juk",
+    "project_path": "kde/kdemultimedia/juk",
+    "repo_path": "multimedia/juk"
+  },
+  "jungle": {
+    "description": "Jungle is an absolutely awesome video player for managing your videos (movies, tvshows, etc)",
+    "name": "jungle",
+    "project_path": "playground/multimedia/jungle",
+    "repo_path": "unmaintained/jungle"
+  },
+  "k3b": {
+    "description": "Full-featured CD/DVD/Blu-ray burning and ripping application",
+    "name": "k3b",
+    "project_path": "kde/kdemultimedia/k3b",
+    "repo_path": "multimedia/k3b"
+  },
+  "kaccessible": {
+    "description": "kaccessible implements a QAccessibleBridgePlugin to provide accessibility services like focus tracking and a screenreader.",
+    "name": "kaccessible",
+    "project_path": "unmaintained/kaccessible",
+    "repo_path": "unmaintained/kaccessible"
+  },
+  "kaccounts-integration": {
+    "description": "Online account management system and its Plasma integration components",
+    "name": "kaccounts-integration",
+    "project_path": "kde/kdenetwork/kaccounts-integration",
+    "repo_path": "network/kaccounts-integration"
+  },
+  "kaccounts-mobile": {
+    "description": "Collection of things for KAccounts targeted for Plasma Mobile",
+    "name": "kaccounts-mobile",
+    "project_path": "playground/mobile/kaccounts-mobile",
+    "repo_path": "plasma-mobile/kaccounts-mobile"
+  },
+  "kaccounts-providers": {
+    "description": "Online account providers for the KAccounts system",
+    "name": "kaccounts-providers",
+    "project_path": "kde/kdenetwork/kaccounts-providers",
+    "repo_path": "network/kaccounts-providers"
+  },
+  "kactivitymanagerd": {
+    "description": "System service to manage user's activities, track the usage patterns etc.",
+    "name": "kactivitymanagerd",
+    "project_path": "kde/workspace/kactivitymanagerd",
+    "repo_path": "plasma/kactivitymanagerd"
+  },
+  "kaddressbook": {
+    "description": "Address book application to manage your contacts",
+    "name": "kaddressbook",
+    "project_path": "kde/pim/kaddressbook",
+    "repo_path": "pim/kaddressbook"
+  },
+  "kaffeine": {
+    "description": "Media player with support for digital television (DVB-C/S/S2/T, ATSC, CI/CAM)",
+    "name": "kaffeine",
+    "project_path": "extragear/multimedia/kaffeine",
+    "repo_path": "multimedia/kaffeine"
+  },
+  "kaidan": {
+    "description": "Simple and user-friendly Jabber/XMPP client for every device and platform",
+    "name": "kaidan",
+    "project_path": "kdereview/kaidan",
+    "repo_path": "network/kaidan"
+  },
+  "kairo": {
+    "description": "Programmable timer",
+    "name": "kairo",
+    "project_path": "playground/utils/kairo",
+    "repo_path": "utilities/kairo"
+  },
+  "kajongg": {
+    "description": "Mah Jongg - the ancient Chinese board game for 4 players",
+    "name": "kajongg",
+    "project_path": "kde/kdegames/kajongg",
+    "repo_path": "games/kajongg"
+  },
+  "kalarm": {
+    "description": "Application to manage alarms and other timer-based alerts on the desktop",
+    "name": "kalarm",
+    "project_path": "kde/pim/kalarm",
+    "repo_path": "pim/kalarm"
+  },
+  "kalarmcal": {
+    "description": "Calendar support for KAlarm",
+    "name": "kalarmcal",
+    "project_path": "kde/pim/kalarmcal",
+    "repo_path": "pim/kalarmcal"
+  },
+  "kalgebra": {
+    "description": "2D and 3D Graph Calculator",
+    "name": "kalgebra",
+    "project_path": "kde/kdeedu/kalgebra",
+    "repo_path": "education/kalgebra"
+  },
+  "kalk": {
+    "description": "Kalk is a powerful cross-platform calculator application built with the [Kirigami framework](https://kde.org/products/kirigami/)",
+    "name": "kalk",
+    "project_path": "extragear/utils/kalk",
+    "repo_path": "utilities/kalk"
+  },
+  "kalm": {
+    "description": "Kalm can teach you different breathing techniques.",
+    "name": "kalm",
+    "project_path": "kdereview/kalm",
+    "repo_path": "utilities/kalm"
+  },
+  "kalternatives": {
+    "description": "Distribution alternatives configuration",
+    "name": "kalternatives",
+    "project_path": "playground/sysadmin/kalternatives",
+    "repo_path": "system/kalternatives"
+  },
+  "kalzium": {
+    "description": "Periodic Table of Elements",
+    "name": "kalzium",
+    "project_path": "kde/kdeedu/kalzium",
+    "repo_path": "education/kalzium"
+  },
+  "kamera": {
+    "description": "KDE integration for gphoto2 cameras",
+    "name": "kamera",
+    "project_path": "kde/kdegraphics/kamera",
+    "repo_path": "graphics/kamera"
+  },
+  "kamoso": {
+    "description": "Application to take pictures and videos with your webcam",
+    "name": "kamoso",
+    "project_path": "kde/kdemultimedia/kamoso",
+    "repo_path": "multimedia/kamoso"
+  },
+  "kanagram": {
+    "description": "Letter Order Game",
+    "name": "kanagram",
+    "project_path": "kde/kdeedu/kanagram",
+    "repo_path": "education/kanagram"
+  },
+  "kanalytics": {
+    "description": "KAnalytics provides a library and a set of tools to analyze system information and upload it to KDE servers.",
+    "name": "kanalytics",
+    "project_path": "playground/utils/kanalytics",
+    "repo_path": "unmaintained/kanalytics"
+  },
+  "kannasaver": {
+    "description": "A Screen Saver for Plasma showing Japanese Characters",
+    "name": "kannasaver",
+    "project_path": "unmaintained/kannasaver",
+    "repo_path": "unmaintained/kannasaver"
+  },
+  "kapa": {
+    "description": "KDE Advanced Personal Assistant",
+    "name": "kapa",
+    "project_path": "playground/base/kapa",
+    "repo_path": "unmaintained/kapa"
+  },
+  "kapidox": {
+    "description": "Frameworks API Documentation Tools",
+    "name": "kapidox",
+    "project_path": "frameworks/kapidox",
+    "repo_path": "frameworks/kapidox"
+  },
+  "kapman": {
+    "description": "Kapman is a clone of the well known game Pac-Man",
+    "name": "kapman",
+    "project_path": "kde/kdegames/kapman",
+    "repo_path": "games/kapman"
+  },
+  "kapptemplate": {
+    "description": "Factory for the easy creation of KDE/Qt components and programs",
+    "name": "kapptemplate",
+    "project_path": "kde/kdesdk/kapptemplate",
+    "repo_path": "sdk/kapptemplate"
+  },
+  "karchive": {
+    "description": "Qt addon providing access to numerous types of archives",
+    "name": "karchive",
+    "project_path": "frameworks/karchive",
+    "repo_path": "frameworks/karchive"
+  },
+  "kard": {
+    "description": "Memory-like game for kids",
+    "name": "kard",
+    "project_path": "playground/edu/kard",
+    "repo_path": "education/kard"
+  },
+  "kartesio": {
+    "description": "Calculate best fit curves with experimental points using regression or neural networks",
+    "name": "kartesio",
+    "project_path": "playground/edu/kartesio",
+    "repo_path": "education/kartesio"
+  },
+  "kasts": {
+    "description": "Kirigami-based podcast player",
+    "name": "kasts",
+    "project_path": "extragear/multimedia/kasts",
+    "repo_path": "multimedia/kasts"
+  },
+  "kasync": {
+    "description": "C++ library for controlling asynchronous tasks",
+    "name": "kasync",
+    "project_path": "playground/libs/kasync",
+    "repo_path": "libraries/kasync"
+  },
+  "kate": {
+    "description": "Modern text editor built on the KDE Frameworks and Qt",
+    "name": "kate",
+    "project_path": "kde/applications/kate",
+    "repo_path": "utilities/kate"
+  },
+  "katomic": {
+    "description": "Katomic is a fun and educational game built around molecular geometry",
+    "name": "katomic",
+    "project_path": "kde/kdegames/katomic",
+    "repo_path": "games/katomic"
+  },
+  "kaudiocreator": {
+    "description": "KAudioCreator is a program for ripping and encoding Audio-CDs, encoding files from disk.",
+    "name": "kaudiocreator",
+    "project_path": "unmaintained/kaudiocreator",
+    "repo_path": "unmaintained/kaudiocreator"
+  },
+  "kauth": {
+    "description": "KAuth",
+    "name": "kauth",
+    "project_path": "frameworks/kauth",
+    "repo_path": "frameworks/kauth"
+  },
+  "kbackup": {
+    "description": "Backup program with an easy-to-use interface",
+    "name": "kbackup",
+    "project_path": "kde/kdeutils/kbackup",
+    "repo_path": "utilities/kbackup"
+  },
+  "kbibtex": {
+    "description": "An editor for bibliographies used with LaTeX",
+    "name": "kbibtex",
+    "project_path": "extragear/office/kbibtex",
+    "repo_path": "office/kbibtex"
+  },
+  "kbibtex-testset": {
+    "description": "Testing data for KBibTex",
+    "name": "kbibtex-testset",
+    "project_path": "extragear/office/kbibtex-testset",
+    "repo_path": "office/kbibtex-testset"
+  },
+  "kblackbox": {
+    "description": "KBlackBox is a game of hide and seek played on a grid of boxes",
+    "name": "kblackbox",
+    "project_path": "kde/kdegames/kblackbox",
+    "repo_path": "games/kblackbox"
+  },
+  "kblocks": {
+    "description": "KBlocks is the classic falling blocks game",
+    "name": "kblocks",
+    "project_path": "kde/kdegames/kblocks",
+    "repo_path": "games/kblocks"
+  },
+  "kblog": {
+    "description": "Support for reading various blog feeds",
+    "name": "kblog",
+    "project_path": "kde/pim/kblog",
+    "repo_path": "pim/kblog"
+  },
+  "kbookmarks": {
+    "description": "KBookmarks",
+    "name": "kbookmarks",
+    "project_path": "frameworks/kbookmarks",
+    "repo_path": "frameworks/kbookmarks"
+  },
+  "kbounce": {
+    "description": "KBounce is a single player arcade game with the elements of puzzle",
+    "name": "kbounce",
+    "project_path": "kde/kdegames/kbounce",
+    "repo_path": "games/kbounce"
+  },
+  "kbreakout": {
+    "description": "KBreakOut is a Breakout-like game. Its objective is to destroy as many bricks as possible without losing the ball.",
+    "name": "kbreakout",
+    "project_path": "kde/kdegames/kbreakout",
+    "repo_path": "games/kbreakout"
+  },
+  "kbruch": {
+    "description": "Practice Fractions",
+    "name": "kbruch",
+    "project_path": "kde/kdeedu/kbruch",
+    "repo_path": "education/kbruch"
+  },
+  "kcachegrind": {
+    "description": "GUI to profilers such as Valgrind",
+    "name": "kcachegrind",
+    "project_path": "kde/kdesdk/kcachegrind",
+    "repo_path": "sdk/kcachegrind"
+  },
+  "kcalc": {
+    "description": "Calculator offering everything a scientific calculator does, and more",
+    "name": "kcalc",
+    "project_path": "kde/kdeutils/kcalc",
+    "repo_path": "utilities/kcalc"
+  },
+  "kcalendarcore": {
+    "description": "KCalendarCore - Library for Interfacing with Calendars",
+    "name": "kcalendarcore",
+    "project_path": "frameworks/kcalendarcore",
+    "repo_path": "frameworks/kcalendarcore"
+  },
+  "kcalutils": {
+    "description": "Library to assist working with calendars",
+    "name": "kcalutils",
+    "project_path": "kde/pim/kcalutils",
+    "repo_path": "pim/kcalutils"
+  },
+  "kcgroups": {
+    "description": "Library for easy access to running apps and their control groups resources",
+    "name": "kcgroups",
+    "project_path": "kdereview/kcgroups",
+    "repo_path": "libraries/kcgroups"
+  },
+  "kcharselect": {
+    "description": "Tool to select and copy special characters from all installed fonts",
+    "name": "kcharselect",
+    "project_path": "kde/kdeutils/kcharselect",
+    "repo_path": "utilities/kcharselect"
+  },
+  "kclock": {
+    "description": "Clock app for Plasma Mobile",
+    "name": "kclock",
+    "project_path": "extragear/utils/kclock",
+    "repo_path": "utilities/kclock"
+  },
+  "kcm-grub2": {
+    "description": "KDE Control Module for configuring the GRUB bootloader",
+    "name": "kcm-grub2",
+    "project_path": "extragear/sysadmin/kcm-grub2",
+    "repo_path": "system/kcm-grub2"
+  },
+  "kcm-userconfig": {
+    "description": "A System Settings module for managing users and groups on your system.",
+    "name": "kcm-userconfig",
+    "project_path": "playground/sysadmin/kcm-userconfig",
+    "repo_path": "unmaintained/kcm-userconfig"
+  },
+  "kcmgrub2": {
+    "description": "Kcm module that manages the most common settings of grub2",
+    "name": "kcmgrub2",
+    "project_path": "playground/sysadmin/kcmgrub2",
+    "repo_path": "unmaintained/kcmgrub2"
+  },
+  "kcmutils": {
+    "description": "Utilities for interacting with KCModules",
+    "name": "kcmutils",
+    "project_path": "frameworks/kcmutils",
+    "repo_path": "frameworks/kcmutils"
+  },
+  "kcodecs": {
+    "description": "KCodecs provide a collection of methods to manipulate strings using various encodings",
+    "name": "kcodecs",
+    "project_path": "frameworks/kcodecs",
+    "repo_path": "frameworks/kcodecs"
+  },
+  "kcolorchooser": {
+    "description": "A small utility to select a color",
+    "name": "kcolorchooser",
+    "project_path": "kde/kdegraphics/kcolorchooser",
+    "repo_path": "graphics/kcolorchooser"
+  },
+  "kcoloredit": {
+    "description": "KDE Color Palette Editor",
+    "name": "kcoloredit",
+    "project_path": "unmaintained/kcoloredit",
+    "repo_path": "unmaintained/kcoloredit"
+  },
+  "kcolorscheme": {
+    "description": "Classes to read and interact with KColorScheme",
+    "name": "kcolorscheme",
+    "project_path": "frameworks/kcolorscheme",
+    "repo_path": "frameworks/kcolorscheme"
+  },
+  "kcompletion": {
+    "description": "KCompletion",
+    "name": "kcompletion",
+    "project_path": "frameworks/kcompletion",
+    "repo_path": "frameworks/kcompletion"
+  },
+  "kconfig": {
+    "description": "KConfig",
+    "name": "kconfig",
+    "project_path": "frameworks/kconfig",
+    "repo_path": "frameworks/kconfig"
+  },
+  "kconfigwidgets": {
+    "description": "Widgets for KConfig",
+    "name": "kconfigwidgets",
+    "project_path": "frameworks/kconfigwidgets",
+    "repo_path": "frameworks/kconfigwidgets"
+  },
+  "kcontacts": {
+    "description": "KContacts - Library for working with contact information",
+    "name": "kcontacts",
+    "project_path": "frameworks/kcontacts",
+    "repo_path": "frameworks/kcontacts"
+  },
+  "kcoreaddons": {
+    "description": "KCoreAddons",
+    "name": "kcoreaddons",
+    "project_path": "frameworks/kcoreaddons",
+    "repo_path": "frameworks/kcoreaddons"
+  },
+  "kcrash": {
+    "description": "KCrash",
+    "name": "kcrash",
+    "project_path": "frameworks/kcrash",
+    "repo_path": "frameworks/kcrash"
+  },
+  "kcron": {
+    "description": "Task scheduler by KDE",
+    "name": "kcron",
+    "project_path": "kde/kdeadmin/kcron",
+    "repo_path": "system/kcron"
+  },
+  "kcwsh": {
+    "description": "This project provides a terminal wrapper, both abstracted and using a Qt based sample backend. It is used to make a windows port of konsole possible.",
+    "name": "kcwsh",
+    "project_path": "playground/base/kcwsh",
+    "repo_path": "unmaintained/kcwsh"
+  },
+  "kdav": {
+    "description": "DAV protocol implementation with KJobs",
+    "name": "kdav",
+    "project_path": "frameworks/kdav",
+    "repo_path": "frameworks/kdav"
+  },
+  "kdav2": {
+    "description": "DAV protocol implementation with KJobs",
+    "name": "kdav2",
+    "project_path": "playground/pim/kdav2",
+    "repo_path": "pim/kdav2"
+  },
+  "kdb": {
+    "description": "Database connectivity and creation framework for various database vendors",
+    "name": "kdb",
+    "project_path": "extragear/libs/kdb",
+    "repo_path": "libraries/kdb"
+  },
+  "kdbusaddons": {
+    "description": "KDBusAddons",
+    "name": "kdbusaddons",
+    "project_path": "frameworks/kdbusaddons",
+    "repo_path": "frameworks/kdbusaddons"
+  },
+  "kde-artwork-active": {
+    "description": "Themes, wallpapers and splash screens for Plasma Active",
+    "name": "kde-artwork-active",
+    "project_path": "unmaintained/kde-artwork-active",
+    "repo_path": "unmaintained/kde-artwork-active"
+  },
+  "kde-baseapps": {
+    "description": "Collection of applications used for file and Internet browsing.",
+    "name": "kde-baseapps",
+    "project_path": "unmaintained/kde-baseapps",
+    "repo_path": "unmaintained/kde-baseapps"
+  },
+  "kde-build-metadata": {
+    "description": "DEPRECATED - CONTENT MOVED TO https://invent.kde.org/sysadmin/repo-metadata/-/tree/master/dependencies",
+    "name": "kde-build-metadata",
+    "project_path": "kde-build-metadata",
+    "repo_path": "sysadmin/kde-build-metadata"
+  },
+  "kde-builder": {
+    "description": "Script to streamline the process of setting up and maintaining a development environment for KDE software.",
+    "name": "kde-builder",
+    "project_path": "playground/sdk/kde-builder",
+    "repo_path": "sdk/kde-builder"
+  },
+  "kde-cli-tools": {
+    "description": "Tools based on KDE Frameworks 5 to better interact with the system",
+    "name": "kde-cli-tools",
+    "project_path": "kde/workspace/kde-cli-tools",
+    "repo_path": "plasma/kde-cli-tools"
+  },
+  "kde-dev-scripts": {
+    "description": "Scripts and setting files useful during development of KDE software",
+    "name": "kde-dev-scripts",
+    "project_path": "kde/kdesdk/kde-dev-scripts",
+    "repo_path": "sdk/kde-dev-scripts"
+  },
+  "kde-dev-utils": {
+    "description": "Small utilities for developers using KDE/Qt libs/frameworks",
+    "name": "kde-dev-utils",
+    "project_path": "kde/kdesdk/kde-dev-utils",
+    "repo_path": "sdk/kde-dev-utils"
+  },
+  "kde-gtk-config": {
+    "description": "Syncs KDE settings to GTK applications",
+    "name": "kde-gtk-config",
+    "project_path": "kde/workspace/kde-gtk-config",
+    "repo_path": "plasma/kde-gtk-config"
+  },
+  "kde-inotify-survey": {
+    "description": "Tooling for monitoring inotify limits and informing the user when they have been or about to be reached.",
+    "name": "kde-inotify-survey",
+    "project_path": "extragear/system/kde-inotify-survey",
+    "repo_path": "system/kde-inotify-survey"
+  },
+  "kde-nomodeset": {
+    "description": "Safe Graphics Mode Startup Utility",
+    "name": "kde-nomodeset",
+    "project_path": "playground/base/kde-nomodeset",
+    "repo_path": "system/kde-nomodeset"
+  },
+  "kde-now": {
+    "description": "Google Now alternative for the Plasma Desktop",
+    "name": "kde-now",
+    "project_path": "playground/base/kde-now",
+    "repo_path": "unmaintained/kde-now"
+  },
+  "kde-ruleset": {
+    "description": "svn2git rules files and support scripts for KDE's SVN-to-Git migration",
+    "name": "kde-ruleset",
+    "project_path": "playground/sdk/kde-ruleset",
+    "repo_path": "sdk/kde-ruleset"
+  },
+  "kde-runtime": {
+    "description": "Plugins and applications necessary for the running of KDE applications.",
+    "name": "kde-runtime",
+    "project_path": "unmaintained/kde-runtime",
+    "repo_path": "unmaintained/kde-runtime"
+  },
+  "kde-vdg-extras": {
+    "description": "Colour schemes, avatars and other additional visual assets for KDE Software created by the KDE VDG",
+    "name": "kde-vdg-extras",
+    "project_path": "playground/artwork/kde-xdg-extras",
+    "repo_path": "plasma/kde-vdg-extras"
+  },
+  "kde-workspace": {
+    "description": "Provides the interface and basic tools for the KDE workspace.",
+    "name": "kde-workspace",
+    "project_path": "kde/kde-workspace",
+    "repo_path": "unmaintained/kde-workspace"
+  },
+  "kde1": {
+    "description": "Metamodule for the KDE 1 Release, adapted to run on modern systems",
+    "name": "kde1",
+    "project_path": "historical/kde1",
+    "repo_path": "historical/kde1"
+  },
+  "kde1-kdeadmin": {
+    "description": "Historical copy of the admin applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdeadmin",
+    "project_path": "historical/kde1-kdeadmin",
+    "repo_path": "historical/kde1-kdeadmin"
+  },
+  "kde1-kdebase": {
+    "description": "Historical copy of the base applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdebase",
+    "project_path": "historical/kde1-kdebase",
+    "repo_path": "historical/kde1-kdebase"
+  },
+  "kde1-kdegames": {
+    "description": "Historical copy of the gaming applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdegames",
+    "project_path": "historical/kde1-kdegames",
+    "repo_path": "historical/kde1-kdegames"
+  },
+  "kde1-kdegraphics": {
+    "description": "Historical copy of the graphics applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdegraphics",
+    "project_path": "historical/kde1-kdegraphics",
+    "repo_path": "historical/kde1-kdegraphics"
+  },
+  "kde1-kdelibs": {
+    "description": "Historical copy of the libraries module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdelibs",
+    "project_path": "historical/kde1-kdelibs",
+    "repo_path": "historical/kde1-kdelibs"
+  },
+  "kde1-kdemultimedia": {
+    "description": "Historical copy of the multimedia applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdemultimedia",
+    "project_path": "historical/kde1-kdemultimedia",
+    "repo_path": "historical/kde1-kdemultimedia"
+  },
+  "kde1-kdenetwork": {
+    "description": "Historical copy of the network applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdenetwork",
+    "project_path": "historical/kde1-kdenetwork",
+    "repo_path": "historical/kde1-kdenetwork"
+  },
+  "kde1-kdetoys": {
+    "description": "Historical copy of the toys module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdetoys",
+    "project_path": "historical/kde1-kdetoys",
+    "repo_path": "historical/kde1-kdetoys"
+  },
+  "kde1-kdeutils": {
+    "description": "Historical copy of the utility applications module of KDE 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "kde1-kdeutils",
+    "project_path": "historical/kde1-kdeutils",
+    "repo_path": "historical/kde1-kdeutils"
+  },
+  "kde2": {
+    "description": "Metamodule for the KDE 2 Release, adapted to run on modern systems",
+    "name": "kde2",
+    "project_path": "historical/kde2",
+    "repo_path": "historical/kde2"
+  },
+  "kde2-kdelibs": {
+    "description": "Historical copy of the libraries module of KDE 2, adapted to compile on modern systems (circa. 2018)",
+    "name": "kde2-kdelibs",
+    "project_path": "historical/kde2-kdelibs",
+    "repo_path": "historical/kde2-kdelibs"
+  },
+  "kdeadmin-strigi-analyzers": {
+    "description": "Strigi analyzer for rpm files",
+    "name": "kdeadmin-strigi-analyzers",
+    "project_path": "unmaintained/kdeadmin-strigi-analyzers",
+    "repo_path": "unmaintained/kdeadmin-strigi-analyzers"
+  },
+  "kdebugsettings": {
+    "description": "Application to choose which QLoggingCategory are displayed",
+    "name": "kdebugsettings",
+    "project_path": "kde/kdeutils/kdebugsettings",
+    "repo_path": "utilities/kdebugsettings"
+  },
+  "kdeclarative": {
+    "description": "KDeclarative",
+    "name": "kdeclarative",
+    "project_path": "frameworks/kdeclarative",
+    "repo_path": "frameworks/kdeclarative"
+  },
+  "kdeconnect-android": {
+    "description": "Native Android port of the KDE Connect Qt app",
+    "name": "kdeconnect-android",
+    "project_path": "extragear/network/kdeconnect-android",
+    "repo_path": "network/kdeconnect-android"
+  },
+  "kdeconnect-ios": {
+    "description": "Native iOS port of KDE Connect",
+    "name": "kdeconnect-ios",
+    "project_path": "playground/network/kdeconnect-ios",
+    "repo_path": "network/kdeconnect-ios"
+  },
+  "kdeconnect-kde": {
+    "description": "Multi-platform app that allows your devices to communicate",
+    "name": "kdeconnect-kde",
+    "project_path": "kde/kdenetwork/kdeconnect-kde",
+    "repo_path": "network/kdeconnect-kde"
+  },
+  "kdeconnect-meta": {
+    "description": "Coordination for multi-platform applications that allows your devices to communicate",
+    "name": "kdeconnect-meta",
+    "project_path": "kde/kdenetwork/kdeconnect-meta",
+    "repo_path": "network/kdeconnect-meta"
+  },
+  "kdecoration": {
+    "description": "Plugin-based library to create window decorations",
+    "name": "kdecoration",
+    "project_path": "kde/workspace/kdecoration",
+    "repo_path": "plasma/kdecoration"
+  },
+  "kdecoration-viewer": {
+    "description": "Application that allows to preview a KDecoration plugin",
+    "name": "kdecoration-viewer",
+    "project_path": "playground/base/kdecoration-viewer",
+    "repo_path": "sdk/kdecoration-viewer"
+  },
+  "kded": {
+    "description": "KDE Daemon",
+    "name": "kded",
+    "project_path": "frameworks/kded",
+    "repo_path": "frameworks/kded"
+  },
+  "kdeedu-data": {
+    "description": "Shared icons, artwork and data files for educational applications",
+    "name": "kdeedu-data",
+    "project_path": "kde/kdeedu/kdeedu-data",
+    "repo_path": "education/kdeedu-data"
+  },
+  "kdeexamples": {
+    "description": "A collection of coding examples that provide practical demonstrations of the usage of KDE libraries and app development infrastructure.",
+    "name": "kdeexamples",
+    "project_path": "unmaintained/kdeexamples",
+    "repo_path": "unmaintained/kdeexamples"
+  },
+  "kdegraphics": {
+    "description": "Super-repository which holds the history of the kdegraphics toplevel files",
+    "name": "kdegraphics",
+    "project_path": "unmaintained/kdegraphics",
+    "repo_path": "unmaintained/kdegraphics"
+  },
+  "kdegraphics-mobipocket": {
+    "description": "A collection of plugins to handle mobipocket files",
+    "name": "kdegraphics-mobipocket",
+    "project_path": "kde/kdegraphics/kdegraphics-mobipocket",
+    "repo_path": "graphics/kdegraphics-mobipocket"
+  },
+  "kdegraphics-strigi-analyzer": {
+    "description": "Strigi analyzers for various graphics file formats",
+    "name": "kdegraphics-strigi-analyzer",
+    "project_path": "unmaintained/kdegraphics-strigi-analyzer",
+    "repo_path": "unmaintained/kdegraphics-strigi-analyzer"
+  },
+  "kdegraphics-thumbnailers": {
+    "description": "Thumbnailers for various graphics file formats",
+    "name": "kdegraphics-thumbnailers",
+    "project_path": "kde/kdegraphics/kdegraphics-thumbnailers",
+    "repo_path": "graphics/kdegraphics-thumbnailers"
+  },
+  "kdelibs": {
+    "description": "The KDE Library",
+    "name": "kdelibs",
+    "project_path": "unmaintained/kdelibs",
+    "repo_path": "unmaintained/kdelibs"
+  },
+  "kdelibs4support": {
+    "description": "KDE 4 Support",
+    "name": "kdelibs4support",
+    "project_path": "frameworks/kdelibs4support",
+    "repo_path": "frameworks/kdelibs4support"
+  },
+  "kdenetwork-filesharing": {
+    "description": "Samba file sharing plugin for file properties",
+    "name": "kdenetwork-filesharing",
+    "project_path": "kde/kdenetwork/kdenetwork-filesharing",
+    "repo_path": "network/kdenetwork-filesharing"
+  },
+  "kdenetwork-strigi-analyzers": {
+    "description": "Analyzer plugins for Strigi",
+    "name": "kdenetwork-strigi-analyzers",
+    "project_path": "unmaintained/kdenetwork-strigi-analyzers",
+    "repo_path": "unmaintained/kdenetwork-strigi-analyzers"
+  },
+  "kdenlive": {
+    "description": "Free and open source video editor, based on MLT Framework and KDE Frameworks 5",
+    "name": "kdenlive",
+    "project_path": "kde/kdemultimedia/kdenlive",
+    "repo_path": "multimedia/kdenlive"
+  },
+  "kdenlive-opentimelineio": {
+    "description": "OpenTimelineIO Adapter for Kdenlive",
+    "name": "kdenlive-opentimelineio",
+    "project_path": "playground/multimedia/kdenlive-opentimelineio",
+    "repo_path": "multimedia/kdenlive-opentimelineio"
+  },
+  "kdenlive-test-suite": {
+    "description": "Tooling, samples and other materials needed for testing Kdenlive functionality",
+    "name": "kdenlive-test-suite",
+    "project_path": "playground/multimedia/kdenlive-test-suite",
+    "repo_path": "multimedia/kdenlive-test-suite"
+  },
+  "kdepim": {
+    "description": "KDE's Personal Information Management suite",
+    "name": "kdepim",
+    "project_path": "unmaintained/kdepim",
+    "repo_path": "unmaintained/kdepim"
+  },
+  "kdepim-addons": {
+    "description": "Add-ons for KDE PIM apps (KMail, KAddressBook etc.)",
+    "name": "kdepim-addons",
+    "project_path": "kde/pim/kdepim-addons",
+    "repo_path": "pim/kdepim-addons"
+  },
+  "kdepim-apps-libs": {
+    "description": "This module contains mail-related libraries",
+    "name": "kdepim-apps-libs",
+    "project_path": "kde/pim/kdepim-apps-libs",
+    "repo_path": "pim/kdepim-apps-libs"
+  },
+  "kdepim-docker": {
+    "description": "Docker image for easy KDE PIM development",
+    "name": "kdepim-docker",
+    "project_path": "playground/pim/kdepim-docker",
+    "repo_path": "pim/kdepim-docker"
+  },
+  "kdepim-runtime": {
+    "description": "Akonadi agents and resources",
+    "name": "kdepim-runtime",
+    "project_path": "kde/pim/kdepim-runtime",
+    "repo_path": "pim/kdepim-runtime"
+  },
+  "kdepimlibs": {
+    "description": "KDE''s Personal Information Management Libraries",
+    "name": "kdepimlibs",
+    "project_path": "unmaintained/kdepimlibs",
+    "repo_path": "unmaintained/kdepimlibs"
+  },
+  "kdeplasma-addons": {
+    "description": "All kind of add-ons to improve your Plasma experience",
+    "name": "kdeplasma-addons",
+    "project_path": "kde/workspace/kdeplasma-addons",
+    "repo_path": "plasma/kdeplasma-addons"
+  },
+  "kdesdk-devenv-dependencies": {
+    "description": "Describes modules useful for development of KDE applications and Plasma",
+    "name": "kdesdk-devenv-dependencies",
+    "project_path": "playground/packaging/kdesdk-devenv-dependencies",
+    "repo_path": "packaging/kdesdk-devenv-dependencies"
+  },
+  "kdesdk-kio": {
+    "description": "KIO workers useful for software development",
+    "name": "kdesdk-kio",
+    "project_path": "kde/kdesdk/kdesdk-kio",
+    "repo_path": "sdk/kdesdk-kio"
+  },
+  "kdesdk-strigi-analyzers": {
+    "description": "Analyzer plugins for strigi",
+    "name": "kdesdk-strigi-analyzers",
+    "project_path": "unmaintained/kdesdk-strigi-analyzers",
+    "repo_path": "unmaintained/kdesdk-strigi-analyzers"
+  },
+  "kdesdk-thumbnailers": {
+    "description": "Plugins for the thumbnailing system",
+    "name": "kdesdk-thumbnailers",
+    "project_path": "kde/kdesdk/kdesdk-thumbnailers",
+    "repo_path": "sdk/kdesdk-thumbnailers"
+  },
+  "kdesignerplugin": {
+    "description": "KDesignerPlugin",
+    "name": "kdesignerplugin",
+    "project_path": "frameworks/kdesignerplugin",
+    "repo_path": "frameworks/kdesignerplugin"
+  },
+  "kdesrc-build": {
+    "description": "Script to streamline setting up and maintaining KDE software development environment",
+    "name": "kdesrc-build",
+    "project_path": "extragear/utils/kdesrc-build",
+    "repo_path": "sdk/kdesrc-build"
+  },
+  "kdesu": {
+    "description": "KDE Su",
+    "name": "kdesu",
+    "project_path": "frameworks/kdesu",
+    "repo_path": "frameworks/kdesu"
+  },
+  "kdesudo": {
+    "description": "Sudo GUI",
+    "name": "kdesudo",
+    "project_path": "unmaintained/kdesudo",
+    "repo_path": "unmaintained/kdesudo"
+  },
+  "kdesvn": {
+    "description": "Subversion client by KDE",
+    "name": "kdesvn",
+    "project_path": "extragear/sdk/kdesvn",
+    "repo_path": "sdk/kdesvn"
+  },
+  "kdev-cargo": {
+    "description": "Cargo language support for KDevelop",
+    "name": "kdev-cargo",
+    "project_path": "unmaintained/kdev-cargo",
+    "repo_path": "unmaintained/kdev-cargo"
+  },
+  "kdev-clang": {
+    "description": "Integrates Clang into KDevelop for C/C++/Objective-C language support.",
+    "name": "kdev-clang",
+    "project_path": "unmaintained/kdev-clang",
+    "repo_path": "unmaintained/kdev-clang"
+  },
+  "kdev-clang-tidy": {
+    "description": "KDevelop plugin for clang-tidy static analysis support",
+    "name": "kdev-clang-tidy",
+    "project_path": "unmaintained/kdev-clang-tidy",
+    "repo_path": "unmaintained/kdev-clang-tidy"
+  },
+  "kdev-control-flow-graph": {
+    "description": "KDevelop plugin that visualizes data from static code analysis in graphs",
+    "name": "kdev-control-flow-graph",
+    "project_path": "playground/devtools/plugins/kdev-control-flow-graph",
+    "repo_path": "kdevelop/kdev-control-flow-graph"
+  },
+  "kdev-cppcheck": {
+    "description": "cppcheck support for kdevelop",
+    "name": "kdev-cppcheck",
+    "project_path": "unmaintained/kdev-cppcheck",
+    "repo_path": "unmaintained/kdev-cppcheck"
+  },
+  "kdev-crossfire": {
+    "description": "KDevelop Debugger plugin for debugging JavaScript using crossfire",
+    "name": "kdev-crossfire",
+    "project_path": "unmaintained/kdev-crossfire",
+    "repo_path": "unmaintained/kdev-crossfire"
+  },
+  "kdev-css": {
+    "description": "KDevelop plugin for CSS language support",
+    "name": "kdev-css",
+    "project_path": "playground/devtools/plugins/kdev-css",
+    "repo_path": "kdevelop/kdev-css"
+  },
+  "kdev-embedded": {
+    "description": "Plugin for KDevelop to support the development of embedded systems",
+    "name": "kdev-embedded",
+    "project_path": "playground/devtools/plugins/kdev-embedded",
+    "repo_path": "kdevelop/kdev-embedded"
+  },
+  "kdev-executebrowser": {
+    "description": "KDevelop plugin that starts a script in a web browser",
+    "name": "kdev-executebrowser",
+    "project_path": "playground/devtools/plugins/kdev-executebrowser",
+    "repo_path": "kdevelop/kdev-executebrowser"
+  },
+  "kdev-go": {
+    "description": "Go language support for KDevelop",
+    "name": "kdev-go",
+    "project_path": "unmaintained/kdev-go",
+    "repo_path": "unmaintained/kdev-go"
+  },
+  "kdev-java": {
+    "description": "Java language support for KDevelop4",
+    "name": "kdev-java",
+    "project_path": "unmaintained/kdev-java",
+    "repo_path": "unmaintained/kdev-java"
+  },
+  "kdev-krazy2": {
+    "description": "A plugin for KDevelop to perform Krazy2 analysis",
+    "name": "kdev-krazy2",
+    "project_path": "playground/devtools/plugins/kdev-krazy2",
+    "repo_path": "kdevelop/kdev-krazy2"
+  },
+  "kdev-mercurial": {
+    "description": "Mercurial support plugin for KDevelop",
+    "name": "kdev-mercurial",
+    "project_path": "playground/devtools/plugins/kdev-mercurial",
+    "repo_path": "kdevelop/kdev-mercurial"
+  },
+  "kdev-perforce": {
+    "description": "A plugin for Kdevelop 4 that enables integration with Perforce",
+    "name": "kdev-perforce",
+    "project_path": "unmaintained/kdev-perforce",
+    "repo_path": "unmaintained/kdev-perforce"
+  },
+  "kdev-php": {
+    "description": "PHP Language Plugin for KDevelop",
+    "name": "kdev-php",
+    "project_path": "extragear/kdevelop/plugins/kdev-php",
+    "repo_path": "kdevelop/kdev-php"
+  },
+  "kdev-php-docs": {
+    "description": "PHP Documentation plugin for KDevelop/Quanta.",
+    "name": "kdev-php-docs",
+    "project_path": "unmaintained/kdev-php-docs",
+    "repo_path": "unmaintained/kdev-php-docs"
+  },
+  "kdev-php-formatter": {
+    "description": "KDevelop Plugin for PHPFormatter",
+    "name": "kdev-php-formatter",
+    "project_path": "unmaintained/kdev-php-formatter",
+    "repo_path": "unmaintained/kdev-php-formatter"
+  },
+  "kdev-python": {
+    "description": "KDevelop Python language support",
+    "name": "kdev-python",
+    "project_path": "extragear/kdevelop/plugins/kdev-python",
+    "repo_path": "kdevelop/kdev-python"
+  },
+  "kdev-qmake": {
+    "description": "Support for Qt's qmake build system.",
+    "name": "kdev-qmake",
+    "project_path": "unmaintained/kdev-qmake",
+    "repo_path": "unmaintained/kdev-qmake"
+  },
+  "kdev-qmljs": {
+    "description": "This plugin brings qml and JavaScript language support to KDevelop",
+    "name": "kdev-qmljs",
+    "project_path": "unmaintained/kdev-qmljs",
+    "repo_path": "unmaintained/kdev-qmljs"
+  },
+  "kdev-ruby": {
+    "description": "KDevelop plugin which provides Ruby language support",
+    "name": "kdev-ruby",
+    "project_path": "playground/devtools/plugins/kdev-ruby",
+    "repo_path": "kdevelop/kdev-ruby"
+  },
+  "kdev-rust": {
+    "description": "KDevelop plugin which provides Rust language support.",
+    "name": "kdev-rust",
+    "project_path": "unmaintained/kdev-rust",
+    "repo_path": "unmaintained/kdev-rust"
+  },
+  "kdev-sql": {
+    "description": "KDevelop Plugin for SQL Language Support",
+    "name": "kdev-sql",
+    "project_path": "unmaintained/kdev-sql",
+    "repo_path": "unmaintained/kdev-sql"
+  },
+  "kdev-upload": {
+    "description": "KDevelop plugin for uploading files to a remote server",
+    "name": "kdev-upload",
+    "project_path": "playground/devtools/plugins/kdev-upload",
+    "repo_path": "kdevelop/kdev-upload"
+  },
+  "kdev-valgrind": {
+    "description": "Plugin offering a full integration of the Valgrind suite into KDevelop",
+    "name": "kdev-valgrind",
+    "project_path": "playground/devtools/plugins/kdev-valgrind",
+    "repo_path": "kdevelop/kdev-valgrind"
+  },
+  "kdev-verapp": {
+    "description": "Verapp support plugin for KDevelop",
+    "name": "kdev-verapp",
+    "project_path": "playground/devtools/plugins/kdev-verapp",
+    "repo_path": "kdevelop/kdev-verapp"
+  },
+  "kdev-www": {
+    "description": "KDevelop website content.",
+    "name": "kdev-www",
+    "project_path": "unmaintained/kdev-www",
+    "repo_path": "unmaintained/kdev-www"
+  },
+  "kdev-xdebug": {
+    "description": "KDevelop debugger plugin for PHP using XDebug",
+    "name": "kdev-xdebug",
+    "project_path": "playground/devtools/plugins/kdev-xdebug",
+    "repo_path": "kdevelop/kdev-xdebug"
+  },
+  "kdev-xml": {
+    "description": "KDevelop Plugin for XML and HTML Language Support",
+    "name": "kdev-xml",
+    "project_path": "unmaintained/kdev-xml",
+    "repo_path": "unmaintained/kdev-xml"
+  },
+  "kdev-xtest": {
+    "description": "Implements the interface from the Veritas library for unit testing with QTestLib.",
+    "name": "kdev-xtest",
+    "project_path": "unmaintained/kdev-xtest",
+    "repo_path": "unmaintained/kdev-xtest"
+  },
+  "kdevelop": {
+    "description": "Cross-platform IDE for C, C++, Python, QML/JavaScript and PHP",
+    "name": "kdevelop",
+    "project_path": "extragear/kdevelop/kdevelop",
+    "repo_path": "kdevelop/kdevelop"
+  },
+  "kdevelop-pg-qt": {
+    "description": "KDevelop Parser Generator, used in the PHP language plugin and others",
+    "name": "kdevelop-pg-qt",
+    "project_path": "extragear/kdevelop/utilities/kdevelop-pg-qt",
+    "repo_path": "kdevelop/kdevelop-pg-qt"
+  },
+  "kdevplatform": {
+    "description": "The KDevelop Platform, supplying a framework to build IDE-like applications on top of it.",
+    "name": "kdevplatform",
+    "project_path": "unmaintained/kdevplatform",
+    "repo_path": "unmaintained/kdevplatform"
+  },
+  "kdewebkit": {
+    "description": "KDE Webkit",
+    "name": "kdewebkit",
+    "project_path": "frameworks/kdewebkit",
+    "repo_path": "frameworks/kdewebkit"
+  },
+  "kdewin": {
+    "description": "Library that provides supplementary tools to compile KDE applications on Windows - open merge requests to submit changes",
+    "name": "kdewin",
+    "project_path": "kdesupport/kdewin",
+    "repo_path": "packaging/kdewin"
+  },
+  "kdewin-installer": {
+    "description": "Installer for KDE applications on Windows",
+    "name": "kdewin-installer",
+    "project_path": "kdesupport/kdewin-installer",
+    "repo_path": "packaging/kdewin-installer"
+  },
+  "kdewin-tools": {
+    "description": "Supplementary tools which assist compiling KDE applications on Windows",
+    "name": "kdewin-tools",
+    "project_path": "kdesupport/kdewin-tools",
+    "repo_path": "packaging/kdewin-tools"
+  },
+  "kdf": {
+    "description": "Displays available storage devices and information about their usage",
+    "name": "kdf",
+    "project_path": "kde/kdeutils/kdf",
+    "repo_path": "utilities/kdf"
+  },
+  "kdgantt2": {
+    "description": "This lib provides gantt support",
+    "name": "kdgantt2",
+    "project_path": "unmaintained/kdgantt2",
+    "repo_path": "unmaintained/kdgantt2"
+  },
+  "kdiagram": {
+    "description": "Powerful libraries (KChart, KGantt) for creating business diagrams",
+    "name": "kdiagram",
+    "project_path": "extragear/graphics/kdiagram",
+    "repo_path": "graphics/kdiagram"
+  },
+  "kdialog": {
+    "description": "Tool to show nice dialog boxes from shell scripts",
+    "name": "kdialog",
+    "project_path": "kde/applications/kdialog",
+    "repo_path": "utilities/kdialog"
+  },
+  "kdiamond": {
+    "description": "KDiamond is a single player puzzle game",
+    "name": "kdiamond",
+    "project_path": "kde/kdegames/kdiamond",
+    "repo_path": "games/kdiamond"
+  },
+  "kdiff3": {
+    "description": "Utility for comparing and merging files and directories",
+    "name": "kdiff3",
+    "project_path": "extragear/utils/kdiff3",
+    "repo_path": "sdk/kdiff3"
+  },
+  "kdisksutilities": {
+    "description": "Disks management utilities",
+    "name": "kdisksutilities",
+    "project_path": "playground/sysadmin/kdisksutilities",
+    "repo_path": "system/kdisksutilities"
+  },
+  "kdnssd": {
+    "description": "KDNSSD Framework",
+    "name": "kdnssd",
+    "project_path": "frameworks/kdnssd",
+    "repo_path": "frameworks/kdnssd"
+  },
+  "kdoctools": {
+    "description": "KDocTools",
+    "name": "kdoctools",
+    "project_path": "frameworks/kdoctools",
+    "repo_path": "frameworks/kdoctools"
+  },
+  "kdocumentstore": {
+    "description": "Library to store QVariants and QVariantMaps",
+    "name": "kdocumentstore",
+    "project_path": "playground/libs/kdocumentstore",
+    "repo_path": "libraries/kdocumentstore"
+  },
+  "kdots": {
+    "description": "KDots is the simple implementation of the game of dots written with Qt Toolkit and KDELibs.\n\nThe purpose of Dots game is to catch your opponent's dots by placing your dots on the game board where the lines cross.",
+    "name": "kdots",
+    "project_path": "unmaintained/kdots",
+    "repo_path": "unmaintained/kdots"
+  },
+  "kdsoap": {
+    "description": null,
+    "name": "kdsoap",
+    "project_path": "third-party/kdsoap",
+    "repo_path": null
+  },
+  "kdsoap-ws-discovery-client": {
+    "description": "Library for finding WS-Discovery devices in the network using Qt5 and KDSoap.",
+    "name": "kdsoap-ws-discovery-client",
+    "project_path": "playground/libs/kdsoap-ws-discovery-client",
+    "repo_path": "libraries/kdsoap-ws-discovery-client"
+  },
+  "keditbookmarks": {
+    "description": "Bookmarks editor",
+    "name": "keditbookmarks",
+    "project_path": "kde/applications/keditbookmarks",
+    "repo_path": "utilities/keditbookmarks"
+  },
+  "kemoticons": {
+    "description": "KEmoticons",
+    "name": "kemoticons",
+    "project_path": "frameworks/kemoticons",
+    "repo_path": "frameworks/kemoticons"
+  },
+  "keurocalc": {
+    "description": "Utility to handle currency conversions between European currencies",
+    "name": "keurocalc",
+    "project_path": "extragear/utils/keurocalc",
+    "repo_path": "utilities/keurocalc"
+  },
+  "kexi": {
+    "description": "Visual database applications creator",
+    "name": "kexi",
+    "project_path": "calligra/kexi",
+    "repo_path": "office/kexi"
+  },
+  "keysmith": {
+    "description": "OTP client for Plasma Mobile and Desktop",
+    "name": "keysmith",
+    "project_path": "extragear/utils/keysmith",
+    "repo_path": "utilities/keysmith"
+  },
+  "kf5book": {
+    "description": "Repository for the development of the KDE Frameworks Cookbook",
+    "name": "kf5book",
+    "project_path": "books/kf5book",
+    "repo_path": "documentation/kf5book"
+  },
+  "kfilemetadata": {
+    "description": "A library for extracting file metadata",
+    "name": "kfilemetadata",
+    "project_path": "frameworks/kfilemetadata",
+    "repo_path": "frameworks/kfilemetadata"
+  },
+  "kfilereplace": {
+    "description": "Utility to assist with bulk file renaming",
+    "name": "kfilereplace",
+    "project_path": "unmaintained/kfilereplace",
+    "repo_path": "unmaintained/kfilereplace"
+  },
+  "kfind": {
+    "description": "File search utility by KDE",
+    "name": "kfind",
+    "project_path": "kde/applications/kfind",
+    "repo_path": "utilities/kfind"
+  },
+  "kfloppy": {
+    "description": "Graphical utility to format 3.5\" and 5.25\" floppy disks",
+    "name": "kfloppy",
+    "project_path": "kde/kdeutils/kfloppy",
+    "repo_path": "utilities/kfloppy"
+  },
+  "kfourinline": {
+    "description": "KFourInLine is a four-in-a-row game",
+    "name": "kfourinline",
+    "project_path": "kde/kdegames/kfourinline",
+    "repo_path": "games/kfourinline"
+  },
+  "kfritz": {
+    "description": "A KDE call monitor and frontend for users of AVMs Fritz!Box routers.\n\nYou can download source-tarballs from github, see below.",
+    "name": "kfritz",
+    "project_path": "unmaintained/kfritz",
+    "repo_path": "unmaintained/kfritz"
+  },
+  "kgamma": {
+    "description": "Adjust your monitor's gamma settings",
+    "name": "kgamma",
+    "project_path": "kde/workspace/kgamma",
+    "repo_path": "plasma/kgamma"
+  },
+  "kgeography": {
+    "description": "Geography Trainer",
+    "name": "kgeography",
+    "project_path": "kde/kdeedu/kgeography",
+    "repo_path": "education/kgeography"
+  },
+  "kgeotag": {
+    "description": "Photo geotagging program",
+    "name": "kgeotag",
+    "project_path": "extragear/graphics/kgeotag",
+    "repo_path": "graphics/kgeotag"
+  },
+  "kget": {
+    "description": "Download Manager",
+    "name": "kget",
+    "project_path": "kde/kdenetwork/kget",
+    "repo_path": "network/kget"
+  },
+  "kglobalaccel": {
+    "description": "KGlobalAccel",
+    "name": "kglobalaccel",
+    "project_path": "frameworks/kglobalaccel",
+    "repo_path": "frameworks/kglobalaccel"
+  },
+  "kglobalacceld": {
+    "description": "Daemon providing Global Keyboard Shortcut (Accelerator) functionality",
+    "name": "kglobalacceld",
+    "project_path": "playground/base/kglobalacceld",
+    "repo_path": "plasma/kglobalacceld"
+  },
+  "kgoldrunner": {
+    "description": "KGoldrunner is a game of action and puzzle solving",
+    "name": "kgoldrunner",
+    "project_path": "kde/kdegames/kgoldrunner",
+    "repo_path": "games/kgoldrunner"
+  },
+  "kgpg": {
+    "description": "Simple interface for GnuPG, a powerful encryption utility",
+    "name": "kgpg",
+    "project_path": "kde/kdeutils/kgpg",
+    "repo_path": "utilities/kgpg"
+  },
+  "kgraphviewer": {
+    "description": "GraphViz dot graph viewer",
+    "name": "kgraphviewer",
+    "project_path": "extragear/graphics/kgraphviewer",
+    "repo_path": "graphics/kgraphviewer"
+  },
+  "kguiaddons": {
+    "description": "KGuiAddons",
+    "name": "kguiaddons",
+    "project_path": "frameworks/kguiaddons",
+    "repo_path": "frameworks/kguiaddons"
+  },
+  "khangman": {
+    "description": "A hangman game",
+    "name": "khangman",
+    "project_path": "kde/kdeedu/khangman",
+    "repo_path": "education/khangman"
+  },
+  "khealthcertificate": {
+    "description": "Handling of digital vaccination, test and recovery certificates.",
+    "name": "khealthcertificate",
+    "project_path": "extragear/pim/khealthcertificate",
+    "repo_path": "pim/khealthcertificate"
+  },
+  "khelpcenter": {
+    "description": "Software documentation viewer",
+    "name": "khelpcenter",
+    "project_path": "kde/applications/khelpcenter",
+    "repo_path": "system/khelpcenter"
+  },
+  "khipu": {
+    "description": "Advanced mathematical function plotter",
+    "name": "khipu",
+    "project_path": "playground/edu/khipu",
+    "repo_path": "education/khipu"
+  },
+  "kholidays": {
+    "description": "KHolidays: Library to assist determining when holidays occur",
+    "name": "kholidays",
+    "project_path": "frameworks/kholidays",
+    "repo_path": "frameworks/kholidays"
+  },
+  "khotkeys": {
+    "description": "Trigger actions when certain keys are pressed",
+    "name": "khotkeys",
+    "project_path": "kde/workspace/khotkeys",
+    "repo_path": "plasma/khotkeys"
+  },
+  "khtml": {
+    "description": "KHtml",
+    "name": "khtml",
+    "project_path": "frameworks/khtml",
+    "repo_path": "frameworks/khtml"
+  },
+  "ki18n": {
+    "description": "Ki18n",
+    "name": "ki18n",
+    "project_path": "frameworks/ki18n",
+    "repo_path": "frameworks/ki18n"
+  },
+  "kiconthemes": {
+    "description": "KIconThemes",
+    "name": "kiconthemes",
+    "project_path": "frameworks/kiconthemes",
+    "repo_path": "frameworks/kiconthemes"
+  },
+  "kid3": {
+    "description": "Efficient audio tagger that supports a large variety of file formats",
+    "name": "kid3",
+    "project_path": "extragear/multimedia/kid3",
+    "repo_path": "multimedia/kid3"
+  },
+  "kidentitymanagement": {
+    "description": "Library to assist in handling user identities",
+    "name": "kidentitymanagement",
+    "project_path": "kde/pim/kidentitymanagement",
+    "repo_path": "pim/kidentitymanagement"
+  },
+  "kidletime": {
+    "description": "KIdleTime",
+    "name": "kidletime",
+    "project_path": "frameworks/kidletime",
+    "repo_path": "frameworks/kidletime"
+  },
+  "kig": {
+    "description": "Interactive Geometry",
+    "name": "kig",
+    "project_path": "kde/kdeedu/kig",
+    "repo_path": "education/kig"
+  },
+  "kigo": {
+    "description": "Kigo is an open-source implementation of the popular Go game",
+    "name": "kigo",
+    "project_path": "kde/kdegames/kigo",
+    "repo_path": "games/kigo"
+  },
+  "kije": {
+    "description": "QtQuick library with widgets for desktop-oriented QtQuick applications.",
+    "name": "kije",
+    "project_path": "playground/libs/kije",
+    "repo_path": "libraries/kije"
+  },
+  "kile": {
+    "description": "Integrated LaTeX Editing Environment",
+    "name": "kile",
+    "project_path": "extragear/office/kile",
+    "repo_path": "office/kile"
+  },
+  "killbots": {
+    "description": "Killbots is a simple game of evading killer robots",
+    "name": "killbots",
+    "project_path": "kde/kdegames/killbots",
+    "repo_path": "games/killbots"
+  },
+  "kimageformats": {
+    "description": "KImageFormats",
+    "name": "kimageformats",
+    "project_path": "frameworks/kimageformats",
+    "repo_path": "frameworks/kimageformats"
+  },
+  "kimagemapeditor": {
+    "description": "Generator of HTML image maps",
+    "name": "kimagemapeditor",
+    "project_path": "kde/kdewebdev/kimagemapeditor",
+    "repo_path": "graphics/kimagemapeditor"
+  },
+  "kimap": {
+    "description": "Library to assist working with IMAP servers",
+    "name": "kimap",
+    "project_path": "kde/pim/kimap",
+    "repo_path": "pim/kimap"
+  },
+  "kimap2": {
+    "description": "Next-generation IMAP library",
+    "name": "kimap2",
+    "project_path": "playground/pim/kimap2",
+    "repo_path": "pim/kimap2"
+  },
+  "kimono": {
+    "description": ".NET/Mono bindings for the KDE libraries.",
+    "name": "kimono",
+    "project_path": "kde/kdebindings/csharp/kimono",
+    "repo_path": "unmaintained/kimono"
+  },
+  "kimtoy": {
+    "description": "An input method frontend by KDE",
+    "name": "kimtoy",
+    "project_path": "unmaintained/kimtoy",
+    "repo_path": "unmaintained/kimtoy"
+  },
+  "kinfocenter": {
+    "description": "View information about your computer's hardware",
+    "name": "kinfocenter",
+    "project_path": "kde/workspace/kinfocenter",
+    "repo_path": "plasma/kinfocenter"
+  },
+  "kinit": {
+    "description": "KInit",
+    "name": "kinit",
+    "project_path": "frameworks/kinit",
+    "repo_path": "frameworks/kinit"
+  },
+  "kio": {
+    "description": "KIO",
+    "name": "kio",
+    "project_path": "frameworks/kio",
+    "repo_path": "frameworks/kio"
+  },
+  "kio-admin": {
+    "description": "Manage files as administrator using the admin:// KIO protocol.",
+    "name": "kio-admin",
+    "project_path": "extragear/sysadmin/kio-admin",
+    "repo_path": "system/kio-admin"
+  },
+  "kio-extras": {
+    "description": "Additional components to increase the functionality of KIO",
+    "name": "kio-extras",
+    "project_path": "kde/kdenetwork/kio-extras",
+    "repo_path": "network/kio-extras"
+  },
+  "kio-fuse": {
+    "description": "FUSE Interface for KIO",
+    "name": "kio-fuse",
+    "project_path": "extragear/base/kio-fuse",
+    "repo_path": "system/kio-fuse"
+  },
+  "kio-gdrive": {
+    "description": "KIO Slave to access Google Drive",
+    "name": "kio-gdrive",
+    "project_path": "kde/kdenetwork/kio-gdrive",
+    "repo_path": "network/kio-gdrive"
+  },
+  "kio-gopher": {
+    "description": "Gopher KIO Slave",
+    "name": "kio-gopher",
+    "project_path": "extragear/network/kio-gopher",
+    "repo_path": "network/kio-gopher"
+  },
+  "kio-mtp": {
+    "description": "Provides KIO Access to MTP devices using the mtp:/// protocol.",
+    "name": "kio-mtp",
+    "project_path": "unmaintained/kio-mtp",
+    "repo_path": "unmaintained/kio-mtp"
+  },
+  "kio-s3": {
+    "description": "KIO interface for Amazon Web Services S3 storage",
+    "name": "kio-s3",
+    "project_path": "extragear/network/kio-s3",
+    "repo_path": "network/kio-s3"
+  },
+  "kio-stash": {
+    "description": "Virtual folder to simplify file selection in non-contiguous folder trees",
+    "name": "kio-stash",
+    "project_path": "extragear/utils/kio-stash",
+    "repo_path": "utilities/kio-stash"
+  },
+  "kio-upnp-ms": {
+    "description": "KIO Slave for UPnP MediaServer devices",
+    "name": "kio-upnp-ms",
+    "project_path": "playground/base/kio-upnp-ms",
+    "repo_path": "network/kio-upnp-ms"
+  },
+  "kio-zeroconf": {
+    "description": "KIO worker to discover file systems by DNS-SD (zeroconf)",
+    "name": "kio-zeroconf",
+    "project_path": "kde/kdenetwork/kio-zeroconf",
+    "repo_path": "network/kio-zeroconf"
+  },
+  "kipi-plugins": {
+    "description": "Plugins extending KDE graphics apps, e.g. with import/export capabilities",
+    "name": "kipi-plugins",
+    "project_path": "kde/kdegraphics/kipi-plugins",
+    "repo_path": "graphics/kipi-plugins"
+  },
+  "kirigami": {
+    "description": "A QtQuick based components set",
+    "name": "kirigami",
+    "project_path": "frameworks/kirigami",
+    "repo_path": "frameworks/kirigami"
+  },
+  "kirigami-addons": {
+    "description": "Add-ons for the Kirigami framework",
+    "name": "kirigami-addons",
+    "project_path": "extragear/libs/kirigami-addons",
+    "repo_path": "libraries/kirigami-addons"
+  },
+  "kirigami-gallery": {
+    "description": "Kirigami component gallery application",
+    "name": "kirigami-gallery",
+    "project_path": "kde/kdesdk/kirigami-gallery",
+    "repo_path": "sdk/kirigami-gallery"
+  },
+  "kiriki": {
+    "description": "Kiriki is an addictive and fun dice game",
+    "name": "kiriki",
+    "project_path": "kde/kdegames/kiriki",
+    "repo_path": "games/kiriki"
+  },
+  "kirogi": {
+    "description": "Ground control application for drones",
+    "name": "kirogi",
+    "project_path": "playground/base/kirogi",
+    "repo_path": "utilities/kirogi"
+  },
+  "kiss": {
+    "description": "KDE Initial System Setup",
+    "name": "kiss",
+    "project_path": "playground/system/kiss",
+    "repo_path": "system/kiss"
+  },
+  "kitemmodels": {
+    "description": "KItemModels",
+    "name": "kitemmodels",
+    "project_path": "frameworks/kitemmodels",
+    "repo_path": "frameworks/kitemmodels"
+  },
+  "kitemviews": {
+    "description": "KItemViews",
+    "name": "kitemviews",
+    "project_path": "frameworks/kitemviews",
+    "repo_path": "frameworks/kitemviews"
+  },
+  "kiten": {
+    "description": "Japanese Reference/Study Tool",
+    "name": "kiten",
+    "project_path": "kde/kdeedu/kiten",
+    "repo_path": "education/kiten"
+  },
+  "kitinerary": {
+    "description": "Data Model and Extraction System for Travel Reservation information",
+    "name": "kitinerary",
+    "project_path": "kde/pim/kitinerary",
+    "repo_path": "pim/kitinerary"
+  },
+  "kitinerary-workbench": {
+    "description": "KItinerary Test and Development Tool",
+    "name": "kitinerary-workbench",
+    "project_path": "playground/pim/kitinerary-workbench",
+    "repo_path": "pim/kitinerary-workbench"
+  },
+  "kjobwidgets": {
+    "description": "KJobWidgets",
+    "name": "kjobwidgets",
+    "project_path": "frameworks/kjobwidgets",
+    "repo_path": "frameworks/kjobwidgets"
+  },
+  "kjots": {
+    "description": "Note taking application using Akonadi",
+    "name": "kjots",
+    "project_path": "playground/pim/kjots",
+    "repo_path": "pim/kjots"
+  },
+  "kjournald": {
+    "description": "Framework for interacting with systemd-journald",
+    "name": "kjournald",
+    "project_path": "kde/applications/kjournald",
+    "repo_path": "system/kjournald"
+  },
+  "kjs": {
+    "description": "KJS",
+    "name": "kjs",
+    "project_path": "frameworks/kjs",
+    "repo_path": "frameworks/kjs"
+  },
+  "kjsembed": {
+    "description": "KJSEmbed",
+    "name": "kjsembed",
+    "project_path": "frameworks/kjsembed",
+    "repo_path": "frameworks/kjsembed"
+  },
+  "kjumpingcube": {
+    "description": "KJumpingCube is a simple tactical game",
+    "name": "kjumpingcube",
+    "project_path": "kde/kdegames/kjumpingcube",
+    "repo_path": "games/kjumpingcube"
+  },
+  "kldap": {
+    "description": "Library to assist working with LDAP directories",
+    "name": "kldap",
+    "project_path": "kde/pim/kldap",
+    "repo_path": "pim/kldap"
+  },
+  "kleopatra": {
+    "description": "Certificate manager and GUI for OpenPGP and CMS cryptography",
+    "name": "kleopatra",
+    "project_path": "kde/pim/kleopatra",
+    "repo_path": "pim/kleopatra"
+  },
+  "klettres": {
+    "description": "Learn The Alphabet",
+    "name": "klettres",
+    "project_path": "kde/kdeedu/klettres",
+    "repo_path": "education/klettres"
+  },
+  "klevernotes": {
+    "description": "A convergent markdown note taking application.",
+    "name": "klevernotes",
+    "project_path": "playground/office/klevernotes",
+    "repo_path": "office/klevernotes"
+  },
+  "klickety": {
+    "description": "Klickety is an adaptation of the Clickomania game",
+    "name": "klickety",
+    "project_path": "kde/kdegames/klickety",
+    "repo_path": "games/klickety"
+  },
+  "klimbgrades": {
+    "description": "Conversion utility for the difficulty rating of rock climbs",
+    "name": "klimbgrades",
+    "project_path": "playground/utils/klimbgrades",
+    "repo_path": "utilities/klimbgrades"
+  },
+  "klines": {
+    "description": "KLines is a simple but highly addictive, one player game",
+    "name": "klines",
+    "project_path": "kde/kdegames/klines",
+    "repo_path": "games/klines"
+  },
+  "klinkstatus": {
+    "description": "Tool to check the current status of links in a web page.",
+    "name": "klinkstatus",
+    "project_path": "unmaintained/klinkstatus",
+    "repo_path": "unmaintained/klinkstatus"
+  },
+  "klook": {
+    "description": "Quick file content preview application with Dolphin integration",
+    "name": "klook",
+    "project_path": "playground/base/klook",
+    "repo_path": "graphics/klook"
+  },
+  "kmag": {
+    "description": "Screen magnifier",
+    "name": "kmag",
+    "project_path": "kde/kdeaccessibility/kmag",
+    "repo_path": "accessibility/kmag"
+  },
+  "kmahjongg": {
+    "description": "KMahjongg is a tile matching game for one or two players",
+    "name": "kmahjongg",
+    "project_path": "kde/kdegames/kmahjongg",
+    "repo_path": "games/kmahjongg"
+  },
+  "kmail": {
+    "description": "State-of-the-art feature-rich email client that supports many protocols",
+    "name": "kmail",
+    "project_path": "kde/pim/kmail",
+    "repo_path": "pim/kmail"
+  },
+  "kmail-account-wizard": {
+    "description": "Application which assists you with the configuration of accounts in KMail",
+    "name": "kmail-account-wizard",
+    "project_path": "kde/pim/kmail-account-wizard",
+    "repo_path": "pim/kmail-account-wizard"
+  },
+  "kmailtransport": {
+    "description": "Library, KCM and KDED module to manage mail transport",
+    "name": "kmailtransport",
+    "project_path": "kde/pim/kmailtransport",
+    "repo_path": "pim/kmailtransport"
+  },
+  "kmarkdownwebview": {
+    "description": "KPart for rendering Markdown content",
+    "name": "kmarkdownwebview",
+    "project_path": "extragear/utils/kmarkdownwebview",
+    "repo_path": "utilities/kmarkdownwebview"
+  },
+  "kmbox": {
+    "description": "Library for working with MBox format files",
+    "name": "kmbox",
+    "project_path": "kde/pim/kmbox",
+    "repo_path": "pim/kmbox"
+  },
+  "kmediaplayer": {
+    "description": "KMediaPlayer",
+    "name": "kmediaplayer",
+    "project_path": "frameworks/kmediaplayer",
+    "repo_path": "frameworks/kmediaplayer"
+  },
+  "kmenuedit": {
+    "description": "Menu Editor for Plasma Workspaces",
+    "name": "kmenuedit",
+    "project_path": "kde/workspace/kmenuedit",
+    "repo_path": "plasma/kmenuedit"
+  },
+  "kmime": {
+    "description": "Library to assist handling MIME data",
+    "name": "kmime",
+    "project_path": "kde/pim/kmime",
+    "repo_path": "pim/kmime"
+  },
+  "kmines": {
+    "description": "KMines is the classic Minesweeper game",
+    "name": "kmines",
+    "project_path": "kde/kdegames/kmines",
+    "repo_path": "games/kmines"
+  },
+  "kmix": {
+    "description": "Volume control program",
+    "name": "kmix",
+    "project_path": "kde/kdemultimedia/kmix",
+    "repo_path": "multimedia/kmix"
+  },
+  "kmoretools": {
+    "description": "Support for downloading application assets from the network",
+    "name": "kmoretools",
+    "project_path": "playground/libs/kmoretools",
+    "repo_path": "libraries/kmoretools"
+  },
+  "kmousetool": {
+    "description": "Program that clicks the mouse for you",
+    "name": "kmousetool",
+    "project_path": "kde/kdeaccessibility/kmousetool",
+    "repo_path": "accessibility/kmousetool"
+  },
+  "kmouth": {
+    "description": "Type-and-say front end for speech synthesizers",
+    "name": "kmouth",
+    "project_path": "kde/kdeaccessibility/kmouth",
+    "repo_path": "accessibility/kmouth"
+  },
+  "kmplayer": {
+    "description": "KPart-based video player plugin",
+    "name": "kmplayer",
+    "project_path": "extragear/multimedia/kmplayer",
+    "repo_path": "multimedia/kmplayer"
+  },
+  "kmplot": {
+    "description": "Mathematical Function Plotter",
+    "name": "kmplot",
+    "project_path": "kde/kdeedu/kmplot",
+    "repo_path": "education/kmplot"
+  },
+  "kmuddy": {
+    "description": "A MUD (Multi-User Dungeon) client by KDE",
+    "name": "kmuddy",
+    "project_path": "playground/games/kmuddy",
+    "repo_path": "games/kmuddy"
+  },
+  "kmymoney": {
+    "description": "Personal finance manager",
+    "name": "kmymoney",
+    "project_path": "extragear/office/kmymoney",
+    "repo_path": "office/kmymoney"
+  },
+  "knavalbattle": {
+    "description": "Naval Battle is a ship sinking game",
+    "name": "knavalbattle",
+    "project_path": "kde/kdegames/knavalbattle",
+    "repo_path": "games/knavalbattle"
+  },
+  "knemo": {
+    "description": "A network monitor by KDE",
+    "name": "knemo",
+    "project_path": "unmaintained/knemo",
+    "repo_path": "unmaintained/knemo"
+  },
+  "knetwalk": {
+    "description": "KNetWalk: connect all the terminals to the server, in as few turns as possible",
+    "name": "knetwalk",
+    "project_path": "kde/kdegames/knetwalk",
+    "repo_path": "games/knetwalk"
+  },
+  "knewstuff": {
+    "description": "KNewStuff",
+    "name": "knewstuff",
+    "project_path": "frameworks/knewstuff",
+    "repo_path": "frameworks/knewstuff"
+  },
+  "knights": {
+    "description": "Chess board program.",
+    "name": "knights",
+    "project_path": "kde/kdegames/knights",
+    "repo_path": "games/knights"
+  },
+  "knipptasch": {
+    "description": "Personal accounting application that aims to be the simplest for basic use",
+    "name": "knipptasch",
+    "project_path": "playground/office/knipptasch",
+    "repo_path": "office/knipptasch"
+  },
+  "knotes": {
+    "description": "Note-taking application",
+    "name": "knotes",
+    "project_path": "kde/pim/knotes",
+    "repo_path": "pim/knotes"
+  },
+  "knotifications": {
+    "description": "KNotifications",
+    "name": "knotifications",
+    "project_path": "frameworks/knotifications",
+    "repo_path": "frameworks/knotifications"
+  },
+  "knotifyconfig": {
+    "description": "KNotifyConfig",
+    "name": "knotifyconfig",
+    "project_path": "frameworks/knotifyconfig",
+    "repo_path": "frameworks/knotifyconfig"
+  },
+  "kobjecttracking": {
+    "description": "Library for tracking changes in QObject-based objects",
+    "name": "kobjecttracking",
+    "project_path": "playground/sdk/kobjecttracking",
+    "repo_path": "sdk/kobjecttracking"
+  },
+  "kodaskanna": {
+    "description": "A multi-format 1D/2D code scanner",
+    "name": "kodaskanna",
+    "project_path": "playground/graphics/kodaskanna",
+    "repo_path": "graphics/kodaskanna"
+  },
+  "koffice": {
+    "description": "Free software office suite.",
+    "name": "koffice",
+    "project_path": "unmaintained/koffice",
+    "repo_path": "unmaintained/koffice"
+  },
+  "koffice-chartingshape": {
+    "description": "Charting utilities and additions for KOffice",
+    "name": "koffice-chartingshape",
+    "project_path": "unmaintained/koffice-chartingshape",
+    "repo_path": "unmaintained/koffice-chartingshape"
+  },
+  "koffice-formulashape": {
+    "description": "Formula shape for koffice",
+    "name": "koffice-formulashape",
+    "project_path": "unmaintained/koffice-formulashape",
+    "repo_path": "unmaintained/koffice-formulashape"
+  },
+  "koffice-googledocs": {
+    "description": "KOffice plugin to work with Google Docs",
+    "name": "koffice-googledocs",
+    "project_path": "unmaintained/koffice-googledocs",
+    "repo_path": "unmaintained/koffice-googledocs"
+  },
+  "koffice-musicshape": {
+    "description": "Musical notation shape and editor for koffice",
+    "name": "koffice-musicshape",
+    "project_path": "unmaintained/koffice-musicshape",
+    "repo_path": "unmaintained/koffice-musicshape"
+  },
+  "koffice-plugins": {
+    "description": "plugins for koffice, a free software office suite",
+    "name": "koffice-plugins",
+    "project_path": "unmaintained/koffice-plugins",
+    "repo_path": "unmaintained/koffice-plugins"
+  },
+  "koffice-texthighlight": {
+    "description": "A plugin for KWord to allow giving syntax highlighting to selected text.",
+    "name": "koffice-texthighlight",
+    "project_path": "unmaintained/koffice-texthighlight",
+    "repo_path": "unmaintained/koffice-texthighlight"
+  },
+  "koffice-videoshape": {
+    "description": "Video shape for the KOffice suite",
+    "name": "koffice-videoshape",
+    "project_path": "unmaintained/koffice-videoshape",
+    "repo_path": "unmaintained/koffice-videoshape"
+  },
+  "koko": {
+    "description": "Image gallery application",
+    "name": "koko",
+    "project_path": "extragear/graphics/koko",
+    "repo_path": "graphics/koko"
+  },
+  "kolena": {
+    "description": "Kolena is a KDE wrapper around the Olena image library which extracts text from images.",
+    "name": "kolena",
+    "project_path": "unmaintained/kolena",
+    "repo_path": "unmaintained/kolena"
+  },
+  "kolf": {
+    "description": "Kolf is a miniature golf game with 2d top-down view",
+    "name": "kolf",
+    "project_path": "kde/kdegames/kolf",
+    "repo_path": "games/kolf"
+  },
+  "kollision": {
+    "description": "Kollision is a simple ball dodging game",
+    "name": "kollision",
+    "project_path": "kde/kdegames/kollision",
+    "repo_path": "games/kollision"
+  },
+  "kolor-manager": {
+    "description": "Color management KCM using Oyranos CMS",
+    "name": "kolor-manager",
+    "project_path": "extragear/graphics/kolor-manager",
+    "repo_path": "graphics/kolor-manager"
+  },
+  "kolorfill": {
+    "description": "Simple flood fill game",
+    "name": "kolorfill",
+    "project_path": "playground/base/kolorfill",
+    "repo_path": "games/kolorfill"
+  },
+  "kolourpaint": {
+    "description": "Easy-to-use paint program",
+    "name": "kolourpaint",
+    "project_path": "kde/kdegraphics/kolourpaint",
+    "repo_path": "graphics/kolourpaint"
+  },
+  "kommander": {
+    "description": "Toolkit allowing the creation of minimal, yet functionally powerful scripted applications.",
+    "name": "kommander",
+    "project_path": "unmaintained/kommander",
+    "repo_path": "unmaintained/kommander"
+  },
+  "kommit": {
+    "description": "Graphical Git Client",
+    "name": "kommit",
+    "project_path": "playground/sdk/kommit",
+    "repo_path": "sdk/kommit"
+  },
+  "kompare": {
+    "description": "Graphical File Differences Tool",
+    "name": "kompare",
+    "project_path": "kde/kdesdk/kompare",
+    "repo_path": "sdk/kompare"
+  },
+  "kongress": {
+    "description": "Companion application for conferences",
+    "name": "kongress",
+    "project_path": "extragear/utils/kongress",
+    "repo_path": "utilities/kongress"
+  },
+  "konqueror": {
+    "description": "Web browser and Swiss Army knife for any kind of file management and previewing",
+    "name": "konqueror",
+    "project_path": "kde/applications/konqueror",
+    "repo_path": "network/konqueror"
+  },
+  "konquest": {
+    "description": "Konquest is the KDE version of Gnu-Lactic",
+    "name": "konquest",
+    "project_path": "kde/kdegames/konquest",
+    "repo_path": "games/konquest"
+  },
+  "konsole": {
+    "description": "Terminal emulator by KDE",
+    "name": "konsole",
+    "project_path": "kde/applications/konsole",
+    "repo_path": "utilities/konsole"
+  },
+  "kontact": {
+    "description": "Container application to unify several major PIM applications",
+    "name": "kontact",
+    "project_path": "kde/pim/kontact",
+    "repo_path": "pim/kontact"
+  },
+  "kontactinterface": {
+    "description": "Support libraries to assist integration with Kontact",
+    "name": "kontactinterface",
+    "project_path": "kde/pim/kontactinterface",
+    "repo_path": "pim/kontactinterface"
+  },
+  "kontaminuti": {
+    "description": "Kontaminuti is a simple helper utility to time your activities according to the Pomodoro Technique.",
+    "name": "kontaminuti",
+    "project_path": "unmaintained/kontaminuti",
+    "repo_path": "unmaintained/kontaminuti"
+  },
+  "kontrast": {
+    "description": "Tool to check contrast for colors that allows verifying that your colors are correctly accessible",
+    "name": "kontrast",
+    "project_path": "kde/kdeaccessibility/kontrast",
+    "repo_path": "accessibility/kontrast"
+  },
+  "konversation": {
+    "description": "User-friendly and fully-featured IRC client",
+    "name": "konversation",
+    "project_path": "kde/kdenetwork/konversation",
+    "repo_path": "network/konversation"
+  },
+  "kooka": {
+    "description": "Scanning application and libkscan library",
+    "name": "kooka",
+    "project_path": "playground/graphics/kooka",
+    "repo_path": "graphics/kooka"
+  },
+  "kookbook": {
+    "description": "Cookbook creator",
+    "name": "kookbook",
+    "project_path": "playground/base/kookbook",
+    "repo_path": "utilities/kookbook"
+  },
+  "kopeninghours": {
+    "description": "Library for parsing and evaluating OSM opening hours expressions.",
+    "name": "kopeninghours",
+    "project_path": "kde/pim/kopeninghours",
+    "repo_path": "libraries/kopeninghours"
+  },
+  "kopete": {
+    "description": "Flexible multi-protocol instant messenger for personal and enterprise use",
+    "name": "kopete",
+    "project_path": "kde/kdenetwork/kopete",
+    "repo_path": "network/kopete"
+  },
+  "kopete-pimpresence": {
+    "description": "PIM Presence Plugin for Kopete",
+    "name": "kopete-pimpresence",
+    "project_path": "playground/network/kopete-pimpresence",
+    "repo_path": "unmaintained/kopete-pimpresence"
+  },
+  "kopete-protocol-telepathy": {
+    "description": "Kopete protocol plugin for Telepathy. This provides the ability to add accounts using any Telepathy-supported protocol to Kopete.",
+    "name": "kopete-protocol-telepathy",
+    "project_path": "unmaintained/kopete-protocol-telepathy",
+    "repo_path": "unmaintained/kopete-protocol-telepathy"
+  },
+  "kopete-scripting": {
+    "description": "Scripting Plugin for Kopete",
+    "name": "kopete-scripting",
+    "project_path": "unmaintained/kopete-scripting",
+    "repo_path": "unmaintained/kopete-scripting"
+  },
+  "kopete-sharemydesktop": {
+    "description": "Share My Desktop Plugin for Kopete",
+    "name": "kopete-sharemydesktop",
+    "project_path": "unmaintained/kopete-sharemydesktop",
+    "repo_path": "unmaintained/kopete-sharemydesktop"
+  },
+  "kopete-smpppdcs": {
+    "description": "Smpppdcs Plugin for Kopete",
+    "name": "kopete-smpppdcs",
+    "project_path": "unmaintained/kopete-smpppdcs",
+    "repo_path": "unmaintained/kopete-smpppdcs"
+  },
+  "kopete-thinklight": {
+    "description": "ThinkLight Plugin for Kopete",
+    "name": "kopete-thinklight",
+    "project_path": "unmaintained/kopete-thinklight",
+    "repo_path": "unmaintained/kopete-thinklight"
+  },
+  "kopete-whiteboard": {
+    "description": "Whiteboard Plugin for Kopete",
+    "name": "kopete-whiteboard",
+    "project_path": "unmaintained/kopete-whiteboard",
+    "repo_path": "unmaintained/kopete-whiteboard"
+  },
+  "kor": {
+    "description": "Kor is a simple desktop shell leveraging KDE technologies.",
+    "name": "kor",
+    "project_path": "unmaintained/kor",
+    "repo_path": "unmaintained/kor"
+  },
+  "korganizer": {
+    "description": "Organizational assistant, providing calendars and other similar functionality",
+    "name": "korganizer",
+    "project_path": "kde/pim/korganizer",
+    "repo_path": "pim/korganizer"
+  },
+  "korundum": {
+    "description": "Ruby bindings for libraries created by the KDE community.",
+    "name": "korundum",
+    "project_path": "kde/kdebindings/ruby/korundum",
+    "repo_path": "unmaintained/korundum"
+  },
+  "kosmindoormap": {
+    "description": "OSM multi-floor indoor map renderer",
+    "name": "kosmindoormap",
+    "project_path": "kde/pim/kosmindoormap",
+    "repo_path": "libraries/kosmindoormap"
+  },
+  "kpackage": {
+    "description": "This framework lets applications to manage user installable packages of non-binary assets",
+    "name": "kpackage",
+    "project_path": "frameworks/kpackage",
+    "repo_path": "frameworks/kpackage"
+  },
+  "kparts": {
+    "description": "KParts",
+    "name": "kparts",
+    "project_path": "frameworks/kparts",
+    "repo_path": "frameworks/kparts"
+  },
+  "kpaste": {
+    "description": "command-line tool to paste to https://paste.kde.org",
+    "name": "kpaste",
+    "project_path": "playground/utils/kpaste",
+    "repo_path": "unmaintained/kpaste"
+  },
+  "kpat": {
+    "description": "KPatience offers a selection of solitaire card games",
+    "name": "kpat",
+    "project_path": "kde/kdegames/kpat",
+    "repo_path": "games/kpat"
+  },
+  "kpeg": {
+    "description": "Peg Solitaire Game by KDE.",
+    "name": "kpeg",
+    "project_path": "unmaintained/kpeg",
+    "repo_path": "unmaintained/kpeg"
+  },
+  "kpeople": {
+    "description": "A library that provides access to all contacts and the people who hold them",
+    "name": "kpeople",
+    "project_path": "frameworks/kpeople",
+    "repo_path": "frameworks/kpeople"
+  },
+  "kpeoplesink": {
+    "description": "Expose Sink contacts to KPeople",
+    "name": "kpeoplesink",
+    "project_path": "playground/pim/kpeoplesink",
+    "repo_path": "pim/kpeoplesink"
+  },
+  "kpeoplevcard": {
+    "description": "Expose VCard contacts to KPeople",
+    "name": "kpeoplevcard",
+    "project_path": "kdereview/kpeoplevcard",
+    "repo_path": "pim/kpeoplevcard"
+  },
+  "kphotoalbum": {
+    "description": "Photo Album for easy organization of your images",
+    "name": "kphotoalbum",
+    "project_path": "extragear/graphics/kphotoalbum",
+    "repo_path": "graphics/kphotoalbum"
+  },
+  "kpimtextedit": {
+    "description": "Library that provides extended text editor for PIM applications",
+    "name": "kpimtextedit",
+    "project_path": "kde/pim/kpimtextedit",
+    "repo_path": "pim/kpimtextedit"
+  },
+  "kpipewire": {
+    "description": "Components relating to Flatpak 'pipewire' use in Plasma.",
+    "name": "kpipewire",
+    "project_path": "kde/workspace/kpipewire",
+    "repo_path": "plasma/kpipewire"
+  },
+  "kpkpass": {
+    "description": "Apple Wallet Pass reader",
+    "name": "kpkpass",
+    "project_path": "kde/pim/kpkpass",
+    "repo_path": "pim/kpkpass"
+  },
+  "kplayer": {
+    "description": "KPlayer is a rich multimedia player that uses the mplayer backend.",
+    "name": "kplayer",
+    "project_path": "unmaintained/kplayer",
+    "repo_path": "unmaintained/kplayer"
+  },
+  "kplotting": {
+    "description": "KPlotting",
+    "name": "kplotting",
+    "project_path": "frameworks/kplotting",
+    "repo_path": "frameworks/kplotting"
+  },
+  "kpmcore": {
+    "description": "KDE Partition Manager core library",
+    "name": "kpmcore",
+    "project_path": "kde/kdeadmin/kpmcore",
+    "repo_path": "system/kpmcore"
+  },
+  "kppp": {
+    "description": "Dialer and Front end for pppd",
+    "name": "kppp",
+    "project_path": "unmaintained/kppp",
+    "repo_path": "unmaintained/kppp"
+  },
+  "kprinter4": {
+    "description": "Simple stand-alone PostScript document printer",
+    "name": "kprinter4",
+    "project_path": "unmaintained/kprinter4",
+    "repo_path": "unmaintained/kprinter4"
+  },
+  "kproperty": {
+    "description": "Property editing framework with an editor widget similar to Qt Designer",
+    "name": "kproperty",
+    "project_path": "extragear/libs/kproperty",
+    "repo_path": "libraries/kproperty"
+  },
+  "kpty": {
+    "description": "KPty",
+    "name": "kpty",
+    "project_path": "frameworks/kpty",
+    "repo_path": "frameworks/kpty"
+  },
+  "kpublictransport": {
+    "description": "Library to assist with accessing public transport timetables and other data",
+    "name": "kpublictransport",
+    "project_path": "kde/pim/kpublictransport",
+    "repo_path": "libraries/kpublictransport"
+  },
+  "kqtquickcharts": {
+    "description": "QtQuick plugin to render beautiful and interactive charts",
+    "name": "kqtquickcharts",
+    "project_path": "kde/kdeedu/kqtquickcharts",
+    "repo_path": "libraries/kqtquickcharts"
+  },
+  "kquickcharts": {
+    "description": "A QtQuick plugin providing high-performance charts.",
+    "name": "kquickcharts",
+    "project_path": "frameworks/kquickcharts",
+    "repo_path": "frameworks/kquickcharts"
+  },
+  "kquickchatcomponents": {
+    "description": "Set of chat components for QtQuick chat apps wishing to fit in with KDE's collection of chat apps",
+    "name": "kquickchatcomponents",
+    "project_path": "kdereview/kquickchatcomponents",
+    "repo_path": "libraries/kquickchatcomponents"
+  },
+  "kquickimageeditor": {
+    "description": "Image editing components",
+    "name": "kquickimageeditor",
+    "project_path": "extragear/libs/kquickimageeditor",
+    "repo_path": "libraries/kquickimageeditor"
+  },
+  "kquickitemviews": {
+    "description": "Qt Model compatibility layer for QML",
+    "name": "kquickitemviews",
+    "project_path": "playground/libs/kquickitemviews",
+    "repo_path": "libraries/kquickitemviews"
+  },
+  "krdc": {
+    "description": "Remote Desktop Client",
+    "name": "krdc",
+    "project_path": "kde/kdenetwork/krdc",
+    "repo_path": "network/krdc"
+  },
+  "krdp": {
+    "description": "Library and examples for creating an RDP server.",
+    "name": "krdp",
+    "project_path": "playground/libs/krdp",
+    "repo_path": "plasma/krdp"
+  },
+  "krecipes": {
+    "description": "KDE cooking recipes manager",
+    "name": "krecipes",
+    "project_path": "unmaintained/krecipes",
+    "repo_path": "unmaintained/krecipes"
+  },
+  "krecorder": {
+    "description": "Audio recorder for Plasma Mobile and other platforms",
+    "name": "krecorder",
+    "project_path": "extragear/utils/krecorder",
+    "repo_path": "utilities/krecorder"
+  },
+  "kreenshot-editor": {
+    "description": "Kreenshot Editor is a screenshot image editing application and shared library.",
+    "name": "kreenshot-editor",
+    "project_path": "playground/graphics/kreenshot-editor",
+    "repo_path": "unmaintained/kreenshot-editor"
+  },
+  "kregexpeditor": {
+    "description": "GUI for creating and editing regular expressions",
+    "name": "kregexpeditor",
+    "project_path": "playground/utils/kregexpeditor",
+    "repo_path": "utilities/kregexpeditor"
+  },
+  "kremotecontrol": {
+    "description": "KRemoteControl (formerly known as KDELirc) is a KDE frontend for your remote controls.",
+    "name": "kremotecontrol",
+    "project_path": "unmaintained/kremotecontrol",
+    "repo_path": "unmaintained/kremotecontrol"
+  },
+  "krename": {
+    "description": "Utility to handle specialized file renames",
+    "name": "krename",
+    "project_path": "extragear/utils/krename",
+    "repo_path": "utilities/krename"
+  },
+  "kreport": {
+    "description": "Framework for creation and generation of reports in multiple formats",
+    "name": "kreport",
+    "project_path": "extragear/libs/kreport",
+    "repo_path": "libraries/kreport"
+  },
+  "kreversi": {
+    "description": "KReversi is is a simple one player strategy game played against the computer",
+    "name": "kreversi",
+    "project_path": "kde/kdegames/kreversi",
+    "repo_path": "games/kreversi"
+  },
+  "krfb": {
+    "description": "Desktop Sharing",
+    "name": "krfb",
+    "project_path": "kde/kdenetwork/krfb",
+    "repo_path": "network/krfb"
+  },
+  "krita": {
+    "description": "Krita is a free and open source cross-platform application that offers an end-to-end solution for creating digital art files from scratch built on the KDE and Qt frameworks.",
+    "name": "krita",
+    "project_path": "extragear/graphics/krita",
+    "repo_path": "graphics/krita"
+  },
+  "krita-analogies": {
+    "description": "Filter that tries to restyle an image using comparison with other images.",
+    "name": "krita-analogies",
+    "project_path": "extragear/graphics/krita-extensions/krita-analogies",
+    "repo_path": "unmaintained/krita-analogies"
+  },
+  "krita-cimg": {
+    "description": "Extension based on the cimg library. http://cimg.sourceforge.net/",
+    "name": "krita-cimg",
+    "project_path": "extragear/graphics/krita-extensions/krita-cimg",
+    "repo_path": "unmaintained/krita-cimg"
+  },
+  "krita-ctlbrush": {
+    "description": "Brush written using the Color Transformation Language.",
+    "name": "krita-ctlbrush",
+    "project_path": "extragear/graphics/krita-extensions/krita-ctlbrush",
+    "repo_path": "unmaintained/krita-ctlbrush"
+  },
+  "krita-deskew": {
+    "description": "Deskew rotates an image such that text is straight, which is useful when dealing with scanned images.",
+    "name": "krita-deskew",
+    "project_path": "extragear/graphics/krita-extensions/krita-deskew",
+    "repo_path": "unmaintained/krita-deskew"
+  },
+  "krita-dither": {
+    "description": "A dithering plugin for Krita.",
+    "name": "krita-dither",
+    "project_path": "extragear/graphics/krita-extensions/krita-dither",
+    "repo_path": "unmaintained/krita-dither"
+  },
+  "krita-grayscalizer": {
+    "description": "Simulate the use of \u201clens filter\u201d for creating grayscale images.",
+    "name": "krita-grayscalizer",
+    "project_path": "extragear/graphics/krita-extensions/krita-grayscalizer",
+    "repo_path": "unmaintained/krita-grayscalizer"
+  },
+  "krita-humanbody": {
+    "description": "Canvas decoration that display the outline of a human to help choosing the pose when drawing.",
+    "name": "krita-humanbody",
+    "project_path": "extragear/graphics/krita-extensions/krita-humanbody",
+    "repo_path": "unmaintained/krita-humanbody"
+  },
+  "krita-imagecomplete": {
+    "description": "ImageComplete fills in holes in your image with the gradient of the surround",
+    "name": "krita-imagecomplete",
+    "project_path": "extragear/graphics/krita-extensions/krita-imagecomplete",
+    "repo_path": "unmaintained/krita-imagecomplete"
+  },
+  "krita-linesampler": {
+    "description": "LineSampler \u201csamples\u201d the image with randomly placed lines.",
+    "name": "krita-linesampler",
+    "project_path": "extragear/graphics/krita-extensions/krita-linesampler",
+    "repo_path": "unmaintained/krita-linesampler"
+  },
+  "krita-pyramidalsharpening": {
+    "description": "Use a pyramid to reconstruct a sharper image.",
+    "name": "krita-pyramidalsharpening",
+    "project_path": "extragear/graphics/krita-extensions/krita-pyramidalsharpening",
+    "repo_path": "unmaintained/krita-pyramidalsharpening"
+  },
+  "krono": {
+    "description": "Desktop History Viewer",
+    "name": "krono",
+    "project_path": "unmaintained/krono",
+    "repo_path": "unmaintained/krono"
+  },
+  "kronometer": {
+    "description": "Stopwatch application by KDE",
+    "name": "kronometer",
+    "project_path": "extragear/utils/kronometer",
+    "repo_path": "utilities/kronometer"
+  },
+  "kross": {
+    "description": "Kross",
+    "name": "kross",
+    "project_path": "frameworks/kross",
+    "repo_path": "frameworks/kross"
+  },
+  "kross-interpreters": {
+    "description": "Language interpreters to enable in-process scripting with Kross",
+    "name": "kross-interpreters",
+    "project_path": "kde/kdebindings/kross-interpreters",
+    "repo_path": "libraries/kross-interpreters"
+  },
+  "kruler": {
+    "description": "A pixel measuring tool by KDE",
+    "name": "kruler",
+    "project_path": "kde/kdegraphics/kruler",
+    "repo_path": "graphics/kruler"
+  },
+  "krunner": {
+    "description": "Framework for providing different actions given a string query.",
+    "name": "krunner",
+    "project_path": "frameworks/krunner",
+    "repo_path": "frameworks/krunner"
+  },
+  "krusader": {
+    "description": "Advanced twin panel (commander style) file manager",
+    "name": "krusader",
+    "project_path": "extragear/utils/krusader",
+    "repo_path": "utilities/krusader"
+  },
+  "ksanecore": {
+    "description": "Library providing logic to interface scanners",
+    "name": "ksanecore",
+    "project_path": "libraries/ksanecore",
+    "repo_path": "libraries/ksanecore"
+  },
+  "ksaneplugin": {
+    "description": "This is a KScan plugin that implements the scanning through libksane",
+    "name": "ksaneplugin",
+    "project_path": "unmaintained/ksaneplugin",
+    "repo_path": "unmaintained/ksaneplugin"
+  },
+  "ksaolaji": {
+    "description": "Cleans all sorts of waste things in your system.",
+    "name": "ksaolaji",
+    "project_path": "unmaintained/ksaolaji",
+    "repo_path": "unmaintained/ksaolaji"
+  },
+  "kscd": {
+    "description": "CD player by KDE",
+    "name": "kscd",
+    "project_path": "playground/multimedia/kscd",
+    "repo_path": "multimedia/kscd"
+  },
+  "kscreen": {
+    "description": "KDE's screen management software",
+    "name": "kscreen",
+    "project_path": "kde/workspace/kscreen",
+    "repo_path": "plasma/kscreen"
+  },
+  "kscreenlocker": {
+    "description": "Library and components for secure lock screen architecture",
+    "name": "kscreenlocker",
+    "project_path": "kde/workspace/kscreenlocker",
+    "repo_path": "plasma/kscreenlocker"
+  },
+  "ksecrets": {
+    "description": "Secrets management infrastructure",
+    "name": "ksecrets",
+    "project_path": "playground/utils/ksecrets",
+    "repo_path": "utilities/ksecrets"
+  },
+  "kseexpr": {
+    "description": "The embeddable expression engine fork for Krita",
+    "name": "kseexpr",
+    "project_path": "kdereview/kseexpr",
+    "repo_path": "graphics/kseexpr"
+  },
+  "kservice": {
+    "description": "KService",
+    "name": "kservice",
+    "project_path": "frameworks/kservice",
+    "repo_path": "frameworks/kservice"
+  },
+  "kshim": {
+    "description": "Create a shim to help run your project",
+    "name": "kshim",
+    "project_path": "playground/sdk/kshim",
+    "repo_path": "sdk/kshim"
+  },
+  "kshisen": {
+    "description": "Shisen-Sho is a solitaire-like game played using the standard set of Mahjong tiles",
+    "name": "kshisen",
+    "project_path": "kde/kdegames/kshisen",
+    "repo_path": "games/kshisen"
+  },
+  "ksirk": {
+    "description": "KsirK is a computerized version of a well known strategy game",
+    "name": "ksirk",
+    "project_path": "kde/kdegames/ksirk",
+    "repo_path": "games/ksirk"
+  },
+  "ksmtp": {
+    "description": "Job-based library to send email through an SMTP server",
+    "name": "ksmtp",
+    "project_path": "kde/pim/ksmtp",
+    "repo_path": "pim/ksmtp"
+  },
+  "ksnakeduel": {
+    "description": "KSnakeDuel is a simple snake duel game",
+    "name": "ksnakeduel",
+    "project_path": "kde/kdegames/ksnakeduel",
+    "repo_path": "games/ksnakeduel"
+  },
+  "ksnapshot": {
+    "description": "A handy utility primarily designed for taking screenshots\n\nGet KIPI plugins for \"more features\":https://www.elpauer.org/?p=509",
+    "name": "ksnapshot",
+    "project_path": "unmaintained/ksnapshot",
+    "repo_path": "unmaintained/ksnapshot"
+  },
+  "kspaceduel": {
+    "description": "KSpaceDuel: each of two possible players controls a satellite spaceship orbiting the sun",
+    "name": "kspaceduel",
+    "project_path": "kde/kdegames/kspaceduel",
+    "repo_path": "games/kspaceduel"
+  },
+  "ksquares": {
+    "description": "KSquares is modeled after the well known pen and paper based game of Dots and Boxes",
+    "name": "ksquares",
+    "project_path": "kde/kdegames/ksquares",
+    "repo_path": "games/ksquares"
+  },
+  "ksshaskpass": {
+    "description": "ssh-add helper that uses KWallet and KPasswordDialog",
+    "name": "ksshaskpass",
+    "project_path": "kde/workspace/ksshaskpass",
+    "repo_path": "plasma/ksshaskpass"
+  },
+  "kst-plot": {
+    "description": "Fast real-time plotting program with light data analysis capabilities",
+    "name": "kst-plot",
+    "project_path": "extragear/graphics/kst-plot",
+    "repo_path": "graphics/kst-plot"
+  },
+  "kstars": {
+    "description": "Desktop Planetarium",
+    "name": "kstars",
+    "project_path": "extragear/edu/kstars",
+    "repo_path": "education/kstars"
+  },
+  "kstatusnotifieritem": {
+    "description": "Implementation of Status Notifier Items",
+    "name": "kstatusnotifieritem",
+    "project_path": "frameworks/kstatusnotifieritem",
+    "repo_path": "frameworks/kstatusnotifieritem"
+  },
+  "ksudoku": {
+    "description": "KSudoku is a logic-based symbol placement puzzle",
+    "name": "ksudoku",
+    "project_path": "kde/kdegames/ksudoku",
+    "repo_path": "games/ksudoku"
+  },
+  "ksvg": {
+    "description": "Components for handling SVGs",
+    "name": "ksvg",
+    "project_path": "frameworks/ksvg",
+    "repo_path": "frameworks/ksvg"
+  },
+  "ksysguard": {
+    "description": "Resource usage monitor for your computer",
+    "name": "ksysguard",
+    "project_path": "kde/workspace/ksysguard",
+    "repo_path": "plasma/ksysguard"
+  },
+  "ksystemlog": {
+    "description": "KDE SystemLog Application",
+    "name": "ksystemlog",
+    "project_path": "kde/kdeadmin/ksystemlog",
+    "repo_path": "system/ksystemlog"
+  },
+  "ksystemstats": {
+    "description": "A plugin based system monitoring daemon.",
+    "name": "ksystemstats",
+    "project_path": "kde/workspace/ksystemstats",
+    "repo_path": "plasma/ksystemstats"
+  },
+  "kte-collaborative": {
+    "description": "KTextEditor plugin which allows to edit text documents collaboratively",
+    "name": "kte-collaborative",
+    "project_path": "playground/network/kte-collaborative",
+    "repo_path": "network/kte-collaborative"
+  },
+  "kteatime": {
+    "description": "Handy timer for steeping tea",
+    "name": "kteatime",
+    "project_path": "kde/kdeutils/kteatime",
+    "repo_path": "utilities/kteatime"
+  },
+  "ktechlab": {
+    "description": "IDE for microcontrollers and electronics",
+    "name": "ktechlab",
+    "project_path": "playground/devtools/ktechlab",
+    "repo_path": "sdk/ktechlab"
+  },
+  "ktextaddons": {
+    "description": "Various text handling addons",
+    "name": "ktextaddons",
+    "project_path": "playground/libs/ktextaddons",
+    "repo_path": "libraries/ktextaddons"
+  },
+  "ktexteditor": {
+    "description": "KTextEditor Framework",
+    "name": "ktexteditor",
+    "project_path": "frameworks/ktexteditor",
+    "repo_path": "frameworks/ktexteditor"
+  },
+  "ktexteditorpreviewplugin": {
+    "description": "Plugin for previewing content using the KTextEditor Framework",
+    "name": "ktexteditorpreviewplugin",
+    "project_path": "unmaintained/ktexteditorpreviewplugin",
+    "repo_path": "unmaintained/ktexteditorpreviewplugin"
+  },
+  "ktexttemplate": {
+    "description": "Library to allow application developers to separate the structure of documents from the data they contain.",
+    "name": "ktexttemplate",
+    "project_path": "frameworks/ktexttemplate",
+    "repo_path": "frameworks/ktexttemplate"
+  },
+  "ktextwidgets": {
+    "description": "KTextWidgets",
+    "name": "ktextwidgets",
+    "project_path": "frameworks/ktextwidgets",
+    "repo_path": "frameworks/ktextwidgets"
+  },
+  "ktimer": {
+    "description": "Little tool to execute programs after some time",
+    "name": "ktimer",
+    "project_path": "kde/kdeutils/ktimer",
+    "repo_path": "utilities/ktimer"
+  },
+  "ktimetracker": {
+    "description": "Todo management and time tracker",
+    "name": "ktimetracker",
+    "project_path": "extragear/pim/ktimetracker",
+    "repo_path": "pim/ktimetracker"
+  },
+  "ktnef": {
+    "description": "Libraries to work with TNEF Email Attachments",
+    "name": "ktnef",
+    "project_path": "kde/pim/ktnef",
+    "repo_path": "pim/ktnef"
+  },
+  "ktorrent": {
+    "description": "Powerful BitTorrent client",
+    "name": "ktorrent",
+    "project_path": "kde/kdenetwork/ktorrent",
+    "repo_path": "network/ktorrent"
+  },
+  "ktouch": {
+    "description": "Touch Typing Tutor",
+    "name": "ktouch",
+    "project_path": "kde/kdeedu/ktouch",
+    "repo_path": "education/ktouch"
+  },
+  "ktp-accounts-kcm": {
+    "description": "KCM for configuring Telepathy Instant Messaging Accounts",
+    "name": "ktp-accounts-kcm",
+    "project_path": "kde/kdenetwork/ktp-accounts-kcm",
+    "repo_path": "network/ktp-accounts-kcm"
+  },
+  "ktp-active": {
+    "description": "Plasma Active Client for KDE Telepathy",
+    "name": "ktp-active",
+    "project_path": "unmaintained/ktp-active",
+    "repo_path": "unmaintained/ktp-active"
+  },
+  "ktp-approver": {
+    "description": "KDE channel approver for Telepathy",
+    "name": "ktp-approver",
+    "project_path": "kde/kdenetwork/ktp-approver",
+    "repo_path": "network/ktp-approver"
+  },
+  "ktp-auth-handler": {
+    "description": "UI/KWallet integration for passwords and SSL errors on account connection",
+    "name": "ktp-auth-handler",
+    "project_path": "kde/kdenetwork/ktp-auth-handler",
+    "repo_path": "network/ktp-auth-handler"
+  },
+  "ktp-call-ui": {
+    "description": "Voice/video call UI for Telepathy",
+    "name": "ktp-call-ui",
+    "project_path": "kde/kdenetwork/ktp-call-ui",
+    "repo_path": "network/ktp-call-ui"
+  },
+  "ktp-common-internals": {
+    "description": "Library for KTp",
+    "name": "ktp-common-internals",
+    "project_path": "kde/kdenetwork/ktp-common-internals",
+    "repo_path": "network/ktp-common-internals"
+  },
+  "ktp-contact-list": {
+    "description": "Telepathy contact list application",
+    "name": "ktp-contact-list",
+    "project_path": "kde/kdenetwork/ktp-contact-list",
+    "repo_path": "network/ktp-contact-list"
+  },
+  "ktp-contact-runner": {
+    "description": "KRunner plugin for KDE Telepathy",
+    "name": "ktp-contact-runner",
+    "project_path": "kde/kdenetwork/ktp-contact-runner",
+    "repo_path": "network/ktp-contact-runner"
+  },
+  "ktp-desktop-applets": {
+    "description": "KDE Telepathy applets for the Plasma Desktop",
+    "name": "ktp-desktop-applets",
+    "project_path": "kde/kdenetwork/ktp-desktop-applets",
+    "repo_path": "network/ktp-desktop-applets"
+  },
+  "ktp-filetransfer-handler": {
+    "description": "Telepathy file transfer handler",
+    "name": "ktp-filetransfer-handler",
+    "project_path": "kde/kdenetwork/ktp-filetransfer-handler",
+    "repo_path": "network/ktp-filetransfer-handler"
+  },
+  "ktp-kde": {
+    "description": "Telepathy KDE integration library",
+    "name": "ktp-kde",
+    "project_path": "unmaintained/ktp-kde",
+    "repo_path": "unmaintained/ktp-kde"
+  },
+  "ktp-kded-module": {
+    "description": "KDED module for KDE Telepathy that takes care of system integration",
+    "name": "ktp-kded-module",
+    "project_path": "kde/kdenetwork/ktp-kded-module",
+    "repo_path": "network/ktp-kded-module"
+  },
+  "ktp-kipi-plugin": {
+    "description": "A Kipi Plugin to send images through telepathy",
+    "name": "ktp-kipi-plugin",
+    "project_path": "unmaintained/ktp-kipi-plugin",
+    "repo_path": "unmaintained/ktp-kipi-plugin"
+  },
+  "ktp-launcher-kded": {
+    "description": "KDED Module which ensures necessary Telepathy services are running.",
+    "name": "ktp-launcher-kded",
+    "project_path": "unmaintained/ktp-launcher-kded",
+    "repo_path": "unmaintained/ktp-launcher-kded"
+  },
+  "ktp-nepomuk-service": {
+    "description": "Nepomuk integration service for Telepathy",
+    "name": "ktp-nepomuk-service",
+    "project_path": "unmaintained/ktp-nepomuk-service",
+    "repo_path": "unmaintained/ktp-nepomuk-service"
+  },
+  "ktp-presence-dataengine": {
+    "description": "Plasma dataengine for managing Telepathy account presence.",
+    "name": "ktp-presence-dataengine",
+    "project_path": "unmaintained/ktp-presence-dataengine",
+    "repo_path": "unmaintained/ktp-presence-dataengine"
+  },
+  "ktp-send-file": {
+    "description": "File manager plugin to launch a file transfer job with a specified contact",
+    "name": "ktp-send-file",
+    "project_path": "kde/kdenetwork/ktp-send-file",
+    "repo_path": "network/ktp-send-file"
+  },
+  "ktp-ssh-contact": {
+    "description": "Connect to your contacts using ssh",
+    "name": "ktp-ssh-contact",
+    "project_path": "unmaintained/ktp-ssh-contact",
+    "repo_path": "unmaintained/ktp-ssh-contact"
+  },
+  "ktp-test-tool": {
+    "description": "A tool for testing out the various components of the KDE Telepathy.\n\nDEPRECATED",
+    "name": "ktp-test-tool",
+    "project_path": "unmaintained/ktp-test-tool",
+    "repo_path": "unmaintained/ktp-test-tool"
+  },
+  "ktp-testlib": {
+    "description": "Infrastructure library for building unit tests for Telepathy components",
+    "name": "ktp-testlib",
+    "project_path": "unmaintained/ktp-testlib",
+    "repo_path": "unmaintained/ktp-testlib"
+  },
+  "ktp-text-ui": {
+    "description": "Telepathy handler for text chats",
+    "name": "ktp-text-ui",
+    "project_path": "kde/kdenetwork/ktp-text-ui",
+    "repo_path": "network/ktp-text-ui"
+  },
+  "ktrip": {
+    "description": "Public Transport Assistance for Mobile Devices",
+    "name": "ktrip",
+    "project_path": "extragear/utils/ktrip",
+    "repo_path": "utilities/ktrip"
+  },
+  "ktuberling": {
+    "description": "KTuberling is a simple constructor game suitable for children and adults alike",
+    "name": "ktuberling",
+    "project_path": "kde/kdegames/ktuberling",
+    "repo_path": "games/ktuberling"
+  },
+  "kturtle": {
+    "description": "Educational programming environment that uses TurtleSpeak",
+    "name": "kturtle",
+    "project_path": "kde/kdeedu/kturtle",
+    "repo_path": "education/kturtle"
+  },
+  "ktutorial": {
+    "description": "A library and an editor for interactive tutorials in KDE applications",
+    "name": "ktutorial",
+    "project_path": "unmaintained/ktutorial",
+    "repo_path": "unmaintained/ktutorial"
+  },
+  "ktux": {
+    "description": "KTux is a screensaver of outer space, with Tux in a spaceship flying by.",
+    "name": "ktux",
+    "project_path": "unmaintained/ktux",
+    "repo_path": "unmaintained/ktux"
+  },
+  "kube": {
+    "description": "Modern groupware client based on QtQuick and Sink",
+    "name": "kube",
+    "project_path": "playground/pim/kube",
+    "repo_path": "pim/kube"
+  },
+  "kubeplayer": {
+    "description": "A multimedia player for different online platforms.",
+    "name": "kubeplayer",
+    "project_path": "unmaintained/kubeplayer",
+    "repo_path": "unmaintained/kubeplayer"
+  },
+  "kubrick": {
+    "description": "Kubrick is based on the famous Rubik's Cube",
+    "name": "kubrick",
+    "project_path": "kde/kdegames/kubrick",
+    "repo_path": "games/kubrick"
+  },
+  "kubuntu-debug-installer": {
+    "description": "Program to install debug packages for DrKonqi on Kubuntu",
+    "name": "kubuntu-debug-installer",
+    "project_path": "playground/base/kubuntu-debug-installer",
+    "repo_path": "system/kubuntu-debug-installer"
+  },
+  "kubuntu-driver-kcm": {
+    "description": "KCM that uses Ubuntu driver management system to install proprietary drivers",
+    "name": "kubuntu-driver-kcm",
+    "project_path": "playground/base/kubuntu-driver-kcm",
+    "repo_path": "system/kubuntu-driver-kcm"
+  },
+  "kubuntu-notification-helper": {
+    "description": "Daemon that presents various notifications to Kubuntu users",
+    "name": "kubuntu-notification-helper",
+    "project_path": "playground/base/kubuntu-notification-helper",
+    "repo_path": "system/kubuntu-notification-helper"
+  },
+  "kuickshow": {
+    "description": "A fast and convenient image viewer",
+    "name": "kuickshow",
+    "project_path": "playground/graphics/kuickshow",
+    "repo_path": "graphics/kuickshow"
+  },
+  "kunifiedpush": {
+    "description": "UnifiedPush client components",
+    "name": "kunifiedpush",
+    "project_path": "libraries/kunifiedpush",
+    "repo_path": "libraries/kunifiedpush"
+  },
+  "kunitconversion": {
+    "description": "KUnitConversion",
+    "name": "kunitconversion",
+    "project_path": "frameworks/kunitconversion",
+    "repo_path": "frameworks/kunitconversion"
+  },
+  "kup": {
+    "description": "Backup scheduler for the Plasma desktop",
+    "name": "kup",
+    "project_path": "extragear/system/kup",
+    "repo_path": "system/kup"
+  },
+  "kuser": {
+    "description": "KDE User Manager",
+    "name": "kuser",
+    "project_path": "unmaintained/kuser",
+    "repo_path": "unmaintained/kuser"
+  },
+  "kuserfeedback": {
+    "description": "Framework for collecting user feedback for apps via telemetry and surveys",
+    "name": "kuserfeedback",
+    "project_path": "frameworks/kuserfeedback",
+    "repo_path": "frameworks/kuserfeedback"
+  },
+  "kvkbd": {
+    "description": "A virtual keyboard for Plasma",
+    "name": "kvkbd",
+    "project_path": "unmaintained/kvkbd",
+    "repo_path": "unmaintained/kvkbd"
+  },
+  "kwallet": {
+    "description": "KWallet: Credential Storage",
+    "name": "kwallet",
+    "project_path": "frameworks/kwallet",
+    "repo_path": "frameworks/kwallet"
+  },
+  "kwallet-pam": {
+    "description": "PAM Integration with KWallet - Unlock KWallet when you login",
+    "name": "kwallet-pam",
+    "project_path": "kde/workspace/kwallet-pam",
+    "repo_path": "plasma/kwallet-pam"
+  },
+  "kwalletmanager": {
+    "description": "Tool to manage the passwords on your system",
+    "name": "kwalletmanager",
+    "project_path": "kde/kdeutils/kwalletmanager",
+    "repo_path": "utilities/kwalletmanager"
+  },
+  "kwave": {
+    "description": "Sound editor by KDE",
+    "name": "kwave",
+    "project_path": "kde/kdemultimedia/kwave",
+    "repo_path": "multimedia/kwave"
+  },
+  "kwayland": {
+    "description": "KWayland provides a Qt-style Client and Server library wrapper for the Wayland libraries.",
+    "name": "kwayland",
+    "project_path": "kde/workspace/kwayland",
+    "repo_path": "plasma/kwayland"
+  },
+  "kwayland-integration": {
+    "description": "Integration plugins for various KDE frameworks for the Wayland windowing system",
+    "name": "kwayland-integration",
+    "project_path": "kde/workspace/kwayland-integration",
+    "repo_path": "plasma/kwayland-integration"
+  },
+  "kwayland-server": {
+    "description": "Wayland Server Components built on KDE Frameworks",
+    "name": "kwayland-server",
+    "project_path": "kde/workspace/kwayland-server",
+    "repo_path": "plasma/kwayland-server"
+  },
+  "kweather": {
+    "description": "Weather application for Plasma Mobile",
+    "name": "kweather",
+    "project_path": "extragear/utils/kweather",
+    "repo_path": "utilities/kweather"
+  },
+  "kweathercore": {
+    "description": "Library to facilitate retrieval of weather information including forecasts and alerts",
+    "name": "kweathercore",
+    "project_path": "extragear/libs/kweathercore",
+    "repo_path": "libraries/kweathercore"
+  },
+  "kwebkitpart": {
+    "description": "WebKit browser component available as KPart",
+    "name": "kwebkitpart",
+    "project_path": "extragear/base/kwebkitpart",
+    "repo_path": "libraries/kwebkitpart"
+  },
+  "kwhiteboard": {
+    "description": "KWhiteboard is a shared whiteboard application built with Telepathy. It allows you to run a shared whiteboard session with Instant Messaging contacts.",
+    "name": "kwhiteboard",
+    "project_path": "unmaintained/kwhiteboard",
+    "repo_path": "unmaintained/kwhiteboard"
+  },
+  "kwidgetsaddons": {
+    "description": "KWidgetsAddons",
+    "name": "kwidgetsaddons",
+    "project_path": "frameworks/kwidgetsaddons",
+    "repo_path": "frameworks/kwidgetsaddons"
+  },
+  "kwin": {
+    "description": "Easy to use, but flexible, X Window Manager and Wayland Compositor",
+    "name": "kwin",
+    "project_path": "kde/workspace/kwin",
+    "repo_path": "plasma/kwin"
+  },
+  "kwindowsaddons": {
+    "description": "Runtime components for KDE software on Windows",
+    "name": "kwindowsaddons",
+    "project_path": "playground/base/kwindowsaddons",
+    "repo_path": "libraries/kwindowsaddons"
+  },
+  "kwindowsystem": {
+    "description": "KWindowSystem",
+    "name": "kwindowsystem",
+    "project_path": "frameworks/kwindowsystem",
+    "repo_path": "frameworks/kwindowsystem"
+  },
+  "kwooty": {
+    "description": "Friendly newsgroup binary downloader for Usenet",
+    "name": "kwooty",
+    "project_path": "playground/network/kwooty",
+    "repo_path": "network/kwooty"
+  },
+  "kwordquiz": {
+    "description": "Flash Card Trainer",
+    "name": "kwordquiz",
+    "project_path": "kde/kdeedu/kwordquiz",
+    "repo_path": "education/kwordquiz"
+  },
+  "kwrited": {
+    "description": "Listen to traditional system notifications",
+    "name": "kwrited",
+    "project_path": "kde/workspace/kwrited",
+    "repo_path": "plasma/kwrited"
+  },
+  "kxmlgui": {
+    "description": "KXMLGUI",
+    "name": "kxmlgui",
+    "project_path": "frameworks/kxmlgui",
+    "repo_path": "frameworks/kxmlgui"
+  },
+  "kxmlrpcclient": {
+    "description": "KXMLRPCClient - Library to assist working with XML-RPC APIs",
+    "name": "kxmlrpcclient",
+    "project_path": "frameworks/kxmlrpcclient",
+    "repo_path": "frameworks/kxmlrpcclient"
+  },
+  "kxstitch": {
+    "description": "Cross stitch pattern and chart creation",
+    "name": "kxstitch",
+    "project_path": "extragear/graphics/kxstitch",
+    "repo_path": "graphics/kxstitch"
+  },
+  "labplot": {
+    "description": "LabPlot is a FREE, open source and cross-platform Data Visualization and Analysis software accessible to everyone.",
+    "name": "labplot",
+    "project_path": "extragear/edu/labplot",
+    "repo_path": "education/labplot"
+  },
+  "lancelot": {
+    "description": "Alternative launcher for Plasma with a more complete set of features compared to the default",
+    "name": "lancelot",
+    "project_path": "playground/base/lancelot",
+    "repo_path": "plasma/lancelot"
+  },
+  "latte-dock": {
+    "description": "Replacement dock for Plasma desktops, providing an elegant and intuitive experience for your tasks and plasmoids",
+    "name": "latte-dock",
+    "project_path": "extragear/base/latte-dock",
+    "repo_path": "plasma/latte-dock"
+  },
+  "layer-shell-qt": {
+    "description": "Qt component to allow applications to make use of the Wayland wl-layer-shell protocol.",
+    "name": "layer-shell-qt",
+    "project_path": "kde/workspace/layer-shell-qt",
+    "repo_path": "plasma/layer-shell-qt"
+  },
+  "libbluedevil": {
+    "description": "KDE bluetooth framework libraries.",
+    "name": "libbluedevil",
+    "project_path": "unmaintained/libbluedevil",
+    "repo_path": "unmaintained/libbluedevil"
+  },
+  "libdebconf-kde": {
+    "description": "A library that talks debconf protocol used to present questions",
+    "name": "libdebconf-kde",
+    "project_path": "extragear/sysadmin/libdebconf-kde",
+    "repo_path": "system/libdebconf-kde"
+  },
+  "libechonest": {
+    "description": "Qt library for communicating with The Echo Nest.",
+    "name": "libechonest",
+    "project_path": "unmaintained/libechonest",
+    "repo_path": "unmaintained/libechonest"
+  },
+  "libgpg-error": {
+    "description": null,
+    "name": "libgpg-error",
+    "project_path": "third-party/libgpg-error",
+    "repo_path": null
+  },
+  "libgravatar": {
+    "description": "Library that provides Gravatar support",
+    "name": "libgravatar",
+    "project_path": "kde/pim/libgravatar",
+    "repo_path": "pim/libgravatar"
+  },
+  "libkcddb": {
+    "description": "Library used to retrieve audio CD metadata from the Internet",
+    "name": "libkcddb",
+    "project_path": "kde/kdemultimedia/libkcddb",
+    "repo_path": "multimedia/libkcddb"
+  },
+  "libkcompactdisc": {
+    "description": "Library for interfacing with CDs",
+    "name": "libkcompactdisc",
+    "project_path": "kde/kdemultimedia/libkcompactdisc",
+    "repo_path": "multimedia/libkcompactdisc"
+  },
+  "libkcw": {
+    "description": "A minimal toolkit for win32 API required to build up the console wrapper.",
+    "name": "libkcw",
+    "project_path": "unmaintained/libkcw",
+    "repo_path": "unmaintained/libkcw"
+  },
+  "libkdcraw": {
+    "description": "C++ interface around LibRaw library used to decode RAW picture files",
+    "name": "libkdcraw",
+    "project_path": "kde/kdegraphics/libs/libkdcraw",
+    "repo_path": "graphics/libkdcraw"
+  },
+  "libkdeedu": {
+    "description": "Libraries used by KDE Education applications",
+    "name": "libkdeedu",
+    "project_path": "unmaintained/libkdeedu",
+    "repo_path": "unmaintained/libkdeedu"
+  },
+  "libkdegames": {
+    "description": "Common code and data for many KDE games",
+    "name": "libkdegames",
+    "project_path": "kde/kdegames/libkdegames",
+    "repo_path": "games/libkdegames"
+  },
+  "libkdepim": {
+    "description": "Library for common KDE PIM applications",
+    "name": "libkdepim",
+    "project_path": "kde/pim/libkdepim",
+    "repo_path": "pim/libkdepim"
+  },
+  "libkeduvocdocument": {
+    "description": "Library to parse, convert, and manipulate KVTML files",
+    "name": "libkeduvocdocument",
+    "project_path": "kde/kdeedu/libkeduvocdocument",
+    "repo_path": "education/libkeduvocdocument"
+  },
+  "libkexiv2": {
+    "description": "Wrapper around Exiv2 library to manipulate picture metadata as EXIF and XMP",
+    "name": "libkexiv2",
+    "project_path": "kde/kdegraphics/libs/libkexiv2",
+    "repo_path": "graphics/libkexiv2"
+  },
+  "libkface": {
+    "description": "Qt/C++ library for KDE applications to perform face recognition and detection over pictures.",
+    "name": "libkface",
+    "project_path": "unmaintained/libkface",
+    "repo_path": "unmaintained/libkface"
+  },
+  "libkfbapi": {
+    "description": "A library for accessing Facebook services.",
+    "name": "libkfbapi",
+    "project_path": "unmaintained/libkfbapi",
+    "repo_path": "unmaintained/libkfbapi"
+  },
+  "libkgapi": {
+    "description": "Library for accessing various Google services via their public API",
+    "name": "libkgapi",
+    "project_path": "kde/pim/libkgapi",
+    "repo_path": "pim/libkgapi"
+  },
+  "libkgeomap": {
+    "description": "Wrapper around different world-map components to browse and arrange photos over a map",
+    "name": "libkgeomap",
+    "project_path": "kde/kdegraphics/libs/libkgeomap",
+    "repo_path": "graphics/libkgeomap"
+  },
+  "libkimageannotator": {
+    "description": "Utility for annotating images",
+    "name": "libkimageannotator",
+    "project_path": "playground/libs/libkimageannotator",
+    "repo_path": "libraries/libkimageannotator"
+  },
+  "libkipi": {
+    "description": "Qt/C++ interface to use kipi-plugins from KDE image management programs",
+    "name": "libkipi",
+    "project_path": "kde/kdegraphics/libs/libkipi",
+    "repo_path": "graphics/libkipi"
+  },
+  "libkleo": {
+    "description": "Library that provides cryptography support for mails",
+    "name": "libkleo",
+    "project_path": "kde/pim/libkleo",
+    "repo_path": "pim/libkleo"
+  },
+  "libkmahjongg": {
+    "description": "Common code, backgrounds and tile sets for games using Mahjongg tiles",
+    "name": "libkmahjongg",
+    "project_path": "kde/kdegames/libkmahjongg",
+    "repo_path": "games/libkmahjongg"
+  },
+  "libkomparediff2": {
+    "description": "Library to compare files and strings, used in Kompare and KDevelop",
+    "name": "libkomparediff2",
+    "project_path": "kde/kdesdk/libkomparediff2",
+    "repo_path": "sdk/libkomparediff2"
+  },
+  "libkoralle": {
+    "description": "a library for parsing data in the Resource Interchange File Format (RIFF)",
+    "name": "libkoralle",
+    "project_path": "unmaintained/libkoralle",
+    "repo_path": "unmaintained/libkoralle"
+  },
+  "libksane": {
+    "description": "Library providing QWidget with all the logic to interface scanners",
+    "name": "libksane",
+    "project_path": "kde/kdegraphics/libs/libksane",
+    "repo_path": "graphics/libksane"
+  },
+  "libkscreen": {
+    "description": "KDE's screen management software",
+    "name": "libkscreen",
+    "project_path": "kde/workspace/libkscreen",
+    "repo_path": "plasma/libkscreen"
+  },
+  "libksieve": {
+    "description": "Library which manages Sieve support",
+    "name": "libksieve",
+    "project_path": "kde/pim/libksieve",
+    "repo_path": "pim/libksieve"
+  },
+  "libksysguard": {
+    "description": "Library to retrieve information on the current status of computer hardware",
+    "name": "libksysguard",
+    "project_path": "kde/workspace/libksysguard",
+    "repo_path": "plasma/libksysguard"
+  },
+  "libktorrent": {
+    "description": "BitTorrent protocol implementation",
+    "name": "libktorrent",
+    "project_path": "kde/kdenetwork/libktorrent",
+    "repo_path": "network/libktorrent"
+  },
+  "libkubuntu": {
+    "description": "Library for Kubuntu platform integration",
+    "name": "libkubuntu",
+    "project_path": "playground/base/libkubuntu",
+    "repo_path": "libraries/libkubuntu"
+  },
+  "libkvkontakte": {
+    "description": "C++/KF5 library for asynchronous interaction with VK social network web API",
+    "name": "libkvkontakte",
+    "project_path": "extragear/libs/libkvkontakte",
+    "repo_path": "libraries/libkvkontakte"
+  },
+  "liblikeback": {
+    "description": "A library that allows users to easily give feedback on software\nby embedding itself into every window and providing straight forward dialogs to\nexpress like or dislike of something.",
+    "name": "liblikeback",
+    "project_path": "unmaintained/liblikeback",
+    "repo_path": "unmaintained/liblikeback"
+  },
+  "libmediawiki": {
+    "description": "C++ interface for MediaWiki-based web services such as Wikipedia",
+    "name": "libmediawiki",
+    "project_path": "extragear/libs/libmediawiki",
+    "repo_path": "libraries/libmediawiki"
+  },
+  "libplasma": {
+    "description": "Plasma library and runtime components",
+    "name": "libplasma",
+    "project_path": "kde/workspace/libplasma",
+    "repo_path": "plasma/libplasma"
+  },
+  "libqaccessibilityclient": {
+    "description": "Accessibilty tools helper library, used e.g. by screen readers",
+    "name": "libqaccessibilityclient",
+    "project_path": "extragear/libs/libqaccessibilityclient",
+    "repo_path": "libraries/libqaccessibilityclient"
+  },
+  "libqapt": {
+    "description": "A Qt wrapper library/APT implementation around the libapt-pkg library",
+    "name": "libqapt",
+    "project_path": "extragear/sysadmin/libqapt",
+    "repo_path": "system/libqapt"
+  },
+  "libqgit2": {
+    "description": "Qt wrapper library around the libgit2 git access library",
+    "name": "libqgit2",
+    "project_path": "playground/libs/libqgit2",
+    "repo_path": "libraries/libqgit2"
+  },
+  "libqinfinity": {
+    "description": "Qt wrapper around libinfinity, a library for collaborative editing",
+    "name": "libqinfinity",
+    "project_path": "unmaintained/libqinfinity",
+    "repo_path": "unmaintained/libqinfinity"
+  },
+  "libqmycroft": {
+    "description": "Mycroft integration library using a mock api to integrate apps as skill in mycroft",
+    "name": "libqmycroft",
+    "project_path": "playground/libs/libqmycroft",
+    "repo_path": "libraries/libqmycroft"
+  },
+  "libqsystemd": {
+    "description": "Simple Qt systemd interface library",
+    "name": "libqsystemd",
+    "project_path": "playground/libs/libqsystemd",
+    "repo_path": "libraries/libqsystemd"
+  },
+  "libquotient": {
+    "description": null,
+    "name": "libquotient",
+    "project_path": "third-party/libquotient",
+    "repo_path": null
+  },
+  "libqzeitgeist": {
+    "description": "A Qt interface to the Zeitgeist event tracking system",
+    "name": "libqzeitgeist",
+    "project_path": "kdesupport/libqzeitgeist",
+    "repo_path": "unmaintained/libqzeitgeist"
+  },
+  "libstreamanalyzer": {
+    "description": "Strigi libstreamanalyzer",
+    "name": "libstreamanalyzer",
+    "project_path": "kdesupport/strigi/libstreamanalyzer",
+    "repo_path": "unmaintained/libstreamanalyzer"
+  },
+  "libstreams": {
+    "description": "Strigi libstreams",
+    "name": "libstreams",
+    "project_path": "kdesupport/strigi/libstreams",
+    "repo_path": "unmaintained/libstreams"
+  },
+  "libtagaro": {
+    "description": "Replacement for libkdegames which will allow KDE games to scale to mobile form factors, and to fully take advantage of Qt 4 facilities.",
+    "name": "libtagaro",
+    "project_path": "unmaintained/libtagaro",
+    "repo_path": "unmaintained/libtagaro"
+  },
+  "libtmdbqt": {
+    "description": "Library that can retrieve information about movies from the TMDb web service",
+    "name": "libtmdbqt",
+    "project_path": "playground/network/libtmdbqt",
+    "repo_path": "libraries/libtmdbqt"
+  },
+  "licensedigger": {
+    "description": "Tools to convert existing license headers to SPDX compliant headers",
+    "name": "licensedigger",
+    "project_path": "playground/sdk/licensedigger",
+    "repo_path": "sdk/licensedigger"
+  },
+  "licentia": {
+    "description": "Choose a license for your project",
+    "name": "licentia",
+    "project_path": "kdereview/licentia",
+    "repo_path": "sdk/licentia"
+  },
+  "lightdm-kde-greeter": {
+    "description": "Login screen using the LightDM framework.\n \n* \"LightDM project\":https://launchpad.net/lightdm\n* \"Bug Tracker\":https://bugs.kde.org/describecomponents.cgi?product=lightdm",
+    "name": "lightdm-kde-greeter",
+    "project_path": "playground/base/lightdm-kde-greeter",
+    "repo_path": "plasma/lightdm-kde-greeter"
+  },
+  "liquidshell": {
+    "description": "Basic desktop shell using QtWidgets",
+    "name": "liquidshell",
+    "project_path": "extragear/base/liquidshell",
+    "repo_path": "system/liquidshell"
+  },
+  "lokalize": {
+    "description": "Computer-aided translation",
+    "name": "lokalize",
+    "project_path": "kde/kdesdk/lokalize",
+    "repo_path": "sdk/lokalize"
+  },
+  "lskat": {
+    "description": "Lieutenant Skat (from German Offiziersskat) is a fun and engaging card game for two players",
+    "name": "lskat",
+    "project_path": "kde/kdegames/lskat",
+    "repo_path": "games/lskat"
+  },
+  "macports-kde": {
+    "description": "Macports Tree for KDE Software",
+    "name": "macports-kde",
+    "project_path": "playground/sdk/macports-kde",
+    "repo_path": "unmaintained/macports-kde"
+  },
+  "mailcommon": {
+    "description": "Library which provides support for mail applications",
+    "name": "mailcommon",
+    "project_path": "kde/pim/mailcommon",
+    "repo_path": "pim/mailcommon"
+  },
+  "mailimporter": {
+    "description": "Library that implements importing of emails from various other email clients",
+    "name": "mailimporter",
+    "project_path": "kde/pim/mailimporter",
+    "repo_path": "pim/mailimporter"
+  },
+  "mangonel": {
+    "description": "Simple and pretty application launcher",
+    "name": "mangonel",
+    "project_path": "extragear/base/mangonel",
+    "repo_path": "utilities/mangonel"
+  },
+  "marble": {
+    "description": "Virtual Globe and World Atlas that you can use to learn more about the Earth",
+    "name": "marble",
+    "project_path": "kde/kdeedu/marble",
+    "repo_path": "education/marble"
+  },
+  "mark": {
+    "description": "Scientific tool for data annotation",
+    "name": "mark",
+    "project_path": "playground/base/mark",
+    "repo_path": "education/mark"
+  },
+  "markdownpart": {
+    "description": "KPart for rendering Markdown content",
+    "name": "markdownpart",
+    "project_path": "kde/kdeutils/markdownpart",
+    "repo_path": "utilities/markdownpart"
+  },
+  "marknote": {
+    "description": "A simple markdown note management app",
+    "name": "marknote",
+    "project_path": "extragear/office/marknote",
+    "repo_path": "office/marknote"
+  },
+  "massif-visualizer": {
+    "description": "Visualizer for Valgrind Massif data files",
+    "name": "massif-visualizer",
+    "project_path": "extragear/sdk/massif-visualizer",
+    "repo_path": "sdk/massif-visualizer"
+  },
+  "maui-accounts-dbus-daemon": {
+    "description": "",
+    "name": "maui-accounts-dbus-daemon",
+    "project_path": "playground/base/maui-accounts-dbus-daemon",
+    "repo_path": "maui/maui-accounts-dbus-daemon"
+  },
+  "maui-accounts-gui": {
+    "description": "",
+    "name": "maui-accounts-gui",
+    "project_path": "playground/base/maui-accounts-gui",
+    "repo_path": "maui/maui-accounts-gui"
+  },
+  "maui-agenda": {
+    "description": "Maui Calendar App",
+    "name": "maui-agenda",
+    "project_path": "playground/base/agenda",
+    "repo_path": "maui/agenda"
+  },
+  "maui-booth": {
+    "description": "A convergent camera app",
+    "name": "maui-booth",
+    "project_path": "playground/base/maui-booth",
+    "repo_path": "maui/booth"
+  },
+  "maui-clip": {
+    "description": "Video player and video collection manager",
+    "name": "maui-clip",
+    "project_path": "playground/base/maui-clip",
+    "repo_path": "maui/clip"
+  },
+  "maui-communicator": {
+    "description": "Contacts and dialer application",
+    "name": "maui-communicator",
+    "project_path": "playground/base/maui-communicator",
+    "repo_path": "maui/communicator"
+  },
+  "maui-era": {
+    "description": "Maui Clock app",
+    "name": "maui-era",
+    "project_path": "playground/base/era",
+    "repo_path": "maui/era"
+  },
+  "maui-fiery": {
+    "description": "A convergent web browser",
+    "name": "maui-fiery",
+    "project_path": "playground/base/maui-fiery",
+    "repo_path": "maui/fiery"
+  },
+  "maui-libdavclient": {
+    "description": "DAV protocol support for Maui applications",
+    "name": "maui-libdavclient",
+    "project_path": "playground/base/maui-libdavclient",
+    "repo_path": "maui/maui-libdavclient"
+  },
+  "maui-pix": {
+    "description": "Image gallery application",
+    "name": "maui-pix",
+    "project_path": "playground/base/maui-pix",
+    "repo_path": "maui/pix"
+  },
+  "maui-shelf": {
+    "description": "Document and EBook collection manager",
+    "name": "maui-shelf",
+    "project_path": "playground/base/maui-shelf",
+    "repo_path": "maui/shelf"
+  },
+  "maui-station": {
+    "description": "Convergent terminal emulator",
+    "name": "maui-station",
+    "project_path": "playground/base/maui-station",
+    "repo_path": "maui/station"
+  },
+  "maui-strike": {
+    "description": "Strike is a simple minimal IDE for the Linux phones. Code, build, and run from the phone.",
+    "name": "maui-strike",
+    "project_path": "playground/sdk/strike",
+    "repo_path": "maui/strike"
+  },
+  "mauikit": {
+    "description": "Templated convergent controls and multi-platform utilities for Maui applications",
+    "name": "mauikit",
+    "project_path": "playground/libs/mauikit",
+    "repo_path": "maui/mauikit"
+  },
+  "mauikit-accounts": {
+    "description": "MauiKit utilities to handle User Accounts",
+    "name": "mauikit-accounts",
+    "project_path": "playground/libs/mauikit-accounts",
+    "repo_path": "maui/mauikit-accounts"
+  },
+  "mauikit-calendar": {
+    "description": "Calendar support components for Maui applications",
+    "name": "mauikit-calendar",
+    "project_path": "playground/base/mauikit-calendar",
+    "repo_path": "maui/mauikit-calendar"
+  },
+  "mauikit-documents": {
+    "description": "MauiKit QtQuick plugins for text editing",
+    "name": "mauikit-documents",
+    "project_path": "playground/base/mauikit-documents",
+    "repo_path": "maui/mauikit-documents"
+  },
+  "mauikit-filebrowsing": {
+    "description": "MauiKit File Browsing utilities and controls",
+    "name": "mauikit-filebrowsing",
+    "project_path": "playground/libs/mauikit-filebrowsing",
+    "repo_path": "maui/mauikit-filebrowsing"
+  },
+  "mauikit-imagetools": {
+    "description": "MauiKit Image Tools Components",
+    "name": "mauikit-imagetools",
+    "project_path": "playground/libs/mauikit-imagetools",
+    "repo_path": "maui/mauikit-imagetools"
+  },
+  "mauikit-terminal": {
+    "description": "Terminal support components for Maui applications",
+    "name": "mauikit-terminal",
+    "project_path": "playground/base/mauikit-terminal",
+    "repo_path": "maui/mauikit-terminal"
+  },
+  "mauikit-texteditor": {
+    "description": "MauiKit Text Editor components",
+    "name": "mauikit-texteditor",
+    "project_path": "playground/libs/mauikit-texteditor",
+    "repo_path": "maui/mauikit-texteditor"
+  },
+  "mauiman": {
+    "description": "Maui Manager Library. Server and public library API.",
+    "name": "mauiman",
+    "project_path": "playground/base/mauiman",
+    "repo_path": "maui/mauiman"
+  },
+  "mbox-importer": {
+    "description": "Wizard to assist with importing MBox email archives into Akonadi",
+    "name": "mbox-importer",
+    "project_path": "kde/pim/mbox-importer",
+    "repo_path": "pim/mbox-importer"
+  },
+  "melon": {
+    "description": "Desktop QML file manager",
+    "name": "melon",
+    "project_path": "playground/system/melon",
+    "repo_path": "system/melon"
+  },
+  "merkuro": {
+    "description": "A calendar application using Akonadi to sync with external services (Nextcloud, GMail, ...)",
+    "name": "merkuro",
+    "project_path": "kde/pim/merkuro",
+    "repo_path": "pim/merkuro"
+  },
+  "messagelib": {
+    "description": "Library components for messages (e.g. displaying Akonadi collections)",
+    "name": "messagelib",
+    "project_path": "kde/pim/messagelib",
+    "repo_path": "pim/messagelib"
+  },
+  "milou": {
+    "description": "A dedicated search application built on top of Baloo",
+    "name": "milou",
+    "project_path": "kde/workspace/milou",
+    "repo_path": "plasma/milou"
+  },
+  "mimetreeparser": {
+    "description": "Parser for MIME trees",
+    "name": "mimetreeparser",
+    "project_path": "playground/pim/mimetreeparser",
+    "repo_path": "pim/mimetreeparser"
+  },
+  "ministro": {
+    "description": "Ministro is system wide library installer/provider for android platform.",
+    "name": "ministro",
+    "project_path": "unmaintained/necessitas/ministro",
+    "repo_path": "unmaintained/ministro"
+  },
+  "minuet": {
+    "description": "Free and open-source software for music education",
+    "name": "minuet",
+    "project_path": "kde/kdeedu/minuet",
+    "repo_path": "education/minuet"
+  },
+  "modemmanager-qt": {
+    "description": "Qt wrapper for ModemManager DBus API.\n\nReport bugs in bugs.kde.org, under product frameworks-modemmanager-qt.",
+    "name": "modemmanager-qt",
+    "project_path": "frameworks/modemmanager-qt",
+    "repo_path": "frameworks/modemmanager-qt"
+  },
+  "mplayerthumbs": {
+    "description": "MPlayer based thumbnail generator for video files.",
+    "name": "mplayerthumbs",
+    "project_path": "unmaintained/mplayerthumbs",
+    "repo_path": "unmaintained/mplayerthumbs"
+  },
+  "mpvqt": {
+    "description": "MpvQt is a libmpv wrapper for QtQuick2 and QML",
+    "name": "mpvqt",
+    "project_path": "kde/applications/mpvqt",
+    "repo_path": "libraries/mpvqt"
+  },
+  "mrdanga-player": {
+    "description": "Player for a percussion instrument from India of ancient origin.",
+    "name": "mrdanga-player",
+    "project_path": "unmaintained/mrdanga-player",
+    "repo_path": "unmaintained/mrdanga-player"
+  },
+  "mtp-server": {
+    "description": "MTP server allowing file access to Plasma Mobile devices",
+    "name": "mtp-server",
+    "project_path": "playground/mobile/mtp-server",
+    "repo_path": "plasma-mobile/mtp-server"
+  },
+  "mula": {
+    "description": "Multi Language Dictionary with online, offline dictionary, translation and text-to-speech support.",
+    "name": "mula",
+    "project_path": "unmaintained/mula",
+    "repo_path": "unmaintained/mula"
+  },
+  "muon": {
+    "description": "A collection of package management tools for Debian-based systems",
+    "name": "muon",
+    "project_path": "extragear/sysadmin/muon",
+    "repo_path": "system/muon"
+  },
+  "mycroft-bigscreen-setup": {
+    "description": "Bigscreen first boot mycroft configuration and setup skill",
+    "name": "mycroft-bigscreen-setup",
+    "project_path": "playground/utils/mycroft-bigscreen-setup",
+    "repo_path": "plasma-bigscreen/mycroft-bigscreen-setup"
+  },
+  "mycroft-gui": {
+    "description": "The Graphical User Interface used by the Mycroft Mark II and more",
+    "name": "mycroft-gui",
+    "project_path": "playground/system/mycroft-gui",
+    "repo_path": "system/mycroft-gui"
+  },
+  "mycroft-plasmoid": {
+    "description": "Plasma integration of different Mycroft AI services",
+    "name": "mycroft-plasmoid",
+    "project_path": "extragear/utils/mycroft-plasmoid",
+    "repo_path": "utilities/mycroft-plasmoid"
+  },
+  "mycroft-ptt-client": {
+    "description": "A simple push to talk client for mycroft based on libinput for USB remotes or external devices that wish to activate the mycroft listener with a button press for Plasma Bigscreen",
+    "name": "mycroft-ptt-client",
+    "project_path": "playground/utils/mycroft-ptt-client",
+    "repo_path": "plasma-bigscreen/mycroft-ptt-client"
+  },
+  "mycroft-skill-installer": {
+    "description": "Voice applications and mycroft skills installer for plasma bigscreen",
+    "name": "mycroft-skill-installer",
+    "project_path": "playground/utils/mycroft-skill-installer",
+    "repo_path": "plasma-bigscreen/mycroft-skill-installer"
+  },
+  "necessitas-installer-framework": {
+    "description": "Qt's Installer Framework with a few custom patches",
+    "name": "necessitas-installer-framework",
+    "project_path": "unmaintained/necessitas/necessitas-installer-framework",
+    "repo_path": "unmaintained/necessitas-installer-framework"
+  },
+  "necessitas-tools": {
+    "description": "Tools and scripts used to build Necessitas SDK.",
+    "name": "necessitas-tools",
+    "project_path": "unmaintained/necessitas/necessitas-tools",
+    "repo_path": "unmaintained/necessitas-tools"
+  },
+  "neochat": {
+    "description": "A client for matrix, the decentralized communication protocol",
+    "name": "neochat",
+    "project_path": "extragear/network/neochat",
+    "repo_path": "network/neochat"
+  },
+  "neon-docker-images": {
+    "description": "",
+    "name": "neon-docker-images",
+    "project_path": "neon/docker-images",
+    "repo_path": "neon/docker-images"
+  },
+  "neon-neon-repositories": {
+    "description": "",
+    "name": "neon-neon-repositories",
+    "project_path": "neon/neon/repositories",
+    "repo_path": "neon/neon/repositories"
+  },
+  "nepomuk-core": {
+    "description": "The core Nepomuk system contains of the central services like file indexing, file system monitoring, query, and of course storage, as well as the corresponding client libraries.\n\nThis is a compile time dependency for kde-runtime.",
+    "name": "nepomuk-core",
+    "project_path": "unmaintained/nepomuk-core",
+    "repo_path": "unmaintained/nepomuk-core"
+  },
+  "nepomuk-system-tray": {
+    "description": "More enchanced system tray for Nepomuk.",
+    "name": "nepomuk-system-tray",
+    "project_path": "unmaintained/nepomuk-system-tray",
+    "repo_path": "unmaintained/nepomuk-system-tray"
+  },
+  "nepomuk-tools": {
+    "description": "Collection of nepomuk development tools(mostly command line): working with nepomuk server, services and so on",
+    "name": "nepomuk-tools",
+    "project_path": "unmaintained/nepomuk-tools",
+    "repo_path": "unmaintained/nepomuk-tools"
+  },
+  "nepomuk-web-extractor": {
+    "description": "Extract information for Nepomuk resources from various locations.\nMore information is available in following wiki pages: [[https://techbase.kde.org/Projects/Nepomuk/WebExtractor]]",
+    "name": "nepomuk-web-extractor",
+    "project_path": "unmaintained/nepomuk-web-extractor",
+    "repo_path": "unmaintained/nepomuk-web-extractor"
+  },
+  "nepomuk-webminer": {
+    "description": "Finds additional metadata on the internet (via Python plugins) and adds it to Nepomuk.",
+    "name": "nepomuk-webminer",
+    "project_path": "unmaintained/nepomuk-webminer",
+    "repo_path": "unmaintained/nepomuk-webminer"
+  },
+  "nepomuk-widgets": {
+    "description": "The Library containing the Nepomuk Widgets.",
+    "name": "nepomuk-widgets",
+    "project_path": "unmaintained/nepomuk-widgets",
+    "repo_path": "unmaintained/nepomuk-widgets"
+  },
+  "nepomukannotation": {
+    "description": "A library and a set of tools that provide annotation suggestions.",
+    "name": "nepomukannotation",
+    "project_path": "unmaintained/nepomukannotation",
+    "repo_path": "unmaintained/nepomukannotation"
+  },
+  "nepomukextras": {
+    "description": "A set of convinience classes for the Nepomuk semantic desktop.",
+    "name": "nepomukextras",
+    "project_path": "unmaintained/nepomukextras",
+    "repo_path": "unmaintained/nepomukextras"
+  },
+  "nepomukshell": {
+    "description": "NepSaK - The Nepomuk Swiss Army Knife aka. NepomukShell is a maintenance and debugging tool intended for developers. \n\nIt allows to browse, query, and edit Nepomuk resources.",
+    "name": "nepomukshell",
+    "project_path": "unmaintained/nepomukshell",
+    "repo_path": "unmaintained/nepomukshell"
+  },
+  "nepomuktvnamer": {
+    "description": "A command line tool, service, and desktop action to fetch information about TV Shows from thetvdb.com and store it into Nepomuk.",
+    "name": "nepomuktvnamer",
+    "project_path": "unmaintained/nepomuktvnamer",
+    "repo_path": "unmaintained/nepomuktvnamer"
+  },
+  "networkmanagement": {
+    "description": "Control panel and widget network connections.",
+    "name": "networkmanagement",
+    "project_path": "unmaintained/networkmanagement",
+    "repo_path": "unmaintained/networkmanagement"
+  },
+  "networkmanager-qt": {
+    "description": "Qt wrapper for NetworkManager API.\n\nReport bugs in bugs.kde.org, under product frameworks-networkmanager-qt.",
+    "name": "networkmanager-qt",
+    "project_path": "frameworks/networkmanager-qt",
+    "repo_path": "frameworks/networkmanager-qt"
+  },
+  "nomad-style": {
+    "description": "",
+    "name": "nomad-style",
+    "project_path": "playground/base/nomad-style",
+    "repo_path": "maui/nomad-style"
+  },
+  "nongurigaeru": {
+    "description": "The missing Foundation library for Qt GUI apps.",
+    "name": "nongurigaeru",
+    "project_path": "kdereview/nongurigaeru",
+    "repo_path": "libraries/nongurigaeru"
+  },
+  "nota": {
+    "description": "Multi-platform text editor",
+    "name": "nota",
+    "project_path": "playground/base/nota",
+    "repo_path": "maui/nota"
+  },
+  "notably": {
+    "description": "A semantic note taking application based on the Nepomuk framework.",
+    "name": "notably",
+    "project_path": "unmaintained/notably",
+    "repo_path": "unmaintained/notably"
+  },
+  "notae": {
+    "description": "A simple note taking application that automatically saves your work",
+    "name": "notae",
+    "project_path": "playground/utils/notae",
+    "repo_path": "utilities/notae"
+  },
+  "notificationsurvey": {
+    "description": "For more information, see https://community.kde.org/Elegance/Notification_Study",
+    "name": "notificationsurvey",
+    "project_path": "unmaintained/notificationsurvey",
+    "repo_path": "unmaintained/notificationsurvey"
+  },
+  "ocean-sound-theme": {
+    "description": "Ocean Sound Theme for Plasma",
+    "name": "ocean-sound-theme",
+    "project_path": "kde/workspace/ocean-sound-theme",
+    "repo_path": "plasma/ocean-sound-theme"
+  },
+  "ocs-apiserver": {
+    "description": "Backend API server for the software store",
+    "name": "ocs-apiserver",
+    "project_path": "playground/www/ocs-apiserver",
+    "repo_path": "webapps/ocs-apiserver"
+  },
+  "ocs-cdn": {
+    "description": "Content delivery network for the software store",
+    "name": "ocs-cdn",
+    "project_path": "playground/www/ocs-cdn",
+    "repo_path": "webapps/ocs-cdn"
+  },
+  "ocs-fileserver": {
+    "description": "File server for the software store",
+    "name": "ocs-fileserver",
+    "project_path": "playground/www/ocs-fileserver",
+    "repo_path": "webapps/ocs-fileserver"
+  },
+  "ocs-server": {
+    "description": "A web server which provides OCS (Open Collaboration Services) functionality, and a web demo client",
+    "name": "ocs-server",
+    "project_path": "playground/www/ocs-server",
+    "repo_path": "webapps/ocs-server"
+  },
+  "ocs-webserver": {
+    "description": "Webserver for running a software store",
+    "name": "ocs-webserver",
+    "project_path": "playground/www/ocs-webserver",
+    "repo_path": "webapps/ocs-webserver"
+  },
+  "okteta": {
+    "description": "Hex editor for viewing and editing the raw data of files",
+    "name": "okteta",
+    "project_path": "extragear/utils/okteta",
+    "repo_path": "utilities/okteta"
+  },
+  "okular": {
+    "description": "KDE document viewer",
+    "name": "okular",
+    "project_path": "kde/kdegraphics/okular",
+    "repo_path": "graphics/okular"
+  },
+  "optiimage": {
+    "description": "Optimize your images with OptiImage, a useful image compressor that supports PNG, JPEG, WebP and SVG file types.",
+    "name": "optiimage",
+    "project_path": "playground/graphics/optiimage",
+    "repo_path": "graphics/optiimage"
+  },
+  "osx-patches": {
+    "description": "Fixes for KDE problems that occur on Apple OS X",
+    "name": "osx-patches",
+    "project_path": "playground/base/osx-patches",
+    "repo_path": "unmaintained/osx-patches"
+  },
+  "others-kde-br-promo": {
+    "description": "General repository for KDE Brazil promo material (artwork, templates, talks, etc)",
+    "name": "others-kde-br-promo",
+    "project_path": "others/kde-br-promo",
+    "repo_path": "unmaintained/kde-br-promo"
+  },
+  "others-kde-promo": {
+    "description": "This is an easy method for organizing KDE Promo materials.",
+    "name": "others-kde-promo",
+    "project_path": "others/kde-promo",
+    "repo_path": "unmaintained/kde-promo"
+  },
+  "others-kig-data": {
+    "description": "Course data for Kig, provided by KDE Edu.",
+    "name": "others-kig-data",
+    "project_path": "others/kde-edu-courses/kig-data",
+    "repo_path": "unmaintained/kig-data"
+  },
+  "others-krita-marketing": {
+    "description": "Working together to creating marketing and introduction documents for Krita",
+    "name": "others-krita-marketing",
+    "project_path": "others/krita-marketing",
+    "repo_path": "unmaintained/krita-marketing"
+  },
+  "others-kturtle-data": {
+    "description": "Course data for KTurtle, provided by KDE Edu.",
+    "name": "others-kturtle-data",
+    "project_path": "others/kde-edu-courses/kturtle-data",
+    "repo_path": "unmaintained/kturtle-data"
+  },
+  "others-kvtml-data": {
+    "description": "Course data for Vocabulary trainers, provided by KDE Edu.",
+    "name": "others-kvtml-data",
+    "project_path": "others/kde-edu-courses/kvtml-data",
+    "repo_path": "unmaintained/kvtml-data"
+  },
+  "oxygen": {
+    "description": "The Oxygen Style for Qt/KDE Applications",
+    "name": "oxygen",
+    "project_path": "kde/workspace/oxygen",
+    "repo_path": "plasma/oxygen"
+  },
+  "oxygen-fonts": {
+    "description": "The Oxygen font family. A desktop/gui font family for integrated use with the KDE desktop.",
+    "name": "oxygen-fonts",
+    "project_path": "unmaintained/oxygen-fonts",
+    "repo_path": "unmaintained/oxygen-fonts"
+  },
+  "oxygen-gtk": {
+    "description": "Port of the Oxygen widget theme to GTK",
+    "name": "oxygen-gtk",
+    "project_path": "playground/artwork/oxygen-gtk",
+    "repo_path": "plasma/oxygen-gtk"
+  },
+  "oxygen-icons": {
+    "description": "Oxygen icon theme",
+    "name": "oxygen-icons",
+    "project_path": "frameworks/oxygen-icons",
+    "repo_path": "frameworks/oxygen-icons"
+  },
+  "oxygen-sounds": {
+    "description": "The Oxygen Sound Theme",
+    "name": "oxygen-sounds",
+    "project_path": "kde/workspace/oxygen-sounds",
+    "repo_path": "plasma/oxygen-sounds"
+  },
+  "oxygen-transparent": {
+    "description": "Fork of the default KDE widget and window decoration theme (Oxygen) that supports transparency for application windows.",
+    "name": "oxygen-transparent",
+    "project_path": "unmaintained/oxygen-transparent",
+    "repo_path": "unmaintained/oxygen-transparent"
+  },
+  "packagekit-qt": {
+    "description": null,
+    "name": "packagekit-qt",
+    "project_path": "third-party/packagekit-qt",
+    "repo_path": null
+  },
+  "pairs": {
+    "description": "A memory and pairs game by KDE",
+    "name": "pairs",
+    "project_path": "unmaintained/pairs",
+    "repo_path": "unmaintained/pairs"
+  },
+  "palapeli": {
+    "description": "Palapeli is a single-player jigsaw puzzle game",
+    "name": "palapeli",
+    "project_path": "kde/kdegames/palapeli",
+    "repo_path": "games/palapeli"
+  },
+  "paleta": {
+    "description": "Color utilities",
+    "name": "paleta",
+    "project_path": "playground/base/paleta",
+    "repo_path": "maui/paleta"
+  },
+  "parley": {
+    "description": "Vocabulary Trainer",
+    "name": "parley",
+    "project_path": "kde/kdeedu/parley",
+    "repo_path": "education/parley"
+  },
+  "partitionmanager": {
+    "description": "Manage the disk devices, partitions and file systems on your computer",
+    "name": "partitionmanager",
+    "project_path": "kde/kdeadmin/partitionmanager",
+    "repo_path": "system/partitionmanager"
+  },
+  "peertube-voice-application": {
+    "description": "Peertube video player voice application and mycroft skill for Plasma Bigscreen",
+    "name": "peertube-voice-application",
+    "project_path": "playground/utils/peertube-voice-application",
+    "repo_path": "plasma-bigscreen/peertube-voice-application"
+  },
+  "perceptualcolor": {
+    "description": "Qt GUI components for choosing colors, with focus on an intuitive and perceptually uniform presentatio",
+    "name": "perceptualcolor",
+    "project_path": "playground/libs/perceptualcolor",
+    "repo_path": "libraries/perceptualcolor"
+  },
+  "perlkde": {
+    "description": "Perl bindings for libraries created by the KDE community.",
+    "name": "perlkde",
+    "project_path": "kde/kdebindings/perl/perlkde",
+    "repo_path": "unmaintained/perlkde"
+  },
+  "perlqt": {
+    "description": "Perl bindings for the Qt libraries.",
+    "name": "perlqt",
+    "project_path": "kde/kdebindings/perl/perlqt",
+    "repo_path": "unmaintained/perlqt"
+  },
+  "person-viewer": {
+    "description": "Simple address book application displaying info about aggregated contacts",
+    "name": "person-viewer",
+    "project_path": "playground/pim/person-viewer",
+    "repo_path": "unmaintained/person-viewer"
+  },
+  "peruse": {
+    "description": "A comic book viewer and creator based on Frameworks 5, for use on multiple form factors",
+    "name": "peruse",
+    "project_path": "extragear/graphics/peruse",
+    "repo_path": "graphics/peruse"
+  },
+  "phoneblocker": {
+    "description": "Application for blocking unwanted calls and messages on your Blackberry.",
+    "name": "phoneblocker",
+    "project_path": "unmaintained/phoneblocker",
+    "repo_path": "unmaintained/phoneblocker"
+  },
+  "phonon": {
+    "description": "Multi-platform sound framework for application developers",
+    "name": "phonon",
+    "project_path": "kdesupport/phonon",
+    "repo_path": "libraries/phonon"
+  },
+  "phonon-directshow": {
+    "description": "A DirectShow backend for the Phonon multimedia library.",
+    "name": "phonon-directshow",
+    "project_path": "unmaintained/phonon-directshow",
+    "repo_path": "unmaintained/phonon-directshow"
+  },
+  "phonon-gstreamer": {
+    "description": "GStreamer backend for the Phonon multimedia library",
+    "name": "phonon-gstreamer",
+    "project_path": "kdesupport/phonon-gstreamer",
+    "repo_path": "libraries/phonon-gstreamer"
+  },
+  "phonon-mmf": {
+    "description": "A MMF (Multimedia Framework Architecture) backend for the Phonon multimedia library.",
+    "name": "phonon-mmf",
+    "project_path": "unmaintained/phonon-mmf",
+    "repo_path": "unmaintained/phonon-mmf"
+  },
+  "phonon-mplayer": {
+    "description": "A MPlayer backend for the Phonon multimedia library.",
+    "name": "phonon-mplayer",
+    "project_path": "unmaintained/phonon-mplayer",
+    "repo_path": "unmaintained/phonon-mplayer"
+  },
+  "phonon-quicktime": {
+    "description": "A QuickTime backend for the Phonon multimedia library.",
+    "name": "phonon-quicktime",
+    "project_path": "unmaintained/phonon-quicktime",
+    "repo_path": "unmaintained/phonon-quicktime"
+  },
+  "phonon-vlc": {
+    "description": "VLC backend for the Phonon multimedia library",
+    "name": "phonon-vlc",
+    "project_path": "kdesupport/phonon-vlc",
+    "repo_path": "libraries/phonon-vlc"
+  },
+  "phonon-waveout": {
+    "description": "A WaveOut backend for the Phonon multimedia library.",
+    "name": "phonon-waveout",
+    "project_path": "unmaintained/phonon-waveout",
+    "repo_path": "unmaintained/phonon-waveout"
+  },
+  "phonon-xine": {
+    "description": "A Xine backend for the Phonon multimedia library.",
+    "name": "phonon-xine",
+    "project_path": "unmaintained/phonon-xine",
+    "repo_path": "unmaintained/phonon-xine"
+  },
+  "photobook": {
+    "description": "An application to manage your photos",
+    "name": "photobook",
+    "project_path": "unmaintained/photobook",
+    "repo_path": "unmaintained/photobook"
+  },
+  "picmi": {
+    "description": "A nonogram logic game by KDE",
+    "name": "picmi",
+    "project_path": "kde/kdegames/picmi",
+    "repo_path": "games/picmi"
+  },
+  "pico-wizard": {
+    "description": "A Post Installation Configuration Wizard for Linux OSes",
+    "name": "pico-wizard",
+    "project_path": "playground/base/pico-wizard",
+    "repo_path": "plasma/pico-wizard"
+  },
+  "pikasso": {
+    "description": "Simple drawing programs using Kirigami for the UI and Rust for the rendering.",
+    "name": "pikasso",
+    "project_path": "playground/graphics/pikasso",
+    "repo_path": "graphics/pikasso"
+  },
+  "pim-data-exporter": {
+    "description": "Application to assist you with backing up and archiving of PIM data",
+    "name": "pim-data-exporter",
+    "project_path": "kde/pim/pim-data-exporter",
+    "repo_path": "pim/pim-data-exporter"
+  },
+  "pim-sieve-editor": {
+    "description": "Application to assist with editing IMAP Sieve filters",
+    "name": "pim-sieve-editor",
+    "project_path": "kde/pim/pim-sieve-editor",
+    "repo_path": "pim/pim-sieve-editor"
+  },
+  "pim-storage-service-manager": {
+    "description": "Assistant to help with managing external and cloud data storage providers such as Owncloud and Google Drive.",
+    "name": "pim-storage-service-manager",
+    "project_path": "unmaintained/pim-storage-service-manager",
+    "repo_path": "unmaintained/pim-storage-service-manager"
+  },
+  "pimcommon": {
+    "description": "Common library components for KDE PIM",
+    "name": "pimcommon",
+    "project_path": "kde/pim/pimcommon",
+    "repo_path": "pim/pimcommon"
+  },
+  "plank-player": {
+    "description": "Multimedia Player for playing local files on Plasma Bigscreen allowing navigation with just a remote control",
+    "name": "plank-player",
+    "project_path": "kde/workspace/plank-player",
+    "repo_path": "plasma/plank-player"
+  },
+  "plasma-active-kickstart": {
+    "description": "Repository of Kickstart and Yaml files used to create filesystem images of Plasma Active device adaptations",
+    "name": "plasma-active-kickstart",
+    "project_path": "unmaintained/plasma-active-kickstart",
+    "repo_path": "unmaintained/plasma-active-kickstart"
+  },
+  "plasma-active-maliit": {
+    "description": "QML plugin for the Maliit vitual keyboard using KDE Plasma components, intended to be used in Plasma Active",
+    "name": "plasma-active-maliit",
+    "project_path": "playground/base/plasma-active-maliit",
+    "repo_path": "unmaintained/plasma-active-maliit"
+  },
+  "plasma-active-window-control": {
+    "description": "Active Window Control applet for the Plasma Desktop",
+    "name": "plasma-active-window-control",
+    "project_path": "extragear/base/plasma-active-window-control",
+    "repo_path": "plasma/plasma-active-window-control"
+  },
+  "plasma-activities": {
+    "description": "Core components for the KDE's Activities System",
+    "name": "plasma-activities",
+    "project_path": "kde/workspace/plasma-activities",
+    "repo_path": "plasma/plasma-activities"
+  },
+  "plasma-activities-stats": {
+    "description": "A library for accessing the usage data collected by the activities system.",
+    "name": "plasma-activities-stats",
+    "project_path": "kde/workspace/plasma-activities-stats",
+    "repo_path": "plasma/plasma-activities-stats"
+  },
+  "plasma-bigscreen": {
+    "description": "Plasma shell for TVs",
+    "name": "plasma-bigscreen",
+    "project_path": "kde/workspace/plasma-bigscreen",
+    "repo_path": "plasma/plasma-bigscreen"
+  },
+  "plasma-browser-integration": {
+    "description": "Components necessary to integrate browsers into the Plasma Desktop",
+    "name": "plasma-browser-integration",
+    "project_path": "kde/workspace/plasma-browser-integration",
+    "repo_path": "plasma/plasma-browser-integration"
+  },
+  "plasma-camera": {
+    "description": "Camera application for Plasma Mobile",
+    "name": "plasma-camera",
+    "project_path": "extragear/base/plasma-camera",
+    "repo_path": "plasma-mobile/plasma-camera"
+  },
+  "plasma-crystal": {
+    "description": "A widget that can be used as search widget, or alternative file-open mechanism",
+    "name": "plasma-crystal",
+    "project_path": "unmaintained/plasma-crystal",
+    "repo_path": "unmaintained/plasma-crystal"
+  },
+  "plasma-desktop": {
+    "description": "Plasma for the Desktop",
+    "name": "plasma-desktop",
+    "project_path": "kde/workspace/plasma-desktop",
+    "repo_path": "plasma/plasma-desktop"
+  },
+  "plasma-dialer": {
+    "description": "Dialer for Plasma Mobile",
+    "name": "plasma-dialer",
+    "project_path": "extragear/mobile/plasma-dialer",
+    "repo_path": "plasma-mobile/plasma-dialer"
+  },
+  "plasma-disks": {
+    "description": "Monitors S.M.A.R.T. capable devices for imminent failure.",
+    "name": "plasma-disks",
+    "project_path": "kde/workspace/plasma-disks",
+    "repo_path": "plasma/plasma-disks"
+  },
+  "plasma-firewall": {
+    "description": "Control Panel for your system firewall",
+    "name": "plasma-firewall",
+    "project_path": "kde/workspace/plasma-firewall",
+    "repo_path": "plasma/plasma-firewall"
+  },
+  "plasma-integration": {
+    "description": "Qt Platform Theme integration plugins for Plasma Workspaces",
+    "name": "plasma-integration",
+    "project_path": "kde/workspace/plasma-integration",
+    "repo_path": "plasma/plasma-integration"
+  },
+  "plasma-lionmail": {
+    "description": "A Plasma widget displaying new and important email",
+    "name": "plasma-lionmail",
+    "project_path": "unmaintained/plasma-lionmail",
+    "repo_path": "unmaintained/plasma-lionmail"
+  },
+  "plasma-maliit-framework": {
+    "description": "Framework for Maliit integration with Plasma",
+    "name": "plasma-maliit-framework",
+    "project_path": "playground/mobile/plasma-maliit-framework",
+    "repo_path": "plasma-mobile/plasma-maliit-framework"
+  },
+  "plasma-maliit-plugins": {
+    "description": "Plasma integration for Maliit virtual keyboard",
+    "name": "plasma-maliit-plugins",
+    "project_path": "playground/mobile/plasma-maliit-plugins",
+    "repo_path": "plasma-mobile/plasma-maliit-plugins"
+  },
+  "plasma-mediacenter": {
+    "description": "h3. Plasma Media Center is designed to provide an easy and comfortable way to watch your videos, browse your photo collection and listen to your music, all in one place.",
+    "name": "plasma-mediacenter",
+    "project_path": "unmaintained/plasma-mediacenter",
+    "repo_path": "unmaintained/plasma-mediacenter"
+  },
+  "plasma-mobile": {
+    "description": "Plasma shell for mobile devices",
+    "name": "plasma-mobile",
+    "project_path": "kde/workspace/plasma-mobile",
+    "repo_path": "plasma/plasma-mobile"
+  },
+  "plasma-mobile-config": {
+    "description": "Generic as well as device-specific configuration for Plasma Active installations.",
+    "name": "plasma-mobile-config",
+    "project_path": "unmaintained/plasma-mobile-config",
+    "repo_path": "unmaintained/plasma-mobile-config"
+  },
+  "plasma-mobile-design-docs": {
+    "description": "Design documents for Plasma Mobile",
+    "name": "plasma-mobile-design-docs",
+    "project_path": "unmaintained/plasma-mobile-design-docs",
+    "repo_path": "unmaintained/plasma-mobile-design-docs"
+  },
+  "plasma-mobile-history": {
+    "description": "A complete Plasma workspace targeted from small handheld devices to larger tablets.",
+    "name": "plasma-mobile-history",
+    "project_path": "extragear/base/plasma-mobile-history",
+    "repo_path": "unmaintained/plasma-mobile-history"
+  },
+  "plasma-mobile-sounds": {
+    "description": "Sounds for Plasma Mobile devices",
+    "name": "plasma-mobile-sounds",
+    "project_path": "playground/mobile/plasma-mobile-sounds",
+    "repo_path": "plasma-mobile/plasma-mobile-sounds"
+  },
+  "plasma-mycroft-mobile": {
+    "description": "Plasma Mobile integration of different Mycroft AI services",
+    "name": "plasma-mycroft-mobile",
+    "project_path": "playground/utils/mycroft-plasmoid-mobile",
+    "repo_path": "plasma-mobile/mycroft-plasmoid-mobile"
+  },
+  "plasma-nano": {
+    "description": "A minimal Plasma shell package",
+    "name": "plasma-nano",
+    "project_path": "kde/workspace/plasma-nano",
+    "repo_path": "plasma/plasma-nano"
+  },
+  "plasma-nm": {
+    "description": "Plasma applet written in QML for managing network connections",
+    "name": "plasma-nm",
+    "project_path": "kde/workspace/plasma-nm",
+    "repo_path": "plasma/plasma-nm"
+  },
+  "plasma-pa": {
+    "description": "Plasma applet for audio volume management using PulseAudio",
+    "name": "plasma-pa",
+    "project_path": "kde/workspace/plasma-pa",
+    "repo_path": "plasma/plasma-pa"
+  },
+  "plasma-packagekit": {
+    "description": "Plasma applet to monitor Packagekit",
+    "name": "plasma-packagekit",
+    "project_path": "playground/base/plasma-packagekit",
+    "repo_path": "system/plasma-packagekit"
+  },
+  "plasma-pass": {
+    "description": "Plasma applet for the Pass password manager",
+    "name": "plasma-pass",
+    "project_path": "extragear/base/plasma-pass",
+    "repo_path": "plasma/plasma-pass"
+  },
+  "plasma-phone-settings": {
+    "description": "Configuration files for Plasma Mobile deployments",
+    "name": "plasma-phone-settings",
+    "project_path": "playground/mobile/plasma-phone-settings",
+    "repo_path": "plasma-mobile/plasma-phone-settings"
+  },
+  "plasma-phonebook": {
+    "description": "Phone book for Plasma Mobile",
+    "name": "plasma-phonebook",
+    "project_path": "extragear/base/plasma-phonebook",
+    "repo_path": "plasma-mobile/plasma-phonebook"
+  },
+  "plasma-pk-updates": {
+    "description": "Plasma applet for software updates using PackageKit",
+    "name": "plasma-pk-updates",
+    "project_path": "playground/base/plasma-pk-updates",
+    "repo_path": "system/plasma-pk-updates"
+  },
+  "plasma-redshift-control": {
+    "description": "Redshift control applet for the Plasma Desktop",
+    "name": "plasma-redshift-control",
+    "project_path": "extragear/base/plasma-redshift-control",
+    "repo_path": "plasma/plasma-redshift-control"
+  },
+  "plasma-remotecontrollers": {
+    "description": "Translate various input device events into keyboard and pointer events",
+    "name": "plasma-remotecontrollers",
+    "project_path": "kde/workspace/plasma-remotecontrollers",
+    "repo_path": "plasma-bigscreen/plasma-remotecontrollers"
+  },
+  "plasma-samegame": {
+    "description": "Samegame clone suitable for mobile devices",
+    "name": "plasma-samegame",
+    "project_path": "extragear/base/plasma-samegame",
+    "repo_path": "plasma-mobile/plasma-samegame"
+  },
+  "plasma-sdk": {
+    "description": "Applications useful for Plasma development",
+    "name": "plasma-sdk",
+    "project_path": "kde/workspace/plasma-sdk",
+    "repo_path": "plasma/plasma-sdk"
+  },
+  "plasma-settings": {
+    "description": "Settings application for Plasma Mobile",
+    "name": "plasma-settings",
+    "project_path": "extragear/base/plasma-settings",
+    "repo_path": "plasma-mobile/plasma-settings"
+  },
+  "plasma-simplemenu": {
+    "description": "Simplified menu for your Plasma Desktop",
+    "name": "plasma-simplemenu",
+    "project_path": "extragear/base/plasma-simplemenu",
+    "repo_path": "plasma/plasma-simplemenu"
+  },
+  "plasma-systemd-integration": {
+    "description": "Integration of Plasma Workspace and various modules with systemd",
+    "name": "plasma-systemd-integration",
+    "project_path": "unmaintained/plasma-systemd-integration",
+    "repo_path": "unmaintained/plasma-systemd-integration"
+  },
+  "plasma-systemmonitor": {
+    "description": "An interface for monitoring system sensors, process information and other system resources",
+    "name": "plasma-systemmonitor",
+    "project_path": "kde/workspace/plasma-systemmonitor",
+    "repo_path": "plasma/plasma-systemmonitor"
+  },
+  "plasma-tests": {
+    "description": "Tests for the Plasma Workspace",
+    "name": "plasma-tests",
+    "project_path": "kde/workspace/plasma-tests",
+    "repo_path": "plasma/plasma-tests"
+  },
+  "plasma-thunderbolt": {
+    "description": "Plasma integration for controlling Thunderbolt devices",
+    "name": "plasma-thunderbolt",
+    "project_path": "kde/workspace/plasma-thunderbolt",
+    "repo_path": "plasma/plasma-thunderbolt"
+  },
+  "plasma-vault": {
+    "description": "Plasma applet and services for creating encrypted vaults",
+    "name": "plasma-vault",
+    "project_path": "kde/workspace/plasma-vault",
+    "repo_path": "plasma/plasma-vault"
+  },
+  "plasma-wayland-protocols": {
+    "description": "Plasma-specific protocols for Wayland",
+    "name": "plasma-wayland-protocols",
+    "project_path": "kdesupport/plasma-wayland-protocols",
+    "repo_path": "libraries/plasma-wayland-protocols"
+  },
+  "plasma-welcome": {
+    "description": "A friendly onboarding wizard for Plasma",
+    "name": "plasma-welcome",
+    "project_path": "kde/workspace/plasma-welcome",
+    "repo_path": "plasma/plasma-welcome"
+  },
+  "plasma-workspace": {
+    "description": "Various components needed to run a Plasma-based environment",
+    "name": "plasma-workspace",
+    "project_path": "kde/workspace/plasma-workspace",
+    "repo_path": "plasma/plasma-workspace"
+  },
+  "plasma-workspace-wallpapers": {
+    "description": "Wallpapers for Plasma Workspaces",
+    "name": "plasma-workspace-wallpapers",
+    "project_path": "kde/workspace/plasma-workspace-wallpapers",
+    "repo_path": "plasma/plasma-workspace-wallpapers"
+  },
+  "plasma5support": {
+    "description": "Support components for porting from KF5/Qt5 to KF6/Qt6",
+    "name": "plasma5support",
+    "project_path": "kde/workspace/plasma5support",
+    "repo_path": "plasma/plasma5support"
+  },
+  "plasmate": {
+    "description": "Plasma Applet Development Environment",
+    "name": "plasmate",
+    "project_path": "playground/sdk/plasmate",
+    "repo_path": "unmaintained/plasmate"
+  },
+  "plasmatube": {
+    "description": "Kirigami YouTube video player based on QtMultimedia and youtube-dl",
+    "name": "plasmatube",
+    "project_path": "playground/mobile/plasmatube",
+    "repo_path": "multimedia/plasmatube"
+  },
+  "plasmoid-eventlist": {
+    "description": "A plasmoid to show your events and todos from Akonadi",
+    "name": "plasmoid-eventlist",
+    "project_path": "unmaintained/plasmoid-eventlist",
+    "repo_path": "unmaintained/plasmoid-eventlist"
+  },
+  "plymouth-kcm": {
+    "description": "KCM to manage the Plymouth (Boot) theme",
+    "name": "plymouth-kcm",
+    "project_path": "kde/workspace/plymouth-kcm",
+    "repo_path": "plasma/plymouth-kcm"
+  },
+  "pokipoki": {
+    "description": "Persistent object framework",
+    "name": "pokipoki",
+    "project_path": "kdereview/pokipoki",
+    "repo_path": "libraries/pokipoki"
+  },
+  "polinpin": {
+    "description": "Site for conducting tests",
+    "name": "polinpin",
+    "project_path": "playground/www/polinpin",
+    "repo_path": "webapps/polinpin"
+  },
+  "polkit-kde-agent-1": {
+    "description": "Daemon providing a Polkit authentication UI for Plasma",
+    "name": "polkit-kde-agent-1",
+    "project_path": "kde/workspace/polkit-kde-agent-1",
+    "repo_path": "plasma/polkit-kde-agent-1"
+  },
+  "polkit-kde-kcmodules-1": {
+    "description": "Set of configuration modules which allows administrator to change polkit settings.",
+    "name": "polkit-kde-kcmodules-1",
+    "project_path": "playground/system/polkit-kde-kcmodules-1",
+    "repo_path": "system/polkit-kde-kcmodules-1"
+  },
+  "polkit-qt-1": {
+    "description": "Qt wrapper around Polkit-1 client libraries",
+    "name": "polkit-qt-1",
+    "project_path": "kdesupport/polkit-qt-1",
+    "repo_path": "libraries/polkit-qt-1"
+  },
+  "pology": {
+    "description": "Library and collection of tools for in-depth processing of PO files",
+    "name": "pology",
+    "project_path": "playground/sdk/pology",
+    "repo_path": "sdk/pology"
+  },
+  "poppler": {
+    "description": null,
+    "name": "poppler",
+    "project_path": "third-party/poppler",
+    "repo_path": null
+  },
+  "powerdevil": {
+    "description": "Manages the power consumption settings of a Plasma shell",
+    "name": "powerdevil",
+    "project_path": "kde/workspace/powerdevil",
+    "repo_path": "plasma/powerdevil"
+  },
+  "powerplant": {
+    "description": "A verry WIP app to keep track of your plant's needs",
+    "name": "powerplant",
+    "project_path": "playground/utils/powerplant",
+    "repo_path": "utilities/powerplant"
+  },
+  "poxml": {
+    "description": "Translate DocBook XML files using gettext PO files",
+    "name": "poxml",
+    "project_path": "kde/kdesdk/poxml",
+    "repo_path": "sdk/poxml"
+  },
+  "print-manager": {
+    "description": "A tool for managing print jobs and printers",
+    "name": "print-manager",
+    "project_path": "kde/kdeworkspace/print-manager",
+    "repo_path": "plasma/print-manager"
+  },
+  "printer-applet": {
+    "description": "Printer Applet is a system tray utility that shows current print jobs, shows printer warnings and errors.",
+    "name": "printer-applet",
+    "project_path": "unmaintained/printer-applet",
+    "repo_path": "unmaintained/printer-applet"
+  },
+  "prison": {
+    "description": "prison is a barcode api currently offering a nice Qt api to produce QRCode barcodes and DataMatrix barcodes, and can easily be made support more.",
+    "name": "prison",
+    "project_path": "frameworks/prison",
+    "repo_path": "frameworks/prison"
+  },
+  "propagator": {
+    "description": "A git mirror fleet manager",
+    "name": "propagator",
+    "project_path": "unmaintained/propagator",
+    "repo_path": "unmaintained/propagator"
+  },
+  "publictransport": {
+    "description": "PublicTransport Applets, Runner, Data Engine & Tools.",
+    "name": "publictransport",
+    "project_path": "playground/base/publictransport",
+    "repo_path": "unmaintained/publictransport"
+  },
+  "pulseaudio-qt": {
+    "description": "Qt bindings for libpulse",
+    "name": "pulseaudio-qt",
+    "project_path": "extragear/libs/pulseaudio-qt",
+    "repo_path": "libraries/pulseaudio-qt"
+  },
+  "purpose": {
+    "description": "Framework for providing abstractions to get the developer's purposes fulfilled.",
+    "name": "purpose",
+    "project_path": "frameworks/purpose",
+    "repo_path": "frameworks/purpose"
+  },
+  "pvfviewer": {
+    "description": "PC Stitch Pattern Viewer",
+    "name": "pvfviewer",
+    "project_path": "extragear/graphics/pvfviewer",
+    "repo_path": "graphics/pvfviewer"
+  },
+  "pykde4": {
+    "description": "Python KDE bindings using PyQt4 SIP technology.",
+    "name": "pykde4",
+    "project_path": "kde/kdebindings/python/pykde4",
+    "repo_path": "unmaintained/pykde4"
+  },
+  "pykde5": {
+    "description": "Python bindings for KF5",
+    "name": "pykde5",
+    "project_path": "kde/kdebindings/python/pykde5",
+    "repo_path": "libraries/pykde5"
+  },
+  "qca": {
+    "description": "Qt Cryptographic Architecture \u2014 straightforward cross-platform crypto API",
+    "name": "qca",
+    "project_path": "kdesupport/qca",
+    "repo_path": "libraries/qca"
+  },
+  "qcoro": {
+    "description": null,
+    "name": "qcoro",
+    "project_path": "third-party/qcoro",
+    "repo_path": null
+  },
+  "qml-lsp": {
+    "description": "Collection of QML tools, including qml-lsp, qml-dap, and qml-refactor-fairy",
+    "name": "qml-lsp",
+    "project_path": "playground/sdk/qml-lsp",
+    "repo_path": "sdk/qml-lsp"
+  },
+  "qmlkonsole": {
+    "description": "Terminal app for Plasma Mobile",
+    "name": "qmlkonsole",
+    "project_path": "playground/mobile/qmlkonsole",
+    "repo_path": "plasma-mobile/qmlkonsole"
+  },
+  "qmlonline": {
+    "description": "Browser based QML Renderer",
+    "name": "qmlonline",
+    "project_path": "playground/www/qmlonline",
+    "repo_path": "webapps/qmlonline"
+  },
+  "qmltermwidget": {
+    "description": null,
+    "name": "qmltermwidget",
+    "project_path": "third-party/qmltermwidget",
+    "repo_path": null
+  },
+  "qmlweb": {
+    "description": "QmlWeb JavaScript Library",
+    "name": "qmlweb",
+    "project_path": "playground/www/qmlweb",
+    "repo_path": "unmaintained/qmlweb"
+  },
+  "qqc2-breeze-style": {
+    "description": "Breeze inspired QQC2 Style",
+    "name": "qqc2-breeze-style",
+    "project_path": "kde/workspace/qqc2-breeze-style",
+    "repo_path": "plasma/qqc2-breeze-style"
+  },
+  "qqc2-desktop-style": {
+    "description": "Qt Quick Controls 2: Desktop Style",
+    "name": "qqc2-desktop-style",
+    "project_path": "frameworks/qqc2-desktop-style",
+    "repo_path": "frameworks/qqc2-desktop-style"
+  },
+  "qrca": {
+    "description": "QR code scanner for Plasma Mobile",
+    "name": "qrca",
+    "project_path": "kdereview/utilities/qrca",
+    "repo_path": "utilities/qrca"
+  },
+  "qt1": {
+    "description": "Historical copy of Qt 1, adapted to compile on modern systems (circa. 2016)",
+    "name": "qt1",
+    "project_path": "historical/qt1",
+    "repo_path": "historical/qt1"
+  },
+  "qt2": {
+    "description": "Historical copy of Qt 2, adapted to compile on modern systems (circa. 2018)",
+    "name": "qt2",
+    "project_path": "historical/qt2",
+    "repo_path": "historical/qt2"
+  },
+  "qtatspi": {
+    "description": "Qt accessibility bridge plugin",
+    "name": "qtatspi",
+    "project_path": "unmaintained/qtatspi",
+    "repo_path": "unmaintained/qtatspi"
+  },
+  "qtcurve": {
+    "description": "Style engine for Qt and other toolkits",
+    "name": "qtcurve",
+    "project_path": "extragear/base/qtcurve",
+    "repo_path": "system/qtcurve"
+  },
+  "qtjolie": {
+    "description": "Qt binding to use the Jolie service-oriented framework",
+    "name": "qtjolie",
+    "project_path": "playground/libs/qtjolie",
+    "repo_path": "libraries/qtjolie"
+  },
+  "qtkeychain": {
+    "description": null,
+    "name": "qtkeychain",
+    "project_path": "third-party/qtkeychain",
+    "repo_path": null
+  },
+  "qtruby": {
+    "description": "Ruby bindings for the Qt libraries.",
+    "name": "qtruby",
+    "project_path": "kde/kdebindings/ruby/qtruby",
+    "repo_path": "unmaintained/qtruby"
+  },
+  "quanta": {
+    "description": "Quanta, an IDE for Web Development based on the KDevelop Platform.",
+    "name": "quanta",
+    "project_path": "playground/devtools/quanta",
+    "repo_path": "unmaintained/quanta"
+  },
+  "qyoto": {
+    "description": ".NET/Mono bindings for the Qt libraries.",
+    "name": "qyoto",
+    "project_path": "kde/kdebindings/csharp/qyoto",
+    "repo_path": "unmaintained/qyoto"
+  },
+  "rattlesnake": {
+    "description": "Rattlesnake is a metronome app for mobile and desktop.",
+    "name": "rattlesnake",
+    "project_path": "playground/multimedia/rattlesnake",
+    "repo_path": "multimedia/rattlesnake"
+  },
+  "raven": {
+    "description": "A mail client for Plasma Mobile",
+    "name": "raven",
+    "project_path": "playground/mobile/raven",
+    "repo_path": "plasma-mobile/raven"
+  },
+  "rcharactersheet": {
+    "description": "Rolisteam Character Set Shared Components",
+    "name": "rcharactersheet",
+    "project_path": "playground/games/rcharactersheet",
+    "repo_path": "rolisteam/rcharactersheet"
+  },
+  "rcse": {
+    "description": "Character Set IDE for Rolisteam applications.",
+    "name": "rcse",
+    "project_path": "playground/games/rcse",
+    "repo_path": "rolisteam/rcse"
+  },
+  "rekollect": {
+    "description": "A rich note-taking application.",
+    "name": "rekollect",
+    "project_path": "unmaintained/rekollect",
+    "repo_path": "unmaintained/rekollect"
+  },
+  "rekonq": {
+    "description": "rekonq is a web browser by KDE based on WebKit.",
+    "name": "rekonq",
+    "project_path": "unmaintained/rekonq",
+    "repo_path": "unmaintained/rekonq"
+  },
+  "release-buddy": {
+    "description": "KDE Release and Packaging System",
+    "name": "release-buddy",
+    "project_path": "playground/utils/release-buddy",
+    "repo_path": "unmaintained/release-buddy"
+  },
+  "releaseme": {
+    "description": "Release script framework",
+    "name": "releaseme",
+    "project_path": "playground/sdk/releaseme",
+    "repo_path": "sdk/releaseme"
+  },
+  "repo-management": {
+    "description": "This project contains the hooks and scripts that power the KDE git infrastructure.",
+    "name": "repo-management",
+    "project_path": "repo-management",
+    "repo_path": "sysadmin/repo-management"
+  },
+  "ring-kde": {
+    "description": "Qt-based Ring communication framework (www.ring.cx) client",
+    "name": "ring-kde",
+    "project_path": "extragear/pim/ring-kde",
+    "repo_path": "network/ring-kde"
+  },
+  "rkward": {
+    "description": "Easily extensible and easy-to-use IDE/GUI for R",
+    "name": "rkward",
+    "project_path": "kdereview/rkward",
+    "repo_path": "education/rkward"
+  },
+  "rocs": {
+    "description": "An educational Graph Theory IDE",
+    "name": "rocs",
+    "project_path": "kde/kdeedu/rocs",
+    "repo_path": "education/rocs"
+  },
+  "rolisteam": {
+    "description": "Virtual Tabletop Backend for Games",
+    "name": "rolisteam",
+    "project_path": "playground/games/rolisteam",
+    "repo_path": "rolisteam/rolisteam"
+  },
+  "rolisteam-common": {
+    "description": "Shared Components for Rolisteam",
+    "name": "rolisteam-common",
+    "project_path": "playground/games/rolisteam-common",
+    "repo_path": "rolisteam/rolisteam-common"
+  },
+  "rolisteam-community-data": {
+    "description": "Contributed Resources for Rolisteam Applications (Character Sheets, Themes, etc)",
+    "name": "rolisteam-community-data",
+    "project_path": "playground/games/rolisteam-community-data",
+    "repo_path": "rolisteam/rolisteam-community-data"
+  },
+  "rolisteam-diceparser": {
+    "description": "Rolisteam Dice Handling Components",
+    "name": "rolisteam-diceparser",
+    "project_path": "playground/games/rolisteam-diceparser",
+    "repo_path": "rolisteam/rolisteam-diceparser"
+  },
+  "rolisteam-packaging": {
+    "description": "Packaging resources for Rolisteam (Windows, Mac, Docker image, Snap and Debian packages)",
+    "name": "rolisteam-packaging",
+    "project_path": "playground/games/rolisteam-packaging",
+    "repo_path": "rolisteam/rolisteam-packaging"
+  },
+  "rolisteam-plugins": {
+    "description": "Various Shared Plugins for Rolisteam",
+    "name": "rolisteam-plugins",
+    "project_path": "playground/games/rolisteam-plugins",
+    "repo_path": "rolisteam/rolisteam-plugins"
+  },
+  "rsibreak": {
+    "description": "Helps prevent Repetitive Strain Injury by reminding you to take a break",
+    "name": "rsibreak",
+    "project_path": "extragear/utils/rsibreak",
+    "repo_path": "utilities/rsibreak"
+  },
+  "ruqola": {
+    "description": "KDE client for Rocket Chat",
+    "name": "ruqola",
+    "project_path": "extragear/network/ruqola",
+    "repo_path": "network/ruqola"
+  },
+  "rust-qt-binding-generator": {
+    "description": "Generate bindings to use Rust code in Qt and QML",
+    "name": "rust-qt-binding-generator",
+    "project_path": "extragear/sdk/rust-qt-binding-generator",
+    "repo_path": "sdk/rust-qt-binding-generator"
+  },
+  "samba-mounter": {
+    "description": "Samba Share Mounter",
+    "name": "samba-mounter",
+    "project_path": "playground/base/samba-mounter",
+    "repo_path": "system/samba-mounter"
+  },
+  "scribo": {
+    "description": "Natural Language Processing based on the Nepomuk semantic desktop framework.",
+    "name": "scribo",
+    "project_path": "unmaintained/scribo",
+    "repo_path": "unmaintained/scribo"
+  },
+  "sddm-kcm": {
+    "description": "Configuration module for SDDM",
+    "name": "sddm-kcm",
+    "project_path": "kde/workspace/sddm-kcm",
+    "repo_path": "plasma/sddm-kcm"
+  },
+  "selenium-webdriver-at-spi": {
+    "description": "Selenium/Appium WebDriver implementation based on AT-SPI Accessibility",
+    "name": "selenium-webdriver-at-spi",
+    "project_path": "playground/sdk/selenium-webdriver-at-spi",
+    "repo_path": "sdk/selenium-webdriver-at-spi"
+  },
+  "sflphone-kde": {
+    "description": "SFLPhone KDE is an enterprise class soft phone with integration with various KDE technologies such as Akonadi",
+    "name": "sflphone-kde",
+    "project_path": "unmaintained/sflphone-kde",
+    "repo_path": "unmaintained/sflphone-kde"
+  },
+  "share-like-connect": {
+    "description": "A simple ubiquitous user interface for interacting with your data.",
+    "name": "share-like-connect",
+    "project_path": "unmaintained/share-like-connect",
+    "repo_path": "unmaintained/share-like-connect"
+  },
+  "signon-kwallet-extension": {
+    "description": "KWallet integration for the SignOn framework (gitlab.com/accounts-sso)",
+    "name": "signon-kwallet-extension",
+    "project_path": "kde/kdenetwork/signon-kwallet-extension",
+    "repo_path": "network/signon-kwallet-extension"
+  },
+  "signond": {
+    "description": null,
+    "name": "signond",
+    "project_path": "third-party/signond",
+    "repo_path": null
+  },
+  "silk": {
+    "description": "Utilities and libraries for the integration of online content and communication into the user experience.",
+    "name": "silk",
+    "project_path": "unmaintained/silk",
+    "repo_path": "unmaintained/silk"
+  },
+  "simon": {
+    "description": "Highly configurable, targeted speech recognition software",
+    "name": "simon",
+    "project_path": "unmaintained/simon",
+    "repo_path": "unmaintained/simon"
+  },
+  "simon-tools": {
+    "description": "Additional tools and utilities for simon",
+    "name": "simon-tools",
+    "project_path": "unmaintained/simon-tools",
+    "repo_path": "unmaintained/simon-tools"
+  },
+  "sink": {
+    "description": "Offline caching, synchronization and indexing system for PIM data",
+    "name": "sink",
+    "project_path": "playground/pim/sink",
+    "repo_path": "pim/sink"
+  },
+  "skanlite": {
+    "description": "Lite image scanning application",
+    "name": "skanlite",
+    "project_path": "kde/kdegraphics/skanlite",
+    "repo_path": "graphics/skanlite"
+  },
+  "skanpage": {
+    "description": "Utility to scan images and multi-page documents",
+    "name": "skanpage",
+    "project_path": "kde/kdeutils/skanpage",
+    "repo_path": "utilities/skanpage"
+  },
+  "skladnik": {
+    "description": "Skladnik is the Japanese warehouse keeper sokoban game",
+    "name": "skladnik",
+    "project_path": "extragear/games/skladnik",
+    "repo_path": "games/skladnik"
+  },
+  "skrooge": {
+    "description": "Personal finance manager that aims at being powerful and intuitive",
+    "name": "skrooge",
+    "project_path": "extragear/office/skrooge",
+    "repo_path": "office/skrooge"
+  },
+  "smaragd": {
+    "description": "KWin plugin to support Emerald themes in KDE",
+    "name": "smaragd",
+    "project_path": "playground/artwork/smaragd",
+    "repo_path": "plasma/smaragd"
+  },
+  "smb4k": {
+    "description": "Advanced network neighborhood browser and Samba share mounting utility",
+    "name": "smb4k",
+    "project_path": "extragear/network/smb4k",
+    "repo_path": "network/smb4k"
+  },
+  "smokegen": {
+    "description": "A general purpose C++ parser with a plugin infrastructure enabling ''generators'' to be written, which can do various things with the C++ AST. It is currently used for generating the various SMOKE libraries.",
+    "name": "smokegen",
+    "project_path": "kde/kdebindings/smoke/smokegen",
+    "repo_path": "unmaintained/smokegen"
+  },
+  "smokekde": {
+    "description": "SMOKE bindings for libraries created by the KDE community. Used by language bindings.",
+    "name": "smokekde",
+    "project_path": "kde/kdebindings/smoke/smokekde",
+    "repo_path": "unmaintained/smokekde"
+  },
+  "smokeqt": {
+    "description": "SMOKE bindings for the Qt libraries. Used by language bindings.",
+    "name": "smokeqt",
+    "project_path": "kde/kdebindings/smoke/smokeqt",
+    "repo_path": "unmaintained/smokeqt"
+  },
+  "snap-kf5": {
+    "description": "Content Snap for Qt5 and KF5",
+    "name": "snap-kf5",
+    "project_path": "playground/packaging/snap-kf5",
+    "repo_path": "packaging/snap-kf5"
+  },
+  "snap-kf5-launcher": {
+    "description": "Launcher for Content Snap for Qt5 and KF5",
+    "name": "snap-kf5-launcher",
+    "project_path": "playground/packaging/snap-kf5-launcher",
+    "repo_path": "packaging/snap-kf5-launcher"
+  },
+  "snapcraft-kde-applications": {
+    "description": "Snapcraft packaging files for some KDE Applications",
+    "name": "snapcraft-kde-applications",
+    "project_path": "playground/packaging/snapcraft-kde-applications",
+    "repo_path": "packaging/snapcraft-kde-applications"
+  },
+  "snorenotify": {
+    "description": "Multi-platform Qt notification framework",
+    "name": "snorenotify",
+    "project_path": "playground/libs/snorenotify",
+    "repo_path": "libraries/snorenotify"
+  },
+  "snoretoast": {
+    "description": "Command-line application capable of creating Windows Toast notifications",
+    "name": "snoretoast",
+    "project_path": "playground/libs/snoretoast",
+    "repo_path": "libraries/snoretoast"
+  },
+  "solid": {
+    "description": "Solid",
+    "name": "solid",
+    "project_path": "frameworks/solid",
+    "repo_path": "frameworks/solid"
+  },
+  "solid-power": {
+    "description": "This framework is the single entry point for power management.",
+    "name": "solid-power",
+    "project_path": "unmaintained/solid-power",
+    "repo_path": "unmaintained/solid-power"
+  },
+  "sonnet": {
+    "description": "Spelling framework for Qt.",
+    "name": "sonnet",
+    "project_path": "frameworks/sonnet",
+    "repo_path": "frameworks/sonnet"
+  },
+  "soprano": {
+    "description": "Soprano is a library which provides a highly usable object-oriented C++/Qt4 framework for RDF data.",
+    "name": "soprano",
+    "project_path": "kdesupport/soprano",
+    "repo_path": "unmaintained/soprano"
+  },
+  "soundcloud-voice-application": {
+    "description": "Soundcloud music player voice application and mycroft skill for Plasma Bigscreen",
+    "name": "soundcloud-voice-application",
+    "project_path": "playground/utils/soundcloud-voice-application",
+    "repo_path": "plasma-bigscreen/soundcloud-voice-application"
+  },
+  "spacebar": {
+    "description": "SMS/MMS application for Plasma Mobile",
+    "name": "spacebar",
+    "project_path": "extragear/mobile/spacebar",
+    "repo_path": "plasma-mobile/spacebar"
+  },
+  "spectacle": {
+    "description": "Screenshot capture utility",
+    "name": "spectacle",
+    "project_path": "kde/kdegraphics/spectacle",
+    "repo_path": "graphics/spectacle"
+  },
+  "sprinter": {
+    "description": "Multi-agent query parser and result generator",
+    "name": "sprinter",
+    "project_path": "unmaintained/sprinter",
+    "repo_path": "unmaintained/sprinter"
+  },
+  "sprinter-plugins": {
+    "description": "Plugins for Sprinter",
+    "name": "sprinter-plugins",
+    "project_path": "playground/libs/sprinter-plugins",
+    "repo_path": "unmaintained/sprinter-plugins"
+  },
+  "stackfolder": {
+    "description": "Browse the stack of folders",
+    "name": "stackfolder",
+    "project_path": "unmaintained/stackfolder",
+    "repo_path": "unmaintained/stackfolder"
+  },
+  "startactive": {
+    "description": "A dependency-based init system for KDE workspace.",
+    "name": "startactive",
+    "project_path": "unmaintained/startactive",
+    "repo_path": "unmaintained/startactive"
+  },
+  "step": {
+    "description": "Interactive physics simulator",
+    "name": "step",
+    "project_path": "kde/kdeedu/step",
+    "repo_path": "education/step"
+  },
+  "stibium": {
+    "description": "Stibium is a version of KDE developed as a web application, using personal cloud services to store data.",
+    "name": "stibium",
+    "project_path": "playground/www/stibium",
+    "repo_path": "unmaintained/stibium"
+  },
+  "stopmotion": {
+    "description": "Grab the frames of your animation!",
+    "name": "stopmotion",
+    "project_path": "playground/multimedia/stopmotion",
+    "repo_path": "multimedia/stopmotion"
+  },
+  "strigi": {
+    "description": "Strigi",
+    "name": "strigi",
+    "project_path": "kdesupport/strigi/strigi",
+    "repo_path": "unmaintained/strigi"
+  },
+  "strigi-multimedia": {
+    "description": "Various analyzers to provide multimedia support to Strigi",
+    "name": "strigi-multimedia",
+    "project_path": "unmaintained/strigi-multimedia",
+    "repo_path": "unmaintained/strigi-multimedia"
+  },
+  "strigiclient": {
+    "description": "Strigi client",
+    "name": "strigiclient",
+    "project_path": "kdesupport/strigi/strigiclient",
+    "repo_path": "unmaintained/strigiclient"
+  },
+  "strigidaemon": {
+    "description": "Strigi daemon",
+    "name": "strigidaemon",
+    "project_path": "kdesupport/strigi/strigidaemon",
+    "repo_path": "unmaintained/strigidaemon"
+  },
+  "strigiutils": {
+    "description": "Strigi utilities",
+    "name": "strigiutils",
+    "project_path": "kdesupport/strigi/strigiutils",
+    "repo_path": "unmaintained/strigiutils"
+  },
+  "subtitlecomposer": {
+    "description": "Video subtitle editor",
+    "name": "subtitlecomposer",
+    "project_path": "kde/kdemultimedia/subtitlecomposer",
+    "repo_path": "multimedia/subtitlecomposer"
+  },
+  "superbuild": {
+    "description": "Automates building separate (KDE) repositories in one go using plain CMake, similar to kdesrc-build.",
+    "name": "superbuild",
+    "project_path": "unmaintained/superbuild",
+    "repo_path": "unmaintained/superbuild"
+  },
+  "superkaramba": {
+    "description": "SuperKaramba is a tool that allows you to easily create interactive widgets on your KDE desktop.",
+    "name": "superkaramba",
+    "project_path": "unmaintained/superkaramba",
+    "repo_path": "unmaintained/superkaramba"
+  },
+  "svgmod": {
+    "description": "Apply system colors to plasma rendered SVGs",
+    "name": "svgmod",
+    "project_path": "playground/devtools/svgmod",
+    "repo_path": "unmaintained/svgmod"
+  },
+  "svgpart": {
+    "description": "A KPart for SVG support",
+    "name": "svgpart",
+    "project_path": "kde/kdegraphics/svgpart",
+    "repo_path": "graphics/svgpart"
+  },
+  "sweeper": {
+    "description": "Application that helps to clean unwanted traces the user leaves on the system",
+    "name": "sweeper",
+    "project_path": "kde/kdeutils/sweeper",
+    "repo_path": "utilities/sweeper"
+  },
+  "symboleditor": {
+    "description": "Application to create libraries of QPainterPath objects with rendering hints",
+    "name": "symboleditor",
+    "project_path": "extragear/graphics/symboleditor",
+    "repo_path": "graphics/symboleditor"
+  },
+  "symmy": {
+    "description": "GPG symmetric encryption frontend",
+    "name": "symmy",
+    "project_path": "extragear/utils/symmy",
+    "repo_path": "utilities/symmy"
+  },
+  "synchrotron": {
+    "description": "An OCS compatible web service for publishing application add-ons from upstream projects directly to users via a git repository.",
+    "name": "synchrotron",
+    "project_path": "playground/www/synchrotron",
+    "repo_path": "unmaintained/synchrotron"
+  },
+  "synchrotron-sources": {
+    "description": "An OCS compatible web service for publishing application add-ons from upstream projects directly to users via a git repository.",
+    "name": "synchrotron-sources",
+    "project_path": "playground/www/synchrotron-sources",
+    "repo_path": "unmaintained/synchrotron-sources"
+  },
+  "syndication": {
+    "description": "Syndication Library",
+    "name": "syndication",
+    "project_path": "frameworks/syndication",
+    "repo_path": "frameworks/syndication"
+  },
+  "syntax-highlighting": {
+    "description": "Syntax highlighting Engine for Structured Text and Code.",
+    "name": "syntax-highlighting",
+    "project_path": "frameworks/syntax-highlighting",
+    "repo_path": "frameworks/syntax-highlighting"
+  },
+  "sysadmin-activityfilter": {
+    "description": "Configuration for the Activity Filter service",
+    "name": "sysadmin-activityfilter",
+    "project_path": "sysadmin/activityfilter",
+    "repo_path": "sysadmin/activityfilter"
+  },
+  "sysadmin-appimage-tooling": {
+    "description": "",
+    "name": "sysadmin-appimage-tooling",
+    "project_path": "sysadmin/appimage-tooling",
+    "repo_path": "sysadmin/appimage-tooling"
+  },
+  "sysadmin-appstream-metainfo-release-update": {
+    "description": "Updates AppStream Metainfo files for new releases of your software\r\n",
+    "name": "sysadmin-appstream-metainfo-release-update",
+    "project_path": "sysadmin/appstream-metainfo-release-update",
+    "repo_path": "sysadmin/appstream-metainfo-release-update"
+  },
+  "sysadmin-binary-factory-tooling": {
+    "description": "All tooling and other materials necessary for the operation of the KDE Binary Factory",
+    "name": "sysadmin-binary-factory-tooling",
+    "project_path": "sysadmin/binary-factory-tooling",
+    "repo_path": "sysadmin/binary-factory-tooling"
+  },
+  "sysadmin-bugzilla-bot": {
+    "description": "",
+    "name": "sysadmin-bugzilla-bot",
+    "project_path": "sysadmin/bugzilla-bot",
+    "repo_path": "sysadmin/bugzilla-bot"
+  },
+  "sysadmin-ci-management": {
+    "description": "Contains all management jobs and other data needed to run our Gitlab CI infrastructure.",
+    "name": "sysadmin-ci-management",
+    "project_path": "sysadmin/ci-management",
+    "repo_path": "sysadmin/ci-management"
+  },
+  "sysadmin-ci-notary-service": {
+    "description": "An SFTP-backed services provider",
+    "name": "sysadmin-ci-notary-service",
+    "project_path": "sysadmin/ci-notary-service",
+    "repo_path": "sysadmin/ci-notary-service"
+  },
+  "sysadmin-ci-service-templates": {
+    "description": "Gitlab CI templates for use with Micro Services",
+    "name": "sysadmin-ci-service-templates",
+    "project_path": "sysadmin/ci-service-templates",
+    "repo_path": "sysadmin/ci-service-templates"
+  },
+  "sysadmin-ci-tooling": {
+    "description": "Contains all tooling necessary to operate build.kde.org, including the Docker images for our Linux builds along with the documentation necessary to setup FreeBSD and Windows builds.",
+    "name": "sysadmin-ci-tooling",
+    "project_path": "sysadmin/ci-tooling",
+    "repo_path": "sysadmin/ci-tooling"
+  },
+  "sysadmin-ci-utilities": {
+    "description": "Contains all tooling necessary to run our Gitlab CI jobs for all platforms.",
+    "name": "sysadmin-ci-utilities",
+    "project_path": "sysadmin/ci-utilities",
+    "repo_path": "sysadmin/ci-utilities"
+  },
+  "sysadmin-dns": {
+    "description": "DNS Zone files for Sysadmin managed domains",
+    "name": "sysadmin-dns",
+    "project_path": "sysadmin/dns",
+    "repo_path": "sysadmin/dns"
+  },
+  "sysadmin-docs": {
+    "description": "Documentation for infrastructure and services managed by sysadmin team",
+    "name": "sysadmin-docs",
+    "project_path": "sysadmin/sysadmin-docs",
+    "repo_path": "sysadmin/sysadmin-docs"
+  },
+  "sysadmin-geoip-service-backend": {
+    "description": "",
+    "name": "sysadmin-geoip-service-backend",
+    "project_path": "sysadmin/geoip-service-backend",
+    "repo_path": "sysadmin/geoip-service-backend"
+  },
+  "sysadmin-gerrit-all-projects": {
+    "description": "",
+    "name": "sysadmin-gerrit-all-projects",
+    "project_path": "sysadmin/gerrit-all-projects",
+    "repo_path": "sysadmin/gerrit-all-projects"
+  },
+  "sysadmin-gerrit-ci-matrix": {
+    "description": "",
+    "name": "sysadmin-gerrit-ci-matrix",
+    "project_path": "sysadmin/gerrit-ci-matrix",
+    "repo_path": "sysadmin/gerrit-ci-matrix"
+  },
+  "sysadmin-gerrit-gear": {
+    "description": "",
+    "name": "sysadmin-gerrit-gear",
+    "project_path": "sysadmin/gerrit-gear",
+    "repo_path": "sysadmin/gerrit-gear"
+  },
+  "sysadmin-gerrit-imported-projects": {
+    "description": "Read-only imports from KDE git to Gerrit",
+    "name": "sysadmin-gerrit-imported-projects",
+    "project_path": "sysadmin/gerrit-imported-projects",
+    "repo_path": "sysadmin/gerrit-imported-projects"
+  },
+  "sysadmin-gerrit-infra-projects": {
+    "description": "",
+    "name": "sysadmin-gerrit-infra-projects",
+    "project_path": "sysadmin/gerrit-infra-projects",
+    "repo_path": "sysadmin/gerrit-infra-projects"
+  },
+  "sysadmin-gerrit-kde-ci-checked-projects": {
+    "description": "",
+    "name": "sysadmin-gerrit-kde-ci-checked-projects",
+    "project_path": "sysadmin/gerrit-kde-ci-checked-projects",
+    "repo_path": "sysadmin/gerrit-kde-ci-checked-projects"
+  },
+  "sysadmin-gerrit-kde-ci-enforced-projects": {
+    "description": "",
+    "name": "sysadmin-gerrit-kde-ci-enforced-projects",
+    "project_path": "sysadmin/gerrit-kde-ci-enforced-projects",
+    "repo_path": "sysadmin/gerrit-kde-ci-enforced-projects"
+  },
+  "sysadmin-gerrit-kde-traditional-projects": {
+    "description": "",
+    "name": "sysadmin-gerrit-kde-traditional-projects",
+    "project_path": "sysadmin/gerrit-kde-traditional-projects",
+    "repo_path": "sysadmin/gerrit-kde-traditional-projects"
+  },
+  "sysadmin-gerrit-project-config": {
+    "description": "",
+    "name": "sysadmin-gerrit-project-config",
+    "project_path": "sysadmin/gerrit-project-config",
+    "repo_path": "sysadmin/gerrit-project-config"
+  },
+  "sysadmin-gerrit-turbo-hipster": {
+    "description": "",
+    "name": "sysadmin-gerrit-turbo-hipster",
+    "project_path": "sysadmin/gerrit-turbo-hipster",
+    "repo_path": "sysadmin/gerrit-turbo-hipster"
+  },
+  "sysadmin-gerrit-zuul": {
+    "description": "",
+    "name": "sysadmin-gerrit-zuul",
+    "project_path": "sysadmin/gerrit-zuul",
+    "repo_path": "sysadmin/gerrit-zuul"
+  },
+  "sysadmin-gitlab-jobwatch": {
+    "description": "Agent to record the status of changes to Gitlab CI jobs in a separate database",
+    "name": "sysadmin-gitlab-jobwatch",
+    "project_path": "sysadmin/gitlab-jobwatch",
+    "repo_path": "sysadmin/gitlab-jobwatch"
+  },
+  "sysadmin-gitlab-ldapsync": {
+    "description": "Agent to monitor a given LDAP directory for changes and propagate them to Gitlab",
+    "name": "sysadmin-gitlab-ldapsync",
+    "project_path": "sysadmin/gitlab-ldapsync",
+    "repo_path": "sysadmin/gitlab-ldapsync"
+  },
+  "sysadmin-gitlab-react": {
+    "description": "Agent to monitor a given gitlab instance and perform pre-defined actions",
+    "name": "sysadmin-gitlab-react",
+    "project_path": "sysadmin/gitlab-react",
+    "repo_path": "sysadmin/gitlab-react"
+  },
+  "sysadmin-gitlab-triaging": {
+    "description": "Service to automatically triage Merge Requests, Tasks and other items on KDE Invent (Gitlab)",
+    "name": "sysadmin-gitlab-triaging",
+    "project_path": "sysadmin/gitlab-triaging",
+    "repo_path": "sysadmin/gitlab-triaging"
+  },
+  "sysadmin-gitlab-vulnerability-issues": {
+    "description": "Vulnerability Reports as GitLab Issues",
+    "name": "sysadmin-gitlab-vulnerability-issues",
+    "project_path": "sysadmin/gitlab-vulnerability-issues",
+    "repo_path": "sysadmin/gitlab-vulnerability-issues"
+  },
+  "sysadmin-irc-notifications": {
+    "description": "Essential materials for the KDE IRC commit notifications system, based on Irker and CIA style XML delivered via SMTP.",
+    "name": "sysadmin-irc-notifications",
+    "project_path": "sysadmin/irc-notifications",
+    "repo_path": "sysadmin/irc-notifications"
+  },
+  "sysadmin-kde-ansible": {
+    "description": "Ansible playbooks for KDE infrastructure",
+    "name": "sysadmin-kde-ansible",
+    "project_path": "sysadmin/kde-ansible",
+    "repo_path": "sysadmin/kde-ansible"
+  },
+  "sysadmin-kikibot": {
+    "description": "Custom IRC Response bot for Krita",
+    "name": "sysadmin-kikibot",
+    "project_path": "sysadmin/kikibot",
+    "repo_path": "sysadmin/kikibot"
+  },
+  "sysadmin-l10n-scripty": {
+    "description": "Localization and Internationalization Service Bot",
+    "name": "sysadmin-l10n-scripty",
+    "project_path": "sysadmin/l10n-scripty",
+    "repo_path": "sysadmin/l10n-scripty"
+  },
+  "sysadmin-neon-appstream-extra-metainfo": {
+    "description": "extra-metainfo information for appstream-generator",
+    "name": "sysadmin-neon-appstream-extra-metainfo",
+    "project_path": "sysadmin/neon-appstream-extra-metainfo",
+    "repo_path": "sysadmin/neon-appstream-extra-metainfo"
+  },
+  "sysadmin-neon-image-syncd": {
+    "description": "",
+    "name": "sysadmin-neon-image-syncd",
+    "project_path": "sysadmin/neon-image-syncd",
+    "repo_path": "sysadmin/neon-image-syncd"
+  },
+  "sysadmin-neon-logind-cleanup": {
+    "description": "",
+    "name": "sysadmin-neon-logind-cleanup",
+    "project_path": "sysadmin/neon-logind-cleanup",
+    "repo_path": "sysadmin/neon-logind-cleanup"
+  },
+  "sysadmin-neon-openqa": {
+    "description": "",
+    "name": "sysadmin-neon-openqa",
+    "project_path": "sysadmin/neon-openqa",
+    "repo_path": "sysadmin/neon-openqa"
+  },
+  "sysadmin-neon-server-deploy": {
+    "description": "",
+    "name": "sysadmin-neon-server-deploy",
+    "project_path": "sysadmin/neon-server-deploy",
+    "repo_path": "sysadmin/neon-server-deploy"
+  },
+  "sysadmin-neon-sftp-bridge": {
+    "description": "",
+    "name": "sysadmin-neon-sftp-bridge",
+    "project_path": "sysadmin/neon-sftp-bridge",
+    "repo_path": "sysadmin/neon-sftp-bridge"
+  },
+  "sysadmin-projects-api": {
+    "description": "",
+    "name": "sysadmin-projects-api",
+    "project_path": "sysadmin/projects-api",
+    "repo_path": "sysadmin/projects-api"
+  },
+  "sysadmin-rbot-plugin-kde-bugzilla": {
+    "description": "",
+    "name": "sysadmin-rbot-plugin-kde-bugzilla",
+    "project_path": "sysadmin/rbot-plugin-kde-bugzilla",
+    "repo_path": "sysadmin/rbot-plugin-kde-bugzilla"
+  },
+  "sysadmin-rbot-plugin-kde-phabricator": {
+    "description": "",
+    "name": "sysadmin-rbot-plugin-kde-phabricator",
+    "project_path": "sysadmin/rbot-plugin-kde-phabricator",
+    "repo_path": "sysadmin/rbot-plugin-kde-phabricator"
+  },
+  "sysadmin-release-tools": {
+    "description": "Scripts and tools used when releasing KDE SC",
+    "name": "sysadmin-release-tools",
+    "project_path": "sysadmin/release-tools",
+    "repo_path": "sysadmin/release-tools"
+  },
+  "sysadmin-replicant": {
+    "description": "Agent to mirror all repositories, and changes in them, from a Gitlab instance",
+    "name": "sysadmin-replicant",
+    "project_path": "sysadmin/replicant",
+    "repo_path": "sysadmin/replicant"
+  },
+  "sysadmin-repo-metadata": {
+    "description": "Metadata concerning repositories on Gitlab (invent.kde.org)",
+    "name": "sysadmin-repo-metadata",
+    "project_path": "sysadmin/repo-metadata",
+    "repo_path": "sysadmin/repo-metadata"
+  },
+  "sysadmin-sentry-bugzilla-bridge": {
+    "description": "Service to bridge Sentry and Bugzilla",
+    "name": "sysadmin-sentry-bugzilla-bridge",
+    "project_path": "sysadmin/sentry-bugzilla-bridge",
+    "repo_path": "sysadmin/sentry-bugzilla-bridge"
+  },
+  "sysadmin-webstats": {
+    "description": "Scripts and templates used to manage web statistics on KDE servers",
+    "name": "sysadmin-webstats",
+    "project_path": "sysadmin/webstats",
+    "repo_path": "sysadmin/webstats"
+  },
+  "systemd-kcm": {
+    "description": "Kcm module for managing systemd",
+    "name": "systemd-kcm",
+    "project_path": "unmaintained/systemd-kcm",
+    "repo_path": "unmaintained/systemd-kcm"
+  },
+  "systemdgenie": {
+    "description": "Systemd managment utility",
+    "name": "systemdgenie",
+    "project_path": "playground/sysadmin/systemdgenie",
+    "repo_path": "system/systemdgenie"
+  },
+  "systemsettings": {
+    "description": "Control center to configure your Plasma Desktop",
+    "name": "systemsettings",
+    "project_path": "kde/workspace/systemsettings",
+    "repo_path": "plasma/systemsettings"
+  },
+  "taglib": {
+    "description": null,
+    "name": "taglib",
+    "project_path": "third-party/taglib",
+    "repo_path": null
+  },
+  "telepathy-kdeconnect": {
+    "description": "KDE Connect connection manager for Telepathy.",
+    "name": "telepathy-kdeconnect",
+    "project_path": "unmaintained/telepathy-kdeconnect",
+    "repo_path": "unmaintained/telepathy-kdeconnect"
+  },
+  "telepathy-logger-qt": {
+    "description": "Qt wrapper around TpLogger client library",
+    "name": "telepathy-logger-qt",
+    "project_path": "extragear/network/telepathy/telepathy-logger-qt",
+    "repo_path": "network/telepathy-logger-qt"
+  },
+  "tellico": {
+    "description": "Collection management software, free and simple",
+    "name": "tellico",
+    "project_path": "extragear/office/tellico",
+    "repo_path": "office/tellico"
+  },
+  "telly-skout": {
+    "description": "Convergent TV guide based on Kirigami.",
+    "name": "telly-skout",
+    "project_path": "extragear/utilities/telly-skout",
+    "repo_path": "utilities/telly-skout"
+  },
+  "threadweaver": {
+    "description": "ThreadWeaver",
+    "name": "threadweaver",
+    "project_path": "frameworks/threadweaver",
+    "repo_path": "frameworks/threadweaver"
+  },
+  "tikzkit": {
+    "description": "WYSIWYG editor to create PGF/TikZ pictures",
+    "name": "tikzkit",
+    "project_path": "playground/graphics/tikzkit",
+    "repo_path": "graphics/tikzkit"
+  },
+  "toad": {
+    "description": "Organize your tasks",
+    "name": "toad",
+    "project_path": "playground/utilities/toad",
+    "repo_path": "utilities/toad"
+  },
+  "tok": {
+    "description": "Telegram client built using Kirigami",
+    "name": "tok",
+    "project_path": "playground/network/tok",
+    "repo_path": "network/tok"
+  },
+  "tokodon": {
+    "description": "Tokodon is a Mastodon client for Plasma and Plasma Mobile",
+    "name": "tokodon",
+    "project_path": "extragear/network/tokodon",
+    "repo_path": "network/tokodon"
+  },
+  "totalreqall": {
+    "description": "A program for memorizing the Bible and other works. Uses the Sword library.",
+    "name": "totalreqall",
+    "project_path": "playground/utilities/totalreqall",
+    "repo_path": "utilities/totalreqall"
+  },
+  "trainer": {
+    "description": "Application to help you practice sport exercises with a description and duration",
+    "name": "trainer",
+    "project_path": "playground/mobile/trainer",
+    "repo_path": "plasma-mobile/trainer"
+  },
+  "trojita": {
+    "description": "Fast, lightweight and standard-compliant IMAP e-mail client",
+    "name": "trojita",
+    "project_path": "extragear/pim/trojita",
+    "repo_path": "pim/trojita"
+  },
+  "tupi": {
+    "description": "Tupi is an open/free 2D animation software based on usability, a friendly user experience and community values.",
+    "name": "tupi",
+    "project_path": "unmaintained/tupi",
+    "repo_path": "unmaintained/tupi"
+  },
+  "twine2": {
+    "description": "Python bindings SIP updater that processes C++ header files into Riverbank SIP",
+    "name": "twine2",
+    "project_path": "playground/bindings/twine2",
+    "repo_path": "libraries/twine2"
+  },
+  "ubiquity-slideshow-neon": {
+    "description": "Neon slideshow for Ubiquity",
+    "name": "ubiquity-slideshow-neon",
+    "project_path": "playground/base/ubiquity-slideshow-neon",
+    "repo_path": "system/ubiquity-slideshow-neon"
+  },
+  "ufw-kde": {
+    "description": "GUI Interface for Uncomplicated Firewall (UFW).",
+    "name": "ufw-kde",
+    "project_path": "playground/sysadmin/ufw-kde",
+    "repo_path": "unmaintained/ufw-kde"
+  },
+  "umbrello": {
+    "description": "GUI for diagramming Unified Modelling Language (UML)",
+    "name": "umbrello",
+    "project_path": "kde/kdesdk/umbrello",
+    "repo_path": "sdk/umbrello"
+  },
+  "upnp-lib-qt": {
+    "description": "UPnP wrapper for Qt",
+    "name": "upnp-lib-qt",
+    "project_path": "playground/base/upnp-lib-qt",
+    "repo_path": "libraries/upnp-lib-qt"
+  },
+  "user-manager": {
+    "description": "A simple system settings module to manage the users of your system",
+    "name": "user-manager",
+    "project_path": "unmaintained/user-manager",
+    "repo_path": "plasma/user-manager"
+  },
+  "vail": {
+    "description": "Communicate using Morse",
+    "name": "vail",
+    "project_path": "playground/utils/vail",
+    "repo_path": "utilities/vail"
+  },
+  "vakzination": {
+    "description": "Vakzination manages your health certificates like vaccination, test, and recovery certificates.",
+    "name": "vakzination",
+    "project_path": "playground/pim/vakzination",
+    "repo_path": "pim/vakzination"
+  },
+  "veritas": {
+    "description": "Veritas provides a common interface for running unit tests in KDevPlatform.",
+    "name": "veritas",
+    "project_path": "unmaintained/veritas",
+    "repo_path": "unmaintained/veritas"
+  },
+  "vvave": {
+    "description": "Multi-platform media player",
+    "name": "vvave",
+    "project_path": "playground/multimedia/vvave",
+    "repo_path": "maui/vvave"
+  },
+  "wacomtablet": {
+    "description": "GUI for Wacom Linux drivers that supports different button/pen layout profiles",
+    "name": "wacomtablet",
+    "project_path": "kde/workspace/wacomtablet",
+    "repo_path": "plasma/wacomtablet"
+  },
+  "washipad": {
+    "description": "A minimalist application for sketchnoting",
+    "name": "washipad",
+    "project_path": "playground/utils/washipad",
+    "repo_path": "graphics/washipad"
+  },
+  "wayland": {
+    "description": null,
+    "name": "wayland",
+    "project_path": "third-party/wayland",
+    "repo_path": null
+  },
+  "wayland-protocols": {
+    "description": null,
+    "name": "wayland-protocols",
+    "project_path": "third-party/wayland-protocols",
+    "repo_path": null
+  },
+  "websites-20years-kde-org": {
+    "description": "Website for the \"20 years of KDE\" book \u2014 20years.kde.org",
+    "name": "websites-20years-kde-org",
+    "project_path": "websites/20years-kde-org",
+    "repo_path": "websites/20years-kde-org"
+  },
+  "websites-25for25-kde-org": {
+    "description": "Website for the KDE 25th Anniversary Fundraising",
+    "name": "websites-25for25-kde-org",
+    "project_path": "websites/25for25-kde-org",
+    "repo_path": "websites/25for25-kde-org"
+  },
+  "websites-25years-kde-org": {
+    "description": "Website to celebrate the 25th anniversary of the KDE project",
+    "name": "websites-25years-kde-org",
+    "project_path": "websites/25years-kde-org",
+    "repo_path": "websites/25years-kde-org"
+  },
+  "websites-accessibility-kde-org": {
+    "description": "Website for KDE's accessibility technologies",
+    "name": "websites-accessibility-kde-org",
+    "project_path": "websites/accessibility-kde-org",
+    "repo_path": "websites/accessibility-kde-org"
+  },
+  "websites-aether-drupal7": {
+    "description": "Aether theme for Drupal 7",
+    "name": "websites-aether-drupal7",
+    "project_path": "websites/aether-drupal7",
+    "repo_path": "websites/aether-drupal7"
+  },
+  "websites-aether-mediawiki": {
+    "description": "Aether theme for KDE's wikis",
+    "name": "websites-aether-mediawiki",
+    "project_path": "websites/aether-mediawiki",
+    "repo_path": "websites/aether-mediawiki"
+  },
+  "websites-aether-sass": {
+    "description": "Aether-flavoured SASS for various websites",
+    "name": "websites-aether-sass",
+    "project_path": "websites/aether-sass",
+    "repo_path": "websites/aether-sass"
+  },
+  "websites-aether-sphinx": {
+    "description": "Aether theme for Sphinx documentation",
+    "name": "websites-aether-sphinx",
+    "project_path": "websites/aether-sphinx",
+    "repo_path": "websites/aether-sphinx"
+  },
+  "websites-aether-wordpress": {
+    "description": "Aether theme for Wordpress",
+    "name": "websites-aether-wordpress",
+    "project_path": "websites/aether-wordpress",
+    "repo_path": "websites/aether-wordpress"
+  },
+  "websites-akademy-kde-org": {
+    "description": "Website for Akademy - akademy.kde.org",
+    "name": "websites-akademy-kde-org",
+    "project_path": "websites/akademy-kde-org",
+    "repo_path": "websites/akademy-kde-org"
+  },
+  "websites-akademy-registration": {
+    "description": "Drupal 6 module for the Akademy registration system",
+    "name": "websites-akademy-registration",
+    "project_path": "websites/akademy-registration",
+    "repo_path": "websites/akademy-registration"
+  },
+  "websites-akademy-schedule-kde-org": {
+    "description": "Website for the Akademy schedule \u2014 akademy-schedule.kde.org",
+    "name": "websites-akademy-schedule-kde-org",
+    "project_path": "websites/akademy-schedule-kde-org",
+    "repo_path": "websites/akademy-schedule-kde-org"
+  },
+  "websites-akademy2004-kde-org": {
+    "description": "Static copy of the 2004 Conference (Akademy) website \u2014 conference2004.kde.org",
+    "name": "websites-akademy2004-kde-org",
+    "project_path": "websites/akademy2004-kde-org",
+    "repo_path": "websites/akademy2004-kde-org"
+  },
+  "websites-akademy2005-kde-org": {
+    "description": "Static copy of the 2005 Conference (Akademy) website \u2014 conference2005.kde.org",
+    "name": "websites-akademy2005-kde-org",
+    "project_path": "websites/akademy2005-kde-org",
+    "repo_path": "websites/akademy2005-kde-org"
+  },
+  "websites-akademy2006-kde-org": {
+    "description": "Static copy of the Akademy 2006 website \u2014 akademy2006.kde.org",
+    "name": "websites-akademy2006-kde-org",
+    "project_path": "websites/akademy2006-kde-org",
+    "repo_path": "websites/akademy2006-kde-org"
+  },
+  "websites-akademy2007-kde-org": {
+    "description": "Static copy of the Akademy 2007 website \u2014 akademy2007.kde.org",
+    "name": "websites-akademy2007-kde-org",
+    "project_path": "websites/akademy2007-kde-org",
+    "repo_path": "websites/akademy2007-kde-org"
+  },
+  "websites-akademy2008-kde-org": {
+    "description": "Static copy of the Akademy 2008 website \u2014 akademy2008.kde.org",
+    "name": "websites-akademy2008-kde-org",
+    "project_path": "websites/akademy2008-kde-org",
+    "repo_path": "websites/akademy2008-kde-org"
+  },
+  "websites-akademy2009-kde-org": {
+    "description": "Static copy of the Akademy 2009 website \u2014 akademy2009.kde.org",
+    "name": "websites-akademy2009-kde-org",
+    "project_path": "websites/akademy2009-kde-org",
+    "repo_path": "websites/akademy2009-kde-org"
+  },
+  "websites-akademy2010-kde-org": {
+    "description": "Static copy of the Akademy 2010 website \u2014 akademy2010.kde.org",
+    "name": "websites-akademy2010-kde-org",
+    "project_path": "websites/akademy2010-kde-org",
+    "repo_path": "websites/akademy2010-kde-org"
+  },
+  "websites-akademy2012-kde-org": {
+    "description": "Static copy of the Akademy 2012 website \u2014 akademy2012.kde.org",
+    "name": "websites-akademy2012-kde-org",
+    "project_path": "websites/akademy2012-kde-org",
+    "repo_path": "websites/akademy2012-kde-org"
+  },
+  "websites-amarok-kde-org": {
+    "description": "Static copy of the Amarok website \u2014 amarok.kde.org",
+    "name": "websites-amarok-kde-org",
+    "project_path": "websites/amarok-kde-org",
+    "repo_path": "websites/amarok-kde-org"
+  },
+  "websites-apps-kde-org": {
+    "description": "KDE application catalog \u2014 apps.kde.org",
+    "name": "websites-apps-kde-org",
+    "project_path": "websites/apps-kde-org",
+    "repo_path": "websites/apps-kde-org"
+  },
+  "websites-apps-kde-org-archived": {
+    "description": "Application which used to run apps.kde.org",
+    "name": "websites-apps-kde-org-archived",
+    "project_path": "websites/apps-kde-org-archived",
+    "repo_path": "websites/apps-kde-org-archived"
+  },
+  "websites-atelier-kde-org": {
+    "description": "Application that serves atelier.kde.org",
+    "name": "websites-atelier-kde-org",
+    "project_path": "websites/atelier-kde-org",
+    "repo_path": "websites/atelier-kde-org"
+  },
+  "websites-autoconfig-kde-org": {
+    "description": "Automatic configuration metadata for KDE.org services for external applications",
+    "name": "websites-autoconfig-kde-org",
+    "project_path": "websites/autoconfig-kde-org",
+    "repo_path": "websites/autoconfig-kde-org"
+  },
+  "websites-ballot-kde-org": {
+    "description": "Ugly, simple, and very secure voting system \u2014 ballot.kde.org",
+    "name": "websites-ballot-kde-org",
+    "project_path": "websites/ballot-kde-org",
+    "repo_path": "websites/ballot-kde-org"
+  },
+  "websites-blogs-kde-org": {
+    "description": "Contributor blogs site (based on Hugo)",
+    "name": "websites-blogs-kde-org",
+    "project_path": "websites/blogs-kde-org",
+    "repo_path": "websites/blogs-kde-org"
+  },
+  "websites-br-qtcon-org": {
+    "description": "Website for QtCon Brazil \u2014 br.qtcon.org",
+    "name": "websites-br-qtcon-org",
+    "project_path": "websites/br-qtcon-org",
+    "repo_path": "websites/br-qtcon-org"
+  },
+  "websites-bugs-kde-org": {
+    "description": "Modified sources for the KDE Bugtracking System \u2014 bugs.kde.org",
+    "name": "websites-bugs-kde-org",
+    "project_path": "websites/bugs-kde-org",
+    "repo_path": "websites/bugs-kde-org"
+  },
+  "websites-buzz-kde-org": {
+    "description": "Website of the Buzz aggregator",
+    "name": "websites-buzz-kde-org",
+    "project_path": "websites/buzz-kde-org",
+    "repo_path": "websites/buzz-kde-org"
+  },
+  "websites-calligra-org": {
+    "description": "Website for Calligra \u2014 calligra.org",
+    "name": "websites-calligra-org",
+    "project_path": "websites/calligra-org",
+    "repo_path": "websites/calligra-org"
+  },
+  "websites-camp-kde-org": {
+    "description": "Website for Camp KDE",
+    "name": "websites-camp-kde-org",
+    "project_path": "websites/camp-kde-org",
+    "repo_path": "websites/camp-kde-org"
+  },
+  "websites-cantor-kde-org": {
+    "description": "Website for Cantor \u2014 cantor.kde.org",
+    "name": "websites-cantor-kde-org",
+    "project_path": "websites/cantor-kde-org",
+    "repo_path": "websites/cantor-kde-org"
+  },
+  "websites-capacity": {
+    "description": "PHP application used as back end to display some of KDE's websites",
+    "name": "websites-capacity",
+    "project_path": "websites/capacity",
+    "repo_path": "websites/capacity"
+  },
+  "websites-choqok-kde-org": {
+    "description": "Website for Choqok \u2014 choqok.kde.org",
+    "name": "websites-choqok-kde-org",
+    "project_path": "websites/choqok-kde-org",
+    "repo_path": "websites/choqok-kde-org"
+  },
+  "websites-commit-digest-kde-org": {
+    "description": "Static copy of the KDE Commit Digest \u2014 commit-digest.kde.org",
+    "name": "websites-commit-digest-kde-org",
+    "project_path": "websites/commit-digest-kde-org",
+    "repo_path": "websites/commit-digest-kde-org"
+  },
+  "websites-conf-kde-in": {
+    "description": "Website for the KDE India Conference \u2014 conf.kde.in",
+    "name": "websites-conf-kde-in",
+    "project_path": "websites/conf-kde-in",
+    "repo_path": "websites/conf-kde-in"
+  },
+  "websites-conf-kde-org": {
+    "description": "Conference planning and management system \u2014 conf.kde.org",
+    "name": "websites-conf-kde-org",
+    "project_path": "websites/conf-kde-org",
+    "repo_path": "websites/conf-kde-org"
+  },
+  "websites-conf-qtcon-org": {
+    "description": "Static archive of the QtCon Conference Organization system \u2014 conf.qtcon.org",
+    "name": "websites-conf-qtcon-org",
+    "project_path": "websites/conf-qtcon-org",
+    "repo_path": "websites/conf-qtcon-org"
+  },
+  "websites-contents-neon-kde-org": {
+    "description": "REST API for Neon package contents queries \u2014 contents.neon.kde.org",
+    "name": "websites-contents-neon-kde-org",
+    "project_path": "websites/contents-neon-kde-org",
+    "repo_path": "websites/contents-neon-kde-org"
+  },
+  "websites-cutehmi-kde-org": {
+    "description": "Website for CuteHMI \u2014 cutehmi.kde.org",
+    "name": "websites-cutehmi-kde-org",
+    "project_path": "websites/cutehmi-kde-org",
+    "repo_path": "websites/cutehmi-kde-org"
+  },
+  "websites-desktopsummit-org": {
+    "description": "Static copy of the DesktopSummit website \u2014 desktopsummit.org",
+    "name": "websites-desktopsummit-org",
+    "project_path": "websites/desktopsummit-org",
+    "repo_path": "websites/desktopsummit-org"
+  },
+  "websites-digikam-org": {
+    "description": "Website for digiKam \u2014 digikam.org",
+    "name": "websites-digikam-org",
+    "project_path": "websites/digikam-org",
+    "repo_path": "websites/digikam-org"
+  },
+  "websites-discover-kde-org": {
+    "description": "Drupal theme for the Discover website",
+    "name": "websites-discover-kde-org",
+    "project_path": "websites/discover-kde-org",
+    "repo_path": "websites/discover-kde-org"
+  },
+  "websites-docs-kde-org": {
+    "description": "Scripts and other materials needed to support and operate docs.kde.org",
+    "name": "websites-docs-kde-org",
+    "project_path": "websites/docs-kde-org",
+    "repo_path": "websites/docs-kde-org"
+  },
+  "websites-docs-krita-org": {
+    "description": "The Krita Manual. Built with Sphinx by Jenkins, available online at https://docs.krita.org\r\n\r\nCheck the krita_manual_readme.rst on how to help us!",
+    "name": "websites-docs-krita-org",
+    "project_path": "websites/docs-krita-org",
+    "repo_path": "documentation/docs-krita-org"
+  },
+  "websites-docs-plasma-mobile-org": {
+    "description": "Plasma Mobile documentation based on Sphinx",
+    "name": "websites-docs-plasma-mobile-org",
+    "project_path": "websites/docs-plasma-mobile-org",
+    "repo_path": "documentation/docs-plasma-mobile-org"
+  },
+  "websites-download-kde-org": {
+    "description": "MirrorBrain configuration, templates, etc. \u2014 download.kde.org",
+    "name": "websites-download-kde-org",
+    "project_path": "websites/download-kde-org",
+    "repo_path": "websites/download-kde-org"
+  },
+  "websites-eco-kde-org": {
+    "description": "Website to promote KDE's environmental projects",
+    "name": "websites-eco-kde-org",
+    "project_path": "websites/eco-kde-org",
+    "repo_path": "websites/eco-kde-org"
+  },
+  "websites-edu-kde-org": {
+    "description": "Website for KDE's educational software \u2014 edu.kde.org",
+    "name": "websites-edu-kde-org",
+    "project_path": "websites/edu-kde-org",
+    "repo_path": "websites/edu-kde-org"
+  },
+  "websites-elisa-kde-org": {
+    "description": "Website for Elisa \u2014 elisa.kde.org",
+    "name": "websites-elisa-kde-org",
+    "project_path": "websites/elisa-kde-org",
+    "repo_path": "websites/elisa-kde-org"
+  },
+  "websites-ev-kde-org": {
+    "description": "Website for KDE e.V. \u2014 ev.kde.org",
+    "name": "websites-ev-kde-org",
+    "project_path": "websites/ev-kde-org",
+    "repo_path": "websites/ev-kde-org"
+  },
+  "websites-events-kde-org": {
+    "description": "Conference and sprint attendance management system \u2014 events.kde.org",
+    "name": "websites-events-kde-org",
+    "project_path": "websites/events-kde-org",
+    "repo_path": "websites/events-kde-org"
+  },
+  "websites-evolve-kde-org": {
+    "description": "Website for the \"Evolving KDE\" survey",
+    "name": "websites-evolve-kde-org",
+    "project_path": "websites/evolve-kde-org",
+    "repo_path": "websites/evolve-kde-org"
+  },
+  "websites-extensions-krita-org": {
+    "description": "Scripts that were used to power extensions.krita.org",
+    "name": "websites-extensions-krita-org",
+    "project_path": "websites/extensions-krita-org",
+    "repo_path": "websites/extensions-krita-org"
+  },
+  "websites-falkon-org": {
+    "description": "Website for Falkon \u2014 falkon.org",
+    "name": "websites-falkon-org",
+    "project_path": "websites/falkon-org",
+    "repo_path": "websites/falkon-org"
+  },
+  "websites-forum-kde-org": {
+    "description": "KDE Community Forum version of phpBB \u2014 forum.kde.org",
+    "name": "websites-forum-kde-org",
+    "project_path": "websites/forum-kde-org",
+    "repo_path": "websites/forum-kde-org"
+  },
+  "websites-fosdem-2021-website-content": {
+    "description": "Website content for the KDE booth at FOSDEM 2021 (Online Conference)",
+    "name": "websites-fosdem-2021-website-content",
+    "project_path": "websites/fosdem-2021-website-content",
+    "repo_path": "websites/fosdem-2021-website-content"
+  },
+  "websites-fosdem-2021-website-static": {
+    "description": "Static content for the KDE booth at FOSDEM 2021 (Online Conference)",
+    "name": "websites-fosdem-2021-website-static",
+    "project_path": "websites/fosdem-2021-website-static",
+    "repo_path": "websites/fosdem-2021-website-static"
+  },
+  "websites-fr-kde-org": {
+    "description": "Website for the French KDE community \u2014 fr.kde.org",
+    "name": "websites-fr-kde-org",
+    "project_path": "websites/fr-kde-org",
+    "repo_path": "websites/fr-kde-org"
+  },
+  "websites-freebsd-kde-org": {
+    "description": "Website of the KDE/FreeBSD initiative \u2014 freebsd.kde.org",
+    "name": "websites-freebsd-kde-org",
+    "project_path": "websites/freebsd-kde-org",
+    "repo_path": "websites/freebsd-kde-org"
+  },
+  "websites-fund-krita-org": {
+    "description": "Infrastructure for the Krita Fund website",
+    "name": "websites-fund-krita-org",
+    "project_path": "websites/fund-krita-org",
+    "repo_path": "websites/fund-krita-org"
+  },
+  "websites-games-kde-org": {
+    "description": "Website for KDE's games \u2014 games.kde.org",
+    "name": "websites-games-kde-org",
+    "project_path": "websites/games-kde-org",
+    "repo_path": "websites/games-kde-org"
+  },
+  "websites-gcompris-net": {
+    "description": "Website for GCompris \u2014 gcompris.net",
+    "name": "websites-gcompris-net",
+    "project_path": "websites/gcompris-net",
+    "repo_path": "websites/gcompris-net"
+  },
+  "websites-ghostwriter-kde-org": {
+    "description": "Website for Ghostwriter",
+    "name": "websites-ghostwriter-kde-org",
+    "project_path": "websites/ghostwriter-kde-org",
+    "repo_path": "websites/ghostwriter-kde-org"
+  },
+  "websites-go-kde-org": {
+    "description": "Data for the KDE Short URL Redirector Service - go.kde.org",
+    "name": "websites-go-kde-org",
+    "project_path": "websites/go-kde-org",
+    "repo_path": "websites/go-kde-org"
+  },
+  "websites-haruna-kde-org": {
+    "description": "Website for Haruna - haruna.kde.org",
+    "name": "websites-haruna-kde-org",
+    "project_path": "websites/haruna-kde-org",
+    "repo_path": "websites/haruna-kde-org"
+  },
+  "websites-hig-kde-org": {
+    "description": "KDE Human Interface Guidelines website",
+    "name": "websites-hig-kde-org",
+    "project_path": "websites/hig-kde-org",
+    "repo_path": "documentation/hig-kde-org"
+  },
+  "websites-hugo-bootstrap": {
+    "description": "Tooling to provide the Bootstrap CSS/JS framework for Hugo",
+    "name": "websites-hugo-bootstrap",
+    "project_path": "websites/hugo-bootstrap",
+    "repo_path": "websites/hugo-bootstrap"
+  },
+  "websites-hugo-i18n": {
+    "description": "Tooling to help translate Hugo generated websites with gettext",
+    "name": "websites-hugo-i18n",
+    "project_path": "websites/hugo-i18n",
+    "repo_path": "websites/hugo-i18n"
+  },
+  "websites-hugo-kde": {
+    "description": "KDE extensions and theming for the Hugo static website generator framework.",
+    "name": "websites-hugo-kde",
+    "project_path": "websites/hugo-kde",
+    "repo_path": "websites/hugo-kde"
+  },
+  "websites-hugo-kde-template": {
+    "description": "Template for KDE websites based on the Hugo framework.",
+    "name": "websites-hugo-kde-template",
+    "project_path": "websites/hugo-kde-template",
+    "repo_path": "websites/hugo-kde-template"
+  },
+  "websites-i-kaidan-im": {
+    "description": "Easy XMPP invitation landing page for Kaidan \u2014 i.kaidan.im",
+    "name": "websites-i-kaidan-im",
+    "project_path": "websites/i-kaidan-im",
+    "repo_path": "websites/i-kaidan-im"
+  },
+  "websites-identity-kde-org": {
+    "description": "Custom KDE application, code-named Solena, which runs identity.kde.org",
+    "name": "websites-identity-kde-org",
+    "project_path": "websites/identity-kde-org",
+    "repo_path": "websites/identity-kde-org"
+  },
+  "websites-inqlude": {
+    "description": "Tools for Inqlude, the Qt library archive \u2014 inqlude.org",
+    "name": "websites-inqlude",
+    "project_path": "websites/inqlude",
+    "repo_path": "websites/inqlude"
+  },
+  "websites-inqlude-data": {
+    "description": "Metadata for Inqlude, the Qt library archive \u2014 inqlude.org",
+    "name": "websites-inqlude-data",
+    "project_path": "websites/inqlude-data",
+    "repo_path": "websites/inqlude-data"
+  },
+  "websites-jekyll-kde-theme": {
+    "description": "Aether theme for Jekyll-based websites",
+    "name": "websites-jekyll-kde-theme",
+    "project_path": "websites/jekyll-kde-theme",
+    "repo_path": "websites/jekyll-kde-theme"
+  },
+  "websites-jointhegame-kde-org": {
+    "description": "KDE e.V.'s website for the individual membership program",
+    "name": "websites-jointhegame-kde-org",
+    "project_path": "websites/jointhegame-kde-org",
+    "repo_path": "websites/jointhegame-kde-org"
+  },
+  "websites-jp-kde-org": {
+    "description": "Website for the Japanese KDE community / \u65e5\u672c KDE \u30e6\u30fc\u30b6\u4f1a\u306e\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8 \u2014 jp.kde.org",
+    "name": "websites-jp-kde-org",
+    "project_path": "websites/jp-kde-org",
+    "repo_path": "websites/jp-kde-org"
+  },
+  "websites-juk-kde-org": {
+    "description": "Website for JuK \u2014 juk.kde.org",
+    "name": "websites-juk-kde-org",
+    "project_path": "websites/juk-kde-org",
+    "repo_path": "websites/juk-kde-org"
+  },
+  "websites-kaidan-im": {
+    "description": "Website for Kaidan \u2014 kaidan.im",
+    "name": "websites-kaidan-im",
+    "project_path": "websites/kaidan-im",
+    "repo_path": "websites/kaidan-im"
+  },
+  "websites-kate-editor-org": {
+    "description": "Website for Kate \u2014 kate-editor.org",
+    "name": "websites-kate-editor-org",
+    "project_path": "websites/kate-editor-org",
+    "repo_path": "websites/kate-editor-org"
+  },
+  "websites-kde-china-org": {
+    "description": "Website for the Chinese KDE community \u2014 kde-china.org",
+    "name": "websites-kde-china-org",
+    "project_path": "websites/kde-china-org",
+    "repo_path": "websites/kde-china-org"
+  },
+  "websites-kde-in": {
+    "description": "Website for the Indian KDE community \u2014 kde.in",
+    "name": "websites-kde-in",
+    "project_path": "websites/kde-in",
+    "repo_path": "websites/kde-in"
+  },
+  "websites-kde-org": {
+    "description": "Main KDE Community website \u2014 kde.org",
+    "name": "websites-kde-org",
+    "project_path": "websites/kde-org",
+    "repo_path": "websites/kde-org"
+  },
+  "websites-kde-org-announcements-releases": {
+    "description": "Website for KDE.org release announcements \u2014 kde.org/announcements/releases",
+    "name": "websites-kde-org-announcements-releases",
+    "project_path": "websites/kde-org-announcements-releases",
+    "repo_path": "websites/kde-org-announcements-releases"
+  },
+  "websites-kde-org-applications-extractor": {
+    "description": "Code to generate the kde.org/applications metadata",
+    "name": "websites-kde-org-applications-extractor",
+    "project_path": "websites/kde-org-applications-extractor",
+    "repo_path": "websites/kde-org-applications-extractor"
+  },
+  "websites-kde-ru": {
+    "description": "Website for the Russian KDE community \u2014 kde.ru",
+    "name": "websites-kde-ru",
+    "project_path": "websites/kde-ru",
+    "repo_path": "websites/kde-ru"
+  },
+  "websites-kdeconnect-kde-org": {
+    "description": "Website for KDE Connect \u2014 kdeconnect.kde.org",
+    "name": "websites-kdeconnect-kde-org",
+    "project_path": "websites/kdeconnect-kde-org",
+    "repo_path": "websites/kdeconnect-kde-org"
+  },
+  "websites-kdeitalia-it": {
+    "description": "Website for the Italian KDE community \u2014 kdeitalia.it",
+    "name": "websites-kdeitalia-it",
+    "project_path": "websites/kdeitalia-it",
+    "repo_path": "websites/kdeitalia-it"
+  },
+  "websites-kdemail-net": {
+    "description": "E-mail service for KDE contributors \u2014 kdemail.net",
+    "name": "websites-kdemail-net",
+    "project_path": "websites/kdemail-net",
+    "repo_path": "websites/kdemail-net"
+  },
+  "websites-kdesrc-build-kde-org": {
+    "description": "Website for kdesrc-build \u2014 kdesrc-build.kde.org",
+    "name": "websites-kdesrc-build-kde-org",
+    "project_path": "websites/kdesrc-build-kde-org",
+    "repo_path": "websites/kdesrc-build-kde-org"
+  },
+  "websites-kdetalk-net": {
+    "description": "Website for KDE's Jabber server \u2014 kdetalk.net",
+    "name": "websites-kdetalk-net",
+    "project_path": "websites/kdetalk-net",
+    "repo_path": "websites/kdetalk-net"
+  },
+  "websites-kdevelop-org": {
+    "description": "The marketing site for KDevelop.org",
+    "name": "websites-kdevelop-org",
+    "project_path": "websites/kdevelop-org",
+    "repo_path": "websites/kdevelop-org"
+  },
+  "websites-kexi-project-org": {
+    "description": "Website for Kexi - kexi-project.org",
+    "name": "websites-kexi-project-org",
+    "project_path": "websites/kexi-project-org",
+    "repo_path": "websites/kexi-project-org"
+  },
+  "websites-kgeotag-kde-org": {
+    "description": "Website for KGeoTag - kgeotag.kde.org",
+    "name": "websites-kgeotag-kde-org",
+    "project_path": "websites/kgeotag-kde-org",
+    "repo_path": "websites/kgeotag-kde-org"
+  },
+  "websites-kid3-kde-org": {
+    "description": "Website for Kid3 \u2014 kid3.kde.org",
+    "name": "websites-kid3-kde-org",
+    "project_path": "websites/kid3-kde-org",
+    "repo_path": "websites/kid3-kde-org"
+  },
+  "websites-kirogi-org": {
+    "description": "Website for Kirogi \u2014 kirogi.org",
+    "name": "websites-kirogi-org",
+    "project_path": "websites/kirogi-org",
+    "repo_path": "websites/kirogi-org"
+  },
+  "websites-kmymoney-org": {
+    "description": "Website for KMyMoney \u2014 kmymoney.org",
+    "name": "websites-kmymoney-org",
+    "project_path": "websites/kmymoney-org",
+    "repo_path": "websites/kmymoney-org"
+  },
+  "websites-konqueror-org": {
+    "description": "Website for Konqueror",
+    "name": "websites-konqueror-org",
+    "project_path": "websites/konqueror-org",
+    "repo_path": "websites/konqueror-org"
+  },
+  "websites-konsole-kde-org": {
+    "description": "Website for Konsole \u2014 konsole.kde.org",
+    "name": "websites-konsole-kde-org",
+    "project_path": "websites/konsole-kde-org",
+    "repo_path": "websites/konsole-kde-org"
+  },
+  "websites-kontact-kde-org": {
+    "description": "Website for Kontact \u2014 kontact.kde.org",
+    "name": "websites-kontact-kde-org",
+    "project_path": "websites/kontact-kde-org",
+    "repo_path": "websites/kontact-kde-org"
+  },
+  "websites-konversation-kde-org": {
+    "description": "Website for Konversation \u2014 konversation.kde.org",
+    "name": "websites-konversation-kde-org",
+    "project_path": "websites/konversation-kde-org",
+    "repo_path": "websites/konversation-kde-org"
+  },
+  "websites-kpdf-kde-org": {
+    "description": "Static copy of the KPDF website \u2014 kpdf.kde.org",
+    "name": "websites-kpdf-kde-org",
+    "project_path": "websites/kpdf-kde-org",
+    "repo_path": "websites/kpdf-kde-org"
+  },
+  "websites-kphotoalbum-org": {
+    "description": "Website for KPhotoAlbum \u2014 kphotoalbum.org",
+    "name": "websites-kphotoalbum-org",
+    "project_path": "websites/kphotoalbum-org",
+    "repo_path": "websites/kphotoalbum-org"
+  },
+  "websites-krita-org": {
+    "description": "The marketing site for Krita.org, migrated to use the Hugo static site generator",
+    "name": "websites-krita-org",
+    "project_path": "websites/krita-org",
+    "repo_path": "websites/krita-org"
+  },
+  "websites-krita-org-theme": {
+    "description": "Wordpress theme for krita.org",
+    "name": "websites-krita-org-theme",
+    "project_path": "websites/krita-org-theme",
+    "repo_path": "websites/krita-org-theme"
+  },
+  "websites-krusader-org": {
+    "description": "Website for Krusader \u2014 krusader.org",
+    "name": "websites-krusader-org",
+    "project_path": "websites/krusader-org",
+    "repo_path": "websites/krusader-org"
+  },
+  "websites-kst-plot-kde-org": {
+    "description": "Static copy of the Kst Plot website \u2014 kst-plot.kde.org",
+    "name": "websites-kst-plot-kde-org",
+    "project_path": "websites/kst-plot-kde-org",
+    "repo_path": "websites/kst-plot-kde-org"
+  },
+  "websites-kstars-kde-org": {
+    "description": "Website for KStars \u2014 kstars.kde.org",
+    "name": "websites-kstars-kde-org",
+    "project_path": "websites/kstars-kde-org",
+    "repo_path": "websites/kstars-kde-org"
+  },
+  "websites-kube-kde-org": {
+    "description": "Website for Kube \u2014 kube-project.com",
+    "name": "websites-kube-kde-org",
+    "project_path": "websites/kube-kde-org",
+    "repo_path": "websites/kube-kde-org"
+  },
+  "websites-lakademy-kde-org": {
+    "description": "Website for LaKademy \u2014 lakademy.kde.org",
+    "name": "websites-lakademy-kde-org",
+    "project_path": "websites/lakademy-kde-org",
+    "repo_path": "websites/lakademy-kde-org"
+  },
+  "websites-lists-kde-org": {
+    "description": "Necessary code to redirect from lists.kde.org to appropriate mail archives",
+    "name": "websites-lists-kde-org",
+    "project_path": "websites/lists-kde-org",
+    "repo_path": "websites/lists-kde-org"
+  },
+  "websites-lokalize-kde-org": {
+    "description": "Website for Lokalize",
+    "name": "websites-lokalize-kde-org",
+    "project_path": "websites/lokalize-kde-org",
+    "repo_path": "websites/lokalize-kde-org"
+  },
+  "websites-manifesto-kde-org": {
+    "description": "Website for the KDE Manifesto \u2014 manifesto.kde.org",
+    "name": "websites-manifesto-kde-org",
+    "project_path": "websites/manifesto-kde-org",
+    "repo_path": "websites/manifesto-kde-org"
+  },
+  "websites-marble-kde-org": {
+    "description": "Website for Marble \u2014 marble.kde.org",
+    "name": "websites-marble-kde-org",
+    "project_path": "websites/marble-kde-org",
+    "repo_path": "websites/marble-kde-org"
+  },
+  "websites-mediawiki": {
+    "description": "Customized version of MediaWiki that was used by the KDE Wikis",
+    "name": "websites-mediawiki",
+    "project_path": "websites/mediawiki",
+    "repo_path": "websites/mediawiki"
+  },
+  "websites-mediawiki-bugzilla": {
+    "description": "Bugzilla plugin for MediaWiki",
+    "name": "websites-mediawiki-bugzilla",
+    "project_path": "websites/mediawiki-bugzilla",
+    "repo_path": "websites/mediawiki-bugzilla"
+  },
+  "websites-mediawiki-documentation-tags": {
+    "description": "Documentation Tags plugin for MediaWiki",
+    "name": "websites-mediawiki-documentation-tags",
+    "project_path": "websites/mediawiki-documentation-tags",
+    "repo_path": "websites/mediawiki-documentation-tags"
+  },
+  "websites-mediawiki-kde-extensions": {
+    "description": "KDE Specific Extensions for MediaWiki",
+    "name": "websites-mediawiki-kde-extensions",
+    "project_path": "websites/mediawiki-kde-extensions",
+    "repo_path": "websites/mediawiki-kde-extensions"
+  },
+  "websites-mentorship-kde-org": {
+    "description": "Website for KDE Mentor Programs (GSoC and Summer of KDE)",
+    "name": "websites-mentorship-kde-org",
+    "project_path": "websites/mentorship-kde-org",
+    "repo_path": "websites/mentorship-kde-org"
+  },
+  "websites-minuet-kde-org": {
+    "description": "Website for Minuet \u2014 minuet.kde.org",
+    "name": "websites-minuet-kde-org",
+    "project_path": "websites/minuet-kde-org",
+    "repo_path": "websites/minuet-kde-org"
+  },
+  "websites-multimedia-kde-org": {
+    "description": "Website for KDE's multimedia software \u2014 multimedia.kde.org",
+    "name": "websites-multimedia-kde-org",
+    "project_path": "websites/multimedia-kde-org",
+    "repo_path": "websites/multimedia-kde-org"
+  },
+  "websites-my-kde-org": {
+    "description": "Unified identity management for KDE websites",
+    "name": "websites-my-kde-org",
+    "project_path": "websites/my-kde-org",
+    "repo_path": "websites/my-kde-org"
+  },
+  "websites-mykde-mediawiki": {
+    "description": "Mediawiki plugin for MyKDE",
+    "name": "websites-mykde-mediawiki",
+    "project_path": "websites/mykde-mediawiki",
+    "repo_path": "websites/mykde-mediawiki"
+  },
+  "websites-necessitas-kde-org": {
+    "description": "Website for the Necessitas project (Qt on Android)",
+    "name": "websites-necessitas-kde-org",
+    "project_path": "websites/necessitas-kde-org",
+    "repo_path": "websites/necessitas-kde-org"
+  },
+  "websites-neon-kde-org": {
+    "description": "Website for Neon \u2014 neon.kde.org",
+    "name": "websites-neon-kde-org",
+    "project_path": "websites/neon-kde-org",
+    "repo_path": "websites/neon-kde-org"
+  },
+  "websites-neverland": {
+    "description": "Attempt to create a simple and pleasant look and feel for KDE websites",
+    "name": "websites-neverland",
+    "project_path": "websites/neverland",
+    "repo_path": "websites/neverland"
+  },
+  "websites-okular-kde-org": {
+    "description": "Website for Okular \u2014 okular.kde.org",
+    "name": "websites-okular-kde-org",
+    "project_path": "websites/okular-kde-org",
+    "repo_path": "websites/okular-kde-org"
+  },
+  "websites-openraster-org": {
+    "description": "Sphinx setup for the Openraster.org (ORA specification) website",
+    "name": "websites-openraster-org",
+    "project_path": "websites/openraster-org",
+    "repo_path": "documentation/openraster-org"
+  },
+  "websites-paste-kde-org": {
+    "description": "KDE Paste, powered by the Sticky Notes pastebin engine",
+    "name": "websites-paste-kde-org",
+    "project_path": "websites/paste-kde-org",
+    "repo_path": "websites/paste-kde-org"
+  },
+  "websites-pe-kde-org": {
+    "description": "Website for the Peruvian KDE community \u2014 pe.kde.org",
+    "name": "websites-pe-kde-org",
+    "project_path": "websites/pe-kde-org",
+    "repo_path": "websites/pe-kde-org"
+  },
+  "websites-peruse-kde-org": {
+    "description": "Website for Peruse \u2014 peruse.kde.org",
+    "name": "websites-peruse-kde-org",
+    "project_path": "websites/peruse-kde-org",
+    "repo_path": "websites/peruse-kde-org"
+  },
+  "websites-phonon-kde-org": {
+    "description": "Website for Phonon",
+    "name": "websites-phonon-kde-org",
+    "project_path": "websites/phonon-kde-org",
+    "repo_path": "websites/phonon-kde-org"
+  },
+  "websites-planet-kde-org": {
+    "description": "Planet KDE website code and configuration \u2014 planet.kde.org",
+    "name": "websites-planet-kde-org",
+    "project_path": "websites/planet-kde-org",
+    "repo_path": "websites/planet-kde-org"
+  },
+  "websites-plasma-bigscreen-org": {
+    "description": "Website for Plasma BigScreen \u2014 plasma-bigscreen.org",
+    "name": "websites-plasma-bigscreen-org",
+    "project_path": "websites/plasma-bigscreen-org",
+    "repo_path": "websites/plasma-bigscreen-org"
+  },
+  "websites-plasma-kde-org": {
+    "description": "Website for Plasma",
+    "name": "websites-plasma-kde-org",
+    "project_path": "websites/plasma-kde-org",
+    "repo_path": "websites/plasma-kde-org"
+  },
+  "websites-plasma-mobile-org": {
+    "description": "Website for Plasma Mobile \u2014 plasma-mobile.org",
+    "name": "websites-plasma-mobile-org",
+    "project_path": "websites/plasma-mobile-org",
+    "repo_path": "websites/plasma-mobile-org"
+  },
+  "websites-product-screenshots": {
+    "description": "Screenshots of KDE software for promotional use \u2014 cdn.kde.org/screenshots",
+    "name": "websites-product-screenshots",
+    "project_path": "websites/product-screenshots",
+    "repo_path": "websites/product-screenshots"
+  },
+  "websites-projects-kde-org": {
+    "description": "KDE's customized version of Redmine, which used to power Projects",
+    "name": "websites-projects-kde-org",
+    "project_path": "websites/projects-kde-org",
+    "repo_path": "websites/projects-kde-org"
+  },
+  "websites-qtcon-org": {
+    "description": "Static copy of the QtCon website - qtcon.org",
+    "name": "websites-qtcon-org",
+    "project_path": "websites/qtcon-org",
+    "repo_path": "websites/qtcon-org"
+  },
+  "websites-quality-calligra-org": {
+    "description": "Website that provided quality statistics on Calligra",
+    "name": "websites-quality-calligra-org",
+    "project_path": "websites/quality-calligra-org",
+    "repo_path": "websites/quality-calligra-org"
+  },
+  "websites-quality-kde-org": {
+    "description": "Tools that make up the KDE Quality website",
+    "name": "websites-quality-kde-org",
+    "project_path": "websites/quality-kde-org",
+    "repo_path": "websites/quality-kde-org"
+  },
+  "websites-quickgit-kde-org": {
+    "description": "Quickgit Git repository browser (KDE-customized version of GitPHP)",
+    "name": "websites-quickgit-kde-org",
+    "project_path": "websites/quickgit-kde-org",
+    "repo_path": "websites/quickgit-kde-org"
+  },
+  "websites-rekonq-kde-org": {
+    "description": "Website for Rekonq",
+    "name": "websites-rekonq-kde-org",
+    "project_path": "websites/rekonq-kde-org",
+    "repo_path": "websites/rekonq-kde-org"
+  },
+  "websites-releases-neon-kde-org": {
+    "description": "Metadata of Neon releases \u2014 releases.neon.kde.org",
+    "name": "websites-releases-neon-kde-org",
+    "project_path": "websites/releases-neon-kde-org",
+    "repo_path": "websites/releases-neon-kde-org"
+  },
+  "websites-reports-kde-org": {
+    "description": "Website with reports about KDE projects and their activity",
+    "name": "websites-reports-kde-org",
+    "project_path": "websites/reports-kde-org",
+    "repo_path": "websites/reports-kde-org"
+  },
+  "websites-reservoir": {
+    "description": "Web application that was meant as replacement for Capacity",
+    "name": "websites-reservoir",
+    "project_path": "websites/reservoir",
+    "repo_path": "websites/reservoir"
+  },
+  "websites-rkward-kde-org": {
+    "description": "Website for RKWard \u2014 rkward.kde.org",
+    "name": "websites-rkward-kde-org",
+    "project_path": "websites/rkward-kde-org",
+    "repo_path": "websites/rkward-kde-org"
+  },
+  "websites-rolisteam-org": {
+    "description": "Website for Rolisteam \u2014 rolisteam.org",
+    "name": "websites-rolisteam-org",
+    "project_path": "websites/rolisteam-org",
+    "repo_path": "websites/rolisteam-org"
+  },
+  "websites-scripting-krita-org": {
+    "description": "Scripting School website for Krita",
+    "name": "websites-scripting-krita-org",
+    "project_path": "websites/scripting-krita-org",
+    "repo_path": "websites/scripting-krita-org"
+  },
+  "websites-season-kde-org": {
+    "description": "Website to organize programs like Season of KDE \u2014 season.kde.org",
+    "name": "websites-season-kde-org",
+    "project_path": "websites/season-kde-org",
+    "repo_path": "websites/season-kde-org"
+  },
+  "websites-simon-kde-org": {
+    "description": "Static copy of the Drupal-based Simon website \u2014 simon.kde.org",
+    "name": "websites-simon-kde-org",
+    "project_path": "websites/simon-kde-org",
+    "repo_path": "websites/simon-kde-org"
+  },
+  "websites-skrooge-org": {
+    "description": "Website for Skrooge \u2014 skrooge.org",
+    "name": "websites-skrooge-org",
+    "project_path": "websites/skrooge-org",
+    "repo_path": "websites/skrooge-org"
+  },
+  "websites-solid-kde-org": {
+    "description": "Website for Solid",
+    "name": "websites-solid-kde-org",
+    "project_path": "websites/solid-kde-org",
+    "repo_path": "websites/solid-kde-org"
+  },
+  "websites-sprint-kde-org": {
+    "description": "Web application to ease managing sprints",
+    "name": "websites-sprint-kde-org",
+    "project_path": "websites/sprint-kde-org",
+    "repo_path": "websites/sprint-kde-org"
+  },
+  "websites-sso-kde-org": {
+    "description": "Managed user identities for all KDE websites",
+    "name": "websites-sso-kde-org",
+    "project_path": "websites/sso-kde-org",
+    "repo_path": "websites/sso-kde-org"
+  },
+  "websites-subtitlecomposer-kde-org": {
+    "description": "Website for SubtitleComposer",
+    "name": "websites-subtitlecomposer-kde-org",
+    "project_path": "websites/subtitlecomposer-kde-org",
+    "repo_path": "websites/subtitlecomposer-kde-org"
+  },
+  "websites-sysadmin-kde-org-trellis": {
+    "description": "Customized Trellis Desk instance that was used by KDE Sysadmin",
+    "name": "websites-sysadmin-kde-org-trellis",
+    "project_path": "websites/sysadmin-kde-org-trellis",
+    "repo_path": "websites/sysadmin-kde-org-trellis"
+  },
+  "websites-telemetry-krita-org": {
+    "description": "Telemetry backend for Krita \u2014 telemetry.krita.org",
+    "name": "websites-telemetry-krita-org",
+    "project_path": "websites/telemetry-krita-org",
+    "repo_path": "websites/telemetry-krita-org"
+  },
+  "websites-timeline-kde-org": {
+    "description": "Website for community history timeline \u2014 timeline.kde.org",
+    "name": "websites-timeline-kde-org",
+    "project_path": "websites/timeline-kde-org",
+    "repo_path": "websites/timeline-kde-org"
+  },
+  "websites-tr-kde-org": {
+    "description": "Website for the Turkish KDE community / KDE T\u00fcrkiye Toplulu\u011fu i\u00e7in web sayfas\u0131",
+    "name": "websites-tr-kde-org",
+    "project_path": "websites/tr-kde-org",
+    "repo_path": "websites/tr-kde-org"
+  },
+  "websites-umbrello-kde-org": {
+    "description": "Website for Umbrello \u2014 umbrello.kde.org",
+    "name": "websites-umbrello-kde-org",
+    "project_path": "websites/umbrello-kde-org",
+    "repo_path": "websites/umbrello-kde-org"
+  },
+  "websites-utils-kde-org": {
+    "description": "Website for KDE's utilities \u2014 utils.kde.org",
+    "name": "websites-utils-kde-org",
+    "project_path": "websites/utils-kde-org",
+    "repo_path": "websites/utils-kde-org"
+  },
+  "websites-vdesign-kde-org": {
+    "description": "Website for KDE's Visual Design Group",
+    "name": "websites-vdesign-kde-org",
+    "project_path": "websites/vdesign-kde-org",
+    "repo_path": "websites/vdesign-kde-org"
+  },
+  "websites-video-subtitles": {
+    "description": "Subtitles for KDE video content",
+    "name": "websites-video-subtitles",
+    "project_path": "websites/video-subtitles",
+    "repo_path": "websites/video-subtitles"
+  },
+  "websites-volunteers-akademy-kde-org": {
+    "description": "Volunteer management and coordination system \u2014 volunteers.akademy.kde.org",
+    "name": "websites-volunteers-akademy-kde-org",
+    "project_path": "websites/volunteers-akademy-kde-org",
+    "repo_path": "websites/volunteers-akademy-kde-org"
+  },
+  "websites-vvave-kde-org": {
+    "description": "Website for Vvave \u2014 vvave.kde.org",
+    "name": "websites-vvave-kde-org",
+    "project_path": "websites/vvave-kde-org",
+    "repo_path": "websites/vvave-kde-org"
+  },
+  "websites-vvave-stream-kde-org": {
+    "description": "User-contributed content hub for Vvave",
+    "name": "websites-vvave-stream-kde-org",
+    "project_path": "websites/vvave-stream-kde-org",
+    "repo_path": "websites/vvave-stream-kde-org"
+  },
+  "websites-websvn-kde-org": {
+    "description": "KDE SVN repository browser \u2014 websvn.kde.org",
+    "name": "websites-websvn-kde-org",
+    "project_path": "websites/websvn-kde-org",
+    "repo_path": "websites/websvn-kde-org"
+  },
+  "websites-wiki-desktopsummit-org": {
+    "description": "Static copy of the DesktopSummit wiki \u2014 wiki.desktopsummit.org",
+    "name": "websites-wiki-desktopsummit-org",
+    "project_path": "websites/wiki-desktopsummit-org",
+    "repo_path": "websites/wiki-desktopsummit-org"
+  },
+  "websites-wiki-kde-org": {
+    "description": "Landing wiki list website \u2014 wiki.kde.org",
+    "name": "websites-wiki-kde-org",
+    "project_path": "websites/wiki-kde-org",
+    "repo_path": "websites/wiki-kde-org"
+  },
+  "websites-wiki-rolisteam-org": {
+    "description": "Rolisteam documentation (wiki) \u2014 doc.rolisteam.org",
+    "name": "websites-wiki-rolisteam-org",
+    "project_path": "websites/wiki-rolisteam-org",
+    "repo_path": "websites/wiki-rolisteam-org"
+  },
+  "websites-windows-kde-org": {
+    "description": "Website for the KDE Windows project",
+    "name": "websites-windows-kde-org",
+    "project_path": "websites/windows-kde-org",
+    "repo_path": "websites/windows-kde-org"
+  },
+  "websites-wordpress-koan-theme": {
+    "description": "Customised Koan theme for Wordpress",
+    "name": "websites-wordpress-koan-theme",
+    "project_path": "websites/wordpress-koan-theme",
+    "repo_path": "websites/wordpress-koan-theme"
+  },
+  "websites-yakuake-kde-org": {
+    "description": "Website for Yakuake",
+    "name": "websites-yakuake-kde-org",
+    "project_path": "websites/yakuake-kde-org",
+    "repo_path": "websites/yakuake-kde-org"
+  },
+  "websites-zanshin-kde-org": {
+    "description": "Website for Zanshin \u2014 zanshin.kde.org",
+    "name": "websites-zanshin-kde-org",
+    "project_path": "websites/zanshin-kde-org",
+    "repo_path": "websites/zanshin-kde-org"
+  },
+  "whoopsie-kcm": {
+    "description": "A KCM for talking to Ubuntu error tracker submission system Whoopsie",
+    "name": "whoopsie-kcm",
+    "project_path": "playground/base/whoopsie-kcm",
+    "repo_path": "system/whoopsie-kcm"
+  },
+  "wicd-kde": {
+    "description": "A Wicd client built on the KDE Development Platform.\n\n!http://kde-apps.org/CONTENT/content-pre1/132366-1.png!",
+    "name": "wicd-kde",
+    "project_path": "extragear/network/wicd-kde",
+    "repo_path": "unmaintained/wicd-kde"
+  },
+  "wiki-reader": {
+    "description": "A project for reading Wikipedia articles conveniently.",
+    "name": "wiki-reader",
+    "project_path": "unmaintained/wiki-reader",
+    "repo_path": "unmaintained/wiki-reader"
+  },
+  "wikidata-voice-application": {
+    "description": "Wikidata information voice application and mycroft skill for Plasma Bigscreen",
+    "name": "wikidata-voice-application",
+    "project_path": "playground/utils/wikidata-voice-application",
+    "repo_path": "plasma-bigscreen/wikidata-voice-application"
+  },
+  "wikitolearn-backend-for-frontend": {
+    "description": "Backend for the Frontend System of WIkiToLearn",
+    "name": "wikitolearn-backend-for-frontend",
+    "project_path": "playground/www/wikitolearn-backend-for-frontend",
+    "repo_path": "wikitolearn/wikitolearn-backend-for-frontend"
+  },
+  "wikitolearn-chapters-backend": {
+    "description": "Chapters Backend for WikiToLearn",
+    "name": "wikitolearn-chapters-backend",
+    "project_path": "playground/www/wikitolearn-chapters-backend",
+    "repo_path": "wikitolearn/wikitolearn-chapters-backend"
+  },
+  "wikitolearn-content-migration": {
+    "description": "Content Migration Assistants for WikiToLearn",
+    "name": "wikitolearn-content-migration",
+    "project_path": "playground/www/wikitolearn-content-migration",
+    "repo_path": "wikitolearn/wikitolearn-content-migration"
+  },
+  "wikitolearn-course-midtier": {
+    "description": "Mid Tier Course Support for WikiToLearn",
+    "name": "wikitolearn-course-midtier",
+    "project_path": "playground/www/wikitolearn-course-midtier",
+    "repo_path": "wikitolearn/wikitolearn-course-midtier"
+  },
+  "wikitolearn-courses-backend": {
+    "description": "Courses Backend for WikiToLearn",
+    "name": "wikitolearn-courses-backend",
+    "project_path": "playground/www/wikitolearn-courses-backend",
+    "repo_path": "wikitolearn/wikitolearn-courses-backend"
+  },
+  "wikitolearn-coursessecurity-backend": {
+    "description": "Backend Components of Course Security system for WikiToLearn",
+    "name": "wikitolearn-coursessecurity-backend",
+    "project_path": "playground/www/wikitolearn-coursessecurity-backend",
+    "repo_path": "wikitolearn/wikitolearn-coursessecurity-backend"
+  },
+  "wikitolearn-docs": {
+    "description": "Documentation for WikiToLearn",
+    "name": "wikitolearn-docs",
+    "project_path": "playground/www/wikitolearn-docs",
+    "repo_path": "wikitolearn/wikitolearn-docs"
+  },
+  "wikitolearn-docs-atundo": {
+    "description": "Atundo Documentation for WikiToLearn",
+    "name": "wikitolearn-docs-atundo",
+    "project_path": "playground/www/wikitolearn-docs-atundo",
+    "repo_path": "wikitolearn/wikitolearn-docs-atundo"
+  },
+  "wikitolearn-frontend": {
+    "description": "Frontend for WikiToLearn",
+    "name": "wikitolearn-frontend",
+    "project_path": "playground/www/wikitolearn-frontend",
+    "repo_path": "wikitolearn/wikitolearn-frontend"
+  },
+  "wikitolearn-keycloak-mediawiki-btypepassword-patch": {
+    "description": "btypepassword patch for Keycloak's Mediawiki integration",
+    "name": "wikitolearn-keycloak-mediawiki-btypepassword-patch",
+    "project_path": "playground/www/wikitolearn-keycloak-mediawiki-btypepassword-patch",
+    "repo_path": "wikitolearn/wikitolearn-keycloak-mediawiki-btypepassword-patch"
+  },
+  "wikitolearn-keycloak-theme": {
+    "description": "Keycloak Theme used by WikiToLearn",
+    "name": "wikitolearn-keycloak-theme",
+    "project_path": "playground/www/wikitolearn-keycloak-theme",
+    "repo_path": "wikitolearn/wikitolearn-keycloak-theme"
+  },
+  "wikitolearn-math-backend": {
+    "description": "Math Backend for WikiToLearn",
+    "name": "wikitolearn-math-backend",
+    "project_path": "playground/www/wikitolearn-math-backend",
+    "repo_path": "wikitolearn/wikitolearn-math-backend"
+  },
+  "wikitolearn-math-midtier": {
+    "description": "Mid Tier Math Support for WikiToLearn",
+    "name": "wikitolearn-math-midtier",
+    "project_path": "playground/www/wikitolearn-math-midtier",
+    "repo_path": "wikitolearn/wikitolearn-math-midtier"
+  },
+  "wikitolearn-media-midtier": {
+    "description": "Mid Tier Media Support for WikiToLearn",
+    "name": "wikitolearn-media-midtier",
+    "project_path": "playground/www/wikitolearn-media-midtier",
+    "repo_path": "wikitolearn/wikitolearn-media-midtier"
+  },
+  "wikitolearn-offline-extension": {
+    "description": "OfflineExtension is an extension for WikiToLearn that will add offline support to the current Wiki Editor.",
+    "name": "wikitolearn-offline-extension",
+    "project_path": "playground/www/wikitolearn-offline-extension",
+    "repo_path": "wikitolearn/wikitolearn-offline-extension"
+  },
+  "wikitolearn-pages-backend": {
+    "description": "Pages Backend for WikiToLearn",
+    "name": "wikitolearn-pages-backend",
+    "project_path": "playground/www/wikitolearn-pages-backend",
+    "repo_path": "wikitolearn/wikitolearn-pages-backend"
+  },
+  "wikitolearn-pdf-backend": {
+    "description": "PDF Backend for WikiToLearn",
+    "name": "wikitolearn-pdf-backend",
+    "project_path": "playground/www/wikitolearn-pdf-backend",
+    "repo_path": "wikitolearn/wikitolearn-pdf-backend"
+  },
+  "wikitolearn-pwa-gateway": {
+    "description": "PWA Gateway for WikiToLearn",
+    "name": "wikitolearn-pwa-gateway",
+    "project_path": "playground/www/wikitolearn-pwa-gateway",
+    "repo_path": "wikitolearn/wikitolearn-pwa-gateway"
+  },
+  "wikitolearn-sdk": {
+    "description": "SDK for WikiToLearn",
+    "name": "wikitolearn-sdk",
+    "project_path": "playground/www/wikitolearn-sdk",
+    "repo_path": "wikitolearn/wikitolearn-sdk"
+  },
+  "wikitolearn-shared-services": {
+    "description": "Shared Services for WikiToLearn",
+    "name": "wikitolearn-shared-services",
+    "project_path": "playground/www/wikitolearn-shared-services",
+    "repo_path": "wikitolearn/wikitolearn-shared-services"
+  },
+  "wikitolearn-shibboleth-discovery": {
+    "description": "Shibboleth discovery support for WikiToLearn",
+    "name": "wikitolearn-shibboleth-discovery",
+    "project_path": "playground/www/wikitolearn-shibboleth-discovery",
+    "repo_path": "wikitolearn/wikitolearn-shibboleth-discovery"
+  },
+  "wikitolearn-translation": {
+    "description": "Translation Support for WikiToLearn",
+    "name": "wikitolearn-translation",
+    "project_path": "playground/www/wikitolearn-translation",
+    "repo_path": "wikitolearn/wikitolearn-translation"
+  },
+  "xbuilder": {
+    "description": "SDK allowing creation of packages for Plasma Mobile",
+    "name": "xbuilder",
+    "project_path": "unmaintained/xbuilder",
+    "repo_path": "unmaintained/xbuilder"
+  },
+  "xdg-desktop-portal-kde": {
+    "description": "A backend implementation for xdg-desktop-portal that is using Qt/KDE",
+    "name": "xdg-desktop-portal-kde",
+    "project_path": "kde/workspace/xdg-desktop-portal-kde",
+    "repo_path": "plasma/xdg-desktop-portal-kde"
+  },
+  "xdg-portal-test-kde": {
+    "description": "Test application for Flatpak portals and Qt Flatpak platform plugin",
+    "name": "xdg-portal-test-kde",
+    "project_path": "playground/base/xdg-portal-test-kde",
+    "repo_path": "libraries/xdg-portal-test-kde"
+  },
+  "xsettings-kde": {
+    "description": "Allows XSettings aware applications (all GTK+ applications) to be informed instantly of changes in KDE configuration, such as theme name, default font and so on.",
+    "name": "xsettings-kde",
+    "project_path": "playground/base/xsettings-kde",
+    "repo_path": "unmaintained/xsettings-kde"
+  },
+  "xutils": {
+    "description": "Utilities for crossbuilding Plasma packages",
+    "name": "xutils",
+    "project_path": "unmaintained/xutils",
+    "repo_path": "unmaintained/xutils"
+  },
+  "xwaylandvideobridge": {
+    "description": "Utility to allow streaming Wayland windows to X applications",
+    "name": "xwaylandvideobridge",
+    "project_path": "system/xwaylandvideobridge",
+    "repo_path": "system/xwaylandvideobridge"
+  },
+  "yakuake": {
+    "description": "Drop-down terminal emulator based on Konsole technologies",
+    "name": "yakuake",
+    "project_path": "kde/applications/yakuake",
+    "repo_path": "utilities/yakuake"
+  },
+  "yocto-manifest": {
+    "description": "Tracking of Yocto meta-layers for use with KDE",
+    "name": "yocto-manifest",
+    "project_path": "playground/packaging/yocto-manifest",
+    "repo_path": "packaging/yocto-manifest"
+  },
+  "yocto-meta-kde": {
+    "description": "Yocto packaging metadata for KDE projects",
+    "name": "yocto-meta-kde",
+    "project_path": "playground/packaging/yocto-meta-kde",
+    "repo_path": "packaging/yocto-meta-kde"
+  },
+  "yocto-meta-kde-demo": {
+    "description": "Yocto Demo Image for KDE projects",
+    "name": "yocto-meta-kde-demo",
+    "project_path": "playground/packaging/yocto-meta-kde-demo",
+    "repo_path": "packaging/yocto-meta-kde-demo"
+  },
+  "yocto-meta-kf5": {
+    "description": "Yocto packaging metadata for KDE Frameworks",
+    "name": "yocto-meta-kf5",
+    "project_path": "playground/packaging/yocto-meta-kf5",
+    "repo_path": "packaging/yocto-meta-kf5"
+  },
+  "yocto-meta-kf6": {
+    "description": "Yocto packaging metadata for KDE Frameworks 6",
+    "name": "yocto-meta-kf6",
+    "project_path": "playground/packaging/yocto-meta-kf6",
+    "repo_path": "packaging/yocto-meta-kf6"
+  },
+  "youtube-voice-application": {
+    "description": "Youtube video player voice application and mycroft skill for Plasma Bigscreen",
+    "name": "youtube-voice-application",
+    "project_path": "playground/utils/youtube-voice-application",
+    "repo_path": "plasma-bigscreen/youtube-voice-application"
+  },
+  "zanshin": {
+    "description": "Getting Things Done application which aims at getting your mind like water",
+    "name": "zanshin",
+    "project_path": "kde/pim/zanshin",
+    "repo_path": "pim/zanshin"
+  },
+  "zxing-cpp": {
+    "description": null,
+    "name": "zxing-cpp",
+    "project_path": "third-party/zxing-cpp",
+    "repo_path": null
+  }
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/generated/sources/frameworks.json b/nixpkgs/pkgs/kde/generated/sources/frameworks.json
new file mode 100644
index 000000000000..a4e82300ac9a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/sources/frameworks.json
@@ -0,0 +1,362 @@
+{
+  "attica": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/attica-6.0.0.tar.xz",
+    "hash": "sha256-7yHY5Xrq5HV7a0Df4NDpw4MCqXkWS05NSTtjG3wCPSM="
+  },
+  "baloo": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/baloo-6.0.0.tar.xz",
+    "hash": "sha256-6iHojR/iUtLcleC3roiRWUgizN2JjnqlbUbtns1iakE="
+  },
+  "bluez-qt": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/bluez-qt-6.0.0.tar.xz",
+    "hash": "sha256-NnmPHnoKRyYHQ1vrKDP2zHfWXLAG3srB7AsKOm9RQus="
+  },
+  "breeze-icons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/breeze-icons-6.0.0.tar.xz",
+    "hash": "sha256-Rz6YUeT4SmTx6AjVj9h2AhmhsI/q9LUUoTmcjlyIncQ="
+  },
+  "extra-cmake-modules": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/extra-cmake-modules-6.0.0.tar.xz",
+    "hash": "sha256-I5kr8Z23FxVrfW3RMRjKp5/VfwkL6wYugwjbPAn3DQw="
+  },
+  "frameworkintegration": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/frameworkintegration-6.0.0.tar.xz",
+    "hash": "sha256-ND76Tk99HIBN4stqLKx6mAz383h/1PUj+iwtLRX2XZs="
+  },
+  "kapidox": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kapidox-6.0.0.tar.xz",
+    "hash": "sha256-5M1FL+eWspU2wwtSVuD46oLcre/cspzigvLB6uo3ZLs="
+  },
+  "karchive": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/karchive-6.0.0.tar.xz",
+    "hash": "sha256-daWR2WSAJuuGgml05vOILn9iBZLs74+r6xkgbmOwTlA="
+  },
+  "kauth": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kauth-6.0.0.tar.xz",
+    "hash": "sha256-ZgRmmNJYRpLVOXpuyAiyyfi3iCoPhSM76c1pKD0Dx2g="
+  },
+  "kbookmarks": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kbookmarks-6.0.0.tar.xz",
+    "hash": "sha256-FbVDbDrb1RegFPM4A8ML1gZWu8y5orKm5G/U4iN9uaU="
+  },
+  "kcalendarcore": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcalendarcore-6.0.0.tar.xz",
+    "hash": "sha256-ZBNWrChsGlKHMnzo+iUpv1MEjkOdH/ZyySXUq34Ot8I="
+  },
+  "kcmutils": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcmutils-6.0.0.tar.xz",
+    "hash": "sha256-mwmxQMAT1Wii7jV/gkv7ZBReTf3RaJ2m+/tPQYxbpDs="
+  },
+  "kcodecs": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcodecs-6.0.0.tar.xz",
+    "hash": "sha256-zrpE3NwlHUQ7vWy3fRIZ2HavjMKuRxBHKqzngSI5Wr4="
+  },
+  "kcolorscheme": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcolorscheme-6.0.0.tar.xz",
+    "hash": "sha256-3kWCJDF1W+Oat66/y3y2/5C0kkV5wqTWauKPkdcKJg4="
+  },
+  "kcompletion": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcompletion-6.0.0.tar.xz",
+    "hash": "sha256-9kNAFOeXm2VFkG0f96KSDPq2VkE2mSHmnwCoGLju5Vk="
+  },
+  "kconfig": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kconfig-6.0.0.tar.xz",
+    "hash": "sha256-P3weawSN9Ks9Z/vvAaWtHdAonJsVhkRmj7oCJcBQwFA="
+  },
+  "kconfigwidgets": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kconfigwidgets-6.0.0.tar.xz",
+    "hash": "sha256-URvtDZXeGGs89ixxkru2AgRQ1IYfBcGlRTVhRPF95TI="
+  },
+  "kcontacts": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcontacts-6.0.0.tar.xz",
+    "hash": "sha256-F5xnSOVVxcAosCpLmxZe3hOgnPXq8OoBI2bJcn0jDsQ="
+  },
+  "kcoreaddons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcoreaddons-6.0.0.tar.xz",
+    "hash": "sha256-6rg4IBtFrJjEEvZNI06J1iNX8nWumulm0HOmTGelJu8="
+  },
+  "kcrash": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kcrash-6.0.0.tar.xz",
+    "hash": "sha256-9W8e1E5JRBe3BG5PlHka1N3QfGy48PcE8gU3F6RClvk="
+  },
+  "kdav": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdav-6.0.0.tar.xz",
+    "hash": "sha256-s8gfXjErPu7SyLfbIY9kuQ9n4bLQzjekT/JztSMoQ+k="
+  },
+  "kdbusaddons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdbusaddons-6.0.0.tar.xz",
+    "hash": "sha256-EecNDHI5vYGJYtkc25SuupR0gFXHcAOk9k/xTasK6Yk="
+  },
+  "kdeclarative": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdeclarative-6.0.0.tar.xz",
+    "hash": "sha256-RnHrt+6bou16AtLHHd6Q/mgb5Qfn15E+eayxXfzntvk="
+  },
+  "kded": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kded-6.0.0.tar.xz",
+    "hash": "sha256-xiQyM/KCeyexpCmHp6MFjxOFP30OK/KJwFXyRdDFxiU="
+  },
+  "kdesu": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdesu-6.0.0.tar.xz",
+    "hash": "sha256-JMynq22pYweZ5fAQe1RtN+5jWx+fS3wS61Ohs2GbLAw="
+  },
+  "kdnssd": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdnssd-6.0.0.tar.xz",
+    "hash": "sha256-BpSWS6Stt+IL0NEAdpRECimLQz9tqGR6JLwVHcNItnk="
+  },
+  "kdoctools": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kdoctools-6.0.0.tar.xz",
+    "hash": "sha256-V5maTPAPDWHPKhfihXxyOUTR5I+3vq6wPkpRjaEiyLA="
+  },
+  "kfilemetadata": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kfilemetadata-6.0.0.tar.xz",
+    "hash": "sha256-zxMNwbMqMaGSE/PhrGfyGAy3kxJA5cdVIRaG6TeS85M="
+  },
+  "kglobalaccel": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kglobalaccel-6.0.0.tar.xz",
+    "hash": "sha256-WACesNC3DJPcDLCIaukp83VulyyEHXo+Rl34MH5bcUk="
+  },
+  "kguiaddons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kguiaddons-6.0.0.tar.xz",
+    "hash": "sha256-IK9Yq2OeqZ3wmsvXSvDIZ/IvHZ+RWVYjq0T7pYNOqmI="
+  },
+  "kholidays": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kholidays-6.0.0.tar.xz",
+    "hash": "sha256-SC9jdf5TamO2e61FoK04gMdNdPySo6k17LeLKYMNm38="
+  },
+  "ki18n": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/ki18n-6.0.0.tar.xz",
+    "hash": "sha256-Fcv7c+8dOVTWIGdVtuapyG6ie+S02wyEPThJSFG8w1Q="
+  },
+  "kiconthemes": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kiconthemes-6.0.0.tar.xz",
+    "hash": "sha256-9Ve9Jp+v5hfrjUt6wpWWCflszj6osbOsIxBjpyaSe7A="
+  },
+  "kidletime": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kidletime-6.0.0.tar.xz",
+    "hash": "sha256-qoRrTPy8SNCENQ0fUlY4/PR2awNjvN5A/O+oio+9p7M="
+  },
+  "kimageformats": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kimageformats-6.0.0.tar.xz",
+    "hash": "sha256-Hd0o8vuKwslVVveSQYwrYZCgQFCsMbJ6qC6hHBrwh5w="
+  },
+  "kio": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kio-6.0.0.tar.xz",
+    "hash": "sha256-SVGt8EMpnkY4A8xj7TPVJhuBv/lp6xidwTNQ9JXLS0I="
+  },
+  "kirigami": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kirigami-6.0.0.tar.xz",
+    "hash": "sha256-7Q9WyJJJ+5Kpr5mpT9E1Qqu65KjxYTqqor+rh5FLYBo="
+  },
+  "kitemmodels": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kitemmodels-6.0.0.tar.xz",
+    "hash": "sha256-ibh5mBcighqRG7oXZRKIICF5RPp45UUjaRWO2XqDWzo="
+  },
+  "kitemviews": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kitemviews-6.0.0.tar.xz",
+    "hash": "sha256-re12r3jWa8PpDzocraEX10eDtRmQTQSjlZG5h03zUkM="
+  },
+  "kjobwidgets": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kjobwidgets-6.0.0.tar.xz",
+    "hash": "sha256-UjnQ1Hr4EYyWK1mBb87uu/+TCkOreSNDiYKsCNvLhL4="
+  },
+  "knewstuff": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/knewstuff-6.0.0.tar.xz",
+    "hash": "sha256-ApnbqYBZC9fHSHCnTGu2ynMq9HirLJukFJQ/YuoL4Po="
+  },
+  "knotifications": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/knotifications-6.0.0.tar.xz",
+    "hash": "sha256-Nf7YE/xZS76Ai8AbURstHv+QI5d7eYETfz/sgZhHE+g="
+  },
+  "knotifyconfig": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/knotifyconfig-6.0.0.tar.xz",
+    "hash": "sha256-Mj/nV6AeyySB2a0EsJAu/T3eE8sfwETuGsG39aKTaeY="
+  },
+  "kpackage": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kpackage-6.0.0.tar.xz",
+    "hash": "sha256-0q7D3w3/tx6TrMA8RvLUylnFgmOpmJ33UQe/UiPp0bc="
+  },
+  "kparts": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kparts-6.0.0.tar.xz",
+    "hash": "sha256-8IMIVW7s1tsL5yfsHSezu1M4gKUw0RK7FuwvCOrR9uE="
+  },
+  "kpeople": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kpeople-6.0.0.tar.xz",
+    "hash": "sha256-IRmsnfqA9NkNbNBE1UTtXlAOmuSHzmFvJHXFjqqQbsM="
+  },
+  "kplotting": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kplotting-6.0.0.tar.xz",
+    "hash": "sha256-3ENkS3YyNEvUE9dUqn3RBSo83pIwGTq/XaR94TQaY/8="
+  },
+  "kpty": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kpty-6.0.0.tar.xz",
+    "hash": "sha256-xd81et/BczWT9s6zzZX/ej5YdwH5kLYx367gJ44N8XE="
+  },
+  "kquickcharts": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kquickcharts-6.0.0.tar.xz",
+    "hash": "sha256-69mo9QG4DnKhL1DZhIR6aY9yg744lkT34kEzSEB2pqU="
+  },
+  "krunner": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/krunner-6.0.0.tar.xz",
+    "hash": "sha256-ItM/0nVno1CuTtrk/lZit0jo+r1TmGNEF5RVjmjzMT0="
+  },
+  "kservice": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kservice-6.0.0.tar.xz",
+    "hash": "sha256-m0Ss9R0oDeqjEU7FlRimr11kXLHsLrrbXedGgciJG/4="
+  },
+  "kstatusnotifieritem": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kstatusnotifieritem-6.0.0.tar.xz",
+    "hash": "sha256-tCYXbSy8b+gMdYtsR2pHNB2JqSy7M1XCvjdCikF3KQc="
+  },
+  "ksvg": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/ksvg-6.0.0.tar.xz",
+    "hash": "sha256-0FbLlrBsHxqKjznBNIWM8UN8VGudeanrGpL4kz0eNXk="
+  },
+  "ktexteditor": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/ktexteditor-6.0.0.tar.xz",
+    "hash": "sha256-YgJmwdKI0J967k0ryLFBxzVV1fAzxFK80uLbIGS4/UI="
+  },
+  "ktexttemplate": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/ktexttemplate-6.0.0.tar.xz",
+    "hash": "sha256-uWTmEtLWI7vPP1p2rkukQI+A3mxYgHTGfxiDS15IJ0w="
+  },
+  "ktextwidgets": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/ktextwidgets-6.0.0.tar.xz",
+    "hash": "sha256-sJP1cOo8LUMg5BtXWlQPt1rNW1+Bi8YhWl/bV3VLbEA="
+  },
+  "kunitconversion": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kunitconversion-6.0.0.tar.xz",
+    "hash": "sha256-yISUrIlxwl3GvJoRGepEwPjtpE6dKIOt6aymUemWjV4="
+  },
+  "kuserfeedback": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kuserfeedback-6.0.0.tar.xz",
+    "hash": "sha256-AvGvEI4lPIQlJtMcmXoXd7j3puW4aYtbEmfOHsEorys="
+  },
+  "kwallet": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kwallet-6.0.0.tar.xz",
+    "hash": "sha256-urQ4I96LGwhtxLKtENEL1sTQ0uH4tf1f3V99Nl+45cw="
+  },
+  "kwidgetsaddons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kwidgetsaddons-6.0.0.tar.xz",
+    "hash": "sha256-p3cckjEKIagQW6ZN1hwGW6dHI4mcfM/E3itXsX5qa2M="
+  },
+  "kwindowsystem": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kwindowsystem-6.0.0.tar.xz",
+    "hash": "sha256-GQbKpTt9WPwMTXijyNmfJaoFb8bQnF/BIe1eH4A5apQ="
+  },
+  "kxmlgui": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/kxmlgui-6.0.0.tar.xz",
+    "hash": "sha256-0mxizp9b6GQ/7UZVMUGPtn5NE+32F5epRtowGuuRWPI="
+  },
+  "modemmanager-qt": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/modemmanager-qt-6.0.0.tar.xz",
+    "hash": "sha256-79bqPq5SshJ5ve446A9mfDXZi5d6RC9L1rigpHH5D/M="
+  },
+  "networkmanager-qt": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/networkmanager-qt-6.0.0.tar.xz",
+    "hash": "sha256-Il/J9E4R0GaHziyla+fHRS8K0syFCyL1cVyLcB2rtwA="
+  },
+  "prison": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/prison-6.0.0.tar.xz",
+    "hash": "sha256-b/X7xvw4WBBy7kWQTgItW/Lns7H0msnR0MYCTXyj7Fo="
+  },
+  "purpose": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/purpose-6.0.0.tar.xz",
+    "hash": "sha256-T6hcvS2d1JIW7aZDO0PgW7sRQknaxR31UkIyj364+Xw="
+  },
+  "qqc2-desktop-style": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/qqc2-desktop-style-6.0.0.tar.xz",
+    "hash": "sha256-hIMF/4iA/brRm/V+2fEo5ZzXHsuKNvv5IKVbYPaKLJM="
+  },
+  "solid": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/solid-6.0.0.tar.xz",
+    "hash": "sha256-dcXSVO7OuRfDXLDjK+/3aizxRY93Ps0Od5W0fa1ardM="
+  },
+  "sonnet": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/sonnet-6.0.0.tar.xz",
+    "hash": "sha256-IIPfReenKaN6jWZCFF5qz0xT5rI1MDhD4xAxyNKQros="
+  },
+  "syndication": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/syndication-6.0.0.tar.xz",
+    "hash": "sha256-/15Rifz49vsSiYhuo3DCApXejAcmlSExbCVIuOcpS60="
+  },
+  "syntax-highlighting": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/syntax-highlighting-6.0.0.tar.xz",
+    "hash": "sha256-LvnmuK64VD5k9KNiivozHAZW/mxIXzV0xAdlHXwSplM="
+  },
+  "threadweaver": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/frameworks/6.0/threadweaver-6.0.0.tar.xz",
+    "hash": "sha256-up2uxuBpf9wqzPdKRqbVlAPl40DSgLzpFv1jVqZo3bM="
+  }
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/generated/sources/gear.json b/nixpkgs/pkgs/kde/generated/sources/gear.json
new file mode 100644
index 000000000000..ba2b94b119b9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/sources/gear.json
@@ -0,0 +1,1232 @@
+{
+  "akonadi": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-24.02.0.tar.xz",
+    "hash": "sha256-ooDLUIgGxAim5i0vkwQDqD5MOn2hCo7x6BGFTl65Bh0="
+  },
+  "akonadi-calendar": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-calendar-24.02.0.tar.xz",
+    "hash": "sha256-wxXu+agOTtHuNimKWtTmllexirp3v810zdLVo9CH6j8="
+  },
+  "akonadi-calendar-tools": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-calendar-tools-24.02.0.tar.xz",
+    "hash": "sha256-X9UbkWeptqDHo/Kz5FJFKg0J2EmTBH3Ene6zCtYOwFs="
+  },
+  "akonadiconsole": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadiconsole-24.02.0.tar.xz",
+    "hash": "sha256-dcXQuNA8QABV2vqXgVfH5x0WxYnUaY9bPzPtFFcd36k="
+  },
+  "akonadi-contacts": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-contacts-24.02.0.tar.xz",
+    "hash": "sha256-yv2cLcSOiNydB8hokupUoz7hm7IxuSp2z697p7ssLgQ="
+  },
+  "akonadi-import-wizard": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-import-wizard-24.02.0.tar.xz",
+    "hash": "sha256-uOi+zHJ/8DmxoHwtvFAmBvu6kg58/dlKwuE4YEhgAos="
+  },
+  "akonadi-mime": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-mime-24.02.0.tar.xz",
+    "hash": "sha256-y87KziJ7TIwuPzG34W4AF+II3NlOn1j4Dvk+K4jWkys="
+  },
+  "akonadi-notes": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-notes-24.02.0.tar.xz",
+    "hash": "sha256-XmkE4VqAx5ompVQwa+Z9u06aYDk0uFzFzO1iYvcg3tg="
+  },
+  "akonadi-search": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akonadi-search-24.02.0.tar.xz",
+    "hash": "sha256-5ks8Y5mDBfvZe5xgOTRfUUyDWFTd6vAwsFjR5MXVvKU="
+  },
+  "akregator": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/akregator-24.02.0.tar.xz",
+    "hash": "sha256-tQHuTKvdim1+ojBLdhqfYYelzrwyf5DA4QHbQ9Z7TgU="
+  },
+  "alligator": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/alligator-24.02.0.tar.xz",
+    "hash": "sha256-6nB+uUCCB2VYtExrY6dZOkXm3uPnv0AaKuayMZl8dNg="
+  },
+  "analitza": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/analitza-24.02.0.tar.xz",
+    "hash": "sha256-dEK3gEwCyFP3hjfPtLVRqxCGBtLWcxVhfVY4RgeRN7I="
+  },
+  "angelfish": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/angelfish-24.02.0.tar.xz",
+    "hash": "sha256-gg5uLbHddShRmXb/q8QqdN+NzTuhiddDwdJUjUGX6aA="
+  },
+  "arianna": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/arianna-24.02.0.tar.xz",
+    "hash": "sha256-+T65E6LQKhi3Jr8eUsIgUeqNCyXS6rtWF5GRXLwUQTU="
+  },
+  "ark": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ark-24.02.0.tar.xz",
+    "hash": "sha256-/xH+k1LYqoAgeiHz4CThi0A1y75omrqtIKkf42xFVGk="
+  },
+  "artikulate": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/artikulate-24.02.0.tar.xz",
+    "hash": "sha256-z6yNeJzcgJz5T/89stBR7d1OfU44o8FEwTfjMYZZyHw="
+  },
+  "audiocd-kio": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/audiocd-kio-24.02.0.tar.xz",
+    "hash": "sha256-Y105es7pxSgSqfq7Z05W0v85EAHDWVlevtU9+v5Ex+0="
+  },
+  "audiotube": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/audiotube-24.02.0.tar.xz",
+    "hash": "sha256-XtbcPB9pF9Nabe2QxHlTgmPTxRlDs6c69KVGYCd7lUU="
+  },
+  "baloo-widgets": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/baloo-widgets-24.02.0.tar.xz",
+    "hash": "sha256-mJnW3Gw4PB9mY8EHs5rmHyIy+oPUtjPnkvY77O10yxw="
+  },
+  "blinken": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/blinken-24.02.0.tar.xz",
+    "hash": "sha256-nNV5c4W0BkT3Mpl8i/DTH3BcBofC7PrrlCwz1LKp/XQ="
+  },
+  "bomber": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/bomber-24.02.0.tar.xz",
+    "hash": "sha256-zVsnjGobs3GqH8mDL2M+bh3uCY7lzKmZGm0F8doeyU0="
+  },
+  "bovo": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/bovo-24.02.0.tar.xz",
+    "hash": "sha256-Zg/oKI+3qHa9zHsWsRlCdYhTS9ax6ahpOrcA5tWRu+E="
+  },
+  "calendarsupport": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/calendarsupport-24.02.0.tar.xz",
+    "hash": "sha256-5GW/iQNSQ5nGeenl2grUVOLF5aQnmgUWKzj4UlreUAU="
+  },
+  "calindori": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/calindori-24.02.0.tar.xz",
+    "hash": "sha256-umV2DaNV56clCRw93uOVdVtRpW/JN0ldbfj1/BTz3pM="
+  },
+  "cantor": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/cantor-24.02.0.tar.xz",
+    "hash": "sha256-FBMsAkFCf1tcv7eXoPtaXEqoJh0RB8+emsB2+ilJOBM="
+  },
+  "cervisia": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/cervisia-24.02.0.tar.xz",
+    "hash": "sha256-5gfIBPqqhCWtnjKxPJW5X7CncpMVpFv7DFhKG5cwoNk="
+  },
+  "colord-kde": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/colord-kde-24.02.0.tar.xz",
+    "hash": "sha256-tY9FuIWeFpT+xqgkowH+Uqb4yXhPg6xjGH80A+wLas8="
+  },
+  "dolphin": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/dolphin-24.02.0.tar.xz",
+    "hash": "sha256-EO8oRZfij5M9i06tddAnWaFd9LzJKO0QtU+AZbdDElc="
+  },
+  "dolphin-plugins": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/dolphin-plugins-24.02.0.tar.xz",
+    "hash": "sha256-ounGHd/4Q/CDpWhtmHGYQTdCh4Ne+PxeHRxDwi/RK+A="
+  },
+  "dragon": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/dragon-24.02.0.tar.xz",
+    "hash": "sha256-djHdZhIpgo1dziL+nHgsd3GD0GWd6vIs1n7UsroCRts="
+  },
+  "elisa": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/elisa-24.02.0.tar.xz",
+    "hash": "sha256-7LZwAFqjux3Q9AfCrAMxxwMZTPsrE0ZJL/wzYbhAuLQ="
+  },
+  "eventviews": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/eventviews-24.02.0.tar.xz",
+    "hash": "sha256-BBSMQ4ZdpR2+x1ZfJ5exNv2jW2mAAnJwhu1O2HjlWrs="
+  },
+  "falkon": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/falkon-24.02.0.tar.xz",
+    "hash": "sha256-vkmP2e9LF8+oB2HEeS54Ln3B3jqKhVtI/MfJx9c5Fhc="
+  },
+  "ffmpegthumbs": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ffmpegthumbs-24.02.0.tar.xz",
+    "hash": "sha256-OD3G1adGS0Q8Fmy0KoUHtZYAaTVtooqRkH12qBeNefE="
+  },
+  "filelight": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/filelight-24.02.0.tar.xz",
+    "hash": "sha256-B/kH6/xe2zkYo+A5psEexc/GnQ8WhZ2iyBPJmKTCB5Y="
+  },
+  "ghostwriter": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ghostwriter-24.02.0.tar.xz",
+    "hash": "sha256-Eool2WoiDLrGcpw3vI/T7mb03CFERbYoLIbdIPnAhUk="
+  },
+  "granatier": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/granatier-24.02.0.tar.xz",
+    "hash": "sha256-TBfFtGeozCPc8+yjQhav4E29a10ixLgfuf8JnlJRcTE="
+  },
+  "grantlee-editor": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/grantlee-editor-24.02.0.tar.xz",
+    "hash": "sha256-tyCZ7eCMHAN2hrgrtPM5A7qrHkA4A347Km3HBml2RmI="
+  },
+  "grantleetheme": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/grantleetheme-24.02.0.tar.xz",
+    "hash": "sha256-+3+rHO2P6RU+1KxuihNboTNfO2NDD35btgKIRz+evGg="
+  },
+  "gwenview": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/gwenview-24.02.0.tar.xz",
+    "hash": "sha256-A2BtPLoVIPBFVqySsqpEn4Xn2so2pjcWLTPAXsQrsLQ="
+  },
+  "incidenceeditor": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/incidenceeditor-24.02.0.tar.xz",
+    "hash": "sha256-m0AagRUFacYh52OhxbfqB9JD5KlEXS4m3L6QoUaT45g="
+  },
+  "isoimagewriter": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/isoimagewriter-24.02.0.tar.xz",
+    "hash": "sha256-SEu12ZECvXRGfBnHb1o7Ezbg9SlOBKNBEKExCucVn4Y="
+  },
+  "itinerary": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/itinerary-24.02.0.tar.xz",
+    "hash": "sha256-bWOrwT/OTNCATb/BybfGWVuDOXJ1i9jYIH4SEKXnyUM="
+  },
+  "juk": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/juk-24.02.0.tar.xz",
+    "hash": "sha256-YvDfysvTJJ8vmxPxUdTRbuLClnWvBJxAnt6st+nxiIE="
+  },
+  "k3b": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/k3b-24.02.0.tar.xz",
+    "hash": "sha256-LySlx84ps6u88Uqu6SR2I1bc8PXqwAUfg6kt75v3tRw="
+  },
+  "kaccounts-integration": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kaccounts-integration-24.02.0.tar.xz",
+    "hash": "sha256-V4hCWECE4TYop68C52cxIiRMmgMISoUmYfTc5MVtgA4="
+  },
+  "kaccounts-providers": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kaccounts-providers-24.02.0.tar.xz",
+    "hash": "sha256-z2WVslg4ebPwwNFFnczrD5L6MqNknxsSzQ8eAinJV+4="
+  },
+  "kaddressbook": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kaddressbook-24.02.0.tar.xz",
+    "hash": "sha256-ZJFhF7zun1SSOrvOr8cz2wClLDjjnhvJHi3Ibqq8yvU="
+  },
+  "kajongg": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kajongg-24.02.0.tar.xz",
+    "hash": "sha256-Z+jXMjDPZA7aHP3bi2z7yObjiiRibr5yylyZYxNdQws="
+  },
+  "kalarm": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kalarm-24.02.0.tar.xz",
+    "hash": "sha256-AbS/EHNMlH4ohh34ljytllPYsWyFXRvjk3y+v58pWeY="
+  },
+  "kalgebra": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kalgebra-24.02.0.tar.xz",
+    "hash": "sha256-j6aVhapPHfbSCb4lpWVfjsIRbp9SX/h7tx6EYFAmKM4="
+  },
+  "kalk": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kalk-24.02.0.tar.xz",
+    "hash": "sha256-ncrjNBgbtfUMDmSSV9M9xgSTnydDG3lvGlx2+eeV26k="
+  },
+  "kalzium": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kalzium-24.02.0.tar.xz",
+    "hash": "sha256-DuxtcEFqvoJrNygPdOBelvKftrmxtkV1W4CPxYptlak="
+  },
+  "kamera": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kamera-24.02.0.tar.xz",
+    "hash": "sha256-fU41VmagdArlDX0S/hkHG9RYfslutZvB1l2KWO1w5zI="
+  },
+  "kamoso": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kamoso-24.02.0.tar.xz",
+    "hash": "sha256-epVdLiMWDVUEG5bfdWdPLxPeJswJSwXUV3nBOY8/mrk="
+  },
+  "kanagram": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kanagram-24.02.0.tar.xz",
+    "hash": "sha256-Wgc3wkuJ16RmH73J80NXdOPhe7bbRA60NwjYH0zagZU="
+  },
+  "kapman": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kapman-24.02.0.tar.xz",
+    "hash": "sha256-VFzdFH0GWG1Q624zmQIWob45ezlIr9rWeEoeo769meg="
+  },
+  "kapptemplate": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kapptemplate-24.02.0.tar.xz",
+    "hash": "sha256-3XWfNVlUBrackatgMith9yyKtVsSgiIrFm1dvaOu3uE="
+  },
+  "kasts": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kasts-24.02.0.tar.xz",
+    "hash": "sha256-4h2+kJakb87fk7k+Ole7HYihk5zAUULk2ckN2XCHuec="
+  },
+  "kate": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kate-24.02.0.tar.xz",
+    "hash": "sha256-mx78zPTjbvzbwuraY5nNgSjOGHoZGCQAMTBi917jX0g="
+  },
+  "katomic": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/katomic-24.02.0.tar.xz",
+    "hash": "sha256-HCADUPHtuGBJCGpi8+r0NZEOmqXOfinMhanEgCcgCP4="
+  },
+  "kbackup": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kbackup-24.02.0.tar.xz",
+    "hash": "sha256-6zDO95RC7D1Dp9mrAYtRdeuez8PDKmm65PpNdlxekr0="
+  },
+  "kblackbox": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kblackbox-24.02.0.tar.xz",
+    "hash": "sha256-hw6ONCbMwWRN3+9614vM14m6Ctvl7Ws0P95cRRYQc00="
+  },
+  "kblocks": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kblocks-24.02.0.tar.xz",
+    "hash": "sha256-vVvjY9VfjNWMhNgA1y3n+nvx73p1GszZTJ6ZJyd1fXc="
+  },
+  "kbounce": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kbounce-24.02.0.tar.xz",
+    "hash": "sha256-X1B1rBy1D4CEcBT7VpRmIUS2C0in4KaZsESVFHH+8lg="
+  },
+  "kbreakout": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kbreakout-24.02.0.tar.xz",
+    "hash": "sha256-K5JdwUuyO517uUFIozLfaYcZ8ki8P0htz3rFqn/UHl4="
+  },
+  "kbruch": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kbruch-24.02.0.tar.xz",
+    "hash": "sha256-hC8ZOpn3PJ9dZQLA+czyHiORVx/tyJDi2D6QdM8m38U="
+  },
+  "kcachegrind": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcachegrind-24.02.0.tar.xz",
+    "hash": "sha256-4R1RYWUKVNsiREsZPVIee9jJcLiwguFYgxmDdG4BZfU="
+  },
+  "kcalc": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcalc-24.02.0.tar.xz",
+    "hash": "sha256-wZtjnWMr7h7fPp+DLnmB9WcaErRktGeLpS27H/8vx8U="
+  },
+  "kcalutils": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcalutils-24.02.0.tar.xz",
+    "hash": "sha256-gXZ+Fd8kNPxDpcfLi/YAKrNVDONP1Hxtzlh49VuSuD8="
+  },
+  "kcharselect": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcharselect-24.02.0.tar.xz",
+    "hash": "sha256-YTDOe4n1Fk/taeiZ8xuxGMgASKIRYdLiK5Tlwg0GjaQ="
+  },
+  "kclock": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kclock-24.02.0.tar.xz",
+    "hash": "sha256-WwoZuoUwZ6JhdpKbxlOVAx3pMFVVZgYtGaLuFPiIYkY="
+  },
+  "kcolorchooser": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcolorchooser-24.02.0.tar.xz",
+    "hash": "sha256-Nic2tvUMD2EJtroFjRQUmifhaRgkvGQj5xhkldpBkSM="
+  },
+  "kcron": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kcron-24.02.0.tar.xz",
+    "hash": "sha256-X/hkM7avtAUMKEsfFf0lCBcreZWoZnY24nQqjZvPFaM="
+  },
+  "kdebugsettings": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdebugsettings-24.02.0.tar.xz",
+    "hash": "sha256-Kk1DsnxGel6uS/pWyxecBnflYyMipu+qHjmCVBctZqo="
+  },
+  "kdeconnect-kde": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdeconnect-kde-24.02.0.tar.xz",
+    "hash": "sha256-2VxbNpPRS5VPsJoi0vwXEoFapCR0DL9YcsQKWe1CTg0="
+  },
+  "kde-dev-scripts": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kde-dev-scripts-24.02.0.tar.xz",
+    "hash": "sha256-AOmjoUY5frMMQ2Oj1fsQVc0xDd5oRfBrWApgVmZ5tp0="
+  },
+  "kde-dev-utils": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kde-dev-utils-24.02.0.tar.xz",
+    "hash": "sha256-Ug4MlnOicBnOkGkHT3j/cujRiQ7ho/LpfFJyRPcEMUk="
+  },
+  "kdeedu-data": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdeedu-data-24.02.0.tar.xz",
+    "hash": "sha256-Cl2akMYUdnn/NszV0PhgdZjj2J/RPlKawdZQksoX728="
+  },
+  "kdegraphics-mobipocket": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdegraphics-mobipocket-24.02.0.tar.xz",
+    "hash": "sha256-fCNtFpIZJqvY0TuAk0UG0XglrsSU99gUEEjmKydIS4I="
+  },
+  "kdegraphics-thumbnailers": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdegraphics-thumbnailers-24.02.0.tar.xz",
+    "hash": "sha256-GsDPFZgrHXcBKxOEXlJUwjCiYi0q/Z76d2lfaGElaos="
+  },
+  "kde-inotify-survey": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kde-inotify-survey-24.02.0.tar.xz",
+    "hash": "sha256-UPil14KZALlNu9dtqTCFR8qggT3pMz3G54GV6BqG0+E="
+  },
+  "kdenetwork-filesharing": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdenetwork-filesharing-24.02.0.tar.xz",
+    "hash": "sha256-I/MUm00NLduYUFRDJm6vzYy1+XAJ6RMnG5QSyTaczm0="
+  },
+  "kdenlive": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdenlive-24.02.0.tar.xz",
+    "hash": "sha256-E1qR6ZGOtjH+uCK2eGJfNVfpW2pehr3h06wd9jQBUUY="
+  },
+  "kdepim-addons": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdepim-addons-24.02.0.tar.xz",
+    "hash": "sha256-AOUdgRbc1HIqLhaPhwBPYjyIyHX28CvbeMFmrBoLfCc="
+  },
+  "kdepim-runtime": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdepim-runtime-24.02.0.tar.xz",
+    "hash": "sha256-XNqKp7PYp71Sb73SDfMPVqLc8QqETYim9xuRIgZ7qzU="
+  },
+  "kdesdk-kio": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdesdk-kio-24.02.0.tar.xz",
+    "hash": "sha256-MMdAZZqtHukDGhnCo9dV/Xj4HwK7rCfJkM6iLezDoFk="
+  },
+  "kdesdk-thumbnailers": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdesdk-thumbnailers-24.02.0.tar.xz",
+    "hash": "sha256-RPh4+mDQPeznFzSnu5LqN3Y+2hDWAjll+rFfwuojMwc="
+  },
+  "kdevelop": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdevelop-24.02.0.tar.xz",
+    "hash": "sha256-ICrN+1Oxve65kV6rGgBW0ZAEDYgJA4lQvy7I1E+oHhk="
+  },
+  "kdev-php": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdev-php-24.02.0.tar.xz",
+    "hash": "sha256-c/SC70a3Glz7eLiGwmz9DWGCdISGgeYEdSj6ypbQ60k="
+  },
+  "kdev-python": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdev-python-24.02.0.tar.xz",
+    "hash": "sha256-qUsJfgsXoHBxWlG4f98xRWZ2frnlNaJ4Dt81Jl007Cs="
+  },
+  "kdf": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdf-24.02.0.tar.xz",
+    "hash": "sha256-vJ9rEouG1m7ZwRjndGSQQKY0L7dnsyfc4h9UuK3Mw08="
+  },
+  "kdialog": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdialog-24.02.0.tar.xz",
+    "hash": "sha256-d0odH6oCW2iC72XoBtc6fRlWClYOnBzerMAgKwHwvd0="
+  },
+  "kdiamond": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kdiamond-24.02.0.tar.xz",
+    "hash": "sha256-0yKSPPbSn83ewxlPF55FtEAZXG3eXR7lsypLvxx5epo="
+  },
+  "keditbookmarks": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/keditbookmarks-24.02.0.tar.xz",
+    "hash": "sha256-GLvT+HyhIlVIjXDipYiS6YOFeB8epo/qvU/JZXtVhgc="
+  },
+  "keysmith": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/keysmith-24.02.0.tar.xz",
+    "hash": "sha256-6V+kxaDMZuzGYoOSueOiszrN2zLZ/gV5JTQZWYv7IEs="
+  },
+  "kfind": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kfind-24.02.0.tar.xz",
+    "hash": "sha256-wrhF9gz4z8VH7RgAZ/IdrgFdzKySLTxwXesLn1lDAAc="
+  },
+  "kfourinline": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kfourinline-24.02.0.tar.xz",
+    "hash": "sha256-liP40dPpgoBr5uFnzHsCD7FDjHKOTemIQNV6lHrto3M="
+  },
+  "kgeography": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kgeography-24.02.0.tar.xz",
+    "hash": "sha256-CUVKlvIaUF7aC20A/Fx3GvR48/3FivY3/iRBHobxcbY="
+  },
+  "kget": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kget-24.02.0.tar.xz",
+    "hash": "sha256-Z4sJOWwHfKt/5euOJ1qFNElSKfMZW6xmldicV7i+Ru4="
+  },
+  "kgoldrunner": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kgoldrunner-24.02.0.tar.xz",
+    "hash": "sha256-9kEUKpW/YFUC5/8RwunRMGr/A0R8sUG1IlIK1pNDcBk="
+  },
+  "kgpg": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kgpg-24.02.0.tar.xz",
+    "hash": "sha256-G+Jh+Gax8epW0a18wGuRsC54TQHsB+lER5vgQn32eAc="
+  },
+  "khangman": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/khangman-24.02.0.tar.xz",
+    "hash": "sha256-DsBcVkZmEepMS4ba0vkNRtcyUp/R1LdJsPLxTS82pvE="
+  },
+  "khealthcertificate": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/khealthcertificate-24.02.0.tar.xz",
+    "hash": "sha256-sDjTpv1FzmwZuA0piU0P/gNvfLr4/Pz9kopfui5rpEk="
+  },
+  "khelpcenter": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/khelpcenter-24.02.0.tar.xz",
+    "hash": "sha256-+YKRgB6Do66nVs5jdciWRs7dcVaW9oypDFpXOHGSkMY="
+  },
+  "kidentitymanagement": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kidentitymanagement-24.02.0.tar.xz",
+    "hash": "sha256-/dTFko8UEiwztPl891h6B2iebRaLOlajG3+mDXFJBIw="
+  },
+  "kig": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kig-24.02.0.tar.xz",
+    "hash": "sha256-YLxI/ZxPybmoMP+AaZPfrLn2SwKmPgzliKFgxT+m4KM="
+  },
+  "kigo": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kigo-24.02.0.tar.xz",
+    "hash": "sha256-atr3+yK3mBjznenbcHoWuQXUYZs9++727QtggeF8Km0="
+  },
+  "killbots": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/killbots-24.02.0.tar.xz",
+    "hash": "sha256-zMNzSdlypSwSFMofkSHSwSJOTWyUHNSjLGppBcuemaE="
+  },
+  "kimagemapeditor": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kimagemapeditor-24.02.0.tar.xz",
+    "hash": "sha256-hBaiCHRMZ3WeK4eKnq+9fXCjwIdKJfTmUENVW4ip0ao="
+  },
+  "kimap": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kimap-24.02.0.tar.xz",
+    "hash": "sha256-5e/gxzfBjDArMThPQ4HcgmaNZw346uPfGFPdieojtwY="
+  },
+  "kio-admin": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kio-admin-24.02.0.tar.xz",
+    "hash": "sha256-z/rba5KQk00NkBpghVByi/X62o4FDY5fqUHDdaCHmQ8="
+  },
+  "kio-extras": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kio-extras-24.02.0.tar.xz",
+    "hash": "sha256-gFWWyWqZtSKzrraZK8YMFKHEzNIA4CcUPo3tlIyZYt8="
+  },
+  "kio-extras-kf5": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kio-extras-kf5-24.02.0.tar.xz",
+    "hash": "sha256-LxNk8XF1rRzhkbw/IhaFRX9YZKVH1GzLcqYWKD2ArFM="
+  },
+  "kio-gdrive": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kio-gdrive-24.02.0.tar.xz",
+    "hash": "sha256-ufTXGrtoZydhFRrmapKugC8If0Ek6n5qpzZUIiRxkBM="
+  },
+  "kio-zeroconf": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kio-zeroconf-24.02.0.tar.xz",
+    "hash": "sha256-vW6U6K+KGlgDznjyDUDMxpR9tOsE0Gf5Uj18hpYfcU8="
+  },
+  "kipi-plugins": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kipi-plugins-24.02.0.tar.xz",
+    "hash": "sha256-5Auv82sYRsypHu0KD2P2Wr9pfXYTxHM4iWJv8fPSGWA="
+  },
+  "kirigami-gallery": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kirigami-gallery-24.02.0.tar.xz",
+    "hash": "sha256-G+pLnuMoJU72rsrdrh0djhHAADThWHvIKyp2yi5iTIw="
+  },
+  "kiriki": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kiriki-24.02.0.tar.xz",
+    "hash": "sha256-4pbohCmFYQdO+KTAJ48/fCHxRFtkXW3H3mKVZe7FBrs="
+  },
+  "kiten": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kiten-24.02.0.tar.xz",
+    "hash": "sha256-et2aCiEidVKUc8Wc5OR/hsmHu8ITY9yW7VwjvglZYYE="
+  },
+  "kitinerary": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kitinerary-24.02.0.tar.xz",
+    "hash": "sha256-4YxiNjYH3XaQkunhX84+ACUNcG940cfYrSg1vGINl3o="
+  },
+  "kjournald": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kjournald-24.02.0.tar.xz",
+    "hash": "sha256-pPTLND/FD6UK7BYfKP9VznALXC9Fo4qrJtTNBCAounQ="
+  },
+  "kjumpingcube": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kjumpingcube-24.02.0.tar.xz",
+    "hash": "sha256-qfwO/Kmzxdalf+u0cS9pIXCJIt9HqfBG8IXVx5OoS7w="
+  },
+  "kldap": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kldap-24.02.0.tar.xz",
+    "hash": "sha256-AT2c3pSO84rZRRAT5FTDnbcD/Hw3w6kWcKmp5kX8VRo="
+  },
+  "kleopatra": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kleopatra-24.02.0.tar.xz",
+    "hash": "sha256-uRSG9ACE2IaCQzkwHfA434RjKj2BuSVNh3NCQNzZmDg="
+  },
+  "klettres": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/klettres-24.02.0.tar.xz",
+    "hash": "sha256-uNL+4Ady3ZLHyE9S+ACb2AFoFKdd35DZh3bgbsrvYXs="
+  },
+  "klickety": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/klickety-24.02.0.tar.xz",
+    "hash": "sha256-4FiMmSQgF1bo/jgTZwb+32K8hGLZj2SBkr1denfnNag="
+  },
+  "klines": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/klines-24.02.0.tar.xz",
+    "hash": "sha256-72TJ5HDcHIUcEAEqj6v10HEXBIfyfzyzHMahNgs8so4="
+  },
+  "kmag": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmag-24.02.0.tar.xz",
+    "hash": "sha256-puRJXUqvOU7mDf+L3ysEtLLT1vzeEJJdiP3cn2WTK/w="
+  },
+  "kmahjongg": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmahjongg-24.02.0.tar.xz",
+    "hash": "sha256-aNWmPk40em68VIQjXhA6CEACqxYmNcBfCchx3zzdBh4="
+  },
+  "kmail": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmail-24.02.0.tar.xz",
+    "hash": "sha256-NDPwJTVR00DYoPI8HyotUQbhJ+DcnIK+PTCz/DPDd5k="
+  },
+  "kmail-account-wizard": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmail-account-wizard-24.02.0.tar.xz",
+    "hash": "sha256-MShJn7xViuFpGQWgGr+OKPcQQm4VrPsoaOHKcWM0XcE="
+  },
+  "kmailtransport": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmailtransport-24.02.0.tar.xz",
+    "hash": "sha256-0esQYgfuuIss9vKzs6R++IGD21ATmpFJ26DXKAXgT6o="
+  },
+  "kmbox": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmbox-24.02.0.tar.xz",
+    "hash": "sha256-bqjqQ0g0idRGf1KBYxAa9PsZ6jNmTHKFeyq/6KRo9AM="
+  },
+  "kmime": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmime-24.02.0.tar.xz",
+    "hash": "sha256-TxJRSE8Ytu7fYskhmlBOY1feWt/0AWzDSnFN0Mt0gGU="
+  },
+  "kmines": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmines-24.02.0.tar.xz",
+    "hash": "sha256-iuyasRb2vN+5Qo+DkLW3LvULiDqMOHikluDJqzjn/cU="
+  },
+  "kmix": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmix-24.02.0.tar.xz",
+    "hash": "sha256-kcmI6fq5xVPMWakgKzpkvQhmpOPDI2++1Hw4U7Z2gX8="
+  },
+  "kmousetool": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmousetool-24.02.0.tar.xz",
+    "hash": "sha256-iLM2UIgD2/t26aPIlx2kZ0JHOMmsNwZMr+UARXepbOo="
+  },
+  "kmouth": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmouth-24.02.0.tar.xz",
+    "hash": "sha256-7aRXYrRkOMnUIZG6Ks2IaTKL9IpmSfGzRZ2G9+XJ5Gw="
+  },
+  "kmplot": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kmplot-24.02.0.tar.xz",
+    "hash": "sha256-ui6FaOEBxKuXMHcqPg0+X04hwpk7rRee5hod+68EWHY="
+  },
+  "knavalbattle": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/knavalbattle-24.02.0.tar.xz",
+    "hash": "sha256-VxD8HBZTIeczXpjGV/WDw9Qt2nMEyVvQElDmNlNU4ZI="
+  },
+  "knetwalk": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/knetwalk-24.02.0.tar.xz",
+    "hash": "sha256-PiBdDwXA8NMJ8nMqBENjsZkiLqdi+81wzzniAfbvN1w="
+  },
+  "knights": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/knights-24.02.0.tar.xz",
+    "hash": "sha256-QjCT6HJOzjNtFHbgD8zhFSe9OuVVeCGdoxOGh4e+HfA="
+  },
+  "knotes": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/knotes-24.02.0.tar.xz",
+    "hash": "sha256-QELnoh1ac9ZvmhdyCxBBCDx9G6I+RfRlid+9eYMj/t0="
+  },
+  "koko": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/koko-24.02.0.tar.xz",
+    "hash": "sha256-b51ePO2XLLPB9UFinnFgLOJWy2omwzQH7xb+QCDL8do="
+  },
+  "kolf": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kolf-24.02.0.tar.xz",
+    "hash": "sha256-g28WB/Ynb5Fa+4gyV9tQriTudp4XiW87rTpRpKgLFC4="
+  },
+  "kollision": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kollision-24.02.0.tar.xz",
+    "hash": "sha256-945+1QG9Y1wEHz9R9jyhZgqjho6gznmhVLxmGDughT4="
+  },
+  "kolourpaint": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kolourpaint-24.02.0.tar.xz",
+    "hash": "sha256-TWUkBV91X13c66eXureQmubABLZpP7Svb8bw8incn08="
+  },
+  "kompare": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kompare-24.02.0.tar.xz",
+    "hash": "sha256-b1gwy6sew3OkOLVxkb/hzRKPcnGmHLNN3aU5O47iN74="
+  },
+  "kongress": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kongress-24.02.0.tar.xz",
+    "hash": "sha256-t4QsBIC8Bb3q5BZyG64qvxW1Vc5nF02ZZwXkqAvyJNk="
+  },
+  "konqueror": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/konqueror-24.02.0.tar.xz",
+    "hash": "sha256-eWMepFIch+Soam/VinRA3sWrunK9gVcvwq+uyLG1NkE="
+  },
+  "konquest": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/konquest-24.02.0.tar.xz",
+    "hash": "sha256-ez/sNbLqLjQK43QKNS9r7th9MghtBpyurF2vBGJ1m+c="
+  },
+  "konsole": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/konsole-24.02.0.tar.xz",
+    "hash": "sha256-KRXtzYVlUr1hme+yPcrxlGBe5PswfHXidgYZglPf3+A="
+  },
+  "kontact": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kontact-24.02.0.tar.xz",
+    "hash": "sha256-4kVTXlOvLk/aQxWIAjKfWAuMivFprFew4rrqLDkk5Yw="
+  },
+  "kontactinterface": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kontactinterface-24.02.0.tar.xz",
+    "hash": "sha256-c4WDAWz/AexNYGiNOzKUiyvJ2U9VvnZtQU6LTM9+484="
+  },
+  "kontrast": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kontrast-24.02.0.tar.xz",
+    "hash": "sha256-kZUHEuCNOSR4N+MqU73BFgP9SE10om3WNEQQ5oLGERw="
+  },
+  "konversation": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/konversation-24.02.0.tar.xz",
+    "hash": "sha256-yNdUoY/x9olK1YHJe5TDJj5L4jihfjL5woyWBkuBguk="
+  },
+  "kopeninghours": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kopeninghours-24.02.0.tar.xz",
+    "hash": "sha256-CVo8wVkB/EGBat0MrLmNpGQ1ZnrCS+GOxV9vugWBhHc="
+  },
+  "korganizer": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/korganizer-24.02.0.tar.xz",
+    "hash": "sha256-QlHvzihgYE2yOqAjSy/tq+4irqL2k3klm/7HOwzQCTI="
+  },
+  "kosmindoormap": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kosmindoormap-24.02.0.tar.xz",
+    "hash": "sha256-+Id+XQ4viBs16Jez1Y5Wue8jrs8eqL4MsvSwHLXXNjQ="
+  },
+  "kpat": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kpat-24.02.0.tar.xz",
+    "hash": "sha256-oPGn3s2Q9T5usfetmW2QqfxKtJzKpJdupNBA1XahxpI="
+  },
+  "kpimtextedit": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kpimtextedit-24.02.0.tar.xz",
+    "hash": "sha256-8T3ON2k8xMlaAFp6zoniAeoQD/leLlshXFVMKnjwXzM="
+  },
+  "kpkpass": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kpkpass-24.02.0.tar.xz",
+    "hash": "sha256-ouOv4Ezasv17JTbZsOzzQDbSdNKqNk3gN81WCfs7CN8="
+  },
+  "kpmcore": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kpmcore-24.02.0.tar.xz",
+    "hash": "sha256-TFxQqVCupwU2FvmqhtKcHS4PG9sSHBfMMefh5zpi3tE="
+  },
+  "kpublictransport": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kpublictransport-24.02.0.tar.xz",
+    "hash": "sha256-it3FzeMe1U2dGMckeq79ZpveEKjNdkA3hN0Lz/nNIvg="
+  },
+  "kqtquickcharts": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kqtquickcharts-24.02.0.tar.xz",
+    "hash": "sha256-fkgwCdCdZs6pkmBCqHO+u4Wx2Jcy2sAXRdEY2FghHM8="
+  },
+  "krdc": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/krdc-24.02.0.tar.xz",
+    "hash": "sha256-yA0xsjleWb2hXnp2Cx4dQUs2QWeREmCJKujh9gYyomE="
+  },
+  "krecorder": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/krecorder-24.02.0.tar.xz",
+    "hash": "sha256-Aelia5F4KOfdrJsCCJHLD6A519RkpiL8uYPf478CdV0="
+  },
+  "kreversi": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kreversi-24.02.0.tar.xz",
+    "hash": "sha256-w724cLuA8cZnE1NFmAj1qIN1YIIEwvcIS6KZbBjk880="
+  },
+  "krfb": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/krfb-24.02.0.tar.xz",
+    "hash": "sha256-rglGiRVq5Gz1z0QPH0QXx60HxeLhNW7yAyT00KmofDo="
+  },
+  "kross-interpreters": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kross-interpreters-24.02.0.tar.xz",
+    "hash": "sha256-Prit+XIbYbKF+g3BU9ikbyNEtufMYjP5yGHkq78IogE="
+  },
+  "kruler": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kruler-24.02.0.tar.xz",
+    "hash": "sha256-f9xZX0SwZ0O081hSWbcSfMISBXr1bpaq3tBOt6wPvNU="
+  },
+  "ksanecore": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksanecore-24.02.0.tar.xz",
+    "hash": "sha256-kwh3N/xzTFTPIySSG2terw94ZDBsRJaUKUS5NSzbIds="
+  },
+  "kshisen": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kshisen-24.02.0.tar.xz",
+    "hash": "sha256-nmaObTESP6O/uUAL/cm6h0iHI+WIHdpuiypp9AiyjA8="
+  },
+  "ksirk": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksirk-24.02.0.tar.xz",
+    "hash": "sha256-NBBpFUJ8TGlEywsU8VhzNd5Q690EPWdTTIX7SuWnIyg="
+  },
+  "ksmtp": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksmtp-24.02.0.tar.xz",
+    "hash": "sha256-Cp/7MrUGfJbZAuYl1Rolb7syn5gU8NpC07UWF7RYqQg="
+  },
+  "ksnakeduel": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksnakeduel-24.02.0.tar.xz",
+    "hash": "sha256-oJJ0kNVrROMTGEbCuBRATby/40v2DtPrMnsylhIx9tw="
+  },
+  "kspaceduel": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kspaceduel-24.02.0.tar.xz",
+    "hash": "sha256-tGLVSZcKlE2QNFe4ByV87jeA2hhXJQPkxjPARq2YyvE="
+  },
+  "ksquares": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksquares-24.02.0.tar.xz",
+    "hash": "sha256-q5ISgFe3KKSFNgyTpAcCu54rdLlEJR8QOld/jVEfUJo="
+  },
+  "ksudoku": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksudoku-24.02.0.tar.xz",
+    "hash": "sha256-l9acSyIMd1NfAvWDtWPut3KIrjnBes3OCKLwhQ8SwCY="
+  },
+  "ksystemlog": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ksystemlog-24.02.0.tar.xz",
+    "hash": "sha256-digHzjZOgBQtG3GuG0jXkyCSBe17F6vIOPUUqLd3WB4="
+  },
+  "kteatime": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kteatime-24.02.0.tar.xz",
+    "hash": "sha256-S/g5mERK1NPOXnxqk2HkxjQHzad2mq+H6QSLWEUzY34="
+  },
+  "ktimer": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktimer-24.02.0.tar.xz",
+    "hash": "sha256-cJM+CATWOSUrEb2MTWXBiFSHoriTPMgX/o26uOBzvV4="
+  },
+  "ktnef": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktnef-24.02.0.tar.xz",
+    "hash": "sha256-t+GnG81B3aO3kjrvOeFbiZiFjWgMPXegAf7HAnE++xA="
+  },
+  "ktorrent": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktorrent-24.02.0.tar.xz",
+    "hash": "sha256-A4Rafv53jU3H7TlvKE8J1nB9UG1rOmQDnsZLrKWJMFo="
+  },
+  "ktouch": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktouch-24.02.0.tar.xz",
+    "hash": "sha256-fWaMAVhzGN1LeknttVXpblgYblhGbHKIuxeRZscjW1s="
+  },
+  "ktrip": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktrip-24.02.0.tar.xz",
+    "hash": "sha256-RPJv4m8r+jNCSXBRywS/NCEKp+/thhXaxFW7TznX+7s="
+  },
+  "ktuberling": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/ktuberling-24.02.0.tar.xz",
+    "hash": "sha256-73ODxkH6QxYI9O2wNwCO7cHdNQhwFqzUzBxrFuGfX6o="
+  },
+  "kturtle": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kturtle-24.02.0.tar.xz",
+    "hash": "sha256-rK1KUkW9iFcPpHJ4DleLwGXjPACtcsL6Lg/AojKHLPA="
+  },
+  "kubrick": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kubrick-24.02.0.tar.xz",
+    "hash": "sha256-nVJHXUFodsFhHtEVZtNKJYGCViHPKiCaddXscwfQgUs="
+  },
+  "kwalletmanager": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kwalletmanager-24.02.0.tar.xz",
+    "hash": "sha256-/EgwCPzay6WdobJYauZ8tJ6rF/g/+RRcnJlVqIzUOLI="
+  },
+  "kwave": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kwave-24.02.0.tar.xz",
+    "hash": "sha256-9dRFHIBWD1+UOoVJ2mKCy9gwW5y41tdItDSUfMXI3vk="
+  },
+  "kweather": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kweather-24.02.0.tar.xz",
+    "hash": "sha256-hr6rcTLj0HSLfEApAu0JJbVz15tMY6ShlB5YiYRozK8="
+  },
+  "kwordquiz": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/kwordquiz-24.02.0.tar.xz",
+    "hash": "sha256-ps3PCCOncBxuGTDX1RpxekyleUeBBU04zyeMZuDgL6Q="
+  },
+  "libgravatar": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libgravatar-24.02.0.tar.xz",
+    "hash": "sha256-0/5VBt3WgCj6IW9c0FADXmjI687MG5/SJNbtMrPntUk="
+  },
+  "libkcddb": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkcddb-24.02.0.tar.xz",
+    "hash": "sha256-/aFpBy8m0T2oU3N6iFO2wcxKux1MWxTRuNEw26FH7c8="
+  },
+  "libkcompactdisc": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkcompactdisc-24.02.0.tar.xz",
+    "hash": "sha256-yQrLDIhQ6sfdQOlcpsxb1+dOUqg5C0ImAoq2EffXn1M="
+  },
+  "libkdcraw": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkdcraw-24.02.0.tar.xz",
+    "hash": "sha256-0TckttdYckBCEJh5ZgbWP3v1Ur6hYlgpSCuvLfmaqxo="
+  },
+  "libkdegames": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkdegames-24.02.0.tar.xz",
+    "hash": "sha256-PRE0ItxlQ0iyAl3l/h3iVtBqPFW+nHsQQlPiVZWy4rE="
+  },
+  "libkdepim": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkdepim-24.02.0.tar.xz",
+    "hash": "sha256-1BJBnRdPy8X2qkaDHyyoFxjw2KeZcpNfoJfFS48u5+A="
+  },
+  "libkeduvocdocument": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkeduvocdocument-24.02.0.tar.xz",
+    "hash": "sha256-PItMxVX08jt3BEYVz4LLqRq4Z2RFtdJcE4+WIXrd4xs="
+  },
+  "libkexiv2": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkexiv2-24.02.0.tar.xz",
+    "hash": "sha256-Ko1zP2Duee/4xZmL5jKqNppwURU5A/Acp01gOAlch04="
+  },
+  "libkgapi": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkgapi-24.02.0.tar.xz",
+    "hash": "sha256-7x+XLmKerhKQEDm7/Ld9E2WzzzBdjZeA9ySD7/OrOwo="
+  },
+  "libkipi": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkipi-24.02.0.tar.xz",
+    "hash": "sha256-Ig9IWMF+fZuFMzLmSB3jUYKhE7QSr38tSf5PIJ7gOR4="
+  },
+  "libkleo": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkleo-24.02.0.tar.xz",
+    "hash": "sha256-reQo2spUR5gxSjpbV37+hBfG0hgvdOQn89fHnDyhuWw="
+  },
+  "libkmahjongg": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkmahjongg-24.02.0.tar.xz",
+    "hash": "sha256-pld2Ae17ry8cQhMK4ubRm5nqkm0U+CoEYaRrN0wZZ8U="
+  },
+  "libkomparediff2": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libkomparediff2-24.02.0.tar.xz",
+    "hash": "sha256-bNNk3ADzblPwsdZv+OWvGAXdWXNY6bK64+na9uxNVLg="
+  },
+  "libksane": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libksane-24.02.0.tar.xz",
+    "hash": "sha256-jo9ZpawoD/dRLHcStGdfd4/KO4Apb7u9+NjPZQsXGrU="
+  },
+  "libksieve": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libksieve-24.02.0.tar.xz",
+    "hash": "sha256-3vqFYnNCuqQYS7iALrGoui6KzZro3GRBHfinEqg3zK0="
+  },
+  "libktorrent": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/libktorrent-24.02.0.tar.xz",
+    "hash": "sha256-iGZX//AS4iVUMLHLKVWeT3k8L1TkfW7UhEIVQNl1uJo="
+  },
+  "lokalize": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/lokalize-24.02.0.tar.xz",
+    "hash": "sha256-WznIX/27WZ+UW5YErYgIitJUs0A3+hn777wzcaUVCt0="
+  },
+  "lskat": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/lskat-24.02.0.tar.xz",
+    "hash": "sha256-kVALtkeet6C9w9pVm204nq+v4H5S63OSbJiE4qn4x2U="
+  },
+  "mailcommon": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/mailcommon-24.02.0.tar.xz",
+    "hash": "sha256-d/kMdC5VeQp43LdbNKtNgi4cOF45KBeqceEf0cDCQ9o="
+  },
+  "mailimporter": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/mailimporter-24.02.0.tar.xz",
+    "hash": "sha256-3Z1rNH52BzidcBVfXmAyTnRfubqOnybu6skY8ImOdZU="
+  },
+  "marble": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/marble-24.02.0.tar.xz",
+    "hash": "sha256-kpkHPKYXJDUPMjbJkW6oHUvURQCexltzZmCkvwFu+Wo="
+  },
+  "markdownpart": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/markdownpart-24.02.0.tar.xz",
+    "hash": "sha256-a79yKY8hxQIgiu0/76VTAticUGpe510lZdRkU0U0S8k="
+  },
+  "mbox-importer": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/mbox-importer-24.02.0.tar.xz",
+    "hash": "sha256-LOLwaNlk9T7967HEy/+zimaXzy/jEIj6/JuyJrzIiXs="
+  },
+  "merkuro": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/merkuro-24.02.0.tar.xz",
+    "hash": "sha256-oxu1ZAfJCtTi5d+wGxee32WJ6b/G5hTYMXJjmsrUv1E="
+  },
+  "messagelib": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/messagelib-24.02.0.tar.xz",
+    "hash": "sha256-/0jfAZvD+aZVMhlpWpR+gwPRtW16oYW1Hz8klzQujz0="
+  },
+  "mimetreeparser": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/mimetreeparser-24.02.0.tar.xz",
+    "hash": "sha256-XQVGxJ6P1dY5umiuCnkCYKrl4dBoc3WH8r3FwRD/l+8="
+  },
+  "minuet": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/minuet-24.02.0.tar.xz",
+    "hash": "sha256-eFrJR+LOW2f9anvA+9j1BdMwBN4MwZn8hlhitjsJFdM="
+  },
+  "neochat": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/neochat-24.02.0.tar.xz",
+    "hash": "sha256-JOeLm8y90qQHJuO2g7XUHf370G1JA8tHT1mJ/4/gcDI="
+  },
+  "okular": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/okular-24.02.0.tar.xz",
+    "hash": "sha256-/CZVSPhZVixUzUBYf/PGocLQ95JmF5UbBuYUXR9Ck4w="
+  },
+  "palapeli": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/palapeli-24.02.0.tar.xz",
+    "hash": "sha256-0F3kZGY2QIWcyuEaylrfW17Vz1UROc9oViLZxz36tTI="
+  },
+  "parley": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/parley-24.02.0.tar.xz",
+    "hash": "sha256-/b3RBQo/2D6u7wQjj3jU/10NTmRVQkw7ZKm7mC6ZDxc="
+  },
+  "partitionmanager": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/partitionmanager-24.02.0.tar.xz",
+    "hash": "sha256-suxJFlgFvKW4BvZrTsU91KmN1GYzrtVOafBAod8VpKw="
+  },
+  "picmi": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/picmi-24.02.0.tar.xz",
+    "hash": "sha256-/SeGR/MuCTQgVuS0NQ/JjccPTBW0D1XPUu90bIs8IM8="
+  },
+  "pimcommon": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/pimcommon-24.02.0.tar.xz",
+    "hash": "sha256-Yypu3thy6A6Y/BHYv67KgoO34gn2ifJcT9toEsxpkxw="
+  },
+  "pim-data-exporter": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/pim-data-exporter-24.02.0.tar.xz",
+    "hash": "sha256-XmT0wgdRhbL9Ryq851MoF+n0zxD2UPiTR97gt7sDj78="
+  },
+  "pim-sieve-editor": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/pim-sieve-editor-24.02.0.tar.xz",
+    "hash": "sha256-hJCWNj3IIuzNsxQqceqabCsFDBEambr6UUhv7k7zyeQ="
+  },
+  "plasmatube": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/plasmatube-24.02.0.tar.xz",
+    "hash": "sha256-pTR53BqHz5hS44GVPy1aQ5v9Umaf7cn+7QqxTAn/eRk="
+  },
+  "poxml": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/poxml-24.02.0.tar.xz",
+    "hash": "sha256-psDlllkWEHOWtPzwEeMvbAIqHn25Vx/cZIZj+Sb+1To="
+  },
+  "qmlkonsole": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/qmlkonsole-24.02.0.tar.xz",
+    "hash": "sha256-dzCe7Zv0t6G/P8JrAiU/C5212uWWxDNLFoiEQiqqigY="
+  },
+  "rocs": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/rocs-24.02.0.tar.xz",
+    "hash": "sha256-Othj1cCeK/I1sNUEimsdvTwrArecH/xZ5Q0z86tgEwI="
+  },
+  "signon-kwallet-extension": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/signon-kwallet-extension-24.02.0.tar.xz",
+    "hash": "sha256-62lx+1Ef1su7Ng+xolsAMzE7clOPcJUK2NLK+qr7nW4="
+  },
+  "skanlite": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/skanlite-24.02.0.tar.xz",
+    "hash": "sha256-wV7o3vz7Bdof0d7qLJqqPMb7MkiXlPVx7Andi02TiqY="
+  },
+  "skanpage": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/skanpage-24.02.0.tar.xz",
+    "hash": "sha256-ifaShgBg6rDlPibDQPuLsu/dSZm6vx7JVy+moUT9by8="
+  },
+  "spectacle": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/spectacle-24.02.0.tar.xz",
+    "hash": "sha256-YUsQyZC1weKvU5xvYNpcq40ZdbbBeiwkWKgbldLkw9E="
+  },
+  "step": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/step-24.02.0.tar.xz",
+    "hash": "sha256-SfIQVPQjzEuDTzegc29ljm89GcJNuhXvIw2FfaH/HBM="
+  },
+  "svgpart": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/svgpart-24.02.0.tar.xz",
+    "hash": "sha256-JGjS2Cf1M8Mw2X28jrC4PPLYHHhfC7WUKNvOT/z6CGU="
+  },
+  "sweeper": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/sweeper-24.02.0.tar.xz",
+    "hash": "sha256-MtiaAsfpbSSBe4Q0DW1YvP8glecU1c3pYUbk6SWGIow="
+  },
+  "telly-skout": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/telly-skout-24.02.0.tar.xz",
+    "hash": "sha256-u0y0kue+gaWQ4TF5o5J7PFfW7sjsNBkh6tyCraDIi7M="
+  },
+  "tokodon": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/tokodon-24.02.0.tar.xz",
+    "hash": "sha256-DXSOQ/qBse39tBvCPzCeTQ6f1vJTPGY+z7DYw5AOz98="
+  },
+  "umbrello": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/umbrello-24.02.0.tar.xz",
+    "hash": "sha256-AMuUHmihDvZNfU23Fr/OwGjhZV09VSCvl5Rv8z3tE8c="
+  },
+  "yakuake": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/yakuake-24.02.0.tar.xz",
+    "hash": "sha256-jwubjyV5jQpYriB+E8isVch+IgX6bIZRua8/l8AC9qQ="
+  },
+  "zanshin": {
+    "version": "24.02.0",
+    "url": "mirror://kde/stable/release-service/24.02.0/src/zanshin-24.02.0.tar.xz",
+    "hash": "sha256-lgw1cPYmHbfbdEvVzpMe3qZH874suUY9CGm6/DDLZGU="
+  }
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/generated/sources/plasma.json b/nixpkgs/pkgs/kde/generated/sources/plasma.json
new file mode 100644
index 000000000000..605ff3d9fb96
--- /dev/null
+++ b/nixpkgs/pkgs/kde/generated/sources/plasma.json
@@ -0,0 +1,317 @@
+{
+  "bluedevil": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/bluedevil-6.0.0.tar.xz",
+    "hash": "sha256-gxRzBpx78HGHryrLsQHTpsdHVVh+SQFCCY1aoFTuYmU="
+  },
+  "breeze": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/breeze-6.0.0.tar.xz",
+    "hash": "sha256-vHKhaxFre+q/G06aRRAZ+QSOe+awWsc6RifyWywgWeo="
+  },
+  "breeze-grub": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/breeze-grub-6.0.0.tar.xz",
+    "hash": "sha256-bsSL/16nneLcQgdr5ROGb9zV10K0ZytpDK8u3OXLcNY="
+  },
+  "breeze-gtk": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/breeze-gtk-6.0.0.tar.xz",
+    "hash": "sha256-zsTK8cIpvDDKAMZgXbTbmKllAhZ/NKm3fKArJrSZqzY="
+  },
+  "breeze-plymouth": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/breeze-plymouth-6.0.0.tar.xz",
+    "hash": "sha256-J3eGWAwBDAmqGS+I0JZFmvYKKv/yWpDo/TldOlInpkw="
+  },
+  "discover": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/discover-6.0.0.tar.xz",
+    "hash": "sha256-e6gl/kd5pJX/7UaStQ5xFw4gIz25kB7L4VKO3Dqz37A="
+  },
+  "drkonqi": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/drkonqi-6.0.0.tar.xz",
+    "hash": "sha256-oI1SR63vWJ5K+8ow3xSPjxgjfFDWThOkzphb93h9MQY="
+  },
+  "flatpak-kcm": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/flatpak-kcm-6.0.0.tar.xz",
+    "hash": "sha256-3u5cNcxTHAkuSJjmvJUInDOzJ5z1mPk0RjY8bYD7cSE="
+  },
+  "kactivitymanagerd": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kactivitymanagerd-6.0.0.tar.xz",
+    "hash": "sha256-khCzkcMpAY5FrGXG46d/ZFMvPgF2xYm812RgwgMBAvw="
+  },
+  "kde-cli-tools": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kde-cli-tools-6.0.0.tar.xz",
+    "hash": "sha256-Q3DJO7XCBe8yv0i8APJj6qOQt/G0bfh1pC/L/79Ch0E="
+  },
+  "kdecoration": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kdecoration-6.0.0.tar.xz",
+    "hash": "sha256-NjpdI9kJUqXi4yvH+/Qf9Nu7fM/xOL7xnUiz2tEfFVE="
+  },
+  "kde-gtk-config": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kde-gtk-config-6.0.0.tar.xz",
+    "hash": "sha256-YAcf/LVCeBilDKqVsickidoQgFwyuXXTggJsB4+NhFM="
+  },
+  "kdeplasma-addons": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kdeplasma-addons-6.0.0.tar.xz",
+    "hash": "sha256-vQ1ZBmRGTIhv4URHvjjBYakntw+2yc4opwkPkJAmDPc="
+  },
+  "kgamma": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kgamma-6.0.0.tar.xz",
+    "hash": "sha256-lwTTLITibYwzAX8LDFYrdBu7ZpW4n6OIKfyEN1pQVmU="
+  },
+  "kglobalacceld": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kglobalacceld-6.0.0.tar.xz",
+    "hash": "sha256-qn6zTz36/cL0dbsg7WqFY6Lp+/sGRwiQ4SfckFT5Rao="
+  },
+  "kinfocenter": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kinfocenter-6.0.0.tar.xz",
+    "hash": "sha256-byma0LoUOGQSDazzZUSGOkkGg1pZFcHLiRcGzzmjfnk="
+  },
+  "kmenuedit": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kmenuedit-6.0.0.tar.xz",
+    "hash": "sha256-+moJ6P7DQ2gNWNR9rt8NWCZ/i5kPEuLFCqcrq8ljrF8="
+  },
+  "kpipewire": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kpipewire-6.0.0.tar.xz",
+    "hash": "sha256-3Vhe5N47W83BDzb+XfkZZkR8pxZXDWtOoVFg2x8dc7w="
+  },
+  "kscreen": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kscreen-6.0.0.tar.xz",
+    "hash": "sha256-+XwEV2MLzg2Q/bwPbEXx4rIaYBRL0YLYtB9Yk5v9c0Y="
+  },
+  "kscreenlocker": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kscreenlocker-6.0.0.tar.xz",
+    "hash": "sha256-JQL6qFyHRgpLXqu5J2nTPBls0zc7PzpSHtOW5QTSKrY="
+  },
+  "ksshaskpass": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/ksshaskpass-6.0.0.tar.xz",
+    "hash": "sha256-tdkYWBTLYsZMVfTA67KQ0jn3Pqr3IVjEWOVkM4xV7cY="
+  },
+  "ksystemstats": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/ksystemstats-6.0.0.tar.xz",
+    "hash": "sha256-qFAYXmObZ4kt6lGy/7cadJj9BJ/8KNFz5u58atPzzro="
+  },
+  "kwallet-pam": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kwallet-pam-6.0.0.tar.xz",
+    "hash": "sha256-GTqIHaQf8VG84ejt86CUqzUbUi/ZDjenNX0aGV7wBno="
+  },
+  "kwayland": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kwayland-6.0.0.tar.xz",
+    "hash": "sha256-ADEglGgZZqTPaSKIOYBHokE28bzhMjBzBNDf+hz57Xk="
+  },
+  "kwayland-integration": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kwayland-integration-6.0.0.tar.xz",
+    "hash": "sha256-BOLLxF6jxLbxiroWYQ/Sx/ogsmPKYGKQsbJ1RmUBAek="
+  },
+  "kwin": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kwin-6.0.0.tar.xz",
+    "hash": "sha256-sZR8K0TeYZCQhGLIHorIn/nHMmqHZB/rZebM2FJipNs="
+  },
+  "kwrited": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/kwrited-6.0.0.tar.xz",
+    "hash": "sha256-9kHAA98JHE83lsTG8xUdVieoo4UxAITi5/T8rPT3SmI="
+  },
+  "layer-shell-qt": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/layer-shell-qt-6.0.0.tar.xz",
+    "hash": "sha256-FaV6gtnMsNUgtVihc/Mxs5d1yADAsoSB2oCBFeHSirQ="
+  },
+  "libkscreen": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/libkscreen-6.0.0.tar.xz",
+    "hash": "sha256-xCpykMiZ/IuIeJCnsD79cgtHbXrG/JHGTm8D2t/wm0Q="
+  },
+  "libksysguard": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/libksysguard-6.0.0.tar.xz",
+    "hash": "sha256-a3LM++1p8nvOwNhkFO14CHAQmAHMIMUFkBZXyFw2RN0="
+  },
+  "libplasma": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/libplasma-6.0.0.tar.xz",
+    "hash": "sha256-sdj0cBoAndGHl8v2jwa9xFo+haJDsEGQiQtLQEQJJ9I="
+  },
+  "milou": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/milou-6.0.0.tar.xz",
+    "hash": "sha256-yOqST3w5FeHeqlIgugByOFJrPfkCmzrJjsoVjlVSs0o="
+  },
+  "ocean-sound-theme": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/ocean-sound-theme-6.0.0.tar.xz",
+    "hash": "sha256-IqDtyoacebSb5aJVtsPfsNJYTJ72jbt5BhOKfJb2efo="
+  },
+  "oxygen": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/oxygen-6.0.0.tar.xz",
+    "hash": "sha256-+5NjfGeceeuPdkPn1IQiVfN/kluWW84v1Vf4Ct/6weg="
+  },
+  "oxygen-sounds": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/oxygen-sounds-6.0.0.tar.xz",
+    "hash": "sha256-dWWuHsxtOVvK9DaH7/lPVu2opCidDG/19KV1E5HG5Y8="
+  },
+  "plasma5support": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma5support-6.0.0.tar.xz",
+    "hash": "sha256-qhMUh/8sdciSzoxSgTtuH+LWpJ9S7QjzhwDiLA6Z6+0="
+  },
+  "plasma-activities": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-activities-6.0.0.tar.xz",
+    "hash": "sha256-8L0Hu82QIscuVkBGBGAps59x0cxbRnufUJFIEwQ7J5U="
+  },
+  "plasma-activities-stats": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-activities-stats-6.0.0.tar.xz",
+    "hash": "sha256-Xmqw/l88XbDeLr5q3NecJhcLkq3cBWzzXwSE+0UAfS4="
+  },
+  "plasma-browser-integration": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-browser-integration-6.0.0.tar.xz",
+    "hash": "sha256-IdX3JyJKnhxUhqc0UELbQoLqpC4JpoUvt3tbATX09kE="
+  },
+  "plasma-desktop": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-desktop-6.0.0.tar.xz",
+    "hash": "sha256-kkzgTbLIjPeuGiPxmzjrRSl3CHtuk37QVozlOXvMkn0="
+  },
+  "plasma-disks": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-disks-6.0.0.tar.xz",
+    "hash": "sha256-uC/+Mn227ddGxCL3HgBxUjcT3m2bL0b7DhLQMAKHTyo="
+  },
+  "plasma-firewall": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-firewall-6.0.0.tar.xz",
+    "hash": "sha256-MrC04kHmfXqrKt5eo0VnDwlFhQ4iDWWro8blX2AYV5Y="
+  },
+  "plasma-integration": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-integration-6.0.0.tar.xz",
+    "hash": "sha256-Ez/2bspjY7eYtRUuluNwQAIT5aK8KL1jPYtpFAawLEE="
+  },
+  "plasma-mobile": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-mobile-6.0.0.tar.xz",
+    "hash": "sha256-128H4RR/0utqMuNdfLTIR5XtoysWHLCmCgRnah6ab/M="
+  },
+  "plasma-nano": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-nano-6.0.0.tar.xz",
+    "hash": "sha256-mfxE3tTdO0TEX4k+2SIaphJt3p1Paty3JwTAOpMgfCc="
+  },
+  "plasma-nm": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-nm-6.0.0.tar.xz",
+    "hash": "sha256-Us+Wc4zur85l8YOjRXMlrrWx8YpDNs7t5aImVW5unrQ="
+  },
+  "plasma-pa": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-pa-6.0.0.tar.xz",
+    "hash": "sha256-tJq7K7dEAbIs2uHZkhAddktIOhjGAIfCAvbmlRRdAiw="
+  },
+  "plasma-sdk": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-sdk-6.0.0.tar.xz",
+    "hash": "sha256-jLLeV6og30Qzp9lRMGpjfMKErOuuKzTPpxxQ7j7eKqo="
+  },
+  "plasma-systemmonitor": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-systemmonitor-6.0.0.tar.xz",
+    "hash": "sha256-WJ/QTx/g2Wv6KXpP4D7rAVx7X4OZMlvyMyd9/nnmb5k="
+  },
+  "plasma-thunderbolt": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-thunderbolt-6.0.0.tar.xz",
+    "hash": "sha256-BHjvWduv56m0l00o8Ukcud37OZ+DHW3BulqwN1zoqJ8="
+  },
+  "plasma-vault": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-vault-6.0.0.tar.xz",
+    "hash": "sha256-ZB3XHds51dFb6E1LDCTVoODEG0zityVzj6cuWcRS7ak="
+  },
+  "plasma-welcome": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-welcome-6.0.0.tar.xz",
+    "hash": "sha256-xihVGMLHIQfGgnqdcZj5Oh8wrsb5mZPCoxHjE3/T5mw="
+  },
+  "plasma-workspace": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-workspace-6.0.0.tar.xz",
+    "hash": "sha256-R92HtMDgnBvLNBYreq4+WjuaSquhuf7Q9NaBuz+f67o="
+  },
+  "plasma-workspace-wallpapers": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plasma-workspace-wallpapers-6.0.0.tar.xz",
+    "hash": "sha256-Tde+PXqq8Bt8mmKGX/BITnSvEbJGhcVCMaMV90r2uB0="
+  },
+  "plymouth-kcm": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/plymouth-kcm-6.0.0.tar.xz",
+    "hash": "sha256-D79i6jP593fdbe4JPQlALUtNmF2Ghuc1S7xDavqJLeM="
+  },
+  "polkit-kde-agent-1": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/polkit-kde-agent-1-6.0.0.tar.xz",
+    "hash": "sha256-LM/EGoPP74ybMxH+H5OrUtBi9jsPblpjsIJA7RFTqk4="
+  },
+  "powerdevil": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/powerdevil-6.0.0.tar.xz",
+    "hash": "sha256-EmNCdg4bjKS5j6hXmryqQVuFnX1tGAKzagJWSGcssFA="
+  },
+  "print-manager": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/print-manager-6.0.0.tar.xz",
+    "hash": "sha256-vZBXi5HmyQoTxa/PlLwW1XvHo7feiURb+gFfDE54FP0="
+  },
+  "qqc2-breeze-style": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/qqc2-breeze-style-6.0.0.tar.xz",
+    "hash": "sha256-pDDhl8ITxJif4Q/CSeTwrkYu4dP11vvJWPQus4sEySc="
+  },
+  "sddm-kcm": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/sddm-kcm-6.0.0.tar.xz",
+    "hash": "sha256-iBIFJOqFFY5nhPNSP7cGQ8KmXBn+cu4NXwQAc6wih48="
+  },
+  "systemsettings": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/systemsettings-6.0.0.tar.xz",
+    "hash": "sha256-Vh+QE7oHBxwK3Xd4WOyF1AqN3fzIOhD18Ess4QFmZrw="
+  },
+  "wacomtablet": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/wacomtablet-6.0.0.tar.xz",
+    "hash": "sha256-1/MYJz6HWKOiJAFuEJMIc/uO1wnZzWrMJm1lp47k0Ww="
+  },
+  "xdg-desktop-portal-kde": {
+    "version": "6.0.0",
+    "url": "mirror://kde/stable/plasma/6.0.0/xdg-desktop-portal-kde-6.0.0.tar.xz",
+    "hash": "sha256-xW7ePlFI33RoOWGLdLCuOPsPtrEM0Eo1xxvJL41X3Wo="
+  }
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix b/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix
new file mode 100644
index 000000000000..ddada8fb77f0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/lib/mk-kde-derivation.nix
@@ -0,0 +1,126 @@
+self: {
+  lib,
+  stdenv,
+  makeSetupHook,
+  fetchurl,
+  cmake,
+  qt6,
+}: let
+  dependencies = (lib.importJSON ../generated/dependencies.json).dependencies;
+  projectInfo = lib.importJSON ../generated/projects.json;
+
+  licenseInfo = lib.importJSON ../generated/licenses.json;
+  licensesBySpdxId =
+    (lib.mapAttrs' (_: v: {
+        name = v.spdxId or "unknown";
+        value = v;
+      })
+      lib.licenses)
+    // {
+      # https://community.kde.org/Policies/Licensing_Policy
+      "LicenseRef-KDE-Accepted-GPL" = lib.licenses.gpl3Plus;
+      "LicenseRef-KFQF-Accepted-GPL" = lib.licenses.gpl3Plus;
+      "LicenseRef-KDE-Accepted-LGPL" = lib.licenses.lgpl3Plus;
+
+      # https://sjfonts.sourceforge.net/
+      "LicenseRef-SJFonts" = lib.licenses.gpl2Plus;
+
+      # https://invent.kde.org/education/kiten/-/blob/master/LICENSES/LicenseRef-EDRDG.txt
+      "LicenseRef-EDRDG" = lib.licenses.cc-by-sa-30;
+
+      # https://invent.kde.org/kdevelop/kdevelop/-/blob/master/LICENSES/LicenseRef-MIT-KDevelop-Ideal.txt
+      "LicenseRef-MIT-KDevelop-Ideal" = lib.licenses.mit;
+
+      "FSFAP" = {
+        spdxId = "FSFAP";
+        fullName = "FSF All Permissive License";
+      };
+
+      "FSFULLR" = {
+        spdxId = "FSFULLR";
+        fullName = "FSF Unlimited License (with License Retention)";
+      };
+
+      "W3C-20150513" = {
+        spdxId = "W3C-20150513";
+        fullName = "W3C Software Notice and Document License (2015-05-13)";
+      };
+
+      # Technically not exact
+      "bzip2-1.0.6" = lib.licenses.bsdOriginal;
+
+      # FIXME: typo lol
+      "ICS" = lib.licenses.isc;
+
+      # These are only relevant to Qt commercial users
+      "Qt-Commercial-exception-1.0" = null;
+      "LicenseRef-Qt-Commercial" = null;
+      "LicenseRef-Qt-Commercial-exception-1.0" = null;
+
+      # FIXME: ???
+      "Qt-GPL-exception-1.0" = null;
+      "LicenseRef-Qt-LGPL-exception-1.0" = null;
+      "Qt-LGPL-exception-1.1" = null;
+      "LicenseRef-Qt-exception" = null;
+      "GCC-exception-3.1" = null;
+      "Bison-exception-2.2" = null;
+      "Font-exception-2.0" = null;
+      None = null;
+    };
+
+  moveDevHook = makeSetupHook {name = "kf6-move-dev-hook";} ./move-dev-hook.sh;
+in
+  {
+    pname,
+    version ? self.sources.${pname}.version,
+    src ? self.sources.${pname},
+    extraBuildInputs ? [],
+    extraNativeBuildInputs ? [],
+    extraPropagatedBuildInputs ? [],
+    extraCmakeFlags ? [],
+    meta ? {},
+    ...
+  } @ args: let
+    # FIXME(later): this is wrong for cross, some of these things really need to go into nativeBuildInputs,
+    # but cross is currently very broken anyway, so we can figure this out later.
+    deps = map (dep: self.${dep}) (dependencies.${pname} or []);
+
+    defaultArgs = {
+      inherit version src;
+
+      outputs = ["out" "dev"];
+
+      nativeBuildInputs = [cmake qt6.wrapQtAppsHook moveDevHook] ++ extraNativeBuildInputs;
+      buildInputs = [qt6.qtbase] ++ extraBuildInputs;
+
+      # FIXME: figure out what to propagate here
+      propagatedBuildInputs = deps ++ extraPropagatedBuildInputs;
+      strictDeps = true;
+
+      dontFixCmake = true;
+      cmakeFlags = ["-DQT_MAJOR_VERSION=6"] ++ extraCmakeFlags;
+
+      separateDebugInfo = true;
+
+      meta =
+        {
+          description = projectInfo.${pname}.description;
+          homepage = "https://invent.kde.org/${projectInfo.${pname}.repo_path}";
+          license = lib.filter (l: l != null) (map (l: licensesBySpdxId.${l}) licenseInfo.${pname});
+          maintainers = lib.teams.qt-kde.members;
+          # Platforms are currently limited to what upstream tests in CI, but can be extended if
+          # there's interest.
+          platforms = lib.platforms.linux ++ lib.platforms.freebsd;
+        }
+        // meta;
+    };
+
+    cleanArgs = builtins.removeAttrs args [
+      "extraBuildInputs"
+      "extraNativeBuildInputs"
+      "extraPropagatedBuildInputs"
+      "extraCmakeFlags"
+      "meta"
+    ];
+  in
+    stdenv.mkDerivation (defaultArgs // cleanArgs)
diff --git a/nixpkgs/pkgs/kde/lib/move-dev-hook.sh b/nixpkgs/pkgs/kde/lib/move-dev-hook.sh
new file mode 100644
index 000000000000..da5770e1bba1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/lib/move-dev-hook.sh
@@ -0,0 +1,8 @@
+# shellcheck shell=bash
+# shellcheck disable=SC2154
+
+moveKF6DevTools() {
+    moveToOutput "${qtPluginPrefix}/designer" "${!outputDev}"
+}
+
+postInstallHooks+=('moveKF6DevTools')
diff --git a/nixpkgs/pkgs/kde/misc/alpaka/default.nix b/nixpkgs/pkgs/kde/misc/alpaka/default.nix
new file mode 100644
index 000000000000..6e4154c495d8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/alpaka/default.nix
@@ -0,0 +1,25 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchFromGitLab,
+}:
+mkKdeDerivation {
+  pname = "alpaka";
+  version = "unstable-2024-02-27";
+
+  src = fetchFromGitLab {
+    domain = "invent.kde.org";
+    owner = "utilities";
+    repo = "alpaka";
+    rev = "64ef70f062920e2d62b5a9337485ccbf0eb86b97";
+    hash = "sha256-YDn86+byjvCK525EQsGTCKf88Ovhvii848nTJHGP1bg=";
+  };
+
+  meta.license = with lib.licenses; [
+    bsd3
+    cc0
+    gpl2Only
+    gpl2Plus
+    gpl3Only
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kdiagram/default.nix b/nixpkgs/pkgs/kde/misc/kdiagram/default.nix
new file mode 100644
index 000000000000..f396db7a3378
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kdiagram/default.nix
@@ -0,0 +1,20 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  qttools,
+  qtsvg,
+}:
+mkKdeDerivation rec {
+  pname = "kdiagram";
+  version = "3.0.1";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kdiagram/${version}/kdiagram-${version}.tar.xz";
+    hash = "sha256-Rlmwws2dsYFD9avZyAYJHDqrarwalWu/goFas9MYnG0=";
+  };
+
+  extraNativeBuildInputs = [qttools qtsvg];
+
+  meta.license = [lib.licenses.gpl2];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kdsoap-ws-discovery-client/default.nix b/nixpkgs/pkgs/kde/misc/kdsoap-ws-discovery-client/default.nix
new file mode 100644
index 000000000000..f4c2637a9600
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kdsoap-ws-discovery-client/default.nix
@@ -0,0 +1,19 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  doxygen,
+}:
+mkKdeDerivation rec {
+  pname = "kdsoap-ws-discovery-client";
+  version = "0.4.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kdsoap-ws-discovery-client/kdsoap-ws-discovery-client-${version}.tar.xz";
+    hash = "sha256-LNJHwBPnX0EGWbrDcq/5PSLXHFpUwFnhN7lESvizQno=";
+  };
+
+  extraNativeBuildInputs = [doxygen];
+
+  meta.license = [lib.licenses.gpl3Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kio-fuse/default.nix b/nixpkgs/pkgs/kde/misc/kio-fuse/default.nix
new file mode 100644
index 000000000000..b5461fd02de0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kio-fuse/default.nix
@@ -0,0 +1,21 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  pkg-config,
+  fuse3,
+}:
+mkKdeDerivation rec {
+  pname = "kio-fuse";
+  version = "5.1.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kio-fuse/kio-fuse-${version}.tar.xz";
+    hash = "sha256-fRBFgSJ9Whm0JLM/QWjRgVVrEBXW3yIY4BqI1kRJ6Us=";
+  };
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [fuse3];
+
+  meta.license = with lib.licenses; [gpl3Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kirigami-addons/default.nix b/nixpkgs/pkgs/kde/misc/kirigami-addons/default.nix
new file mode 100644
index 000000000000..14852d56f5b1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kirigami-addons/default.nix
@@ -0,0 +1,31 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  qtdeclarative,
+  qt5compat,
+}:
+mkKdeDerivation rec {
+  pname = "kirigami-addons";
+  version = "1.0.1";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kirigami-addons/kirigami-addons-${version}.tar.xz";
+    hash = "sha256-nQE4R++wBIxqJ5nuDtKBsU7uFTFKwg1/uoUxl+RfKbc=";
+  };
+
+  extraBuildInputs = [qtdeclarative];
+  extraPropagatedBuildInputs = [qt5compat];
+
+  meta.license = with lib.licenses; [
+    bsd2
+    cc-by-sa-40
+    cc0
+    gpl2Plus
+    lgpl2Only
+    lgpl2Plus
+    lgpl21Only
+    lgpl21Plus
+    lgpl3Only
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/misc/ktextaddons/default.nix b/nixpkgs/pkgs/kde/misc/ktextaddons/default.nix
new file mode 100644
index 000000000000..086608f2b662
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/ktextaddons/default.nix
@@ -0,0 +1,27 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  qtspeech,
+  qttools,
+  kxmlgui,
+}:
+mkKdeDerivation rec {
+  pname = "ktextaddons";
+  version = "1.5.3";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/ktextaddons/ktextaddons-${version}.tar.xz";
+    hash = "sha256-ilLbir+oqdaNLSkfsPi+IGWf14mZh7Tcr98kaNsJF9w=";
+  };
+
+  extraBuildInputs = [qtspeech qttools kxmlgui];
+
+  meta.license = with lib.licenses; [
+    bsd3
+    cc0
+    gpl2Plus
+    lgpl2Plus
+    lgpl21Plus
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kunifiedpush/default.nix b/nixpkgs/pkgs/kde/misc/kunifiedpush/default.nix
new file mode 100644
index 000000000000..54f902913901
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kunifiedpush/default.nix
@@ -0,0 +1,24 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchFromGitLab,
+  qtwebsockets,
+  kdeclarative,
+  kpackage,
+}:
+mkKdeDerivation {
+  pname = "kunifiedpush";
+  version = "unstable-2024-02-19";
+
+  src = fetchFromGitLab {
+    domain = "invent.kde.org";
+    owner = "libraries";
+    repo = "kunifiedpush";
+    rev = "b89a31fb4f333a4e5d6c475a030147c8bdcffec6";
+    hash = "sha256-bhlsEP7cLuA6Rj6nrpp5iC3uolc02twNMLsWl+d/BXo=";
+  };
+
+  extraBuildInputs = [qtwebsockets kdeclarative kpackage];
+
+  meta.license = with lib.licenses; [bsd2 bsd3 cc0 lgpl2Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/kweathercore/default.nix b/nixpkgs/pkgs/kde/misc/kweathercore/default.nix
new file mode 100644
index 000000000000..31dbf598dcfd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/kweathercore/default.nix
@@ -0,0 +1,19 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  qtpositioning,
+}:
+mkKdeDerivation rec {
+  pname = "kweathercore";
+  version = "0.8.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/kweathercore/${version}/kweathercore-${version}.tar.xz";
+    hash = "sha256-m8rBPa+YcF4vDVsGshoahpSWIHj84b9iDbvDZIc6Dv4=";
+  };
+
+  extraBuildInputs = [qtpositioning];
+
+  meta.license = with lib.licenses; [cc-by-40 cc0 lgpl2Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/mpvqt/default.nix b/nixpkgs/pkgs/kde/misc/mpvqt/default.nix
new file mode 100644
index 000000000000..4ec52aba0793
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/mpvqt/default.nix
@@ -0,0 +1,23 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchFromGitLab,
+  mpv,
+  qtdeclarative,
+}:
+mkKdeDerivation rec {
+  pname = "mpvqt";
+  version = "1.0.0";
+
+  src = fetchFromGitLab {
+    domain = "invent.kde.org";
+    owner = "libraries";
+    repo = "mpvqt";
+    rev = "v${version}";
+    hash = "sha256-XHiCxH7dJxJamloM2SJbiFHDt8j4rVfv/M9PaBzvgM4=";
+  };
+
+  extraBuildInputs = [mpv qtdeclarative];
+
+  meta.license = with lib.licenses; [bsd2 bsd3 cc-by-sa-40 cc0 lgpl21Only lgpl3Only lgpl3Plus mit];
+}
diff --git a/nixpkgs/pkgs/kde/misc/oxygen-icons/default.nix b/nixpkgs/pkgs/kde/misc/oxygen-icons/default.nix
new file mode 100644
index 000000000000..91144f0c0bcf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/oxygen-icons/default.nix
@@ -0,0 +1,18 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+}:
+mkKdeDerivation rec {
+  pname = "oxygen-icons";
+  version = "6.0.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/oxygen-icons/oxygen-icons-${version}.tar.xz";
+    hash = "sha256-KOwYKHXcwV2SePRc7RECaqOSR28fRUhxueLINwCOV3Q=";
+  };
+
+  dontStrip = true;
+
+  meta.license = [lib.licenses.lgpl3Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/phonon-vlc/default.nix b/nixpkgs/pkgs/kde/misc/phonon-vlc/default.nix
new file mode 100644
index 000000000000..bd828172bf8d
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/phonon-vlc/default.nix
@@ -0,0 +1,23 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  qttools,
+  libvlc,
+}:
+mkKdeDerivation rec {
+  pname = "phonon-vlc";
+  version = "0.12.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/phonon/phonon-backend-vlc/${version}/phonon-backend-vlc-${version}.tar.xz";
+    hash = "sha256-M4R53EUeS5SzyltXje90Hc+C9cYmooB9NiNb4tznyaU=";
+  };
+
+  extraNativeBuildInputs = [qttools];
+  extraBuildInputs = [libvlc];
+
+  cmakeFlags = ["-DPHONON_BUILD_QT5=0" "-DPHONON_BUILD_QT6=1"];
+
+  meta.license = with lib.licenses; [lgpl21Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/phonon/default.nix b/nixpkgs/pkgs/kde/misc/phonon/default.nix
new file mode 100644
index 000000000000..4706dd159ea5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/phonon/default.nix
@@ -0,0 +1,36 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  libGLU,
+  libGL,
+  pkg-config,
+  libpulseaudio,
+  qt5compat,
+  qttools,
+}:
+mkKdeDerivation rec {
+  pname = "phonon";
+  version = "4.12.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/phonon/${version}/phonon-${version}.tar.xz";
+    hash = "sha256-Mof/4PvMLUqhNj+eFXRzAtCwgAkP525fIR2AnstD85o=";
+  };
+
+  extraBuildInputs = [
+    libGLU
+    libGL
+    libpulseaudio
+    qt5compat
+  ];
+
+  extraNativeBuildInputs = [
+    pkg-config
+    qttools
+  ];
+
+  cmakeFlags = ["-DPHONON_BUILD_QT5=0" "-DPHONON_BUILD_QT6=1"];
+
+  meta.license = with lib.licenses; [lgpl21Plus gpl2Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/polkit-qt-1/default.nix b/nixpkgs/pkgs/kde/misc/polkit-qt-1/default.nix
new file mode 100644
index 000000000000..432cc5da8059
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/polkit-qt-1/default.nix
@@ -0,0 +1,24 @@
+{
+  mkKdeDerivation,
+  lib,
+  fetchurl,
+  pkg-config,
+  polkit,
+  glib,
+}:
+mkKdeDerivation rec {
+  pname = "polkit-qt-1";
+  version = "0.200.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/polkit-qt-1/polkit-qt-1-${version}.tar.xz";
+    sha256 = "sha256-XTthHAYtK3apN1C7EMkHv9IdH/CNChXcLPY+J44Wd/s=";
+  };
+
+  patches = [./full-paths.patch];
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [glib polkit];
+
+  meta.license = with lib.licenses; [bsd3 gpl2Plus lgpl2Plus];
+}
diff --git a/nixpkgs/pkgs/kde/misc/polkit-qt-1/full-paths.patch b/nixpkgs/pkgs/kde/misc/polkit-qt-1/full-paths.patch
new file mode 100644
index 000000000000..72654d2d8ca9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/polkit-qt-1/full-paths.patch
@@ -0,0 +1,184 @@
+diff --git a/PolkitQt-1Config.cmake.in b/PolkitQt-1Config.cmake.in
+index e09678c..57d465a 100644
+--- a/PolkitQt-1Config.cmake.in
++++ b/PolkitQt-1Config.cmake.in
+@@ -20,9 +20,9 @@ if(NOT POLKITQT-1_INSTALL_DIR)
+    set(POLKITQT-1_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@")
+ endif(NOT POLKITQT-1_INSTALL_DIR)
+ 
+-set_and_check(POLKITQT-1_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@")
++set_and_check(POLKITQT-1_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@")
+ set_and_check(POLKITQT-1_INCLUDE_DIRS "${POLKITQT-1_INCLUDE_DIR}")
+-set_and_check(POLKITQT-1_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
++set_and_check(POLKITQT-1_LIB_DIR "@CMAKE_INSTALL_FULL_LIBDIR@")
+ set(POLKITQT-1_POLICY_FILES_INSTALL_DIR "${POLKITQT-1_INSTALL_DIR}/share/polkit-1/actions")
+ ##################################
+ 
+diff --git a/polkit-qt-1.pc.cmake b/polkit-qt-1.pc.cmake
+index ba8e46e..2d7ea64 100644
+--- a/polkit-qt-1.pc.cmake
++++ b/polkit-qt-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API
+diff --git a/polkit-qt-agent-1.pc.cmake b/polkit-qt-agent-1.pc.cmake
+index 23b2cae..86670a7 100644
+--- a/polkit-qt-agent-1.pc.cmake
++++ b/polkit-qt-agent-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_AGENT_PCNAME@
+ Description: Convenience library for using polkit Agent with a Qt-styled API
+diff --git a/polkit-qt-core-1.pc.cmake b/polkit-qt-core-1.pc.cmake
+index fa501f0..61faa63 100644
+--- a/polkit-qt-core-1.pc.cmake
++++ b/polkit-qt-core-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_CORE_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, non-GUI classes
+diff --git a/polkit-qt-gui-1.pc.cmake b/polkit-qt-gui-1.pc.cmake
+index 7261b0c..8c633bb 100644
+--- a/polkit-qt-gui-1.pc.cmake
++++ b/polkit-qt-gui-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_GUI_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, GUI classes
+diff --git a/polkit-qt5-1.pc.cmake b/polkit-qt5-1.pc.cmake
+index ba8e46e..2d7ea64 100644
+--- a/polkit-qt5-1.pc.cmake
++++ b/polkit-qt5-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API
+diff --git a/polkit-qt5-agent-1.pc.cmake b/polkit-qt5-agent-1.pc.cmake
+index 60b22d5..ee8b80b 100644
+--- a/polkit-qt5-agent-1.pc.cmake
++++ b/polkit-qt5-agent-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_AGENT_PCNAME@
+ Description: Convenience library for using polkit Agent with a Qt-styled API
+diff --git a/polkit-qt5-core-1.pc.cmake b/polkit-qt5-core-1.pc.cmake
+index 2f5d562..387c64b 100644
+--- a/polkit-qt5-core-1.pc.cmake
++++ b/polkit-qt5-core-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_CORE_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, non-GUI classes
+diff --git a/polkit-qt5-gui-1.pc.cmake b/polkit-qt5-gui-1.pc.cmake
+index 1d208fb..dd95f52 100644
+--- a/polkit-qt5-gui-1.pc.cmake
++++ b/polkit-qt5-gui-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_GUI_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, GUI classes
+diff --git a/polkit-qt6-1.pc.cmake b/polkit-qt6-1.pc.cmake
+index ba8e46e..2d7ea64 100644
+--- a/polkit-qt6-1.pc.cmake
++++ b/polkit-qt6-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API
+diff --git a/polkit-qt6-agent-1.pc.cmake b/polkit-qt6-agent-1.pc.cmake
+index 60b22d5..ee8b80b 100644
+--- a/polkit-qt6-agent-1.pc.cmake
++++ b/polkit-qt6-agent-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_AGENT_PCNAME@
+ Description: Convenience library for using polkit Agent with a Qt-styled API
+diff --git a/polkit-qt6-core-1.pc.cmake b/polkit-qt6-core-1.pc.cmake
+index 2f5d562..387c64b 100644
+--- a/polkit-qt6-core-1.pc.cmake
++++ b/polkit-qt6-core-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_CORE_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, non-GUI classes
+diff --git a/polkit-qt6-gui-1.pc.cmake b/polkit-qt6-gui-1.pc.cmake
+index 1d208fb..dd95f52 100644
+--- a/polkit-qt6-gui-1.pc.cmake
++++ b/polkit-qt6-gui-1.pc.cmake
+@@ -1,7 +1,7 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
+-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/@POLKITQT-1_INCLUDE_PATH@
+ 
+ Name: @POLKITQT-1_GUI_PCNAME@
+ Description: Convenience library for using polkit with a Qt-styled API, GUI classes
diff --git a/nixpkgs/pkgs/kde/misc/pulseaudio-qt/default.nix b/nixpkgs/pkgs/kde/misc/pulseaudio-qt/default.nix
new file mode 100644
index 000000000000..7f4ee4a39b41
--- /dev/null
+++ b/nixpkgs/pkgs/kde/misc/pulseaudio-qt/default.nix
@@ -0,0 +1,21 @@
+{
+  lib,
+  mkKdeDerivation,
+  fetchurl,
+  pkg-config,
+  pulseaudio,
+}:
+mkKdeDerivation rec {
+  pname = "pulseaudio-qt";
+  version = "1.4.0";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/pulseaudio-qt/pulseaudio-qt-${version}.tar.xz";
+    hash = "sha256-2MpiTs8hMIVrhZz5NBF39v74xR8g93KNgH0JxxUO0GU=";
+  };
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [pulseaudio];
+
+  meta.license = with lib.licenses; [lgpl21Only lgpl3Only];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/bluedevil/default.nix b/nixpkgs/pkgs/kde/plasma/bluedevil/default.nix
new file mode 100644
index 000000000000..993d121d1f37
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/bluedevil/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  shared-mime-info,
+}:
+mkKdeDerivation {
+  pname = "bluedevil";
+
+  extraNativeBuildInputs = [shared-mime-info];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/breeze-grub/default.nix b/nixpkgs/pkgs/kde/plasma/breeze-grub/default.nix
new file mode 100644
index 000000000000..a5fe01b4cad7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze-grub/default.nix
@@ -0,0 +1,17 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "breeze-grub";
+
+  # doesn't actually use cmake or anything
+  nativeBuildInputs = [];
+  buildInputs = [];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p "$out/grub/themes"
+    mv breeze "$out/grub/themes"
+
+    runHook postInstall
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/plasma/breeze-gtk/0001-fix-add-executable-bit.patch b/nixpkgs/pkgs/kde/plasma/breeze-gtk/0001-fix-add-executable-bit.patch
new file mode 100644
index 000000000000..8ed822220598
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze-gtk/0001-fix-add-executable-bit.patch
@@ -0,0 +1,25 @@
+From da6a4651f74625f4c7f3c31f1125cfa4e774780b Mon Sep 17 00:00:00 2001
+From: Yaroslav Bolyukin <iam@lach.pw>
+Date: Mon, 27 Sep 2021 22:45:58 +0300
+Subject: [PATCH] fix: add executable bit
+
+Signed-off-by: Yaroslav Bolyukin <iam@lach.pw>
+---
+ src/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 79ff12d..4f3d746 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -2,7 +2,7 @@ file(GLOB_RECURSE SCSS_SOURCES "*.scss")
+ file(GLOB CSS_SOURCES "*.css")
+ file(GLOB_RECURSE GTK2_SOURCES "gtk2/*")
+ 
+-configure_file(build_theme.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/build_theme.sh @ONLY)
++configure_file(build_theme.sh.cmake ${CMAKE_CURRENT_BINARY_DIR}/build_theme.sh FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @ONLY)
+ 
+ set(SOURCES
+     ${SCSS_SOURCES}
+-- 
+2.33.0
diff --git a/nixpkgs/pkgs/kde/plasma/breeze-gtk/default.nix b/nixpkgs/pkgs/kde/plasma/breeze-gtk/default.nix
new file mode 100644
index 000000000000..fc0bc4759d48
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze-gtk/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  sass,
+  python3,
+  python3Packages,
+}:
+mkKdeDerivation {
+  pname = "breeze-gtk";
+
+  # FIXME(later): upstream
+  patches = [./0001-fix-add-executable-bit.patch];
+
+  extraNativeBuildInputs = [sass python3 python3Packages.pycairo];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/breeze-plymouth/default.nix b/nixpkgs/pkgs/kde/plasma/breeze-plymouth/default.nix
new file mode 100644
index 000000000000..7551eca94e3a
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze-plymouth/default.nix
@@ -0,0 +1,52 @@
+{
+  lib,
+  mkKdeDerivation,
+  pkg-config,
+  plymouth,
+  imagemagick,
+  netpbm,
+  perl,
+  logoName ? null,
+  logoFile ? null,
+  osName ? null,
+  osVersion ? null,
+  topColor ? "black",
+  bottomColor ? "black",
+}: let
+  validColors = ["black" "cardboard_grey" "charcoal_grey" "icon_blue" "paper_white" "plasma_blue" "neon_blue" "neon_green"];
+  resolvedLogoName =
+    if (logoFile != null && logoName == null)
+    then lib.strings.removeSuffix ".png" (baseNameOf (toString logoFile))
+    else logoName;
+in
+  assert lib.asserts.assertOneOf "topColor" topColor validColors;
+  assert lib.asserts.assertOneOf "bottomColor" bottomColor validColors;
+    mkKdeDerivation {
+      pname = "breeze-plymouth";
+
+      # FIXME(later): discuss with upstream
+      patches = [./install-paths.patch];
+
+      extraNativeBuildInputs = [pkg-config] ++ lib.optionals (logoFile != null) [imagemagick netpbm perl];
+      extraBuildInputs = [plymouth];
+
+      extraCmakeFlags =
+        []
+        ++ lib.optional (osName != null) "-DDISTRO_NAME=${osName}"
+        ++ lib.optional (osVersion != null) "-DDISTRO_VERSION=${osVersion}"
+        ++ lib.optional (logoName != null) "-DDISTRO_LOGO=${logoName}"
+        ++ lib.optional (topColor != null) "-DBACKGROUND_TOP_COLOR=${topColor}"
+        ++ lib.optional (bottomColor != null) "-DBACKGROUND_BOTTOM_COLOR=${bottomColor}";
+
+      postPatch =
+        ''
+          substituteInPlace cmake/FindPlymouth.cmake --subst-var out
+        ''
+        + lib.optionalString (logoFile != null) ''
+          cp ${logoFile} breeze/images/${resolvedLogoName}.logo.png
+
+          # conversion for 16bit taken from the breeze-plymouth readme
+          convert ${logoFile} -alpha Background -background "#000000" -fill "#000000" -flatten tmp.png
+          pngtopnm tmp.png | pnmquant 16 | pnmtopng > breeze/images/16bit/${resolvedLogoName}.logo.png
+        '';
+    }
diff --git a/nixpkgs/pkgs/kde/plasma/breeze-plymouth/install-paths.patch b/nixpkgs/pkgs/kde/plasma/breeze-plymouth/install-paths.patch
new file mode 100644
index 000000000000..5d5856d122dd
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze-plymouth/install-paths.patch
@@ -0,0 +1,19 @@
+Index: breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake
+===================================================================
+--- breeze-plymouth-5.7.3.orig/cmake/FindPlymouth.cmake
++++ breeze-plymouth-5.7.3/cmake/FindPlymouth.cmake
+@@ -24,12 +24,8 @@
+ include(FindPkgConfig)
+ 
+ pkg_check_modules(Plymouth ply-boot-client ply-splash-core)
+-exec_program(${PKG_CONFIG_EXECUTABLE}
+-    ARGS ply-splash-core --variable=pluginsdir
+-    OUTPUT_VARIABLE Plymouth_PLUGINSDIR)
+-exec_program(${PKG_CONFIG_EXECUTABLE}
+-    ARGS ply-splash-core --variable=themesdir
+-    OUTPUT_VARIABLE Plymouth_THEMESDIR)
++set(Plymouth_PLUGINSDIR "@out@/lib/plymouth")
++set(Plymouth_THEMESDIR "@out@/share/plymouth/themes")
+ 
+ find_package_handle_standard_args(Plymouth
+     FOUND_VAR
diff --git a/nixpkgs/pkgs/kde/plasma/breeze/default.nix b/nixpkgs/pkgs/kde/plasma/breeze/default.nix
new file mode 100644
index 000000000000..72dcbcae91f4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/breeze/default.nix
@@ -0,0 +1,44 @@
+{
+  mkKdeDerivation,
+  qtbase,
+  libsForQt5,
+}:
+mkKdeDerivation {
+  pname = "breeze";
+
+  outputs = ["out" "dev" "qt5"];
+
+  # We can't add qt5 stuff to dependencies or the hooks blow up,
+  # so manually point everything to everything. Oof.
+  extraCmakeFlags = [
+    "-DQt5_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5"
+    "-DQt5Core_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Core"
+    "-DQt5DBus_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5DBus"
+    "-DQt5Gui_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Gui"
+    "-DQt5Network_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Network"
+    "-DQt5Qml_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Qml"
+    "-DQt5QmlModels_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5QmlModels"
+    "-DQt5Quick_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Quick"
+    "-DQt5Widgets_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Widgets"
+    "-DQt5X11Extras_DIR=${libsForQt5.qtx11extras.dev}/lib/cmake/Qt5X11Extras"
+    "-DQt5Xml_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Xml"
+
+    "-DKF5Auth_DIR=${libsForQt5.kauth.dev}/lib/cmake/KF5Auth"
+    "-DKF5Codecs_DIR=${libsForQt5.kcodecs.dev}/lib/cmake/KF5Codecs"
+    "-DKF5Config_DIR=${libsForQt5.kconfig.dev}/lib/cmake/KF5Config"
+    "-DKF5ConfigWidgets_DIR=${libsForQt5.kconfigwidgets.dev}/lib/cmake/KF5ConfigWidgets"
+    "-DKF5CoreAddons_DIR=${libsForQt5.kcoreaddons.dev}/lib/cmake/KF5CoreAddons"
+    "-DKF5FrameworkIntegration_DIR=${libsForQt5.frameworkintegration.dev}/lib/cmake/KF5FrameworkIntegration"
+    "-DKF5GuiAddons_DIR=${libsForQt5.kguiaddons.dev}/lib/cmake/KF5GuiAddons"
+    "-DKF5IconThemes_DIR=${libsForQt5.kiconthemes.dev}/lib/cmake/KF5IconThemes"
+    "-DKF5Kirigami2_DIR=${libsForQt5.kirigami2.dev}/lib/cmake/KF5Kirigami2"
+    "-DKF5WidgetsAddons_DIR=${libsForQt5.kwidgetsaddons.dev}/lib/cmake/KF5WidgetsAddons"
+    "-DKF5WindowSystem_DIR=${libsForQt5.kwindowsystem.dev}/lib/cmake/KF5WindowSystem"
+  ];
+
+  # Move Qt5 plugin to Qt5 plugin path
+  postInstall = ''
+    mkdir -p $qt5/${libsForQt5.qtbase.qtPluginPrefix}/styles
+    mv $out/${qtbase.qtPluginPrefix}/styles/breeze5.so $qt5/${libsForQt5.qtbase.qtPluginPrefix}/styles
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/plasma/default.nix b/nixpkgs/pkgs/kde/plasma/default.nix
new file mode 100644
index 000000000000..b50dc05b2fa4
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/default.nix
@@ -0,0 +1,65 @@
+{callPackage}: {
+  bluedevil = callPackage ./bluedevil {};
+  breeze = callPackage ./breeze {};
+  breeze-grub = callPackage ./breeze-grub {};
+  breeze-gtk = callPackage ./breeze-gtk {};
+  breeze-plymouth = callPackage ./breeze-plymouth {};
+  discover = callPackage ./discover {};
+  drkonqi = callPackage ./drkonqi {};
+  flatpak-kcm = callPackage ./flatpak-kcm {};
+  kactivitymanagerd = callPackage ./kactivitymanagerd {};
+  kde-cli-tools = callPackage ./kde-cli-tools {};
+  kdecoration = callPackage ./kdecoration {};
+  kde-gtk-config = callPackage ./kde-gtk-config {};
+  kdeplasma-addons = callPackage ./kdeplasma-addons {};
+  kgamma = callPackage ./kgamma {};
+  kglobalacceld = callPackage ./kglobalacceld {};
+  kinfocenter = callPackage ./kinfocenter {};
+  kmenuedit = callPackage ./kmenuedit {};
+  kpipewire = callPackage ./kpipewire {};
+  kscreen = callPackage ./kscreen {};
+  kscreenlocker = callPackage ./kscreenlocker {};
+  ksshaskpass = callPackage ./ksshaskpass {};
+  ksystemstats = callPackage ./ksystemstats {};
+  kwallet-pam = callPackage ./kwallet-pam {};
+  kwayland = callPackage ./kwayland {};
+  kwayland-integration = callPackage ./kwayland-integration {};
+  kwin = callPackage ./kwin {};
+  kwrited = callPackage ./kwrited {};
+  layer-shell-qt = callPackage ./layer-shell-qt {};
+  libkscreen = callPackage ./libkscreen {};
+  libksysguard = callPackage ./libksysguard {};
+  libplasma = callPackage ./libplasma {};
+  milou = callPackage ./milou {};
+  ocean-sound-theme = callPackage ./ocean-sound-theme {};
+  oxygen = callPackage ./oxygen {};
+  oxygen-sounds = callPackage ./oxygen-sounds {};
+  plasma5support = callPackage ./plasma5support {};
+  plasma-activities = callPackage ./plasma-activities {};
+  plasma-activities-stats = callPackage ./plasma-activities-stats {};
+  plasma-browser-integration = callPackage ./plasma-browser-integration {};
+  plasma-desktop = callPackage ./plasma-desktop {};
+  plasma-disks = callPackage ./plasma-disks {};
+  plasma-firewall = callPackage ./plasma-firewall {};
+  plasma-integration = callPackage ./plasma-integration {};
+  plasma-mobile = callPackage ./plasma-mobile {};
+  plasma-nano = callPackage ./plasma-nano {};
+  plasma-nm = callPackage ./plasma-nm {};
+  plasma-pa = callPackage ./plasma-pa {};
+  plasma-sdk = callPackage ./plasma-sdk {};
+  plasma-systemmonitor = callPackage ./plasma-systemmonitor {};
+  plasma-thunderbolt = callPackage ./plasma-thunderbolt {};
+  plasma-vault = callPackage ./plasma-vault {};
+  plasma-welcome = callPackage ./plasma-welcome {};
+  plasma-workspace = callPackage ./plasma-workspace {};
+  plasma-workspace-wallpapers = callPackage ./plasma-workspace-wallpapers {};
+  plymouth-kcm = callPackage ./plymouth-kcm {};
+  polkit-kde-agent-1 = callPackage ./polkit-kde-agent-1 {};
+  powerdevil = callPackage ./powerdevil {};
+  print-manager = callPackage ./print-manager {};
+  qqc2-breeze-style = callPackage ./qqc2-breeze-style {};
+  sddm-kcm = callPackage ./sddm-kcm {};
+  systemsettings = callPackage ./systemsettings {};
+  wacomtablet = callPackage ./wacomtablet {};
+  xdg-desktop-portal-kde = callPackage ./xdg-desktop-portal-kde {};
+}
diff --git a/nixpkgs/pkgs/kde/plasma/discover/default.nix b/nixpkgs/pkgs/kde/plasma/discover/default.nix
new file mode 100644
index 000000000000..2795f3d1414e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/discover/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtwebview,
+  pkg-config,
+  discount,
+  flatpak,
+  fwupd,
+}:
+mkKdeDerivation {
+  pname = "discover";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwebview discount flatpak fwupd];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/drkonqi/default.nix b/nixpkgs/pkgs/kde/plasma/drkonqi/default.nix
new file mode 100644
index 000000000000..392e1fae71e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/drkonqi/default.nix
@@ -0,0 +1,41 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  systemd,
+  gdb,
+  python3,
+  substituteAll,
+  coreutils,
+}: let
+  gdb' = gdb.override {
+    hostCpuOnly = true;
+    python3 = python3.withPackages (ps: [
+      ps.psutil
+      ps.pygdbmi
+      ps.sentry-sdk
+    ]);
+  };
+in
+  mkKdeDerivation {
+    pname = "drkonqi";
+
+    patches = [
+      (substituteAll {
+        src = ./gdb-path.patch;
+        gdb = "${gdb'}/bin/gdb";
+      })
+    ];
+
+    postPatch = ''
+      substituteInPlace src/coredump/processor/drkonqi-coredump-pickup.service.cmake \
+        --replace /usr/bin/sleep ${coreutils}/bin/sleep
+    '';
+
+    extraNativeBuildInputs = [pkg-config];
+    extraBuildInputs = [systemd];
+
+    extraCmakeFlags = [
+      "-DWITH_GDB12=1"
+      "-DWITH_PYTHON_VENDORING=0"
+    ];
+  }
diff --git a/nixpkgs/pkgs/kde/plasma/drkonqi/gdb-path.patch b/nixpkgs/pkgs/kde/plasma/drkonqi/gdb-path.patch
new file mode 100644
index 000000000000..a49816d96f7b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/drkonqi/gdb-path.patch
@@ -0,0 +1,28 @@
+diff --git a/src/data/debuggers/internal/gdbrc b/src/data/debuggers/internal/gdbrc
+index 9a5c8fee..c32b1510 100644
+--- a/src/data/debuggers/internal/gdbrc
++++ b/src/data/debuggers/internal/gdbrc
+@@ -72,17 +72,18 @@ Name[wa]=gdb
+ Name[x-test]=xxgdbxx
+ Name[zh_CN]=gdb
+ Name[zh_TW]=gdb
+-TryExec=gdb
++TryExec=@gdb@
++CodeName=gdb
+ Backends=KCrash|coredump-core
+ 
+ [KCrash]
+-Exec=gdb -nw -n -batch -x %preamblefile -x %tempfile -p %pid %execpath
+-ExecWithSymbolResolution=gdb -nw -n -batch --init-eval-command='set debuginfod enabled on' -x %preamblefile -x %tempfile -p %pid %execpath
++Exec=@gdb@ -nw -n -batch -x %preamblefile -x %tempfile -p %pid %execpath
++ExecWithSymbolResolution=@gdb@ -nw -n -batch --init-eval-command='set debuginfod enabled on' -x %preamblefile -x %tempfile -p %pid %execpath
+ PreambleCommands=set width 200\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble()
+ BatchCommands=thread\nthread apply all bt
+ 
+ [coredump-core]
+-Exec=gdb --nw --nx --batch --command=%preamblefile --command=%tempfile --core=%corefile %execpath
+-ExecWithSymbolResolution=gdb --nw --nx --batch --init-eval-command='set debuginfod enabled on' --command=%preamblefile --command=%tempfile --core=%corefile %execpath
++Exec=@gdb@ --nw --nx --batch --command=%preamblefile --command=%tempfile --core=%corefile %execpath
++ExecWithSymbolResolution=@gdb@ --nw --nx --batch --init-eval-command='set debuginfod enabled on' --command=%preamblefile --command=%tempfile --core=%corefile %execpath
+ PreambleCommands=set width 200\nsource %drkonqi_datadir/python/gdb_preamble/preamble.py\npy print_preamble()
+ BatchCommands=thread\nthread apply all bt
diff --git a/nixpkgs/pkgs/kde/plasma/flatpak-kcm/default.nix b/nixpkgs/pkgs/kde/plasma/flatpak-kcm/default.nix
new file mode 100644
index 000000000000..a43447a15413
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/flatpak-kcm/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtsvg,
+  flatpak,
+}:
+mkKdeDerivation {
+  pname = "flatpak-kcm";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [flatpak qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kactivitymanagerd/default.nix b/nixpkgs/pkgs/kde/plasma/kactivitymanagerd/default.nix
new file mode 100644
index 000000000000..b0d2fea109cc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kactivitymanagerd/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qt5compat,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "kactivitymanagerd";
+
+  extraBuildInputs = [qt5compat boost];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kde-cli-tools/default.nix b/nixpkgs/pkgs/kde/plasma/kde-cli-tools/default.nix
new file mode 100644
index 000000000000..cbaddad84169
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kde-cli-tools/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "kde-cli-tools";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kde-gtk-config/0001-gsettings-schemas-path.patch b/nixpkgs/pkgs/kde/plasma/kde-gtk-config/0001-gsettings-schemas-path.patch
new file mode 100644
index 000000000000..2fe4672f6757
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kde-gtk-config/0001-gsettings-schemas-path.patch
@@ -0,0 +1,21 @@
+diff --git a/kded/gtkconfig.cpp b/kded/gtkconfig.cpp
+index 5303636..199c4d5 100644
+--- a/kded/gtkconfig.cpp
++++ b/kded/gtkconfig.cpp
+@@ -41,6 +41,16 @@ GtkConfig::GtkConfig(QObject *parent, const QVariantList&) :
+     kdeglobalsConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kdeglobals")))),
+     kwinConfigWatcher(KConfigWatcher::create(KSharedConfig::openConfig(QStringLiteral("kwinrc"))))
+ {
++    // Add GSETTINGS_SCHEMAS_PATH to the front of XDG_DATA_DIRS.
++    // Normally this would be done by wrapGAppsHook, but this plugin
++    // (shared object) cannot be wrapped.
++    QByteArray xdgdata = qgetenv("XDG_DATA_DIRS");
++    if (!xdgdata.isEmpty()) {
++        xdgdata.push_front(":");
++    }
++    xdgdata.push_front(QByteArray(GSETTINGS_SCHEMAS_PATH));
++    qputenv("XDG_DATA_DIRS", xdgdata);
++
+     QDBusConnection dbus = QDBusConnection::sessionBus();
+     dbus.registerService(QStringLiteral("org.kde.GtkConfig"));
+     dbus.registerObject(QStringLiteral("/GtkConfig"), this, QDBusConnection::ExportScriptableSlots);
diff --git a/nixpkgs/pkgs/kde/plasma/kde-gtk-config/default.nix b/nixpkgs/pkgs/kde/plasma/kde-gtk-config/default.nix
new file mode 100644
index 000000000000..0101a56e93c6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kde-gtk-config/default.nix
@@ -0,0 +1,24 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  wrapGAppsHook,
+  sass,
+  qtsvg,
+  gsettings-desktop-schemas,
+}:
+mkKdeDerivation {
+  pname = "kde-gtk-config";
+
+  # The gtkconfig KDED module will crash the daemon if the GSettings schemas
+  # aren't found.
+  patches = [./0001-gsettings-schemas-path.patch];
+  preConfigure = ''
+    NIX_CFLAGS_COMPILE+=" -DGSETTINGS_SCHEMAS_PATH=\"$GSETTINGS_SCHEMAS_PATH\""
+  '';
+
+  extraNativeBuildInputs = [pkg-config wrapGAppsHook sass];
+  extraBuildInputs = [qtsvg];
+  dontWrapGApps = true; # There is nothing to wrap
+
+  extraCmakeFlags = ["-DGLIB_SCHEMAS_DIR=${gsettings-desktop-schemas.out}/"];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kdecoration/default.nix b/nixpkgs/pkgs/kde/plasma/kdecoration/default.nix
new file mode 100644
index 000000000000..9f879b1cea17
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kdecoration/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kdecoration";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kdeplasma-addons/default.nix b/nixpkgs/pkgs/kde/plasma/kdeplasma-addons/default.nix
new file mode 100644
index 000000000000..afb0708e8e6b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kdeplasma-addons/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtwebengine,
+}:
+mkKdeDerivation {
+  pname = "kdeplasma-addons";
+
+  extraBuildInputs = [qtwebengine];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kgamma/default.nix b/nixpkgs/pkgs/kde/plasma/kgamma/default.nix
new file mode 100644
index 000000000000..dcd119ace8ec
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kgamma/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "kgamma";
+
+  extraBuildInputs = [xorg.libXxf86vm];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kglobalacceld/default.nix b/nixpkgs/pkgs/kde/plasma/kglobalacceld/default.nix
new file mode 100644
index 000000000000..caafb6c91347
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kglobalacceld/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kglobalacceld";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kinfocenter/0001-tool-paths.patch b/nixpkgs/pkgs/kde/plasma/kinfocenter/0001-tool-paths.patch
new file mode 100644
index 000000000000..543aecdec43f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kinfocenter/0001-tool-paths.patch
@@ -0,0 +1,51 @@
+diff --git a/Modules/kwinsupportinfo/kcm_kwinsupportinfo.json.in b/Modules/kwinsupportinfo/kcm_kwinsupportinfo.json.in
+index 0de6973e..30035768 100644
+--- a/Modules/kwinsupportinfo/kcm_kwinsupportinfo.json.in
++++ b/Modules/kwinsupportinfo/kcm_kwinsupportinfo.json.in
+@@ -85,6 +85,6 @@
+         "Name[zh_CN]": "窗口管理器",
+         "Name[zh_TW]": "視窗管理員"
+     },
+-    "TryExec": "@QtBinariesDir@/qdbus",
++    "TryExec": "@qdbus@",
+     "X-KDE-KInfoCenter-Category": "graphical_information"
+ }
+diff --git a/Modules/kwinsupportinfo/main.cpp b/Modules/kwinsupportinfo/main.cpp
+index 6ae168b5..89d0a2ff 100644
+--- a/Modules/kwinsupportinfo/main.cpp
++++ b/Modules/kwinsupportinfo/main.cpp
+@@ -18,7 +18,7 @@ public:
+     explicit KCMKWinSupportInfo(QObject *parent, const KPluginMetaData &data)
+         : KQuickConfigModule(parent, data)
+     {
+-        m_outputContext = new CommandOutputContext(QLibraryInfo::location(QLibraryInfo::BinariesPath) + QStringLiteral("/qdbus"),
++        m_outputContext = new CommandOutputContext(QStringLiteral("@qdbus@"),
+                                                    {QStringLiteral("org.kde.KWin"), QStringLiteral("/KWin"), QStringLiteral("supportInformation")},
+                                                    parent);
+     }
+diff --git a/Modules/xserver/kcm_xserver.json b/Modules/xserver/kcm_xserver.json
+index b3f1ce24..dc610932 100644
+--- a/Modules/xserver/kcm_xserver.json
++++ b/Modules/xserver/kcm_xserver.json
+@@ -141,7 +141,7 @@
+         "Name[zh_CN]": "X 服务器",
+         "Name[zh_TW]": "X 伺服器"
+     },
+-    "TryExec": "xdpyinfo",
++    "TryExec": "@xdpyinfo@",
+     "X-DocPath": "kinfocenter/graphical.html#xserver",
+     "X-KDE-KInfoCenter-Category": "graphical_information",
+     "X-KDE-Keywords": "X,X-Server,XServer,XFree86,Display,VideoCard,System Information",
+diff --git a/Modules/xserver/main.cpp b/Modules/xserver/main.cpp
+index 6d4d1e25..d39fe19e 100644
+--- a/Modules/xserver/main.cpp
++++ b/Modules/xserver/main.cpp
+@@ -16,7 +16,7 @@ public:
+     explicit KCMXServer(QObject *parent, const KPluginMetaData &data)
+         : KQuickConfigModule(parent, data)
+     {
+-        m_outputContext = new CommandOutputContext(QStringLiteral("xdpyinfo"), {}, parent);
++        m_outputContext = new CommandOutputContext(QStringLiteral("@xdpyinfo@"), {}, parent);
+     }
+     CommandOutputContext *outputContext() const
+     {
diff --git a/nixpkgs/pkgs/kde/plasma/kinfocenter/default.nix b/nixpkgs/pkgs/kde/plasma/kinfocenter/default.nix
new file mode 100644
index 000000000000..cc216dd22a7b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kinfocenter/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  mkKdeDerivation,
+  substituteAll,
+  qttools,
+  xdpyinfo,
+  systemsettings,
+  libusb1,
+}:
+mkKdeDerivation {
+  pname = "kinfocenter";
+
+  patches = [
+    (substituteAll {
+      src = ./0001-tool-paths.patch;
+      qdbus = "${lib.getBin qttools}/bin/qdbus";
+      xdpyinfo = lib.getExe xdpyinfo;
+    })
+  ];
+
+  # fix wrong symlink of infocenter pointing to a 'systemsettings5' binary in
+  # the same directory, while it is actually located in a completely different
+  # store path
+  preFixup = ''
+    ln -sf ${systemsettings}/bin/systemsettings $out/bin/kinfocenter
+  '';
+
+  extraBuildInputs = [libusb1];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kmenuedit/default.nix b/nixpkgs/pkgs/kde/plasma/kmenuedit/default.nix
new file mode 100644
index 000000000000..2cfd932af1bf
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kmenuedit/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kmenuedit";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kpipewire/default.nix b/nixpkgs/pkgs/kde/plasma/kpipewire/default.nix
new file mode 100644
index 000000000000..c79bfc792d51
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kpipewire/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtquick3d,
+  pkg-config,
+  pipewire,
+  ffmpeg,
+  mesa,
+  libva,
+}:
+mkKdeDerivation {
+  pname = "kpipewire";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtquick3d pipewire ffmpeg mesa libva];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kscreen/default.nix b/nixpkgs/pkgs/kde/plasma/kscreen/default.nix
new file mode 100644
index 000000000000..480912fe7fcb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kscreen/default.nix
@@ -0,0 +1,15 @@
+{
+  mkKdeDerivation,
+  qtsensors,
+  dbus,
+}:
+mkKdeDerivation {
+  pname = "kscreen";
+
+  extraBuildInputs = [qtsensors];
+
+  postFixup = ''
+    substituteInPlace $out/share/kglobalaccel/org.kde.kscreen.desktop \
+      --replace-fail dbus-send ${dbus}/bin/dbus-send
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kscreenlocker/default.nix b/nixpkgs/pkgs/kde/plasma/kscreenlocker/default.nix
new file mode 100644
index 000000000000..e7ee0a18b8e5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kscreenlocker/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  pam,
+  qqc2-breeze-style,
+}:
+mkKdeDerivation {
+  pname = "kscreenlocker";
+
+  extraBuildInputs = [pam qqc2-breeze-style];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/ksshaskpass/default.nix b/nixpkgs/pkgs/kde/plasma/ksshaskpass/default.nix
new file mode 100644
index 000000000000..86834f8fa7c2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/ksshaskpass/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ksshaskpass";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/ksystemstats/default.nix b/nixpkgs/pkgs/kde/plasma/ksystemstats/default.nix
new file mode 100644
index 000000000000..1d098b10b023
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/ksystemstats/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libksysguard,
+  networkmanager-qt,
+  lm_sensors,
+  libnl,
+}:
+mkKdeDerivation {
+  pname = "ksystemstats";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [networkmanager-qt lm_sensors libnl];
+
+  cmakeFlags = ["-DSYSTEMSTATS_DBUS_INTERFACE=${libksysguard}/share/dbus-1/interfaces/org.kde.ksystemstats1.xml"];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kwallet-pam/default.nix b/nixpkgs/pkgs/kde/plasma/kwallet-pam/default.nix
new file mode 100644
index 000000000000..4b3cdd678dee
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwallet-pam/default.nix
@@ -0,0 +1,16 @@
+{
+  lib,
+  mkKdeDerivation,
+  pam,
+  libgcrypt,
+  socat,
+}:
+mkKdeDerivation {
+  pname = "kwallet-pam";
+
+  postPatch = ''
+    sed -i pam_kwallet_init -e "s|socat|${lib.getBin socat}/bin/socat|"
+  '';
+
+  extraBuildInputs = [pam libgcrypt];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kwayland-integration/default.nix b/nixpkgs/pkgs/kde/plasma/kwayland-integration/default.nix
new file mode 100644
index 000000000000..0274068f7f79
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwayland-integration/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwayland-integration";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kwayland/default.nix b/nixpkgs/pkgs/kde/plasma/kwayland/default.nix
new file mode 100644
index 000000000000..341fd8d35608
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwayland/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtwayland,
+  wayland-protocols,
+}:
+mkKdeDerivation {
+  pname = "kwayland";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwayland wayland-protocols];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch b/nixpkgs/pkgs/kde/plasma/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
new file mode 100644
index 000000000000..896c5dcff20b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwin/0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
@@ -0,0 +1,114 @@
+From 29ec6fada935ef966e5859082435ed57daa9522d Mon Sep 17 00:00:00 2001
+From: Samuel Dionne-Riel <samuel@dionne-riel.com>
+Date: Tue, 16 Mar 2021 15:03:59 -0400
+Subject: [PATCH] [NixOS] Unwrap executable name for .desktop search
+
+Why is this necessary even though -a "$0" is used in the wrapper?
+Because it's completely bypassing argv0! This looks at the executable
+file in-use according to the kernel!
+
+Wrappers cannot affect the `/proc/.../exe` symlink!
+
+Co-authored-by: Yaroslav Bolyukin <iam@lach.pw>
+---
+ src/nixos_utils.h     | 41 +++++++++++++++++++++++++++++++++++++++++
+ src/service_utils.h   |  4 +++-
+ src/waylandwindow.cpp |  5 ++++-
+ 3 files changed, 48 insertions(+), 2 deletions(-)
+ create mode 100644 src/nixos_utils.h
+
+diff --git a/src/nixos_utils.h b/src/nixos_utils.h
+new file mode 100644
+index 0000000..726065d
+--- /dev/null
++++ b/src/nixos_utils.h
+@@ -0,0 +1,41 @@
++#ifndef NIXOS_UTILS_H
++#define NIXOS_UTILS_H
++
++// kwin
++// #include <kwinglobals.h>
++
++namespace KWin
++{
++
++static QString unwrapExecutablePath(const QString &in_executablePath)
++{
++    // NixOS fixes many packaging issues through "wrapper" scripts that manipulates the environment or does
++    // miscellaneous trickeries and mischievous things to make the programs work.
++    // In turn, programs often employs different mischievous schemes and trickeries to do *other things.
++    // It often happens that they conflict.
++    // Here, `kwin` tries to detect the .desktop file for a given process.
++    // `kwin` followed the process `/proc/.../exe` up to the actual binary running.
++    // It normally would be fine, e.g. /usr/bin/foobar is what's in the desktop file.
++    // But it's not the truth here! It's extremely likely the resolved path is /nix/store/.../bin/.foobar-wrapped
++    // rather than what the desktop file points to, something like /nix/store/.../bin/foobar !!
++    // Since the wrappers for Nixpkgs *always* prepend a dot and append -wrapped, we assume here that we can keep
++    // `/^(.*)\/\.([^/]*)-wrapped/` until the (equivalent) regex does not match.
++    // This should canonicalize the wrapper name to the expected name to look for in the desktop file.
++
++    // Use a copy of the const string
++    QString executablePath(in_executablePath);
++
++    // While the parts needed are present, "unwrap" one layer of wrapper names.
++    while (executablePath.endsWith("-wrapped") && executablePath[executablePath.lastIndexOf("/")+1] == QChar('.')) {
++        // Approximately equivalent to s/-wrapped$//
++        executablePath.remove(executablePath.length() - 8, 8);
++        // Approximately equivalent to s;/\.;/;
++        executablePath.remove(executablePath.lastIndexOf("/")+1, 1);
++    }
++
++    return executablePath;
++}
++
++}// namespace
++
++#endif // NIXOS_UTILS_H
+diff --git a/src/utils/serviceutils.h b/src/utils/serviceutils.h
+index 8a70c1f..475b15d 100644
+--- a/src/utils/serviceutils.h
++++ b/src/utils/serviceutils.h
+@@ -19,6 +19,7 @@
+ #include <QLoggingCategory>
+ //KF
+ #include <KApplicationTrader>
++#include "nixos_utils.h"
+ 
+ namespace KWin
+ {
+@@ -26,8 +27,9 @@ namespace KWin
+ const static QString s_waylandInterfaceName = QStringLiteral("X-KDE-Wayland-Interfaces");
+ const static QString s_dbusRestrictedInterfaceName = QStringLiteral("X-KDE-DBUS-Restricted-Interfaces");
+ 
+-static QStringList fetchProcessServiceField(const QString &executablePath, const QString &fieldName)
++static QStringList fetchProcessServiceField(const QString &in_executablePath, const QString &fieldName)
+ {
++    const QString executablePath = unwrapExecutablePath(in_executablePath);
+     // needed to be able to use the logging category in a header static function
+     static QLoggingCategory KWIN_UTILS ("KWIN_UTILS", QtWarningMsg);
+     const auto servicesFound = KApplicationTrader::query([&executablePath] (const KService::Ptr &service) {
+diff --git a/src/waylandwindow.cpp b/src/waylandwindow.cpp
+index fd2c0c1..ae8cf96 100644
+--- a/src/waylandwindow.cpp
++++ b/src/waylandwindow.cpp
+@@ -10,6 +10,7 @@
+ #include "screens.h"
+ #include "wayland_server.h"
+ #include "workspace.h"
++#include "nixos_utils.h"
+ 
+ #include <KWaylandServer/display.h>
+ #include <KWaylandServer/clientbuffer.h>
+@@ -173,7 +174,9 @@ void WaylandWindow::updateIcon()
+ 
+ void WaylandWindow::updateResourceName()
+ {
+-    const QFileInfo fileInfo(surface()->client()->executablePath());
++    const QString in_path = surface()->client()->executablePath();
++    const QString path = unwrapExecutablePath(in_path);
++    const QFileInfo fileInfo(path);
+     if (fileInfo.exists()) {
+         const QByteArray executableFileName = fileInfo.fileName().toUtf8();
+         setResourceClass(executableFileName, executableFileName);
+-- 
+2.32.0
diff --git a/nixpkgs/pkgs/kde/plasma/kwin/0001-follow-symlinks.patch b/nixpkgs/pkgs/kde/plasma/kwin/0001-follow-symlinks.patch
new file mode 100644
index 000000000000..efde4f4dcf04
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwin/0001-follow-symlinks.patch
@@ -0,0 +1,25 @@
+From af569c9ed8079169b524b31461e2789baa09ef7a Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Mon, 27 Jan 2020 05:31:13 -0600
+Subject: [PATCH 1/3] follow symlinks
+
+---
+ src/plugins/kdecorations/aurorae/src/aurorae.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/plugins/kdecorations/aurorae/src/aurorae.cpp b/src/plugins/kdecorations/aurorae/src/aurorae.cpp
+index 5242cb7..2e4ddae 100644
+--- a/src/plugins/kdecorations/aurorae/src/aurorae.cpp
++++ b/src/plugins/kdecorations/aurorae/src/aurorae.cpp
+@@ -201,7 +201,7 @@ void Helper::init()
+     // so let's try to locate our plugin:
+     QString pluginPath;
+     for (const QString &path : m_engine->importPathList()) {
+-        QDirIterator it(path, QDirIterator::Subdirectories);
++        QDirIterator it(path, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+         while (it.hasNext()) {
+             it.next();
+             QFileInfo fileInfo = it.fileInfo();
+-- 
+2.29.2
+
diff --git a/nixpkgs/pkgs/kde/plasma/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch b/nixpkgs/pkgs/kde/plasma/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
new file mode 100644
index 000000000000..d0be721b044c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwin/0003-plugins-qpa-allow-using-nixos-wrapper.patch
@@ -0,0 +1,26 @@
+From 8d49f5ef8692c352a62f4f8b1bc68e6e210bbee6 Mon Sep 17 00:00:00 2001
+From: Yaroslav  Bolyukin <iam@lach.pw>
+Date: Wed, 23 Dec 2020 18:02:14 +0300
+Subject: [PATCH 3/3] plugins/qpa: allow using nixos wrapper
+
+Signed-off-by: Yaroslav  Bolyukin <iam@lach.pw>
+---
+ src/plugins/qpa/main.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/plugins/qpa/main.cpp b/src/plugins/qpa/main.cpp
+index efd236b..a69c046 100644
+--- a/src/plugins/qpa/main.cpp
++++ b/src/plugins/qpa/main.cpp
+@@ -23,7 +23,7 @@ public:
+
+ QPlatformIntegration *KWinIntegrationPlugin::create(const QString &system, const QStringList &paramList)
+ {
+-    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
++    if (!QCoreApplication::applicationFilePath().endsWith(QLatin1String("kwin_wayland")) && !QCoreApplication::applicationFilePath().endsWith(QLatin1String(".kwin_wayland-wrapped")) && !qEnvironmentVariableIsSet("KWIN_FORCE_OWN_QPA")) {
+         // Not KWin
+         return nullptr;
+     }
+-- 
+2.29.2
+
diff --git a/nixpkgs/pkgs/kde/plasma/kwin/default.nix b/nixpkgs/pkgs/kde/plasma/kwin/default.nix
new file mode 100644
index 000000000000..fc5f00991d9e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwin/default.nix
@@ -0,0 +1,54 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtquick3d,
+  qtsensors,
+  qttools,
+  qtvirtualkeyboard,
+  qtwayland,
+  libinput,
+  xorg,
+  libdisplay-info,
+  mesa,
+  lcms2,
+  libcap,
+  pipewire,
+  krunner,
+  python3,
+}:
+mkKdeDerivation {
+  pname = "kwin";
+
+  patches = [
+    # Follow symlinks when searching for aurorae configs
+    # FIXME(later): upstream?
+    ./0001-follow-symlinks.patch
+    # The rest are NixOS-specific hacks
+    ./0003-plugins-qpa-allow-using-nixos-wrapper.patch
+    ./0001-NixOS-Unwrap-executable-name-for-.desktop-search.patch
+  ];
+
+  postPatch = ''
+    patchShebangs src/plugins/strip-effect-metadata.py
+  '';
+
+  extraNativeBuildInputs = [pkg-config python3];
+  extraBuildInputs = [
+    qtquick3d
+    qtsensors
+    qttools
+    qtvirtualkeyboard
+    qtwayland
+
+    krunner
+
+    mesa # libgbm
+    lcms2
+    libcap
+    libdisplay-info
+    libinput
+    pipewire
+
+    xorg.libxcvt
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/kwrited/default.nix b/nixpkgs/pkgs/kde/plasma/kwrited/default.nix
new file mode 100644
index 000000000000..262f3b7c6493
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/kwrited/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "kwrited";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/layer-shell-qt/default.nix b/nixpkgs/pkgs/kde/plasma/layer-shell-qt/default.nix
new file mode 100644
index 000000000000..9783220cddf2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/layer-shell-qt/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  pkg-config,
+  wayland,
+  wayland-protocols,
+}:
+mkKdeDerivation {
+  pname = "layer-shell-qt";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwayland wayland wayland-protocols];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/libkscreen/default.nix b/nixpkgs/pkgs/kde/plasma/libkscreen/default.nix
new file mode 100644
index 000000000000..d6fdd87c7e9b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/libkscreen/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  qtwayland,
+  qttools,
+  jq,
+}:
+mkKdeDerivation {
+  pname = "libkscreen";
+
+  extraNativeBuildInputs = [qttools qtwayland jq];
+  extraBuildInputs = [qtwayland];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/libksysguard/default.nix b/nixpkgs/pkgs/kde/plasma/libksysguard/default.nix
new file mode 100644
index 000000000000..9dae888737ab
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/libksysguard/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  qtwebchannel,
+  qtwebengine,
+  qttools,
+  libpcap,
+  libnl,
+  lm_sensors,
+}:
+mkKdeDerivation {
+  pname = "libksysguard";
+
+  extraBuildInputs = [qtwebchannel qtwebengine qttools libpcap libnl lm_sensors];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/libplasma/default.nix b/nixpkgs/pkgs/kde/plasma/libplasma/default.nix
new file mode 100644
index 000000000000..1ff05b92ef0e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/libplasma/default.nix
@@ -0,0 +1,13 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  qtwayland,
+  wayland,
+  pkg-config,
+}:
+mkKdeDerivation {
+  pname = "libplasma";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtsvg qtwayland wayland];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/lightdm-greeter-kde/default.nix b/nixpkgs/pkgs/kde/plasma/lightdm-greeter-kde/default.nix
new file mode 100644
index 000000000000..9d508409f9d3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/lightdm-greeter-kde/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "lightdm-greeter-kde";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/milou/default.nix b/nixpkgs/pkgs/kde/plasma/milou/default.nix
new file mode 100644
index 000000000000..555c7cbee2c7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/milou/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "milou";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/ocean-sound-theme/default.nix b/nixpkgs/pkgs/kde/plasma/ocean-sound-theme/default.nix
new file mode 100644
index 000000000000..72adf43e3604
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/ocean-sound-theme/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "ocean-sound-theme";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/oxygen-sounds/default.nix b/nixpkgs/pkgs/kde/plasma/oxygen-sounds/default.nix
new file mode 100644
index 000000000000..68ee47d20eb8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/oxygen-sounds/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "oxygen-sounds";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/oxygen/default.nix b/nixpkgs/pkgs/kde/plasma/oxygen/default.nix
new file mode 100644
index 000000000000..5b5de64af90f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/oxygen/default.nix
@@ -0,0 +1,6 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "oxygen";
+  # FIXME(qt5)
+  meta.broken = true;
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-activities-stats/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-activities-stats/default.nix
new file mode 100644
index 000000000000..dff496e4f631
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-activities-stats/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma-activities-stats";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-activities/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-activities/default.nix
new file mode 100644
index 000000000000..9ddd163e9fbb
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-activities/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+  boost,
+}:
+mkKdeDerivation {
+  pname = "plasma-activities";
+
+  extraBuildInputs = [qtdeclarative boost];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-browser-integration/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-browser-integration/default.nix
new file mode 100644
index 000000000000..6277071f9a76
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-browser-integration/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma-browser-integration";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-desktop/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-desktop/default.nix
new file mode 100644
index 000000000000..8ee90dee3a67
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-desktop/default.nix
@@ -0,0 +1,67 @@
+{
+  lib,
+  mkKdeDerivation,
+  runCommandLocal,
+  makeWrapper,
+  glib,
+  gsettings-desktop-schemas,
+  substituteAll,
+  util-linux,
+  pkg-config,
+  qtsvg,
+  qtwayland,
+  kaccounts-integration,
+  SDL2,
+  xkeyboard_config,
+  xorg,
+  libcanberra,
+  libxkbfile,
+  ibus,
+}: let
+  # run gsettings with desktop schemas for using in "kcm_access" kcm
+  # and in kaccess
+  gsettings-wrapper = runCommandLocal "gsettings-wrapper" {nativeBuildInputs = [makeWrapper];} ''
+    mkdir -p $out/bin
+    makeWrapper ${glib}/bin/gsettings $out/bin/gsettings --prefix XDG_DATA_DIRS : ${gsettings-desktop-schemas.out}/share/gsettings-schemas/${gsettings-desktop-schemas.name}
+  '';
+in
+  mkKdeDerivation {
+    pname = "plasma-desktop";
+
+    patches = [
+      (substituteAll {
+        src = ./hwclock-path.patch;
+        hwclock = "${lib.getBin util-linux}/bin/hwclock";
+      })
+      (substituteAll {
+        src = ./kcm-access.patch;
+        gsettings = "${gsettings-wrapper}/bin/gsettings";
+      })
+      ./tzdir.patch
+      ./no-discover-shortcut.patch
+    ];
+
+    extraNativeBuildInputs = [pkg-config];
+    extraBuildInputs = [
+      qtsvg
+      qtwayland
+
+      kaccounts-integration
+
+      SDL2
+      libcanberra
+      libxkbfile
+      xkeyboard_config
+
+      xorg.libXcursor
+      xorg.libXft
+      xorg.xf86inputlibinput
+      xorg.xf86inputevdev
+      xorg.xorgserver
+
+      ibus
+    ];
+
+    # wrap kaccess with wrapped gsettings so it can access accessibility schemas
+    qtWrapperArgs = ["--prefix PATH : ${lib.makeBinPath [gsettings-wrapper]}"];
+  }
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-desktop/hwclock-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-desktop/hwclock-path.patch
new file mode 100644
index 000000000000..4c0891db97a6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-desktop/hwclock-path.patch
@@ -0,0 +1,24 @@
+Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
+===================================================================
+--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp
++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
+@@ -48,10 +48,6 @@
+ #include <sys/types.h>
+ #endif
+
+-// We cannot rely on the $PATH environment variable, because D-Bus activation
+-// clears it. So we have to use a reasonable default.
+-static const QString exePath = QStringLiteral("/usr/sbin:/usr/bin:/sbin:/bin");
+-
+ int ClockHelper::ntp(const QStringList &ntpServers, bool ntpEnabled)
+ {
+     int ret = 0;
+@@ -227,7 +223,7 @@ int ClockHelper::tzreset()
+ 
+ void ClockHelper::toHwclock()
+ {
+-    QString hwclock = QStandardPaths::findExecutable(QStringLiteral("hwclock"), exePath.split(QLatin1Char(':')));
++    QString hwclock = QLatin1String("@hwclock@");
+     if (!hwclock.isEmpty()) {
+         KProcess::execute(hwclock, QStringList() << QStringLiteral("--systohc"));
+     }
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-desktop/kcm-access.patch b/nixpkgs/pkgs/kde/plasma/plasma-desktop/kcm-access.patch
new file mode 100644
index 000000000000..91f5847e88a5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-desktop/kcm-access.patch
@@ -0,0 +1,13 @@
+diff --git a/kcms/access/kcmaccess.cpp b/kcms/access/kcmaccess.cpp
+index 4f8d3e2..a96f755 100644
+--- a/kcms/access/kcmaccess.cpp
++++ b/kcms/access/kcmaccess.cpp
+@@ -176,7 +176,7 @@ void KAccessConfig::launchOrcaConfiguration()
+                                       QStringLiteral("screen-reader-enabled"),
+                                       QStringLiteral("true")};
+ 
+-    int ret = QProcess::execute(QStringLiteral("gsettings"), gsettingArgs);
++    int ret = QProcess::execute(QStringLiteral("@gsettings@"), gsettingArgs);
+     if (ret) {
+         const QString errorStr = QLatin1String("gsettings ") + gsettingArgs.join(QLatin1Char(' '));
+         setOrcaLaunchFeedback(i18n("Could not set gsettings for Orca: \"%1\" failed", errorStr));
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-desktop/no-discover-shortcut.patch b/nixpkgs/pkgs/kde/plasma/plasma-desktop/no-discover-shortcut.patch
new file mode 100644
index 000000000000..f186671c9cc5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-desktop/no-discover-shortcut.patch
@@ -0,0 +1,13 @@
+diff --git a/applets/taskmanager/package/contents/config/main.xml b/applets/taskmanager/package/contents/config/main.xml
+index 6bb27695d..25e621810 100644
+--- a/applets/taskmanager/package/contents/config/main.xml
++++ b/applets/taskmanager/package/contents/config/main.xml
+@@ -85,7 +85,7 @@
+     </entry>
+     <entry name="launchers" type="StringList">
+       <label>The list of launcher tasks on the widget. Usually .desktop file or executable URLs. Special URLs such as preferred://browser that expand to default applications are supported.</label>
+-      <default>applications:systemsettings.desktop,applications:org.kde.discover.desktop,preferred://filemanager,preferred://browser</default>
++      <default>applications:systemsettings.desktop,preferred://filemanager,preferred://browser</default>
+     </entry>
+     <entry name="middleClickAction" type="Enum">
+       <label>What to do on middle-mouse click on a task button.</label>
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-desktop/tzdir.patch b/nixpkgs/pkgs/kde/plasma/plasma-desktop/tzdir.patch
new file mode 100644
index 000000000000..97504b330fed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-desktop/tzdir.patch
@@ -0,0 +1,18 @@
+Index: plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
+===================================================================
+--- plasma-desktop-5.8.5.orig/kcms/dateandtime/helper.cpp
++++ plasma-desktop-5.8.5/kcms/dateandtime/helper.cpp
+@@ -181,7 +181,12 @@ int ClockHelper::tz( const QString& sele
+ 
+     val = selectedzone;
+ #else
+-    QString tz = "/usr/share/zoneinfo/" + selectedzone;
++    QString tzdir = QString::fromLocal8Bit(qgetenv("TZDIR"));
++    QString tz = tzdir + "/" + selectedzone;
++    if (tzdir.isEmpty()) {
++      // Standard Linux path
++      tz = "/usr/share/zoneinfo/" + selectedzone;
++    }
+ 
+     if (QFile::exists(tz)) { // make sure the new TZ really exists
+         QFile::remove(QStringLiteral("/etc/localtime"));
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-disks/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-disks/default.nix
new file mode 100644
index 000000000000..5941fe0dec54
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-disks/default.nix
@@ -0,0 +1,16 @@
+{
+  mkKdeDerivation,
+  lib,
+  substituteAll,
+  smartmontools,
+}:
+mkKdeDerivation {
+  pname = "plasma-disks";
+
+  patches = [
+    (substituteAll {
+      smartctl = lib.getExe smartmontools;
+      src = ./smartctl-path.patch;
+    })
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-disks/smartctl-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-disks/smartctl-path.patch
new file mode 100644
index 000000000000..71d4c5e7f8f5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-disks/smartctl-path.patch
@@ -0,0 +1,13 @@
+diff --git a/src/helper.cpp b/src/helper.cpp
+index 102ebc5..4cde9da 100644
+--- a/src/helper.cpp
++++ b/src/helper.cpp
+@@ -69,7 +69,7 @@ ActionReply SMARTHelper::smartctl(const QVariantMap &args)
+     // PATH is super minimal when invoked through dbus
+     setenv("PATH", "/usr/sbin:/sbin:/usr/local/sbin", 1);
+ 
+-    const QString command = QStringLiteral("smartctl");
++    const QString command = QStringLiteral("@smartctl@");
+     const QString all = QStringLiteral("--all");
+ 
+     // JSON output.
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-firewall/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-firewall/default.nix
new file mode 100644
index 000000000000..202d3ea089b2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-firewall/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma-firewall";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-integration/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-integration/default.nix
new file mode 100644
index 000000000000..a626b9447934
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-integration/default.nix
@@ -0,0 +1,67 @@
+{
+  mkKdeDerivation,
+  qtbase,
+  qtwayland,
+  libsForQt5,
+  xorg,
+}:
+mkKdeDerivation {
+  pname = "plasma-integration";
+
+  # force it to check our custom import path too
+  patches = [./qml-path.patch];
+
+  outputs = ["out" "dev" "qt5"];
+
+  # We can't add qt5 stuff to dependencies or the hooks blow up,
+  # so manually point everything to everything. Oof.
+  extraCmakeFlags = [
+    "-DQt5_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5"
+    "-DQt5Concurrent_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Concurrent"
+    "-DQt5Core_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Core"
+    "-DQt5DBus_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5DBus"
+    "-DQt5Gui_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Gui"
+    "-DQt5Network_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Network"
+    "-DQt5Qml_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Qml"
+    "-DQt5QmlModels_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5QmlModels"
+    "-DQt5Quick_DIR=${libsForQt5.qtdeclarative.dev}/lib/cmake/Qt5Quick"
+    "-DQt5QuickControls2_DIR=${libsForQt5.qtquickcontrols2.dev}/lib/cmake/Qt5QuickControls2"
+    "-DQt5ThemeSupport_LIBRARY=${libsForQt5.qtbase.out}/lib/libQt5ThemeSupport.a"
+    "-DQt5ThemeSupport_INCLUDE_DIR=${libsForQt5.qtbase.dev}/include/QtThemeSupport/${libsForQt5.qtbase.version}"
+    "-DQt5WaylandClient_DIR=${libsForQt5.qtwayland.dev}/lib/cmake/Qt5WaylandClient"
+    "-DQt5WaylandScanner_EXECUTABLE=${libsForQt5.qtwayland.dev}/bin/qtwaylandscanner"
+    "-DQt5Widgets_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Widgets"
+    "-DQt5X11Extras_DIR=${libsForQt5.qtx11extras.dev}/lib/cmake/Qt5X11Extras"
+    "-DQt5Xml_DIR=${libsForQt5.qtbase.dev}/lib/cmake/Qt5Xml"
+    "-DQtWaylandScanner_EXECUTABLE=${libsForQt5.qtwayland.dev}/bin/qtwaylandscanner"
+
+    "-DKF5Auth_DIR=${libsForQt5.kauth.dev}/lib/cmake/KF5Auth"
+    "-DKF5Bookmarks_DIR=${libsForQt5.kbookmarks.dev}/lib/cmake/KF5Bookmarks"
+    "-DKF5Codecs_DIR=${libsForQt5.kcodecs.dev}/lib/cmake/KF5Codecs"
+    "-DKF5Completion_DIR=${libsForQt5.kcompletion.dev}/lib/cmake/KF5Completion"
+    "-DKF5Config_DIR=${libsForQt5.kconfig.dev}/lib/cmake/KF5Config"
+    "-DKF5ConfigWidgets_DIR=${libsForQt5.kconfigwidgets.dev}/lib/cmake/KF5ConfigWidgets"
+    "-DKF5CoreAddons_DIR=${libsForQt5.kcoreaddons.dev}/lib/cmake/KF5CoreAddons"
+    "-DKF5GuiAddons_DIR=${libsForQt5.kguiaddons.dev}/lib/cmake/KF5GuiAddons"
+    "-DKF5I18n_DIR=${libsForQt5.ki18n.dev}/lib/cmake/KF5I18n"
+    "-DKF5IconThemes_DIR=${libsForQt5.kiconthemes.dev}/lib/cmake/KF5IconThemes"
+    "-DKF5ItemViews_DIR=${libsForQt5.kitemviews.dev}/lib/cmake/KF5ItemViews"
+    "-DKF5JobWidgets_DIR=${libsForQt5.kjobwidgets.dev}/lib/cmake/KF5JobWidgets"
+    "-DKF5KIO_DIR=${libsForQt5.kio.dev}/lib/cmake/KF5KIO"
+    "-DKF5Notifications_DIR=${libsForQt5.knotifications.dev}/lib/cmake/KF5Notifications"
+    "-DKF5Service_DIR=${libsForQt5.kservice.dev}/lib/cmake/KF5Service"
+    "-DKF5Solid_DIR=${libsForQt5.solid.dev}/lib/cmake/KF5Solid"
+    "-DKF5Wayland_DIR=${libsForQt5.kwayland.dev}/lib/cmake/KF5Wayland"
+    "-DKF5WidgetsAddons_DIR=${libsForQt5.kwidgetsaddons.dev}/lib/cmake/KF5WidgetsAddons"
+    "-DKF5WindowSystem_DIR=${libsForQt5.kwindowsystem.dev}/lib/cmake/KF5WindowSystem"
+    "-DKF5XmlGui_DIR=${libsForQt5.kxmlgui.dev}/lib/cmake/KF5XmlGui"
+  ];
+
+  extraBuildInputs = [qtwayland xorg.libXcursor];
+
+  # Move Qt5 plugin to Qt5 plugin path
+  postInstall = ''
+    mkdir -p $qt5/${libsForQt5.qtbase.qtPluginPrefix}/platformthemes
+    mv $out/${qtbase.qtPluginPrefix}/platformthemes/KDEPlasmaPlatformTheme5.so $qt5/${libsForQt5.qtbase.qtPluginPrefix}/platformthemes
+  '';
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-integration/qml-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-integration/qml-path.patch
new file mode 100644
index 000000000000..33af3fe9d8ea
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-integration/qml-path.patch
@@ -0,0 +1,12 @@
+diff --git a/qt6/src/platformtheme/kdeplatformtheme.cpp b/qt6/src/platformtheme/kdeplatformtheme.cpp
+index fea04b5..7efafd1 100644
+--- a/qt6/src/platformtheme/kdeplatformtheme.cpp
++++ b/qt6/src/platformtheme/kdeplatformtheme.cpp
+@@ -551,6 +551,7 @@ bool KdePlatformTheme::checkIfThemeExists(const QString &themePath)
+     // QML_IMPORT_PATH is the new one, but QML2_IMPORT_PATH is still used
+     checkEnvironmentVariable("QML2_IMPORT_PATH");
+     checkEnvironmentVariable("QML_IMPORT_PATH");
++    checkEnvironmentVariable("NIXPKGS_QT6_QML_IMPORT_PATH");
+ 
+     for (const QString &path : moduleSearchPaths) {
+         if (QDir(path + themePath).exists()) {
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-mobile/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-mobile/default.nix
new file mode 100644
index 000000000000..92bb1d66d5e3
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-mobile/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtsensors,
+}:
+mkKdeDerivation {
+  pname = "plasma-mobile";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtsensors];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-nano/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-nano/default.nix
new file mode 100644
index 000000000000..9cdb24f013e7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-nano/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "plasma-nano";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-nm/0002-openvpn-binary-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-nm/0002-openvpn-binary-path.patch
new file mode 100644
index 000000000000..c32e73bc2c6c
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-nm/0002-openvpn-binary-path.patch
@@ -0,0 +1,13 @@
+diff --git a/vpn/openvpn/openvpnadvancedwidget.cpp b/vpn/openvpn/openvpnadvancedwidget.cpp
+index 2f11ba1d..310f11b4 100644
+--- a/vpn/openvpn/openvpnadvancedwidget.cpp
++++ b/vpn/openvpn/openvpnadvancedwidget.cpp
+@@ -75,7 +75,7 @@ OpenVpnAdvancedWidget::OpenVpnAdvancedWidget(const NetworkManager::VpnSetting::P
+     connect(m_ui->cmbProxyType, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &OpenVpnAdvancedWidget::proxyTypeChanged);
+ 
+     // start openVPN process and get its cipher list
+-    const QString openVpnBinary = QStandardPaths::findExecutable("openvpn", QStringList{"/sbin", "/usr/sbin"});
++    const QString openVpnBinary = "@openvpn@/bin/openvpn";
+     const QStringList ciphersArgs(QLatin1String("--show-ciphers"));
+     const QStringList versionArgs(QLatin1String("--version"));
+ 
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-nm/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-nm/default.nix
new file mode 100644
index 000000000000..a53ec99a8bed
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-nm/default.nix
@@ -0,0 +1,26 @@
+{
+  mkKdeDerivation,
+  substituteAll,
+  pkg-config,
+  qtwebengine,
+  mobile-broadband-provider-info,
+  openconnect,
+  openvpn,
+}:
+mkKdeDerivation {
+  pname = "plasma-nm";
+
+  patches = [
+    (substituteAll {
+      src = ./0002-openvpn-binary-path.patch;
+      inherit openvpn;
+    })
+  ];
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [
+    qtwebengine
+    mobile-broadband-provider-info
+    openconnect
+  ];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-pa/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-pa/default.nix
new file mode 100644
index 000000000000..4d721ecc711b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-pa/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libcanberra,
+  pulseaudio,
+}:
+mkKdeDerivation {
+  pname = "plasma-pa";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libcanberra pulseaudio];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-sdk/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-sdk/default.nix
new file mode 100644
index 000000000000..68f5a30fc936
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-sdk/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+}:
+mkKdeDerivation {
+  pname = "plasma-sdk";
+
+  extraBuildInputs = [qtsvg];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-systemmonitor/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-systemmonitor/default.nix
new file mode 100644
index 000000000000..8a8bff96ecff
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-systemmonitor/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma-systemmonitor";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-thunderbolt/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-thunderbolt/default.nix
new file mode 100644
index 000000000000..5b1b682ac9bc
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-thunderbolt/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma-thunderbolt";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-vault/0001-encfs-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-vault/0001-encfs-path.patch
new file mode 100644
index 000000000000..a5e9d8c531e1
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-vault/0001-encfs-path.patch
@@ -0,0 +1,31 @@
+From fef6bfe87db4411e3dda2f96741cd8204fe41d85 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Tue, 2 Nov 2021 05:57:50 -0500
+Subject: [PATCH 1/3] encfs path
+
+---
+ kded/engine/backends/encfs/encfsbackend.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/kded/engine/backends/encfs/encfsbackend.cpp b/kded/engine/backends/encfs/encfsbackend.cpp
+index 2d15fa2..3f49867 100644
+--- a/kded/engine/backends/encfs/encfsbackend.cpp
++++ b/kded/engine/backends/encfs/encfsbackend.cpp
+@@ -101,12 +101,12 @@ QProcess *EncFsBackend::encfs(const QStringList &arguments) const
+     auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE);
+     KConfigGroup backendConfig(config, "EncfsBackend");
+ 
+-    return process("encfs", arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {});
++    return process(NIXPKGS_ENCFS, arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {});
+ }
+ 
+ QProcess *EncFsBackend::encfsctl(const QStringList &arguments) const
+ {
+-    return process("encfsctl", arguments, {});
++    return process(NIXPKGS_ENCFSCTL, arguments, {});
+ }
+ 
+ } // namespace PlasmaVault
+-- 
+2.33.1
+
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-vault/0002-cryfs-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-vault/0002-cryfs-path.patch
new file mode 100644
index 000000000000..4c7567b15076
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-vault/0002-cryfs-path.patch
@@ -0,0 +1,25 @@
+From a89a0d3f9088d272c01ccb9b730d1dbb500f9cb8 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Tue, 2 Nov 2021 05:59:34 -0500
+Subject: [PATCH 2/3] cryfs path
+
+---
+ kded/engine/backends/cryfs/cryfsbackend.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kded/engine/backends/cryfs/cryfsbackend.cpp b/kded/engine/backends/cryfs/cryfsbackend.cpp
+index 64138b6..1a9fde2 100644
+--- a/kded/engine/backends/cryfs/cryfsbackend.cpp
++++ b/kded/engine/backends/cryfs/cryfsbackend.cpp
+@@ -207,7 +207,7 @@ QProcess *CryFsBackend::cryfs(const QStringList &arguments) const
+     auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE);
+     KConfigGroup backendConfig(config, "CryfsBackend");
+ 
+-    return process("cryfs", arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {{"CRYFS_FRONTEND", "noninteractive"}});
++    return process(NIXPKGS_CRYFS, arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {{"CRYFS_FRONTEND", "noninteractive"}});
+ }
+ 
+ } // namespace PlasmaVault
+-- 
+2.33.1
+
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-vault/0003-fusermount-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-vault/0003-fusermount-path.patch
new file mode 100644
index 000000000000..0d4481c70541
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-vault/0003-fusermount-path.patch
@@ -0,0 +1,25 @@
+From 63571e28c65935f32567c0b179a096d62726b778 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@mailbox.org>
+Date: Tue, 2 Nov 2021 06:00:32 -0500
+Subject: [PATCH 3/3] fusermount path
+
+---
+ kded/engine/fusebackend_p.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kded/engine/fusebackend_p.cpp b/kded/engine/fusebackend_p.cpp
+index 91f3523..1c19d88 100644
+--- a/kded/engine/fusebackend_p.cpp
++++ b/kded/engine/fusebackend_p.cpp
+@@ -86,7 +86,7 @@ QProcess *FuseBackend::process(const QString &executable, const QStringList &arg
+ 
+ QProcess *FuseBackend::fusermount(const QStringList &arguments) const
+ {
+-    return process("fusermount", arguments, {});
++    return process(NIXPKGS_FUSERMOUNT, arguments, {});
+ }
+ 
+ FutureResult<> FuseBackend::initialize(const QString &name, const Device &device, const MountPoint &mountPoint, const Vault::Payload &payload)
+-- 
+2.33.1
+
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-vault/0004-gocryptfs-path.patch b/nixpkgs/pkgs/kde/plasma/plasma-vault/0004-gocryptfs-path.patch
new file mode 100644
index 000000000000..8790f877ff07
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-vault/0004-gocryptfs-path.patch
@@ -0,0 +1,13 @@
+diff --git a/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp b/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp
+index 2d6df94..3e8ec9a 100644
+--- a/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp
++++ b/kded/engine/backends/gocryptfs/gocryptfsbackend.cpp
+@@ -202,7 +202,7 @@ QProcess *GocryptfsBackend::gocryptfs(const QStringList &arguments) const
+     auto config = KSharedConfig::openConfig(PLASMAVAULT_CONFIG_FILE);
+     KConfigGroup backendConfig(config, "GocryptfsBackend");
+ 
+-    return process("gocryptfs", arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {});
++    return process(NIXPKGS_GOCRYPTFS, arguments + backendConfig.readEntry("extraMountOptions", QStringList{}), {});
+ }
+ 
+ QString GocryptfsBackend::getConfigFilePath(const Device &device) const
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-vault/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-vault/default.nix
new file mode 100644
index 000000000000..9ab545ab87b8
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-vault/default.nix
@@ -0,0 +1,29 @@
+{
+  lib,
+  mkKdeDerivation,
+  pkg-config,
+  gocryptfs,
+  fuse,
+  cryfs,
+  encfs,
+}:
+mkKdeDerivation {
+  pname = "plasma-vault";
+
+  patches = [
+    ./0001-encfs-path.patch
+    ./0002-cryfs-path.patch
+    ./0003-fusermount-path.patch
+    ./0004-gocryptfs-path.patch
+  ];
+
+  CXXFLAGS = [
+    ''-DNIXPKGS_ENCFS=\"${lib.getBin encfs}/bin/encfs\"''
+    ''-DNIXPKGS_ENCFSCTL=\"${lib.getBin encfs}/bin/encfsctl\"''
+    ''-DNIXPKGS_CRYFS=\"${lib.getBin cryfs}/bin/cryfs\"''
+    ''-DNIXPKGS_FUSERMOUNT=\"${lib.getBin fuse}/bin/fusermount\"''
+    ''-DNIXPKGS_GOCRYPTFS=\"${lib.getBin gocryptfs}/bin/gocryptfs\"''
+  ];
+
+  extraNativeBuildInputs = [pkg-config];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-welcome/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-welcome/default.nix
new file mode 100644
index 000000000000..976a788a16e9
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-welcome/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  qtsvg,
+  kuserfeedback,
+}:
+mkKdeDerivation {
+  pname = "plasma-welcome";
+
+  extraBuildInputs = [qtsvg kuserfeedback];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-workspace-wallpapers/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-workspace-wallpapers/default.nix
new file mode 100644
index 000000000000..af8c89249274
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-workspace-wallpapers/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  extra-cmake-modules,
+}:
+mkKdeDerivation {
+  pname = "plasma-workspace-wallpapers";
+
+  extraBuildInputs = [extra-cmake-modules];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-workspace/default.nix b/nixpkgs/pkgs/kde/plasma/plasma-workspace/default.nix
new file mode 100644
index 000000000000..24e41b971cf0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-workspace/default.nix
@@ -0,0 +1,54 @@
+{
+  lib,
+  mkKdeDerivation,
+  substituteAll,
+  xorg,
+  pkg-config,
+  spirv-tools,
+  qtsvg,
+  qtwayland,
+  libcanberra,
+  libqalculate,
+  pipewire,
+  breeze,
+  qttools,
+  qqc2-breeze-style,
+  gpsd,
+}:
+mkKdeDerivation {
+  pname = "plasma-workspace";
+
+  patches = [
+    (substituteAll {
+      src = ./tool-paths.patch;
+      xmessage = "${lib.getBin xorg.xmessage}/bin/xmessage";
+      xsetroot = "${lib.getBin xorg.xsetroot}/bin/xsetroot";
+      qdbus = "${lib.getBin qttools}/bin/qdbus";
+    })
+    (substituteAll {
+      src = ./wallpaper-paths.patch;
+      wallpapers = "${lib.getBin breeze}/share/wallpapers";
+    })
+  ];
+
+  extraNativeBuildInputs = [pkg-config spirv-tools];
+  extraBuildInputs = [
+    qtsvg
+    qtwayland
+
+    qqc2-breeze-style
+
+    libcanberra
+    libqalculate
+    pipewire
+
+    xorg.libSM
+    xorg.libXcursor
+    xorg.libXtst
+    xorg.libXft
+
+    gpsd
+  ];
+
+  passthru.providedSessions = ["plasma" "plasmax11"];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-workspace/tool-paths.patch b/nixpkgs/pkgs/kde/plasma/plasma-workspace/tool-paths.patch
new file mode 100644
index 000000000000..d750028200b2
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-workspace/tool-paths.patch
@@ -0,0 +1,68 @@
+diff --git a/kcms/krdb/krdb.cpp b/kcms/krdb/krdb.cpp
+index 46363ddcb..d787f9993 100644
+--- a/kcms/krdb/krdb.cpp
++++ b/kcms/krdb/krdb.cpp
+@@ -468,7 +468,7 @@ void runRdb(unsigned int flags)
+     proc.execute();
+ 
+     // Needed for applications that don't set their own cursor.
+-    QProcess::execute(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
++    QProcess::execute(QStringLiteral("@xsetroot@"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
+ 
+     applyGtkStyles(1);
+     applyGtkStyles(2);
+diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
+index b0158c97d..c8f7fe223 100644
+--- a/startkde/startplasma.cpp
++++ b/startkde/startplasma.cpp
+@@ -50,7 +50,7 @@ void sigtermHandler(int signalNumber)
+ void messageBox(const QString &text)
+ {
+     out << text;
+-    runSync(QStringLiteral("xmessage"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
++    runSync(QStringLiteral("@xmessage@"), {QStringLiteral("-geometry"), QStringLiteral("500x100"), text});
+ }
+ 
+ QStringList allServices(const QLatin1String &prefix)
+@@ -484,7 +484,7 @@ QProcess *setupKSplash()
+         if (ksplashCfg.readEntry("Engine", QStringLiteral("KSplashQML")) == QLatin1String("KSplashQML")) {
+             p = new QProcess;
+             p->setProcessChannelMode(QProcess::ForwardedChannels);
+-            p->start(QStringLiteral("ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
++            p->start(QStringLiteral(CMAKE_INSTALL_FULL_BINDIR "/ksplashqml"), {ksplashCfg.readEntry("Theme", QStringLiteral("Breeze"))});
+         }
+     }
+     return p;
+diff --git a/ksmserver/plasma-restoresession.service.in b/ksmserver/plasma-restoresession.service.in
+index 2c52a4b87..fd7fdc8ac 100644
+--- a/ksmserver/plasma-restoresession.service.in
++++ b/ksmserver/plasma-restoresession.service.in
+@@ -5,5 +5,5 @@ RefuseManualStart=yes
+
+ [Service]
+ Type=oneshot
+-ExecStart=-@QtBinariesDir@/qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
++ExecStart=-@qdbus@ org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.restoreSession
+ Slice=session.slice
+diff --git a/startkde/kcminit/plasma-kcminit-phase1.service.in b/startkde/kcminit/plasma-kcminit-phase1.service.in
+index 7218628ce..9126475ea 100644
+--- a/startkde/kcminit/plasma-kcminit-phase1.service.in
++++ b/startkde/kcminit/plasma-kcminit-phase1.service.in
+@@ -6,5 +6,5 @@ PartOf=graphical-session.target
+
+ [Service]
+ Type=oneshot
+-ExecStart=@QtBinariesDir@/qdbus org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
++ExecStart=@qdbus@ org.kde.kcminit /kcminit org.kde.KCMInit.runPhase1
+ Slice=session.slice
+diff --git a/startkde/systemd/plasma-ksplash-ready.service.in b/startkde/systemd/plasma-ksplash-ready.service.in
+index 3f6744f37..c51266794 100644
+--- a/startkde/systemd/plasma-ksplash-ready.service.in
++++ b/startkde/systemd/plasma-ksplash-ready.service.in
+@@ -6,5 +6,5 @@ PartOf=graphical-session.target
+
+ [Service]
+ Type=oneshot
+-ExecStart=-@QtBinariesDir@/qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
++ExecStart=-@qdbus@ org.kde.KSplash /KSplash org.kde.KSplash.setStage ready
+ Slice=session.slice
diff --git a/nixpkgs/pkgs/kde/plasma/plasma-workspace/wallpaper-paths.patch b/nixpkgs/pkgs/kde/plasma/plasma-workspace/wallpaper-paths.patch
new file mode 100644
index 000000000000..050200a8411f
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma-workspace/wallpaper-paths.patch
@@ -0,0 +1,9 @@
+--- a/lookandfeel/sddm-theme/theme.conf.cmake
++++ b/lookandfeel/sddm-theme/theme.conf.cmake
+@@ -4,5 +4,5 @@ logo=${KDE_INSTALL_FULL_DATADIR}/sddm/themes/breeze/default-logo.svg
+ type=image
+ color=#1d99f3
+ fontSize=10
+-background=${KDE_INSTALL_FULL_WALLPAPERDIR}/Next/contents/images/5120x2880.png
++background=@wallpapers@/Next/contents/images/5120x2880.png
+ needsFullUserModel=false
diff --git a/nixpkgs/pkgs/kde/plasma/plasma5support/default.nix b/nixpkgs/pkgs/kde/plasma/plasma5support/default.nix
new file mode 100644
index 000000000000..385626aeedc0
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plasma5support/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "plasma5support";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/plymouth-kcm/default.nix b/nixpkgs/pkgs/kde/plasma/plymouth-kcm/default.nix
new file mode 100644
index 000000000000..dcf339dd9b2e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/plymouth-kcm/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  plymouth,
+}:
+mkKdeDerivation {
+  pname = "plymouth-kcm";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [plymouth];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/polkit-kde-agent-1/default.nix b/nixpkgs/pkgs/kde/plasma/polkit-kde-agent-1/default.nix
new file mode 100644
index 000000000000..6c4bf0653f09
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/polkit-kde-agent-1/default.nix
@@ -0,0 +1,9 @@
+{
+  mkKdeDerivation,
+  qtdeclarative,
+}:
+mkKdeDerivation {
+  pname = "polkit-kde-agent-1";
+
+  extraBuildInputs = [qtdeclarative];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/powerdevil/default.nix b/nixpkgs/pkgs/kde/plasma/powerdevil/default.nix
new file mode 100644
index 000000000000..8b0c270e85c6
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/powerdevil/default.nix
@@ -0,0 +1,11 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libcap,
+}:
+mkKdeDerivation {
+  pname = "powerdevil";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libcap];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/print-manager/default.nix b/nixpkgs/pkgs/kde/plasma/print-manager/default.nix
new file mode 100644
index 000000000000..fce60dcb968b
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/print-manager/default.nix
@@ -0,0 +1,10 @@
+{
+  mkKdeDerivation,
+  cups,
+}:
+mkKdeDerivation {
+  pname = "print-manager";
+
+  # FIXME: cups-smb?
+  extraBuildInputs = [cups];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/qqc2-breeze-style/default.nix b/nixpkgs/pkgs/kde/plasma/qqc2-breeze-style/default.nix
new file mode 100644
index 000000000000..2d950f63e0c5
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/qqc2-breeze-style/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "qqc2-breeze-style";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/sddm-kcm/default.nix b/nixpkgs/pkgs/kde/plasma/sddm-kcm/default.nix
new file mode 100644
index 000000000000..d60c5e4e6ff7
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/sddm-kcm/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "sddm-kcm";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/systemsettings/default.nix b/nixpkgs/pkgs/kde/plasma/systemsettings/default.nix
new file mode 100644
index 000000000000..2dd529b9380e
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/systemsettings/default.nix
@@ -0,0 +1,4 @@
+{mkKdeDerivation}:
+mkKdeDerivation {
+  pname = "systemsettings";
+}
diff --git a/nixpkgs/pkgs/kde/plasma/wacomtablet/default.nix b/nixpkgs/pkgs/kde/plasma/wacomtablet/default.nix
new file mode 100644
index 000000000000..c24e8739f746
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/wacomtablet/default.nix
@@ -0,0 +1,12 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  libwacom,
+  xf86_input_wacom,
+}:
+mkKdeDerivation {
+  pname = "wacomtablet";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [libwacom xf86_input_wacom];
+}
diff --git a/nixpkgs/pkgs/kde/plasma/xdg-desktop-portal-kde/default.nix b/nixpkgs/pkgs/kde/plasma/xdg-desktop-portal-kde/default.nix
new file mode 100644
index 000000000000..9d5be65fe097
--- /dev/null
+++ b/nixpkgs/pkgs/kde/plasma/xdg-desktop-portal-kde/default.nix
@@ -0,0 +1,14 @@
+{
+  mkKdeDerivation,
+  pkg-config,
+  qtwayland,
+  wayland,
+  wayland-protocols,
+  cups,
+}:
+mkKdeDerivation {
+  pname = "xdg-desktop-portal-kde";
+
+  extraNativeBuildInputs = [pkg-config];
+  extraBuildInputs = [qtwayland wayland wayland-protocols cups];
+}
diff --git a/nixpkgs/pkgs/misc/autotiling/default.nix b/nixpkgs/pkgs/misc/autotiling/default.nix
index 7bce53c54d83..7ce870cfce1c 100644
--- a/nixpkgs/pkgs/misc/autotiling/default.nix
+++ b/nixpkgs/pkgs/misc/autotiling/default.nix
@@ -2,13 +2,13 @@
 
 buildPythonApplication rec {
   pname = "autotiling";
-  version = "1.9";
+  version = "1.9.1";
 
   src = fetchFromGitHub {
     owner = "nwg-piotr";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-0wZg4FvBo2AyVRexY3ZJhBTqUwElqyIHD5bLJ84WynE=";
+    hash = "sha256-PTMF9w4PMkKuhjLAP7856lOOiuyj5YZOoax0K9bgGgQ=";
   };
 
   propagatedBuildInputs = [ i3ipc importlib-metadata ];
diff --git a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix
index 7c1bc55d3330..497223c4451e 100644
--- a/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix
+++ b/nixpkgs/pkgs/misc/cups/drivers/foomatic-db-engine/default.nix
@@ -17,15 +17,15 @@
 
 perlPackages.buildPerlPackage rec {
   pname = "foomatic-db-engine";
-  version = "unstable-2022-05-03";
+  version = "unstable-2024-02-10";
 
   src = fetchFromGitHub {
     # there is also a daily snapshot at the `downloadPage`,
     # but it gets deleted quickly and would provoke 404 errors
     owner = "OpenPrinting";
     repo = "foomatic-db-engine";
-    rev = "2e6f14b54748fa121a4d2e3d480010e10b070c5a";
-    hash = "sha256-m7FQTxWmawbtm24h8UqznGKXgX41JhOtyyFMRwEhm5k=";
+    rev = "fa91bdfd87da9005591ac2ef2c9c7b8ecdd19511";
+    hash = "sha256-Ufy9BtYMD7sUUVfraTmO5e8+nZ4C4up5a5GXeGTtejg=";
   };
 
   outputs = [ "out" ];
diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
index dc54611d335a..767597548991 100644
--- a/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
+++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj470dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, mfcj470dwlpr, makeWrapper}:
+{ lib, stdenv, fetchurl, mfcj470dwlpr, makeWrapper, bash }:
 
 stdenv.mkDerivation rec {
   pname = "mfcj470dw-cupswrapper";
@@ -10,27 +10,27 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ mfcj470dwlpr ];
+  buildInputs = [
+    bash # shebang
+  ];
 
-  patchPhase = ''
+  makeFlags = [ "-C" "brcupsconfpt1" "all" ];
+
+  postPatch = ''
     WRAPPER=cupswrapper/cupswrappermfcj470dw
 
     substituteInPlace $WRAPPER \
-    --replace /opt "${mfcj470dwlpr}/opt" \
-    --replace /usr "${mfcj470dwlpr}/usr" \
-    --replace /etc "$out/etc"
+      --replace-fail /opt "${mfcj470dwlpr}/opt" \
+      --replace-fail /usr "${mfcj470dwlpr}/usr" \
+      --replace-fail /etc "$out/etc"
 
     substituteInPlace $WRAPPER \
-    --replace "cp " "cp -p "
-    '';
-
-  buildPhase = ''
-    cd brcupsconfpt1
-    make all
-    cd ..
-    '';
+      --replace-fail "cp " "cp -p "
+  '';
 
   installPhase = ''
+    runHook preInstall
+
     TARGETFOLDER=$out/opt/brother/Printers/mfcj470dw/cupswrapper/
     PPDFOLDER=$out/share/cups/model/
     FILTERFOLDER=$out/lib/cups/filter/
@@ -44,12 +44,9 @@ stdenv.mkDerivation rec {
     cp PPD/brother_mfcj470dw_printer_en.ppd $PPDFOLDER
 
     ln -s ${mfcj470dwlpr}/lib/cups/filter/brother_lpdwrapper_mfcj470dw $FILTERFOLDER/
-    '';
 
-  cleanPhase = ''
-    cd brcupsconfpt1
-    make clean
-    '';
+    runHook postInstall
+  '';
 
   meta = {
     homepage = "http://www.brother.com/";
diff --git a/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
index 1653ced85c5a..4e6f37112087 100644
--- a/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
+++ b/nixpkgs/pkgs/misc/cups/drivers/mfcj6510dwcupswrapper/default.nix
@@ -1,4 +1,4 @@
-{ lib, stdenv, fetchurl, mfcj6510dwlpr, makeWrapper}:
+{ lib, stdenv, fetchurl, mfcj6510dwlpr, makeWrapper, bash }:
 
 stdenv.mkDerivation rec {
   pname = "mfcj6510dw-cupswrapper";
@@ -10,15 +10,15 @@ stdenv.mkDerivation rec {
   };
 
   nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ mfcj6510dwlpr ];
+  buildInputs = [
+    bash # shebang
+  ];
 
-  buildPhase = ''
-    cd brcupsconfig
-    make all
-    cd ..
-    '';
+  makeFlags = [ "-C" "brcupsconfig" "all" ];
 
   installPhase = ''
+    runHook preInstall
+
     TARGETFOLDER=$out/opt/brother/Printers/mfcj6510dw/cupswrapper
     mkdir -p $TARGETFOLDER
     cp PPD/brother_mfcj6510dw_printer_en.ppd $TARGETFOLDER
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
     cp scripts/cupswrappermfcj6510dw $TARGETFOLDER
     sed -i -e '26,304d' $TARGETFOLDER/cupswrappermfcj6510dw
     substituteInPlace $TARGETFOLDER/cupswrappermfcj6510dw \
-      --replace "\$ppd_file_name" "$TARGETFOLDER/brother_mfcj6510dw_printer_en.ppd"
+      --replace-fail "\$ppd_file_name" "$TARGETFOLDER/brother_mfcj6510dw_printer_en.ppd"
 
     CPUSFILTERFOLDER=$out/lib/cups/filter
     mkdir -p $TARGETFOLDER $CPUSFILTERFOLDER
@@ -37,22 +37,19 @@ stdenv.mkDerivation rec {
     #sed -i -e '33,40d' $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw
     #sed -i -e '34,35d' $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw
     #substituteInPlace $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw \
-    #  --replace "/opt/brother/$``{device_model``}/$``{printer_model``}/lpd/filter$``{printer_model``}" \
+    #  --replace-fail "/opt/brother/$``{device_model``}/$``{printer_model``}/lpd/filter$``{printer_model``}" \
     #    "${mfcj6510dwlpr}/opt/brother/Printers/mfcj6510dw/lpd/filtermfcj6510dw" \
-    #  --replace "/opt/brother/Printers/$``{printer_model``}/inf/br$``{printer_model``}rc" \
+    #  --replace-fail "/opt/brother/Printers/$``{printer_model``}/inf/br$``{printer_model``}rc" \
     #    "${mfcj6510dwlpr}/opt/brother/Printers/mfcj6510dw/inf/brmfcj6510dwrc" \
-    #  --replace "/opt/brother/$``{device_model``}/$``{printer_model``}/cupswrapper/brcupsconfpt1" \
+    #  --replace-fail "/opt/brother/$``{device_model``}/$``{printer_model``}/cupswrapper/brcupsconfpt1" \
     #    "$out/opt/brother/Printers/mfcj6510dw/cupswrapper/brcupsconfpt1" \
-    #  --replace "/usr/share/cups/model/Brother/brother_" "$out/opt/brother/Printers/mfcj6510dw/cupswrapper/brother_"
+    #  --replace-fail "/usr/share/cups/model/Brother/brother_" "$out/opt/brother/Printers/mfcj6510dw/cupswrapper/brother_"
     #substituteInPlace $CPUSFILTERFOLDER/brother_lpdwrapper_mfcj6510dw \
-    #  --replace "$``{printer_model``}" "mfcj6510dw" \
-    #  --replace "$``{printer_name``}" "MFCJ6510DW"
-    '';
+    #  --replace-fail "$``{printer_model``}" "mfcj6510dw" \
+    #  --replace-fail "$``{printer_name``}" "MFCJ6510DW"
 
-  cleanPhase = ''
-    cd brcupsconfpt1
-    make clean
-    '';
+    runHook postInstall
+  '';
 
   meta = with lib; {
     homepage = "http://www.brother.com/";
diff --git a/nixpkgs/pkgs/misc/tmux-plugins/default.nix b/nixpkgs/pkgs/misc/tmux-plugins/default.nix
index 9e6bf4911342..a742500d0394 100644
--- a/nixpkgs/pkgs/misc/tmux-plugins/default.nix
+++ b/nixpkgs/pkgs/misc/tmux-plugins/default.nix
@@ -198,12 +198,12 @@ in rec {
 
   dracula = mkTmuxPlugin rec {
     pluginName = "dracula";
-    version = "2.2.0";
+    version = "2.3.0";
     src = fetchFromGitHub {
       owner = "dracula";
       repo = "tmux";
       rev = "v${version}";
-      sha256 = "9p+KO3/SrASHGtEk8ioW+BnC4cXndYx4FL0T70lKU2w=";
+      sha256 = "IrNDBRopg9lgN5AfeXbhhh+uXiWQD2bjS1sNOgOJsu4=";
     };
     meta = with lib; {
       homepage = "https://draculatheme.com/tmux";
diff --git a/nixpkgs/pkgs/os-specific/darwin/hexfiend/default.nix b/nixpkgs/pkgs/os-specific/darwin/hexfiend/default.nix
index 29767a1154d5..df81d7882d00 100644
--- a/nixpkgs/pkgs/os-specific/darwin/hexfiend/default.nix
+++ b/nixpkgs/pkgs/os-specific/darwin/hexfiend/default.nix
@@ -1,12 +1,19 @@
 { stdenv, lib, fetchurl, undmg }:
 
+let
+  urlSuffix = version: if lib.versions.patch == 0 then
+    lib.versions.majorMinor version
+  else
+    version
+  ;
+in
 stdenv.mkDerivation rec {
   pname = "hexfiend";
-  version = "2.16.0";
+  version = "2.17.1";
 
   src = fetchurl {
-    url = "https://github.com/HexFiend/HexFiend/releases/download/v${version}/Hex_Fiend_${lib.versions.majorMinor version}.dmg";
-    sha256 = "sha256-jO57bW5TyuQ0mjKKsSwDoGLp2TZ1d+m159flVGaVrLc=";
+    url = "https://github.com/HexFiend/HexFiend/releases/download/v${version}/Hex_Fiend_${urlSuffix version}.dmg";
+    hash = "sha256-QpGmpxDpdS+sJtsNtp0VSAd9WJXaZiKTH4yDsDK8FSk=";
   };
 
   sourceRoot = "Hex Fiend.app";
diff --git a/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix b/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
index a85eee05422c..073714bd57a0 100644
--- a/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/intel-compute-runtime/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "intel-compute-runtime";
-  version = "23.48.27912.11";
+  version = "24.05.28454.6";
 
   src = fetchFromGitHub {
     owner = "intel";
     repo = "compute-runtime";
     rev = version;
-    hash = "sha256-9VKmD7FxvBrDVqT1TzKommjrTvalfR4diReaDRy+Lk0=";
+    hash = "sha256-gX6zvZcwZXcSj3ch/eIWqIefccKuab0voh2vHHJTTso=";
   };
 
   nativeBuildInputs = [ cmake pkg-config ];
@@ -51,8 +51,9 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with lib; {
-    homepage = "https://github.com/intel/compute-runtime";
     description = "Intel Graphics Compute Runtime for OpenCL. Replaces Beignet for Gen8 (Broadwell) and beyond";
+    homepage = "https://github.com/intel/compute-runtime";
+    changelog = "https://github.com/intel/compute-runtime/releases/tag/${version}";
     license = licenses.mit;
     platforms = [ "x86_64-linux" "aarch64-linux" ];
     maintainers = with maintainers; [ SuperSandro2000 ];
diff --git a/nixpkgs/pkgs/os-specific/linux/ipset/default.nix b/nixpkgs/pkgs/os-specific/linux/ipset/default.nix
index 8326ef1c4614..4b8fadcecf25 100644
--- a/nixpkgs/pkgs/os-specific/linux/ipset/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/ipset/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ipset";
-  version = "7.19";
+  version = "7.21";
 
   src = fetchurl {
     url = "https://ipset.netfilter.org/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-m8H7pI1leG4+C2Pca2aahmgj13hAxpkMDGsjB47CxNY=";
+    sha256 = "sha256-4sbOT886yziTyl01yGk1+ArXb8XMrmARhYQt92DgvGk=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/common-config.nix b/nixpkgs/pkgs/os-specific/linux/kernel/common-config.nix
index 4b9259d396b3..6e530b3acd9d 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/common-config.nix
@@ -846,6 +846,7 @@ let
       AIC94XX_DEBUG = no;
 
       BLK_DEV_INTEGRITY       = yes;
+      BLK_DEV_ZONED           = yes;
 
       BLK_SED_OPAL = yes;
 
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/generic.nix b/nixpkgs/pkgs/os-specific/linux/kernel/generic.nix
index 8ff8dcff0b38..14c863b459b1 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/generic.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/generic.nix
@@ -212,7 +212,10 @@ let
     config = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; } // lib.optionalAttrs withRust { CONFIG_RUST = "y"; };
   } // lib.optionalAttrs (modDirVersion != null) { inherit modDirVersion; });
 
-  passthru = basicArgs // {
+in
+kernel.overrideAttrs (finalAttrs: previousAttrs: {
+
+  passthru = previousAttrs.passthru or { } // basicArgs // {
     features = kernelFeatures;
     inherit commonStructuredConfig structuredExtraConfig extraMakeFlags isZen isHardened isLibre;
     isXen = lib.warn "The isXen attribute is deprecated. All Nixpkgs kernels that support it now have Xen enabled." true;
@@ -225,9 +228,8 @@ let
       ]);
     });
 
-    passthru = kernel.passthru // (removeAttrs passthru [ "passthru" ]);
     tests = let
-      overridableKernel = finalKernel // {
+      overridableKernel = finalAttrs.finalPackage // {
         override = args:
           lib.warn (
             "override is stubbed for NixOS kernel tests, not applying changes these arguments: "
@@ -237,5 +239,4 @@ let
     in [ (nixosTests.kernel-generic.passthru.testsForKernel overridableKernel) ] ++ kernelTests;
   };
 
-  finalKernel = lib.extendDerivation true passthru kernel;
-in finalKernel
+})
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json b/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
index 13fa601a8e28..febf7ff0ba98 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/kernels-org.json
@@ -1,11 +1,7 @@
 {
     "testing": {
-        "version": "6.8-rc5",
-        "hash": "sha256:0cfv90lf0vccpasqxilr62p23qy5in5b9pz2916iifqs9sngj469"
-    },
-    "6.5": {
-        "version": "6.5.13",
-        "hash": "sha256:1dfbbydmayfj9npx3z0g38p574pmcx3qgs49dv0npigl48wd9yvq"
+        "version": "6.8-rc6",
+        "hash": "sha256:03ci53snbv917ccyjdm3xzl2fwijq5da7nkg05dpwb99wrzp8fkd"
     },
     "6.1": {
         "version": "6.1.79",
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/linux-libre.nix b/nixpkgs/pkgs/os-specific/linux/kernel/linux-libre.nix
index e4716dfa6d96..6c3d3eb153fa 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/linux-libre.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/linux-libre.nix
@@ -1,8 +1,8 @@
 { stdenv, lib, fetchsvn, linux
 , scripts ? fetchsvn {
     url = "https://www.fsfla.org/svn/fsfla/software/linux-libre/releases/branches/";
-    rev = "19489";
-    sha256 = "1adnk4710iyq87bj48bfxzmzhv5hk0x3fmyz6ydk5af364fl87mk";
+    rev = "19491";
+    sha256 = "047gvbg8dlmnwqll17hkla2rqf97g8p90z4jncqdk5hf2v5wqgi7";
   }
 , ...
 }:
diff --git a/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix b/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
index 4035c6eb579b..426a813c6b7b 100644
--- a/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
+++ b/nixpkgs/pkgs/os-specific/linux/kernel/zen-kernels.nix
@@ -4,16 +4,16 @@ let
   # comments with variant added for update script
   # ./update-zen.py zen
   zenVariant = {
-    version = "6.7.5"; #zen
+    version = "6.7.6"; #zen
     suffix = "zen1"; #zen
-    sha256 = "1f7czivsmqzhcbckcyi058lqwa4qds03fmylqa1wa4sybrq4diri"; #zen
+    sha256 = "1qvnv5jmzf1ziarvxyr81j8cpfnag7vvkpnfja6haba7yjavgvkc"; #zen
     isLqx = false;
   };
   # ./update-zen.py lqx
   lqxVariant = {
-    version = "6.7.5"; #lqx
+    version = "6.7.6"; #lqx
     suffix = "lqx1"; #lqx
-    sha256 = "1vkcl0ll7m60mmd1hbdqi9sj7gq513cadfxaamxzb9isq2c1wa03"; #lqx
+    sha256 = "1z737ma2ak2yddc416svr5s2f7pl31v1cs2bknl9v6syl6xm9sxk"; #lqx
     isLqx = true;
   };
   zenKernelsFor = { version, suffix, sha256, isLqx }: buildLinux (args // {
diff --git a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
index 9a7d8ffbecf6..2b1e7066b602 100644
--- a/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/nvidia-x11/default.nix
@@ -33,14 +33,12 @@ rec {
   stable = if stdenv.hostPlatform.system == "i686-linux" then legacy_390 else latest;
 
   production = generic {
-    version = "535.154.05";
-    sha256_64bit = "sha256-fpUGXKprgt6SYRDxSCemGXLrEsIA6GOinp+0eGbqqJg=";
-    sha256_aarch64 = "sha256-G0/GiObf/BZMkzzET8HQjdIcvCSqB1uhsinro2HLK9k=";
-    openSha256 = "sha256-wvRdHguGLxS0mR06P5Qi++pDJBCF8pJ8hr4T8O6TJIo=";
-    settingsSha256 = "sha256-9wqoDEWY4I7weWW05F4igj1Gj9wjHsREFMztfEmqm10=";
-    persistencedSha256 = "sha256-d0Q3Lk80JqkS1B54Mahu2yY/WocOqFFbZVBh+ToGhaE=";
-
-    patches = [ rcu_patch ];
+    version = "550.54.14";
+    sha256_64bit = "sha256-jEl/8c/HwxD7h1FJvDD6pP0m0iN7LLps0uiweAFXz+M=";
+    sha256_aarch64 = "sha256-sProBhYziFwk9rDAR2SbRiSaO7RMrf+/ZYryj4BkLB0=";
+    openSha256 = "sha256-F+9MWtpIQTF18F2CftCJxQ6WwpA8BVmRGEq3FhHLuYw=";
+    settingsSha256 = "sha256-m2rNASJp0i0Ez2OuqL+JpgEF0Yd8sYVCyrOoo/ln2a4=";
+    persistencedSha256 = "sha256-XaPN8jVTjdag9frLPgBtqvO/goB5zxeGzaTU0CdL6C4=";
   };
 
   latest = selectHighestVersion production (generic {
diff --git a/nixpkgs/pkgs/os-specific/linux/openvswitch/default.nix b/nixpkgs/pkgs/os-specific/linux/openvswitch/default.nix
index 89149027d3b8..0ea5b6391605 100644
--- a/nixpkgs/pkgs/os-specific/linux/openvswitch/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/openvswitch/default.nix
@@ -1,4 +1,4 @@
 import ./generic.nix {
-  version = "3.2.2";
-  hash = "sha256-BCesNAYE3RyxfBAzK2/6+PcV1W+1ZEZQKVSLSq/pWC8=";
+  version = "3.3.0";
+  hash = "sha256-Gvy4H7lHwL6IWGaZXWwIjmHfQ1YRFXiSBqKzP3vBsF8=";
 }
diff --git a/nixpkgs/pkgs/os-specific/linux/reptyr/default.nix b/nixpkgs/pkgs/os-specific/linux/reptyr/default.nix
index 35516fdf0e69..fadb9df98086 100644
--- a/nixpkgs/pkgs/os-specific/linux/reptyr/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/reptyr/default.nix
@@ -17,7 +17,9 @@ in stdenv.mkDerivation rec {
 
   nativeCheckInputs = [ python ];
 
-  doCheck = true;
+  # reptyr needs to do ptrace of a non-child process
+  # It can be neither used nor tested if the kernel is not told to allow this
+  doCheck = false;
 
   checkFlags = [
     "PYTHON_CMD=${python.interpreter}"
diff --git a/nixpkgs/pkgs/os-specific/linux/uhk-agent/default.nix b/nixpkgs/pkgs/os-specific/linux/uhk-agent/default.nix
index 931d9edc8c37..28afb1ef4d20 100644
--- a/nixpkgs/pkgs/os-specific/linux/uhk-agent/default.nix
+++ b/nixpkgs/pkgs/os-specific/linux/uhk-agent/default.nix
@@ -12,12 +12,12 @@
 
 let
   pname = "uhk-agent";
-  version = "3.3.0";
+  version = "4.0.0";
 
   src = fetchurl {
     url = "https://github.com/UltimateHackingKeyboard/agent/releases/download/v${version}/UHK.Agent-${version}-linux-x86_64.AppImage";
     name = "${pname}-${version}.AppImage";
-    sha256 = "sha256-jkIuXKTm8imq1U7kbQhK7LkEeI2qz0Gu7rWuDn6Ex+c=";
+    sha256 = "sha256-Vf01OANE5mow7ogmzPg0cJgw0fA02DF5SqZ49n9xa5U=";
   };
 
   appimageContents = appimageTools.extract {
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix b/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix
index 4642bc20f6fc..73cc0d962703 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/2_1.nix
@@ -2,7 +2,6 @@
 , kernel ? null
 , stdenv
 , linuxKernel
-, removeLinuxDRM ? false
 , lib
 , nixosTests
 , ...
@@ -16,20 +15,15 @@ callPackage ./generic.nix args {
   # this attribute is the correct one for this package.
   kernelModuleAttribute = "zfs_2_1";
   # check the release notes for compatible kernels
-  kernelCompatible =
-    if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.6"
-    else kernel.kernelOlder "6.2";
+  kernelCompatible = kernel.kernelOlder "6.8";
 
-  latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_5
-    else linuxKernel.packages.linux_6_1;
+  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_7;
 
   # This is a fixed version to the 2.1.x series, move only
   # if the 2.1.x series moves.
-  version = "2.1.14";
+  version = "2.1.15";
 
-  hash = "sha256-RVAoZbV9yclGuN+D37SB6UCRFbbLEpBoyrQOQCVsQwE=";
+  hash = "sha256-zFO8fMbirEOrn5W57rAN7IWY6EIXG8jDXqhP7BWJyiY=";
 
   tests = [
     nixosTests.zfs.series_2_1
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix b/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
index df06ea9a3285..7ca1d5be3787 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/stable.nix
@@ -2,7 +2,6 @@
 , kernel ? null
 , stdenv
 , linuxKernel
-, removeLinuxDRM ? false
 , nixosTests
 , ...
 } @ args:
@@ -15,14 +14,9 @@ callPackage ./generic.nix args {
   # this attribute is the correct one for this package.
   kernelModuleAttribute = "zfs";
   # check the release notes for compatible kernels
-  kernelCompatible =
-    if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.8"
-    else kernel.kernelOlder "6.2";
+  kernelCompatible = kernel.kernelOlder "6.8";
 
-  latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_7
-    else linuxKernel.packages.linux_6_1;
+  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_7;
 
   # this package should point to the latest release.
   version = "2.2.3";
diff --git a/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix b/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
index 64a1e7955000..2bd06e0d6b74 100644
--- a/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
+++ b/nixpkgs/pkgs/os-specific/linux/zfs/unstable.nix
@@ -2,7 +2,6 @@
 , kernel ? null
 , stdenv
 , linuxKernel
-, removeLinuxDRM ? false
 , nixosTests
 , ...
 } @ args:
@@ -15,14 +14,9 @@ callPackage ./generic.nix args {
   # this attribute is the correct one for this package.
   kernelModuleAttribute = "zfsUnstable";
   # check the release notes for compatible kernels
-  kernelCompatible =
-    if stdenv'.isx86_64 || removeLinuxDRM
-    then kernel.kernelOlder "6.9"
-    else kernel.kernelOlder "6.2";
+  kernelCompatible = kernel.kernelOlder "6.9";
 
-  latestCompatibleLinuxPackages = if stdenv'.isx86_64 || removeLinuxDRM
-    then linuxKernel.packages.linux_6_7
-    else linuxKernel.packages.linux_6_1;
+  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_7;
 
   # this package should point to a version / git revision compatible with the latest kernel release
   # IMPORTANT: Always use a tagged release candidate or commits from the
diff --git a/nixpkgs/pkgs/pkgs-lib/formats.nix b/nixpkgs/pkgs/pkgs-lib/formats.nix
index c78bd82e01ef..1b72270b43ca 100644
--- a/nixpkgs/pkgs/pkgs-lib/formats.nix
+++ b/nixpkgs/pkgs/pkgs-lib/formats.nix
@@ -95,29 +95,13 @@ rec {
 
   };
 
-  ini = {
-    # Represents lists as duplicate keys
-    listsAsDuplicateKeys ? false,
-    # Alternative to listsAsDuplicateKeys, converts list to non-list
-    # listToValue :: [IniAtom] -> IniAtom
-    listToValue ? null,
-    ...
-    }@args:
-    assert !listsAsDuplicateKeys || listToValue == null;
-    {
-
-    type = with lib.types; let
-
-      singleIniAtom = nullOr (oneOf [
-        bool
-        int
-        float
-        str
-      ]) // {
+  # the ini formats share a lot of code
+  inherit (
+    let
+      singleIniAtom = with lib.types; nullOr (oneOf [ bool int float str ]) // {
         description = "INI atom (null, bool, int, float or string)";
       };
-
-      iniAtom =
+      iniAtom = with lib.types; { listsAsDuplicateKeys, listToValue }:
         if listsAsDuplicateKeys then
           coercedTo singleIniAtom lib.singleton (listOf singleIniAtom) // {
             description = singleIniAtom.description + " or a list of them for duplicate keys";
@@ -128,21 +112,79 @@ rec {
           }
         else
           singleIniAtom;
+      iniSection = with lib.types; { listsAsDuplicateKeys, listToValue }@args:
+        attrsOf (iniAtom args) // {
+          description = "section of an INI file (attrs of " + (iniAtom args).description + ")";
+        };
 
-    in attrsOf (attrsOf iniAtom);
+      maybeToList = listToValue: if listToValue != null then lib.mapAttrs (key: val: if lib.isList val then listToValue val else val) else lib.id;
+    in {
+      ini = {
+        # Represents lists as duplicate keys
+        listsAsDuplicateKeys ? false,
+        # Alternative to listsAsDuplicateKeys, converts list to non-list
+        # listToValue :: [IniAtom] -> IniAtom
+        listToValue ? null,
+        ...
+        }@args:
+        assert listsAsDuplicateKeys -> listToValue == null;
+        {
 
-    generate = name: value:
-      let
-        transformedValue =
-          if listToValue != null
-          then
-            lib.mapAttrs (section: lib.mapAttrs (key: val:
-              if lib.isList val then listToValue val else val
-            )) value
-          else value;
-      in pkgs.writeText name (lib.generators.toINI (removeAttrs args ["listToValue"]) transformedValue);
+        type = lib.types.attrsOf (iniSection { listsAsDuplicateKeys = listsAsDuplicateKeys; listToValue = listToValue; });
 
-  };
+        generate = name: value:
+          lib.pipe value
+          [
+            (lib.mapAttrs (_: maybeToList listToValue))
+            (lib.generators.toINI (removeAttrs args ["listToValue"]))
+            (pkgs.writeText name)
+          ];
+      };
+
+      iniWithGlobalSection = {
+        # Represents lists as duplicate keys
+        listsAsDuplicateKeys ? false,
+        # Alternative to listsAsDuplicateKeys, converts list to non-list
+        # listToValue :: [IniAtom] -> IniAtom
+        listToValue ? null,
+        ...
+        }@args:
+        assert listsAsDuplicateKeys -> listToValue == null;
+        {
+          type = lib.types.submodule {
+            options = {
+              sections = lib.mkOption rec {
+                type = lib.types.attrsOf (iniSection { listsAsDuplicateKeys = listsAsDuplicateKeys; listToValue = listToValue; });
+                default = {};
+                description = type.description;
+              };
+              globalSection = lib.mkOption rec {
+                type = iniSection { listsAsDuplicateKeys = listsAsDuplicateKeys; listToValue = listToValue; };
+                default = {};
+                description = "global " + type.description;
+              };
+            };
+          };
+          generate = name: { sections ? {}, globalSection ? {}, ... }:
+            pkgs.writeText name (lib.generators.toINIWithGlobalSection (removeAttrs args ["listToValue"])
+            {
+              globalSection = maybeToList listToValue globalSection;
+              sections = lib.mapAttrs (_: maybeToList listToValue) sections;
+            });
+        };
+
+      gitIni = { listsAsDuplicateKeys ? false, ... }@args: {
+        type = let
+          atom = iniAtom {
+            listsAsDuplicateKeys = listsAsDuplicateKeys;
+            listToValue = null;
+          };
+        in with lib.types; attrsOf (attrsOf (either atom (attrsOf atom)));
+
+        generate = name: value: pkgs.writeText name (lib.generators.toGitINI value);
+      };
+
+    }) ini iniWithGlobalSection gitIni;
 
   # As defined by systemd.syntax(7)
   #
@@ -166,7 +208,7 @@ rec {
     listToValue ? null,
     ...
     }@args:
-    assert !listsAsDuplicateKeys || listToValue == null;
+    assert listsAsDuplicateKeys -> listToValue == null;
     {
 
     type = with lib.types; let
@@ -207,17 +249,6 @@ rec {
 
   };
 
-  gitIni = { listsAsDuplicateKeys ? false, ... }@args: {
-
-    type = with lib.types; let
-
-      iniAtom = (ini args).type/*attrsOf*/.functor.wrapped/*attrsOf*/.functor.wrapped;
-
-    in attrsOf (attrsOf (either iniAtom (attrsOf iniAtom)));
-
-    generate = name: value: pkgs.writeText name (lib.generators.toGitINI value);
-  };
-
   toml = {}: json {} // {
     type = with lib.types; let
       valueType = oneOf [
diff --git a/nixpkgs/pkgs/pkgs-lib/tests/formats.nix b/nixpkgs/pkgs/pkgs-lib/tests/formats.nix
index b7e100dd73bc..3243f4058e68 100644
--- a/nixpkgs/pkgs/pkgs-lib/tests/formats.nix
+++ b/nixpkgs/pkgs/pkgs-lib/tests/formats.nix
@@ -1,24 +1,21 @@
 { pkgs }:
 let
   inherit (pkgs) lib formats;
-in
-with lib;
-let
 
-  evalFormat = format: args: def:
-    let
-      formatSet = format args;
-      config = formatSet.type.merge [] (imap1 (n: def: {
-        # We check the input values, so that
-        #  - we don't write nonsensical tests that will impede progress
-        #  - the test author has a slightly more realistic view of the
-        #    final format during development.
-        value = lib.throwIfNot (formatSet.type.check def) (builtins.trace def "definition does not pass the type's check function") def;
-        file = "def${toString n}";
-      }) [ def ]);
-    in formatSet.generate "test-format-file" config;
-
-  runBuildTest = name: { drv, expected }: pkgs.runCommand name {
+  # merging allows us to add metadata to the input
+  # this makes error messages more readable during development
+  mergeInput = name: format: input:
+    format.type.merge [] [
+      {
+        # explicitly throw here to trigger the code path that prints the error message for users
+        value = lib.throwIfNot (format.type.check input) (builtins.trace input "definition does not pass the type's check function") input;
+        # inject the name
+        file = "format-test-${name}";
+      }
+    ];
+
+  # run a diff between expected and real output
+  runDiff = name: drv: expected: pkgs.runCommand name {
     passAsFile = ["expected"];
     inherit expected drv;
   } ''
@@ -31,12 +28,66 @@ let
     fi
   '';
 
-  runBuildTests = tests: pkgs.linkFarm "nixpkgs-pkgs-lib-format-tests" (mapAttrsToList (name: value: { inherit name; path = runBuildTest name value; }) (filterAttrs (name: value: value != null) tests));
+  # use this to check for proper serialization
+  # in practice you do not have to supply the name parameter as this one will be added by runBuildTests
+  shouldPass = { format, input, expected }: name: {
+    name = "pass-${name}";
+    path = runDiff "test-format-${name}" (format.generate "test-format-${name}" (mergeInput name format input)) expected;
+  };
+
+  # use this function to assert that a type check must fail
+  # in practice you do not have to supply the name parameter as this one will be added by runBuildTests
+  # note that as per 352e7d330a26 and 352e7d330a26 the type checking of attrsets and lists are not strict
+  # this means that the code below needs to properly merge the module type definition and also evaluate the (lazy) return value
+  shouldFail = { format, input }: name:
+    let
+      # trigger a deep type check using the module system
+      typeCheck = lib.modules.mergeDefinitions
+        [ "tests" name ]
+        format.type
+        [
+          {
+            file = "format-test-${name}";
+            value = input;
+          }
+        ];
+      # actually use the return value to trigger the evaluation
+      eval = builtins.tryEval (typeCheck.mergedValue == input);
+      # the check failing is what we want, so don't do anything here
+      typeFails = pkgs.runCommand "test-format-${name}" {} "touch $out";
+      # bail with some verbose information in case the type check passes
+      typeSucceeds = pkgs.runCommand "test-format-${name}" {
+          passAsFile = [ "inputText" ];
+          testName = name;
+          # this will fail if the input contains functions as values
+          # however that should get caught by the type check already
+          inputText = builtins.toJSON input;
+        }
+        ''
+          echo "Type check $testName passed when it shouldn't."
+          echo "The following data was used as input:"
+          echo
+          cat "$inputTextPath"
+          exit 1
+        '';
+    in {
+      name = "fail-${name}";
+      path = if eval.success then typeSucceeds else typeFails;
+    };
+
+  # this function creates a linkFarm for all the tests below such that the results are easily visible in the filesystem after a build
+  # the parameters are an attrset of name: test pairs where the name is automatically passed to the test
+  # the test therefore is an invocation of ShouldPass or shouldFail with the attrset parameters but *not* the name (which this adds for convenience)
+  runBuildTests = (lib.flip lib.pipe) [
+    (lib.mapAttrsToList (name: value: value name))
+    (pkgs.linkFarm "nixpkgs-pkgs-lib-format-tests")
+  ];
 
 in runBuildTests {
 
-  testJsonAtoms = {
-    drv = evalFormat formats.json {} {
+  jsonAtoms = shouldPass {
+    format = formats.json {};
+    input = {
       null = null;
       false = false;
       true = true;
@@ -67,8 +118,9 @@ in runBuildTests {
     '';
   };
 
-  testYamlAtoms = {
-    drv = evalFormat formats.yaml {} {
+  yamlAtoms = shouldPass {
+    format = formats.yaml {};
+    input = {
       null = null;
       false = false;
       true = true;
@@ -93,8 +145,9 @@ in runBuildTests {
     '';
   };
 
-  testIniAtoms = {
-    drv = evalFormat formats.ini {} {
+  iniAtoms = shouldPass {
+    format = formats.ini {};
+    input = {
       foo = {
         bool = true;
         int = 10;
@@ -111,8 +164,29 @@ in runBuildTests {
     '';
   };
 
-  testIniDuplicateKeys = {
-    drv = evalFormat formats.ini { listsAsDuplicateKeys = true; } {
+  iniInvalidAtom = shouldFail {
+    format = formats.ini {};
+    input = {
+      foo = {
+        function = _: 1;
+      };
+    };
+  };
+
+  iniDuplicateKeysWithoutList = shouldFail {
+    format = formats.ini {};
+    input = {
+      foo = {
+        bar = [ null true "test" 1.2 10 ];
+        baz = false;
+        qux = "qux";
+      };
+    };
+  };
+
+  iniDuplicateKeys = shouldPass {
+    format = formats.ini { listsAsDuplicateKeys = true; };
+    input = {
       foo = {
         bar = [ null true "test" 1.2 10 ];
         baz = false;
@@ -131,8 +205,9 @@ in runBuildTests {
     '';
   };
 
-  testIniListToValue = {
-    drv = evalFormat formats.ini { listToValue = concatMapStringsSep ", " (generators.mkValueStringDefault {}); } {
+  iniListToValue = shouldPass {
+    format = formats.ini { listToValue = lib.concatMapStringsSep ", " (lib.generators.mkValueStringDefault {}); };
+    input = {
       foo = {
         bar = [ null true "test" 1.2 10 ];
         baz = false;
@@ -147,8 +222,104 @@ in runBuildTests {
     '';
   };
 
-  testKeyValueAtoms = {
-    drv = evalFormat formats.keyValue {} {
+  iniWithGlobalNoSections = shouldPass {
+    format = formats.iniWithGlobalSection {};
+    input = {};
+    expected = "";
+  };
+
+  iniWithGlobalOnlySections = shouldPass {
+    format = formats.iniWithGlobalSection {};
+    input = {
+      sections = {
+        foo = {
+          bar = "baz";
+        };
+      };
+    };
+    expected = ''
+      [foo]
+      bar=baz
+    '';
+  };
+
+  iniWithGlobalOnlyGlobal = shouldPass {
+    format = formats.iniWithGlobalSection {};
+    input = {
+      globalSection = {
+        bar = "baz";
+      };
+    };
+    expected = ''
+      bar=baz
+
+    '';
+  };
+
+  iniWithGlobalWrongSections = shouldFail {
+    format = formats.iniWithGlobalSection {};
+    input = {
+      foo = {};
+    };
+  };
+
+  iniWithGlobalEverything = shouldPass {
+    format = formats.iniWithGlobalSection {};
+    input = {
+      globalSection = {
+        bar = true;
+      };
+      sections = {
+        foo = {
+          bool = true;
+          int = 10;
+          float = 3.141;
+          str = "string";
+        };
+      };
+    };
+    expected = ''
+      bar=true
+
+      [foo]
+      bool=true
+      float=3.141000
+      int=10
+      str=string
+    '';
+  };
+
+  iniWithGlobalListToValue = shouldPass {
+    format = formats.iniWithGlobalSection { listToValue = lib.concatMapStringsSep ", " (lib.generators.mkValueStringDefault {}); };
+    input = {
+      globalSection = {
+        bar = [ null true "test" 1.2 10 ];
+        baz = false;
+        qux = "qux";
+      };
+      sections = {
+        foo = {
+          bar = [ null true "test" 1.2 10 ];
+          baz = false;
+          qux = "qux";
+        };
+      };
+    };
+    expected = ''
+      bar=null, true, test, 1.200000, 10
+      baz=false
+      qux=qux
+
+      [foo]
+      bar=null, true, test, 1.200000, 10
+      baz=false
+      qux=qux
+    '';
+  };
+
+  keyValueAtoms = shouldPass {
+    format = formats.keyValue {};
+    input = {
       bool = true;
       int = 10;
       float = 3.141;
@@ -162,8 +333,9 @@ in runBuildTests {
     '';
   };
 
-  testKeyValueDuplicateKeys = {
-    drv = evalFormat formats.keyValue { listsAsDuplicateKeys = true; } {
+  keyValueDuplicateKeys = shouldPass {
+    format = formats.keyValue { listsAsDuplicateKeys = true; };
+    input = {
       bar = [ null true "test" 1.2 10 ];
       baz = false;
       qux = "qux";
@@ -179,8 +351,9 @@ in runBuildTests {
     '';
   };
 
-  testKeyValueListToValue = {
-    drv = evalFormat formats.keyValue { listToValue = concatMapStringsSep ", " (generators.mkValueStringDefault {}); } {
+  keyValueListToValue = shouldPass {
+    format = formats.keyValue { listToValue = lib.concatMapStringsSep ", " (lib.generators.mkValueStringDefault {}); };
+    input = {
       bar = [ null true "test" 1.2 10 ];
       baz = false;
       qux = "qux";
@@ -192,8 +365,9 @@ in runBuildTests {
     '';
   };
 
-  testTomlAtoms = {
-    drv = evalFormat formats.toml {} {
+  tomlAtoms = shouldPass {
+    format = formats.toml {};
+    input = {
       false = false;
       true = true;
       int = 10;
@@ -222,8 +396,9 @@ in runBuildTests {
   #   1. testing type coercions
   #   2. providing a more readable example test
   # Whereas java-properties/default.nix tests the low level escaping, etc.
-  testJavaProperties = {
-    drv = evalFormat formats.javaProperties {} {
+  javaProperties = shouldPass {
+    format = formats.javaProperties {};
+    input = {
       floaty = 3.1415;
       tautologies = true;
       contradictions = false;
diff --git a/nixpkgs/pkgs/servers/consul/default.nix b/nixpkgs/pkgs/servers/consul/default.nix
index 3da8b8352b68..7b29967c91b1 100644
--- a/nixpkgs/pkgs/servers/consul/default.nix
+++ b/nixpkgs/pkgs/servers/consul/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "consul";
-  version = "1.17.3";
+  version = "1.18.0";
 
   # Note: Currently only release tags are supported, because they have the Consul UI
   # vendored. See
@@ -16,7 +16,7 @@ buildGoModule rec {
     owner = "hashicorp";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-uJN28p2fPQBBkqnlUWrlBwTNfmHr3Pn/4JiMbOBBppI=";
+    hash = "sha256-Xhh6Rrcv/FoBjzhWR59gQ/R4A3ynqWYS8djNe3CnGCE=";
   };
 
   passthru.tests.consul = nixosTests.consul;
@@ -25,7 +25,7 @@ buildGoModule rec {
   # has a split module structure in one repo
   subPackages = ["." "connect/certgen"];
 
-  vendorHash = "sha256-ToSCLAX+rNcUTnBBVWkWhLX+wjy7Y4vGLKuny1Ye3kY=";
+  vendorHash = "sha256-pNFjLXjtgsK8fjCCmjYclZw1GM4BfyzkTuaRCRIMJ3c=";
 
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/servers/etcd/3.5.nix b/nixpkgs/pkgs/servers/etcd/3.5.nix
index f02533ea9a14..530df4476ecb 100644
--- a/nixpkgs/pkgs/servers/etcd/3.5.nix
+++ b/nixpkgs/pkgs/servers/etcd/3.5.nix
@@ -1,4 +1,4 @@
-{ lib, buildGoModule, fetchFromGitHub, symlinkJoin, nixosTests }:
+{ lib, buildGoModule, fetchFromGitHub, symlinkJoin, nixosTests, k3s }:
 
 let
   version = "3.5.12";
@@ -67,7 +67,10 @@ symlinkJoin {
 
   passthru = {
     inherit etcdserver etcdutl etcdctl;
-    tests = { inherit (nixosTests) etcd etcd-cluster; };
+    tests = {
+      inherit (nixosTests) etcd etcd-cluster;
+      k3s = k3s.passthru.tests.etcd;
+    };
   };
 
   paths = [
diff --git a/nixpkgs/pkgs/servers/geospatial/pg_featureserv/default.nix b/nixpkgs/pkgs/servers/geospatial/pg_featureserv/default.nix
index b6e68eb946e2..04a226650ac5 100644
--- a/nixpkgs/pkgs/servers/geospatial/pg_featureserv/default.nix
+++ b/nixpkgs/pkgs/servers/geospatial/pg_featureserv/default.nix
@@ -13,8 +13,28 @@ buildGoModule rec {
 
   vendorHash = "sha256-BHiEVyi3FXPovYy3iDP8q+y+LgfI4ElDPVZexd7nnuo=";
 
+  postPatch = ''
+    # fix default configuration file location
+    substituteInPlace \
+      internal/conf/config.go \
+      --replace-fail "viper.AddConfigPath(\"/etc\")" "viper.AddConfigPath(\"$out/share/config\")"
+
+    # fix assets location in configuration file
+    substituteInPlace \
+      config/pg_featureserv.toml.example \
+      --replace-fail "AssetsPath = \"./assets\"" "AssetsPath = \"$out/share/assets\""
+  '';
+
   ldflags = [ "-s" "-w" "-X github.com/CrunchyData/pg_featureserv/conf.setVersion=${version}" ];
 
+  postInstall = ''
+    mkdir -p $out/share
+    cp -r assets $out/share
+
+    mkdir -p $out/share/config
+    cp config/pg_featureserv.toml.example $out/share/config/pg_featureserv.toml
+  '';
+
   meta = with lib; {
     description = "Lightweight RESTful Geospatial Feature Server for PostGIS in Go";
     homepage = "https://github.com/CrunchyData/pg_featureserv";
diff --git a/nixpkgs/pkgs/servers/geospatial/pg_tileserv/default.nix b/nixpkgs/pkgs/servers/geospatial/pg_tileserv/default.nix
index 4f6bac28e87a..38d59d57b30b 100644
--- a/nixpkgs/pkgs/servers/geospatial/pg_tileserv/default.nix
+++ b/nixpkgs/pkgs/servers/geospatial/pg_tileserv/default.nix
@@ -1,4 +1,4 @@
-{ lib, fetchFromGitHub, fetchpatch, buildGoModule }:
+{ lib, fetchFromGitHub, buildGoModule }:
 
 buildGoModule rec {
   pname = "pg_tileserv";
@@ -13,8 +13,28 @@ buildGoModule rec {
 
   vendorHash = "sha256-8CvYvoIKOYvR7npCV65ZqZGR8KCTH4GabTt/JGQG3uc=";
 
+  postPatch = ''
+    # fix default configuration file location
+    substituteInPlace \
+      main.go \
+      --replace-fail "viper.AddConfigPath(\"/etc\")" "viper.AddConfigPath(\"$out/share/config\")"
+
+    # fix assets location in configuration file
+    substituteInPlace \
+      config/pg_tileserv.toml.example \
+      --replace-fail "# AssetsPath = \"/usr/share/pg_tileserv/assets\"" "AssetsPath = \"$out/share/assets\""
+  '';
+
   ldflags = [ "-s" "-w" "-X main.programVersion=${version}" ];
 
+  postInstall = ''
+    mkdir -p $out/share
+    cp -r assets $out/share
+
+    mkdir -p $out/share/config
+    cp config/pg_tileserv.toml.example $out/share/config/pg_tileserv.toml
+  '';
+
   doCheck = false;
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/servers/home-assistant/component-packages.nix b/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
index 5e4754d36d18..6cc484b64a59 100644
--- a/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "2024.2.2";
+  version = "2024.2.5";
   components = {
     "3_day_blinds" = ps: with ps; [
     ];
diff --git a/nixpkgs/pkgs/servers/home-assistant/default.nix b/nixpkgs/pkgs/servers/home-assistant/default.nix
index 182cfe1bd59b..1d0809edf320 100644
--- a/nixpkgs/pkgs/servers/home-assistant/default.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/default.nix
@@ -31,6 +31,15 @@ let
     # Override the version of some packages pinned in Home Assistant's setup.py and requirements_all.txt
 
     (self: super: {
+      aemet-opendata = super.aemet-opendata.overridePythonAttrs (oldAttrs: rec {
+        version = "0.4.7";
+        src = fetchFromGitHub {
+          inherit (oldAttrs.src) owner repo;
+          rev = "refs/tags/${version}";
+          hash = "sha256-kmU2HtNyYhfwWQv6asOtDpLZ6+O+eEICzBNLxUhAwaY=";
+        };
+      });
+
       aiogithubapi = super.aiogithubapi.overridePythonAttrs (oldAttrs: rec {
         version = "22.10.1";
         src = fetchFromGitHub {
@@ -140,6 +149,21 @@ let
         ];
       });
 
+      brother = super.brother.overridePythonAttrs (oldAttrs: rec {
+        version = "3.0.0";
+        src = fetchFromGitHub {
+          inherit (oldAttrs.src) owner repo;
+          rev = "refs/tags/${version}";
+          hash = "sha256-rRzcWT9DcNTBUYxyYYC7WORBbrkgj0toCp2e8ADUN5s=";
+        };
+      });
+
+      debugpy = super.debugpy.overridePythonAttrs (oldAttrs: {
+        # tests are deadlocking too often
+        # https://github.com/NixOS/nixpkgs/issues/262000
+        doCheck = false;
+      });
+
       geojson = super.geojson.overridePythonAttrs (oldAttrs: rec {
         version = "2.5.0";
         src = fetchFromGitHub {
@@ -374,6 +398,16 @@ let
         };
       });
 
+      wyoming = super.wyoming.overridePythonAttrs (oldAttrs: rec {
+        version = "1.5.2";
+        src = fetchFromGitHub {
+          owner = "rhasspy";
+          repo = "wyoming";
+          rev = "refs/tags/${version}";
+          hash = "sha256-2bc5coKL5KlTeL9fdghPmRF66NXfimHOKGtE2yPXgrA=";
+        };
+      });
+
       xbox-webapi = super.xbox-webapi.overridePythonAttrs (oldAttrs: rec {
         version = "2.0.11";
         src = fetchFromGitHub {
@@ -428,7 +462,7 @@ let
   extraBuildInputs = extraPackages python.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2024.2.2";
+  hassVersion = "2024.2.5";
 
 in python.pkgs.buildPythonApplication rec {
   pname = "homeassistant";
@@ -446,13 +480,13 @@ in python.pkgs.buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = "refs/tags/${version}";
-    hash = "sha256-nzx1ZaIBjzA2cgCkSlRLCr2Xd51i6kBHSKnfGgt9RpQ=";
+    hash = "sha256-RRoxWNcubpxzmExzrifRKhgNm0IM5OuNZYHz6tp9zm8=";
   };
 
   # Secondary source is pypi sdist for translations
   sdist = fetchPypi {
     inherit pname version;
-    hash = "sha256-ITwY3cB5YFmY1qTXBHpulEULdF0yKme334wxQVULvW8=";
+    hash = "sha256-qhUfOMSM4FKUQ9LdeoHLLrVm5cWFrlTER02s+tLVAMU=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/nixpkgs/pkgs/servers/home-assistant/stubs.nix b/nixpkgs/pkgs/servers/home-assistant/stubs.nix
index 5699b3c556f2..602e04aacdbc 100644
--- a/nixpkgs/pkgs/servers/home-assistant/stubs.nix
+++ b/nixpkgs/pkgs/servers/home-assistant/stubs.nix
@@ -8,7 +8,7 @@
 
 buildPythonPackage rec {
   pname = "homeassistant-stubs";
-  version = "2024.2.2";
+  version = "2024.2.5";
   format = "pyproject";
 
   disabled = python.version != home-assistant.python.version;
@@ -17,7 +17,7 @@ buildPythonPackage rec {
     owner = "KapJI";
     repo = "homeassistant-stubs";
     rev = "refs/tags/${version}";
-    hash = "sha256-RL3lgeaJO721VOlhLAeOM8wlKMouLQVbYnPsAeOZGxM=";
+    hash = "sha256-izXAm9lK5mhjc8vVTRflDdxYQesqnkBJtFonOHoht9c=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/servers/keycloak/scim-keycloak-user-storage-spi/default.nix b/nixpkgs/pkgs/servers/keycloak/scim-keycloak-user-storage-spi/default.nix
index cc6e41aa81f8..6ecd3866b096 100644
--- a/nixpkgs/pkgs/servers/keycloak/scim-keycloak-user-storage-spi/default.nix
+++ b/nixpkgs/pkgs/servers/keycloak/scim-keycloak-user-storage-spi/default.nix
@@ -5,16 +5,16 @@
 
 maven.buildMavenPackage {
   pname = "scim-keycloak-user-storage-spi";
-  version = "unstable-2023-07-10";
+  version = "unstable-2024-02-14";
 
   src = fetchFromGitHub {
     owner = "justin-stephenson";
     repo = "scim-keycloak-user-storage-spi";
-    rev = "54a3fd77b05079c9ebd931e8b6a3725310a1f7b7";
-    hash = "sha256-rQR8+LevFHTFLoyCPSu50jdSXu4YgBibjVB804rEsFs=";
+    rev = "6c59915836d9a559983326bbb87f895324bb75e4";
+    hash = "sha256-BSso9lU542Aroxu0RIX6NARc10lGZ04A/WIWOVtdxHw=";
   };
 
-  mvnHash = "sha256-vNPSNoOmtD1UMfWvLm8CH7RRatyeu3fnX9zteZpkay0=";
+  mvnHash = "sha256-xbGlVZl3YtbF372kCDh+UdK5pLe6C6WnGgbEXahlyLw=";
 
   installPhase = ''
     install -D "target/scim-user-spi-0.0.1-SNAPSHOT.jar" "$out/scim-user-spi-0.0.1-SNAPSHOT.jar"
diff --git a/nixpkgs/pkgs/servers/mail/rspamd/default.nix b/nixpkgs/pkgs/servers/mail/rspamd/default.nix
index 4cd063df9df2..2675ab7cbdd1 100644
--- a/nixpkgs/pkgs/servers/mail/rspamd/default.nix
+++ b/nixpkgs/pkgs/servers/mail/rspamd/default.nix
@@ -27,13 +27,13 @@ assert withHyperscan -> stdenv.isx86_64;
 
 stdenv.mkDerivation rec {
   pname = "rspamd";
-  version = "3.8.3";
+  version = "3.8.4";
 
   src = fetchFromGitHub {
     owner = "rspamd";
     repo = "rspamd";
     rev = version;
-    hash = "sha256-LX37HE4xr3tJqAXBDbi2O8N9tt8DazslIfmqG9hNiKw=";
+    hash = "sha256-3skF+aQv8Y3ATujV+WH4DxwyQ2hXR6CDZz77CkaRso0=";
   };
 
   hardeningEnable = [ "pie" ];
diff --git a/nixpkgs/pkgs/servers/mattermost/default.nix b/nixpkgs/pkgs/servers/mattermost/default.nix
index 0abe7e659e27..c76dd152929c 100644
--- a/nixpkgs/pkgs/servers/mattermost/default.nix
+++ b/nixpkgs/pkgs/servers/mattermost/default.nix
@@ -1,35 +1,48 @@
 { lib
 , buildGoModule
 , fetchFromGitHub
-, fetchpatch
+, nix-update-script
 , fetchurl
 , nixosTests
 }:
 
 buildGoModule rec {
   pname = "mattermost";
-  version = "8.1.10";
+  # ESR releases only.
+  # See https://docs.mattermost.com/upgrade/extended-support-release.html
+  # When a new ESR version is available (e.g. 8.1.x -> 9.5.x), update
+  # the version regex in passthru.updateScript as well.
+  version = "9.5.1";
 
   src = fetchFromGitHub {
     owner = "mattermost";
     repo = "mattermost";
     rev = "v${version}";
-    hash = "sha256-eloO83koCNZOR/NYzUCdKOtVdF7rk+VrZ9U2bKWkxNU=";
-  } + "/server";
+    hash = "sha256-w+VF8VoS7oIcDlYS5kCFzSX4rgD9l1B99XBHeJDB6JI=";
+  };
 
-  # this can probably be removed again in versions newer than 8.1.10
+  # Needed because buildGoModule does not support go workspaces yet.
+  # We use go 1.22's workspace vendor command, which is not yet available
+  # in the default version of go used in nixpkgs, nor is it used by upstream:
+  # https://github.com/mattermost/mattermost/issues/26221#issuecomment-1945351597
   overrideModAttrs = (_: {
-    preBuild = ''
-      go mod tidy
+    buildPhase = ''
+      make setup-go-work
+      go work vendor -e
     '';
   });
 
   webapp = fetchurl {
     url = "https://releases.mattermost.com/${version}/mattermost-${version}-linux-amd64.tar.gz";
-    hash = "sha256-qxFW/P+INcMKSzaGZtOOr1Mi/glgZeiKvQ+YN0qX070=";
+    hash = "sha256-F32NWulKUhoyHPCmCCih6Hb9+W2iuF/Mxy9USrgp1pM=";
   };
 
-  vendorHash = "sha256-ZbLSxG9Gyhk7PBC2V6sMtrQNXvm+ugMfliFIHWO1VLs=";
+  vendorHash = "sha256-TJCtgNf56A1U0EbV5gXjTro+YudVBRWiSZoBC3nJxnE=";
+
+  modRoot = "./server";
+  preBuild = ''
+    make setup-go-work
+  '';
 
   subPackages = [ "cmd/mattermost" ];
 
@@ -44,7 +57,6 @@ buildGoModule rec {
     "-X github.com/mattermost/mattermost/server/public/model.BuildHash=v${version}"
     "-X github.com/mattermost/mattermost/server/public/model.BuildHashEnterprise=none"
     "-X github.com/mattermost/mattermost/server/public/model.BuildEnterpriseReady=false"
-    "-X github.com/mattermost/mattermost/server/public/model.MockCWS=false"
   ];
 
   postInstall = ''
@@ -55,7 +67,12 @@ buildGoModule rec {
     find $out/{client,i18n,fonts,templates,config} -type f -exec chmod -x {} \;
   '';
 
-  passthru.tests.mattermost = nixosTests.mattermost;
+  passthru = {
+    updateScript = nix-update-script {
+      extraArgs = [ "--version-regex" "^v(9\.5\.([0-9.]+))" ];
+    };
+    tests.mattermost = nixosTests.mattermost;
+  };
 
   meta = with lib; {
     description = "Mattermost is an open source platform for secure collaboration across the entire software development lifecycle";
diff --git a/nixpkgs/pkgs/servers/mobilizon/common.nix b/nixpkgs/pkgs/servers/mobilizon/common.nix
index 4a97ae7bfa1d..0b3e3faa7306 100644
--- a/nixpkgs/pkgs/servers/mobilizon/common.nix
+++ b/nixpkgs/pkgs/servers/mobilizon/common.nix
@@ -1,13 +1,13 @@
 { fetchFromGitLab }: rec {
 
   pname = "mobilizon";
-  version = "4.0.2";
+  version = "4.1.0";
 
   src = fetchFromGitLab {
     domain = "framagit.org";
     owner = "framasoft";
     repo = pname;
     rev = version;
-    sha256 = "sha256-Ri1qCiQaKlSTSSGWHzFqYBCoTEMtOtwe0Kli466dv4M=";
+    sha256 = "sha256-aS57126Nhz/QvouSyZ9wUu78/eoCYbRwyncUUmO1Dv8=";
   };
 }
diff --git a/nixpkgs/pkgs/servers/mobilizon/default.nix b/nixpkgs/pkgs/servers/mobilizon/default.nix
index 191952f64681..e4a75a4c91ce 100644
--- a/nixpkgs/pkgs/servers/mobilizon/default.nix
+++ b/nixpkgs/pkgs/servers/mobilizon/default.nix
@@ -57,8 +57,8 @@ mixRelease rec {
           src = fetchFromGitHub {
             owner = "danhper";
             repo = "elixir-web-push-encryption";
-            rev = "70f00d06cbd88c9ac382e0ad2539e54448e9d8da";
-            sha256 = "sha256-b4ZMrt/8n2sPUFtCDRTwXS1qWm5VlYdbx8qC0R0boOA=";
+            rev = "6e143dcde0a2854c4f0d72816b7ecab696432779";
+            sha256 = "sha256-Da+/28SPZuUQBi8fQj31zmMvhMrYUaQIW4U4E+mRtMg=";
           };
           beamDeps = with final; [ httpoison jose ];
         };
diff --git a/nixpkgs/pkgs/servers/mobilizon/frontend.nix b/nixpkgs/pkgs/servers/mobilizon/frontend.nix
index 5ea6242c5bdc..397fb138bd44 100644
--- a/nixpkgs/pkgs/servers/mobilizon/frontend.nix
+++ b/nixpkgs/pkgs/servers/mobilizon/frontend.nix
@@ -6,7 +6,7 @@ in
 buildNpmPackage {
   inherit (common) pname version src;
 
-  npmDepsHash = "sha256-z/xWumL1wri63cGGMHMBq6WVDe81bp8tILsZa53a7FM=";
+  npmDepsHash = "sha256-pF07ul71zg9iLM/ja4Fz/6IXpqdMKb7KwOH02Q9lyCg=";
 
   nativeBuildInputs = [ imagemagick ];
 
diff --git a/nixpkgs/pkgs/servers/mobilizon/mix.nix b/nixpkgs/pkgs/servers/mobilizon/mix.nix
index 60d212d7fa07..ca33f819723a 100644
--- a/nixpkgs/pkgs/servers/mobilizon/mix.nix
+++ b/nixpkgs/pkgs/servers/mobilizon/mix.nix
@@ -73,14 +73,27 @@ let
       beamDeps = [ xml_builder ];
     };
 
+    bandit = buildMix rec {
+      name = "bandit";
+      version = "1.2.3";
+
+      src = fetchHex {
+        pkg = "bandit";
+        version = "${version}";
+        sha256 = "3e29150245a9b5f56944434e5240966e75c917dad248f689ab589b32187a81af";
+      };
+
+      beamDeps = [ hpax plug telemetry thousand_island websock ];
+    };
+
     bunt = buildMix rec {
       name = "bunt";
-      version = "0.2.1";
+      version = "1.0.0";
 
       src = fetchHex {
         pkg = "bunt";
         version = "${version}";
-        sha256 = "a330bfb4245239787b15005e66ae6845c9cd524a288f0d141c148b02603777a5";
+        sha256 = "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5";
       };
 
       beamDeps = [];
@@ -101,12 +114,12 @@ let
 
     castore = buildMix rec {
       name = "castore";
-      version = "1.0.4";
+      version = "1.0.5";
 
       src = fetchHex {
         pkg = "castore";
         version = "${version}";
-        sha256 = "9418c1b8144e11656f0be99943db4caf04612e3eaecefb5dae9a2a87565584f8";
+        sha256 = "8d7c597c3e4a64c395980882d4bca3cebb8d74197c590dc272cfd3b6a6310578";
       };
 
       beamDeps = [];
@@ -177,19 +190,6 @@ let
       beamDeps = [];
     };
 
-    connection = buildMix rec {
-      name = "connection";
-      version = "1.1.0";
-
-      src = fetchHex {
-        pkg = "connection";
-        version = "${version}";
-        sha256 = "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c";
-      };
-
-      beamDeps = [];
-    };
-
     cors_plug = buildMix rec {
       name = "cors_plug";
       version = "3.0.3";
@@ -203,53 +203,14 @@ let
       beamDeps = [ plug ];
     };
 
-    cowboy = buildErlangMk rec {
-      name = "cowboy";
-      version = "2.10.0";
-
-      src = fetchHex {
-        pkg = "cowboy";
-        version = "${version}";
-        sha256 = "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b";
-      };
-
-      beamDeps = [ cowlib ranch ];
-    };
-
-    cowboy_telemetry = buildRebar3 rec {
-      name = "cowboy_telemetry";
-      version = "0.4.0";
-
-      src = fetchHex {
-        pkg = "cowboy_telemetry";
-        version = "${version}";
-        sha256 = "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de";
-      };
-
-      beamDeps = [ cowboy telemetry ];
-    };
-
-    cowlib = buildRebar3 rec {
-      name = "cowlib";
-      version = "2.12.1";
-
-      src = fetchHex {
-        pkg = "cowlib";
-        version = "${version}";
-        sha256 = "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0";
-      };
-
-      beamDeps = [];
-    };
-
     credo = buildMix rec {
       name = "credo";
-      version = "1.7.1";
+      version = "1.7.5";
 
       src = fetchHex {
         pkg = "credo";
         version = "${version}";
-        sha256 = "e9871c6095a4c0381c89b6aa98bc6260a8ba6addccf7f6a53da8849c748a58a2";
+        sha256 = "f799e9b5cd1891577d8c773d245668aa74a2fcd15eb277f51a0131690ebfb3fd";
       };
 
       beamDeps = [ bunt file_system jason ];
@@ -309,12 +270,12 @@ let
 
     dialyxir = buildMix rec {
       name = "dialyxir";
-      version = "1.4.2";
+      version = "1.4.3";
 
       src = fetchHex {
         pkg = "dialyxir";
         version = "${version}";
-        sha256 = "516603d8067b2fd585319e4b13d3674ad4f314a5902ba8130cd97dc902ce6bbd";
+        sha256 = "bf2cfb75cd5c5006bec30141b131663299c661a864ec7fbbc72dfa557487a986";
       };
 
       beamDeps = [ erlex ];
@@ -348,12 +309,12 @@ let
 
     earmark_parser = buildMix rec {
       name = "earmark_parser";
-      version = "1.4.38";
+      version = "1.4.39";
 
       src = fetchHex {
         pkg = "earmark_parser";
         version = "${version}";
-        sha256 = "2cd0907795aaef0c7e8442e376633c5b3bd6edc8dbbdc539b22f095501c1cdb6";
+        sha256 = "06553a88d1f1846da9ef066b87b57c6f605552cfbe40d20bd8d59cc6bde41944";
       };
 
       beamDeps = [];
@@ -374,12 +335,12 @@ let
 
     ecto = buildMix rec {
       name = "ecto";
-      version = "3.11.0";
+      version = "3.11.1";
 
       src = fetchHex {
         pkg = "ecto";
         version = "${version}";
-        sha256 = "7769dad267ef967310d6e988e92d772659b11b09a0c015f101ce0fff81ce1f81";
+        sha256 = "ebd3d3772cd0dfcd8d772659e41ed527c28b2a8bde4b00fe03e0463da0f1983b";
       };
 
       beamDeps = [ decimal jason telemetry ];
@@ -400,12 +361,12 @@ let
 
     ecto_dev_logger = buildMix rec {
       name = "ecto_dev_logger";
-      version = "0.9.0";
+      version = "0.10.0";
 
       src = fetchHex {
         pkg = "ecto_dev_logger";
         version = "${version}";
-        sha256 = "2e8bc98b4ae4fcc7108896eef7da5a109afad829f4fb2eb46d677fdc9101c2d5";
+        sha256 = "a55e58bad5d5c9b8ef2a3c3347dbdf7efa880a5371cf1457e44b41f489a43927";
       };
 
       beamDeps = [ ecto jason ];
@@ -439,12 +400,12 @@ let
 
     ecto_sql = buildMix rec {
       name = "ecto_sql";
-      version = "3.11.0";
+      version = "3.11.1";
 
       src = fetchHex {
         pkg = "ecto_sql";
         version = "${version}";
-        sha256 = "77aa3677169f55c2714dda7352d563002d180eb33c0dc29cd36d39c0a1a971f5";
+        sha256 = "ce14063ab3514424276e7e360108ad6c2308f6d88164a076aac8a387e1fea634";
       };
 
       beamDeps = [ db_connection ecto postgrex telemetry ];
@@ -465,15 +426,15 @@ let
 
     elixir_make = buildMix rec {
       name = "elixir_make";
-      version = "0.7.7";
+      version = "0.7.8";
 
       src = fetchHex {
         pkg = "elixir_make";
         version = "${version}";
-        sha256 = "5bc19fff950fad52bbe5f211b12db9ec82c6b34a9647da0c2224b8b8464c7e6c";
+        sha256 = "7a71945b913d37ea89b06966e1342c85cfe549b15e6d6d081e8081c493062c07";
       };
 
-      beamDeps = [ castore ];
+      beamDeps = [ castore certifi ];
     };
 
     erlex = buildMix rec {
@@ -530,12 +491,12 @@ let
 
     ex_cldr_calendars = buildMix rec {
       name = "ex_cldr_calendars";
-      version = "1.22.1";
+      version = "1.23.0";
 
       src = fetchHex {
         pkg = "ex_cldr_calendars";
         version = "${version}";
-        sha256 = "e7408cd9e8318b2ef93b76728e84484ddc3ea6d7c894fbc811c54122a7140169";
+        sha256 = "06d2407e699032d5cdc515593b7ce7869f10ce28e98a4ed68d9b21e5001036d4";
       };
 
       beamDeps = [ ex_cldr_numbers ex_doc jason ];
@@ -582,12 +543,12 @@ let
 
     ex_cldr_numbers = buildMix rec {
       name = "ex_cldr_numbers";
-      version = "2.32.3";
+      version = "2.32.4";
 
       src = fetchHex {
         pkg = "ex_cldr_numbers";
         version = "${version}";
-        sha256 = "7b626ff1e59a0ec9c3c5db5ce9ca91a6995e2ab56426b71f3cbf67181ea225f5";
+        sha256 = "6fd5a82f0785418fa8b698c0be2b1845dff92b77f1b3172c763d37868fb503d2";
       };
 
       beamDeps = [ decimal digital_token ex_cldr ex_cldr_currencies jason ];
@@ -608,12 +569,12 @@ let
 
     ex_doc = buildMix rec {
       name = "ex_doc";
-      version = "0.30.9";
+      version = "0.31.1";
 
       src = fetchHex {
         pkg = "ex_doc";
         version = "${version}";
-        sha256 = "d7aaaf21e95dc5cddabf89063327e96867d00013963eadf2c6ad135506a8bc10";
+        sha256 = "3178c3a407c557d8343479e1ff117a96fd31bafe52a039079593fb0524ef61b0";
       };
 
       beamDeps = [ earmark_parser makeup_elixir makeup_erlang ];
@@ -699,12 +660,12 @@ let
 
     expo = buildMix rec {
       name = "expo";
-      version = "0.4.1";
+      version = "0.5.2";
 
       src = fetchHex {
         pkg = "expo";
         version = "${version}";
-        sha256 = "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47";
+        sha256 = "8c9bfa06ca017c9cb4020fabe980bc7fdb1aaec059fd004c2ab3bff03b1c599c";
       };
 
       beamDeps = [];
@@ -725,12 +686,12 @@ let
 
     fast_html = buildMix rec {
       name = "fast_html";
-      version = "2.2.0";
+      version = "2.3.0";
 
       src = fetchHex {
         pkg = "fast_html";
         version = "${version}";
-        sha256 = "064c4f23b4a6168f9187dac8984b056f2c531bb0787f559fd6a8b34b38aefbae";
+        sha256 = "f18e3c7668f82d3ae0b15f48d48feeb257e28aa5ab1b0dbf781c7312e5da029d";
       };
 
       beamDeps = [ elixir_make nimble_pool ];
@@ -777,12 +738,12 @@ let
 
     floki = buildMix rec {
       name = "floki";
-      version = "0.35.2";
+      version = "0.35.4";
 
       src = fetchHex {
         pkg = "floki";
         version = "${version}";
-        sha256 = "6b05289a8e9eac475f644f09c2e4ba7e19201fd002b89c28c1293e7bd16773d9";
+        sha256 = "27fa185d3469bd8fc5947ef0f8d5c4e47f0af02eb6b070b63c868f69e3af0204";
       };
 
       beamDeps = [];
@@ -868,12 +829,12 @@ let
 
     gettext = buildMix rec {
       name = "gettext";
-      version = "0.23.1";
+      version = "0.24.0";
 
       src = fetchHex {
         pkg = "gettext";
         version = "${version}";
-        sha256 = "19d744a36b809d810d610b57c27b934425859d158ebd56561bc41f7eeb8795db";
+        sha256 = "bdf75cdfcbe9e4622dd18e034b227d77dd17f0f133853a1c73b97b3d6c770e8b";
       };
 
       beamDeps = [ expo ];
@@ -933,12 +894,12 @@ let
 
     hammer = buildMix rec {
       name = "hammer";
-      version = "6.1.0";
+      version = "6.2.1";
 
       src = fetchHex {
         pkg = "hammer";
         version = "${version}";
-        sha256 = "b47e415a562a6d072392deabcd58090d8a41182cf9044cdd6b0d0faaaf68ba57";
+        sha256 = "b9476d0c13883d2dc0cc72e786bac6ac28911fba7cc2e04b70ce6a6d9c4b2bdc";
       };
 
       beamDeps = [ poolboy ];
@@ -957,6 +918,19 @@ let
       beamDeps = [];
     };
 
+    hpax = buildMix rec {
+      name = "hpax";
+      version = "0.1.2";
+
+      src = fetchHex {
+        pkg = "hpax";
+        version = "${version}";
+        sha256 = "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13";
+      };
+
+      beamDeps = [];
+    };
+
     html_entities = buildMix rec {
       name = "html_entities";
       version = "0.5.2";
@@ -972,12 +946,12 @@ let
 
     http_signatures = buildMix rec {
       name = "http_signatures";
-      version = "0.1.1";
+      version = "0.1.2";
 
       src = fetchHex {
         pkg = "http_signatures";
         version = "${version}";
-        sha256 = "cc3b8a007322cc7b624c0c15eec49ee58ac977254ff529a3c482f681465942a3";
+        sha256 = "f08aa9ac121829dae109d608d83c84b940ef2f183ae50f2dd1e9a8bc619d8be7";
       };
 
       beamDeps = [];
@@ -1011,12 +985,12 @@ let
 
     inet_cidr = buildMix rec {
       name = "inet_cidr";
-      version = "1.0.4";
+      version = "1.0.8";
 
       src = fetchHex {
         pkg = "inet_cidr";
         version = "${version}";
-        sha256 = "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc";
+        sha256 = "d5b26da66603bb56c933c65214c72152f0de9a6ea53618b56d63302a68f6a90e";
       };
 
       beamDeps = [];
@@ -1128,12 +1102,12 @@ let
 
     makeup_erlang = buildMix rec {
       name = "makeup_erlang";
-      version = "0.1.2";
+      version = "0.1.5";
 
       src = fetchHex {
         pkg = "makeup_erlang";
         version = "${version}";
-        sha256 = "f3f5a1ca93ce6e092d92b6d9c049bcda58a3b617a8d888f8e7231c85630e8108";
+        sha256 = "94d2e986428585a21516d7d7149781480013c56e30c6a233534bedf38867a59a";
       };
 
       beamDeps = [ makeup ];
@@ -1206,12 +1180,12 @@ let
 
     mix_test_watch = buildMix rec {
       name = "mix_test_watch";
-      version = "1.1.1";
+      version = "1.1.2";
 
       src = fetchHex {
         pkg = "mix_test_watch";
         version = "${version}";
-        sha256 = "f82262b54dee533467021723892e15c3267349849f1f737526523ecba4e6baae";
+        sha256 = "8ce79fc69a304eec81ab6c1a05de2eb026a8959f65fb47f933ce8eb56018ba35";
       };
 
       beamDeps = [ file_system ];
@@ -1336,12 +1310,12 @@ let
 
     oban = buildMix rec {
       name = "oban";
-      version = "2.16.3";
+      version = "2.17.5";
 
       src = fetchHex {
         pkg = "oban";
         version = "${version}";
-        sha256 = "4d8a7fb62f63cf2f2080c78954425f5fd8916ef57196b7f79b5bc657abb2ac5f";
+        sha256 = "fd3ccbbfdbb2bc77107c8790946f9821a831ed0720688485ee6adcd7863886cf";
       };
 
       beamDeps = [ ecto_sql jason postgrex telemetry ];
@@ -1375,15 +1349,15 @@ let
 
     phoenix = buildMix rec {
       name = "phoenix";
-      version = "1.7.10";
+      version = "1.7.11";
 
       src = fetchHex {
         pkg = "phoenix";
         version = "${version}";
-        sha256 = "cf784932e010fd736d656d7fead6a584a4498efefe5b8227e9f383bf15bb79d0";
+        sha256 = "b1ec57f2e40316b306708fe59b92a16b9f6f4bf50ccfa41aa8c7feb79e0ec02a";
       };
 
-      beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_cowboy plug_crypto telemetry websock_adapter ];
+      beamDeps = [ castore jason phoenix_pubsub phoenix_template phoenix_view plug plug_crypto telemetry websock_adapter ];
     };
 
     phoenix_ecto = buildMix rec {
@@ -1427,12 +1401,12 @@ let
 
     phoenix_live_view = buildMix rec {
       name = "phoenix_live_view";
-      version = "0.20.1";
+      version = "0.20.10";
 
       src = fetchHex {
         pkg = "phoenix_live_view";
         version = "${version}";
-        sha256 = "be494fd1215052729298b0e97d5c2ce8e719c00854b82cd8cf15c1cd7fcf6294";
+        sha256 = "daa17b3fbdfd6347aaade4db01a5dd24d23af0f4344e2e24934e8adfb4a11607";
       };
 
       beamDeps = [ jason phoenix phoenix_html phoenix_template phoenix_view plug telemetry ];
@@ -1453,12 +1427,12 @@ let
 
     phoenix_swoosh = buildMix rec {
       name = "phoenix_swoosh";
-      version = "1.2.0";
+      version = "1.2.1";
 
       src = fetchHex {
         pkg = "phoenix_swoosh";
         version = "${version}";
-        sha256 = "e88d117251e89a16b92222415a6d87b99a96747ddf674fc5c7631de734811dba";
+        sha256 = "4000eeba3f9d7d1a6bf56d2bd56733d5cadf41a7f0d8ffe5bb67e7d667e204a2";
       };
 
       beamDeps = [ hackney phoenix phoenix_html phoenix_view swoosh ];
@@ -1466,12 +1440,12 @@ let
 
     phoenix_template = buildMix rec {
       name = "phoenix_template";
-      version = "1.0.3";
+      version = "1.0.4";
 
       src = fetchHex {
         pkg = "phoenix_template";
         version = "${version}";
-        sha256 = "16f4b6588a4152f3cc057b9d0c0ba7e82ee23afa65543da535313ad8d25d8e2c";
+        sha256 = "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206";
       };
 
       beamDeps = [ phoenix_html ];
@@ -1492,30 +1466,17 @@ let
 
     plug = buildMix rec {
       name = "plug";
-      version = "1.15.2";
+      version = "1.15.3";
 
       src = fetchHex {
         pkg = "plug";
         version = "${version}";
-        sha256 = "02731fa0c2dcb03d8d21a1d941bdbbe99c2946c0db098eee31008e04c6283615";
+        sha256 = "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2";
       };
 
       beamDeps = [ mime plug_crypto telemetry ];
     };
 
-    plug_cowboy = buildMix rec {
-      name = "plug_cowboy";
-      version = "2.6.1";
-
-      src = fetchHex {
-        pkg = "plug_cowboy";
-        version = "${version}";
-        sha256 = "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613";
-      };
-
-      beamDeps = [ cowboy cowboy_telemetry plug ];
-    };
-
     plug_crypto = buildMix rec {
       name = "plug_crypto";
       version = "2.0.0";
@@ -1544,12 +1505,12 @@ let
 
     postgrex = buildMix rec {
       name = "postgrex";
-      version = "0.17.3";
+      version = "0.17.4";
 
       src = fetchHex {
         pkg = "postgrex";
         version = "${version}";
-        sha256 = "946cf46935a4fdca7a81448be76ba3503cff082df42c6ec1ff16a4bdfbfb098d";
+        sha256 = "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc";
       };
 
       beamDeps = [ db_connection decimal jason ];
@@ -1570,12 +1531,12 @@ let
 
     ranch = buildRebar3 rec {
       name = "ranch";
-      version = "1.8.0";
+      version = "2.1.0";
 
       src = fetchHex {
         pkg = "ranch";
         version = "${version}";
-        sha256 = "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5";
+        sha256 = "244ee3fa2a6175270d8e1fc59024fd9dbc76294a321057de8f803b1479e76916";
       };
 
       beamDeps = [];
@@ -1617,7 +1578,7 @@ let
         sha256 = "f9fc7641ef61e885510f5e5963c2948b9de1de597c63f781e9d3d6c9c8681ab4";
       };
 
-      beamDeps = [ hackney jason plug plug_cowboy ];
+      beamDeps = [ hackney jason plug ];
     };
 
     shortuuid = buildMix rec {
@@ -1635,12 +1596,12 @@ let
 
     sitemapper = buildMix rec {
       name = "sitemapper";
-      version = "0.7.0";
+      version = "0.8.0";
 
       src = fetchHex {
         pkg = "sitemapper";
         version = "${version}";
-        sha256 = "60f7a684e5e9fe7f10ac5b69f48b0be2bcbba995afafcb3c143fc0c8ef1f223f";
+        sha256 = "7cd42b454035da457151c9b6a314b688b5bbe5383add95badc65d013c25989c5";
       };
 
       beamDeps = [ xml_builder ];
@@ -1739,15 +1700,15 @@ let
 
     swoosh = buildMix rec {
       name = "swoosh";
-      version = "1.14.1";
+      version = "1.15.3";
 
       src = fetchHex {
         pkg = "swoosh";
         version = "${version}";
-        sha256 = "87da72260b4351678f96aec61db5c2acc8a88cda2cf2c4f534eb4c9c461350c7";
+        sha256 = "97a667b96ca8cc48a4679f6cd1f40a36d8701cf052587298473614caa70f164a";
       };
 
-      beamDeps = [ cowboy gen_smtp hackney jason mime plug plug_cowboy telemetry ];
+      beamDeps = [ bandit gen_smtp hackney jason mime plug telemetry ];
     };
 
     telemetry = buildRebar3 rec {
@@ -1776,6 +1737,19 @@ let
       beamDeps = [ castore hackney jason mime telemetry ];
     };
 
+    thousand_island = buildMix rec {
+      name = "thousand_island";
+      version = "1.3.5";
+
+      src = fetchHex {
+        pkg = "thousand_island";
+        version = "${version}";
+        sha256 = "2be6954916fdfe4756af3239fb6b6d75d0b8063b5df03ba76fd8a4c87849e180";
+      };
+
+      beamDeps = [ telemetry ];
+    };
+
     timex = buildMix rec {
       name = "timex";
       version = "3.7.11";
@@ -1791,12 +1765,12 @@ let
 
     tls_certificate_check = buildRebar3 rec {
       name = "tls_certificate_check";
-      version = "1.20.0";
+      version = "1.21.0";
 
       src = fetchHex {
         pkg = "tls_certificate_check";
         version = "${version}";
-        sha256 = "ab57b74b1a63dc5775650699a3ec032ec0065005eff1f020818742b7312a8426";
+        sha256 = "6cee6cffc35a390840d48d463541d50746a7b0e421acaadb833cfc7961e490e7";
       };
 
       beamDeps = [ ssl_verify_fun ];
@@ -1804,12 +1778,12 @@ let
 
     tz_world = buildMix rec {
       name = "tz_world";
-      version = "1.3.1";
+      version = "1.3.2";
 
       src = fetchHex {
         pkg = "tz_world";
         version = "${version}";
-        sha256 = "901ed2b4a4430ecab3765244da4a19e6f19141867c2ab3753924919b87ed2224";
+        sha256 = "d1a345e07b3378c4c902ad54fbd5d54c8c3dd55dba883b7407fe57bcec45ff2a";
       };
 
       beamDeps = [ castore certifi geo jason ];
@@ -1830,12 +1804,12 @@ let
 
     ueberauth = buildMix rec {
       name = "ueberauth";
-      version = "0.10.5";
+      version = "0.10.8";
 
       src = fetchHex {
         pkg = "ueberauth";
         version = "${version}";
-        sha256 = "3efd1f31d490a125c7ed453b926f7c31d78b97b8a854c755f5c40064bf3ac9e1";
+        sha256 = "f2d3172e52821375bccb8460e5fa5cb91cfd60b19b636b6e57e9759b6f8c10c1";
       };
 
       beamDeps = [ plug ];
@@ -2020,7 +1994,7 @@ let
         sha256 = "4b977ba4a01918acbf77045ff88de7f6972c2a009213c515a445c48f224ffce9";
       };
 
-      beamDeps = [ plug plug_cowboy websock ];
+      beamDeps = [ bandit plug websock ];
     };
 
     xml_builder = buildMix rec {
diff --git a/nixpkgs/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix b/nixpkgs/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
index a5ccc82ccda5..783384eb9610 100644
--- a/nixpkgs/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
+++ b/nixpkgs/pkgs/servers/monitoring/nagios/plugins/check_ssl_cert.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "check_ssl_cert";
-  version = "2.79.0";
+  version = "2.80.0";
 
   src = fetchFromGitHub {
     owner = "matteocorti";
     repo = "check_ssl_cert";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2NraUEUGyvmEdWCQdzZ5kf+sx/CnSZ54N3zRcCSYhBA=";
+    hash = "sha256-1KYolUA5AZ9fQLfNb4UE1WlMTj6GiAnNszPTLlERBvc=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix
index 3d15b33b48eb..ba1c35ee294d 100644
--- a/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/alertmanager.nix
@@ -7,17 +7,17 @@
 
 buildGoModule rec {
   pname = "alertmanager";
-  version = "0.26.0";
+  version = "0.27.0";
   rev = "v${version}";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "prometheus";
     repo = "alertmanager";
-    hash = "sha256-DCVxXSgoa4PrW4qBBWa1SOPN1GwcJFERz7+itsCdtGI=";
+    hash = "sha256-soE2D/PLesV1+Kif9myB54a9zIFIa94i0BrmywJPTbI=";
   };
 
-  vendorHash = "sha256-GCcoT7Db0bQf+IGUP54GdxRmHCp1k2261B3T2htmbjk=";
+  vendorHash = "sha256-zkHIdEdAy44iV2F929NB3ISuUbxdecaeZcsNQQGd06E=";
 
   subPackages = [ "cmd/alertmanager" "cmd/amtool" ];
 
diff --git a/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix b/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix
index 1d56a749f33a..821baf91417c 100644
--- a/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix
+++ b/nixpkgs/pkgs/servers/monitoring/prometheus/exportarr/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "exportarr";
-  version = "1.6.1";
+  version = "1.6.2";
 
   src = fetchFromGitHub {
     owner = "onedr0p";
     repo = "exportarr";
     rev = "v${version}";
-    hash = "sha256-i5ia9GX/0wvLnIwSxZ50y3fTFHwkUzj00+NoEceXp84=";
+    hash = "sha256-Eacu8NeAAQqztzVpBhW1UeKQU+FBEJcx5+mcaByQid8=";
   };
 
-  vendorHash = "sha256-2gzHX7XHzgvZXWm7mfakxnsRfpEysQwnZ0mJocLyyoA=";
+  vendorHash = "sha256-lizPm/3hxKt7ZxKkhbwsj1nL8bWmE90QqRGxTqMSMAw=";
 
   subPackages = [ "cmd/exportarr" ];
 
diff --git a/nixpkgs/pkgs/servers/routinator/default.nix b/nixpkgs/pkgs/servers/routinator/default.nix
index 1fdf6d8fdba2..b3cf4febb0fc 100644
--- a/nixpkgs/pkgs/servers/routinator/default.nix
+++ b/nixpkgs/pkgs/servers/routinator/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "routinator";
-  version = "0.13.1";
+  version = "0.13.2";
 
   src = fetchFromGitHub {
     owner = "NLnetLabs";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-ia9N2jZlFW0Gu5YDfwh023zorMyWWL/KggeBRvCD1W4=";
+    hash = "sha256-DCejOfL+c04MABweyuvDLImlYKj/SONxBfXD/4OVzH0=";
   };
 
-  cargoHash = "sha256-RHT6+zrY4SjoC/hgoMRal+cG8Ruip/6v7oVtKvR8doU=";
+  cargoHash = "sha256-X+pAvudfbxng6kMv0NO00v6mMBXUMaXvZb/L1OgWd38=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
diff --git a/nixpkgs/pkgs/servers/sql/dolt/default.nix b/nixpkgs/pkgs/servers/sql/dolt/default.nix
index 1f5205b27607..3b2b409191f7 100644
--- a/nixpkgs/pkgs/servers/sql/dolt/default.nix
+++ b/nixpkgs/pkgs/servers/sql/dolt/default.nix
@@ -2,18 +2,18 @@
 
 buildGoModule rec {
   pname = "dolt";
-  version = "1.32.6";
+  version = "1.34.3";
 
   src = fetchFromGitHub {
     owner = "dolthub";
     repo = "dolt";
     rev = "v${version}";
-    sha256 = "sha256-ftotZwRxcBErKzh1dZYqScTW12/tCOOHFJuruB5FOMU=";
+    sha256 = "sha256-/H3jOEMrmhpcuPorv7hebs7LdNftJNXh9aRzxlpmOEY=";
   };
 
   modRoot = "./go";
   subPackages = [ "cmd/dolt" ];
-  vendorHash = "sha256-RpwIPWzzAxXvDCf2CGnKo4NtsIe7QS4gVP1zeFgq+BQ=";
+  vendorHash = "sha256-xkqpdY/8zvRT09WQ5RajXtHIoe8MeQaJ8kQie9EFoZE=";
   proxyVendor = true;
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix
index d4d316dd6547..28303612fef3 100644
--- a/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/pgroonga.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pgroonga";
-  version = "3.1.7";
+  version = "3.1.8";
 
   src = fetchurl {
     url = "https://packages.groonga.org/source/${pname}/${pname}-${version}.tar.gz";
-    hash = "sha256-13hRe7nooWvx0VhQ1fvZs6ytu30AwJFBwDGjAawDRBI=";
+    hash = "sha256-Wjh0NJK6IfcI30R7HKCsB87/lxXZYEqiMD9t2nldCW4=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix b/nixpkgs/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
index db1199b20d77..9e8b02c993f2 100644
--- a/nixpkgs/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
+++ b/nixpkgs/pkgs/servers/sql/postgresql/ext/plpgsql_check.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "plpgsql-check";
-  version = "2.7.2";
+  version = "2.7.3";
 
   src = fetchFromGitHub {
     owner = "okbob";
     repo = "plpgsql_check";
     rev = "v${version}";
-    hash = "sha256-7CHKcUpqEXJ+z0OcxrEpYHaO/zUtRbCXa8LgL+/roSg=";
+    hash = "sha256-VFM8SplBGlJd2RfUgS0FLH+xkyLOCVY2jaK6mn878CQ=";
   };
 
   buildInputs = [ postgresql ];
diff --git a/nixpkgs/pkgs/servers/sql/rqlite/default.nix b/nixpkgs/pkgs/servers/sql/rqlite/default.nix
index 4a3ab9d6832c..66f2ce9ad74e 100644
--- a/nixpkgs/pkgs/servers/sql/rqlite/default.nix
+++ b/nixpkgs/pkgs/servers/sql/rqlite/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "rqlite";
-  version = "8.21.1";
+  version = "8.21.3";
 
   src = fetchFromGitHub {
     owner = "rqlite";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-u6LmzqlRmG8uCl5acGlkqo2pt/vKkc/xuZQhq51gVfY=";
+    sha256 = "sha256-YnCa0gv+loI+PeQHZWar7GpEhqvQo1AwIj5LGTol3k0=";
   };
 
   vendorHash = "sha256-onR4n6ok6y9APRwGjBoMISbidGDVw19D48TkogRp1uM=";
diff --git a/nixpkgs/pkgs/servers/tailscale/default.nix b/nixpkgs/pkgs/servers/tailscale/default.nix
index 11bace1ae1e3..6ad51525c078 100644
--- a/nixpkgs/pkgs/servers/tailscale/default.nix
+++ b/nixpkgs/pkgs/servers/tailscale/default.nix
@@ -12,7 +12,7 @@
 }:
 
 let
-  version = "1.60.0";
+  version = "1.60.1";
 in
 buildGoModule {
   pname = "tailscale";
@@ -22,7 +22,7 @@ buildGoModule {
     owner = "tailscale";
     repo = "tailscale";
     rev = "v${version}";
-    hash = "sha256-qx6ukgaEsdsq76E+GQkYH/Ydv3VKO9jLTh1zm0pGeWw=";
+    hash = "sha256-1BzzXRqbs8dS9263cXCujYYSStQlvyQr3dm3tyr+64k=";
   };
   vendorHash = "sha256-eci4f6golU1eIQOezplA+I+gmOfof40ktIdpr0v/uMc=";
 
diff --git a/nixpkgs/pkgs/servers/web-apps/matomo/default.nix b/nixpkgs/pkgs/servers/web-apps/matomo/default.nix
index 374c1bff3555..383a8658c521 100644
--- a/nixpkgs/pkgs/servers/web-apps/matomo/default.nix
+++ b/nixpkgs/pkgs/servers/web-apps/matomo/default.nix
@@ -3,8 +3,8 @@
 let
   versions = {
     matomo = {
-      version = "4.16.0";
-      hash = "sha256-OFZT4195WTWw2XNAyGiNixW6hSNKC3IyBpa5kM9PCVk=";
+      version = "4.16.1";
+      hash = "sha256-cGnsxfpvt7FyhxFcA2/gWWe7CyanVGZVKtCDES3XLdI=";
     };
     matomo_5 = {
       version = "5.0.2";
diff --git a/nixpkgs/pkgs/shells/nix-your-shell/default.nix b/nixpkgs/pkgs/shells/nix-your-shell/default.nix
index 8a3e22544034..9489fd4cf5a6 100644
--- a/nixpkgs/pkgs/shells/nix-your-shell/default.nix
+++ b/nixpkgs/pkgs/shells/nix-your-shell/default.nix
@@ -5,16 +5,16 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "nix-your-shell";
-  version = "1.4.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "MercuryTechnologies";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-2fS91/qeZt4JwQQeA+26RTN6zdm8/HUxG8sJDobX0+0=";
+    hash = "sha256-pa52demadLi5VN+GixQKVL9iD1kb9c32PqIh86BIUR8=";
   };
 
-  cargoHash = "sha256-e7gxNaKP0n+Zx0KaQEfNA3QsS5HZ2KIB6HJ22Ve8+EA=";
+  cargoHash = "sha256-btM9AUH1S1AA8gEwXwouOT/E2oio0CmOZ738M+DUMiE=";
 
   meta = with lib; {
     mainProgram = "nix-your-shell";
diff --git a/nixpkgs/pkgs/shells/nushell/default.nix b/nixpkgs/pkgs/shells/nushell/default.nix
index 8f215945dd41..33089063e68a 100644
--- a/nixpkgs/pkgs/shells/nushell/default.nix
+++ b/nixpkgs/pkgs/shells/nushell/default.nix
@@ -13,7 +13,9 @@
 , Security
 , nghttp2
 , libgit2
-, doCheck ? true
+# string interpolation dependends on a date that is erroring out
+# this will be fixed in releases after 0.90.1
+, doCheck ? false
 , withDefaultFeatures ? true
 , additionalFeatures ? (p: p)
 , testers
@@ -22,7 +24,7 @@
 }:
 
 let
-  version = "0.89.0";
+  version = "0.90.1";
 in
 
 rustPlatform.buildRustPackage {
@@ -33,10 +35,10 @@ rustPlatform.buildRustPackage {
     owner = "nushell";
     repo = "nushell";
     rev = version;
-    hash = "sha256-sBS24FOdEhb+MPu33lpFxLd2/r2AvLUXka+7W3lUIvo=";
+    hash = "sha256-MODd2BT2g6g5H6/1EG5OjIoYm18yBSvYTR83RuYDMec=";
   };
 
-  cargoHash = "sha256-B1Sd4dLacIIVNQDnBFw74nX+LaQnzYwCKXv3oJIbu4M=";
+  cargoHash = "sha256-35KPY5t4aozHIcukmeS00g6tzZA9ZsS/44u9vpZ3oGQ=";
 
   nativeBuildInputs = [ pkg-config ]
     ++ lib.optionals (withDefaultFeatures && stdenv.isLinux) [ python3 ]
diff --git a/nixpkgs/pkgs/shells/nushell/plugins/formats.nix b/nixpkgs/pkgs/shells/nushell/plugins/formats.nix
index 75927a606ef9..1e3a3a5b2a03 100644
--- a/nixpkgs/pkgs/shells/nushell/plugins/formats.nix
+++ b/nixpkgs/pkgs/shells/nushell/plugins/formats.nix
@@ -12,7 +12,7 @@
 rustPlatform.buildRustPackage rec {
   pname = "nushell_plugin_formats";
   inherit (nushell) version src;
-  cargoHash = "sha256-81U7Ul6LPubTshxW2/c+Pmz8UolmM42sFEt2igmDgGY=";
+  cargoHash = "sha256-lMxI+tw5B6Q/ZXW1ANl+Oi/x37ds2IEuOkdPIV1zXLA=";
 
   env = lib.optionalAttrs stdenv.cc.isClang {
     LIBCLANG_PATH = "${libclang.lib}/lib";
diff --git a/nixpkgs/pkgs/shells/nushell/plugins/gstat.nix b/nixpkgs/pkgs/shells/nushell/plugins/gstat.nix
index 1957799a9ce4..20edc7fd7b22 100644
--- a/nixpkgs/pkgs/shells/nushell/plugins/gstat.nix
+++ b/nixpkgs/pkgs/shells/nushell/plugins/gstat.nix
@@ -12,7 +12,7 @@
 rustPlatform.buildRustPackage rec {
   pname = "nushell_plugin_gstat";
   inherit (nushell) version src;
-  cargoHash = "sha256-YUr//URKoN99Pc5tJx9eGopKqy4Yu83jPBhLu5UYgiY=";
+  cargoHash = "sha256-/viATLt2CixUCUa45YWo4fod2/iI/qvqB/BP8L8qrvY=";
 
   env = lib.optionalAttrs stdenv.cc.isClang {
     LIBCLANG_PATH = "${libclang.lib}/lib";
diff --git a/nixpkgs/pkgs/shells/nushell/plugins/query.nix b/nixpkgs/pkgs/shells/nushell/plugins/query.nix
index c65f6544a235..dedd7944cdb8 100644
--- a/nixpkgs/pkgs/shells/nushell/plugins/query.nix
+++ b/nixpkgs/pkgs/shells/nushell/plugins/query.nix
@@ -11,7 +11,7 @@
 rustPlatform.buildRustPackage {
   pname = "nushell_plugin_query";
   inherit (nushell) version src;
-  cargoHash = "sha256-IAMfd76+Sx01d4axn3qcLvXZW6nxu0fjy9CvupUTHBM=";
+  cargoHash = "sha256-pDsjKpb4c9nnYA81sQm4RCYhIoKJe+vcV1hs8KCSP9Q=";
 
   env = lib.optionalAttrs stdenv.cc.isClang {
     LIBCLANG_PATH = "${libclang.lib}/lib";
diff --git a/nixpkgs/pkgs/shells/zsh/pure-prompt/default.nix b/nixpkgs/pkgs/shells/zsh/pure-prompt/default.nix
index 6fbda66d4cc2..2a1ba113ce19 100644
--- a/nixpkgs/pkgs/shells/zsh/pure-prompt/default.nix
+++ b/nixpkgs/pkgs/shells/zsh/pure-prompt/default.nix
@@ -4,13 +4,13 @@ with lib;
 
 stdenv.mkDerivation rec {
   pname = "pure-prompt";
-  version = "1.22.0";
+  version = "1.23.0";
 
   src = fetchFromGitHub {
     owner = "sindresorhus";
     repo = "pure";
     rev = "v${version}";
-    sha256 = "sha256-TR4CyBZ+KoZRs9XDmWE5lJuUXXU1J8E2Z63nt+FS+5w=";
+    sha256 = "sha256-BmQO4xqd/3QnpLUitD2obVxL0UulpboT8jGNEh4ri8k=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/test/default.nix b/nixpkgs/pkgs/test/default.nix
index 5382cae6159f..9868bbc6033b 100644
--- a/nixpkgs/pkgs/test/default.nix
+++ b/nixpkgs/pkgs/test/default.nix
@@ -175,4 +175,8 @@ with pkgs;
   nixpkgs-check-by-name = callPackage ./nixpkgs-check-by-name { };
 
   auto-patchelf-hook = callPackage ./auto-patchelf-hook { };
+
+  systemd = callPackage ./systemd { };
+
+  substitute = recurseIntoAttrs (callPackage ./substitute { });
 }
diff --git a/nixpkgs/pkgs/test/substitute/default.nix b/nixpkgs/pkgs/test/substitute/default.nix
new file mode 100644
index 000000000000..3ff346b14658
--- /dev/null
+++ b/nixpkgs/pkgs/test/substitute/default.nix
@@ -0,0 +1,96 @@
+{ substitute, testers, runCommand }:
+let
+  # Ofborg doesn't allow any traces on stderr,
+  # so mock `lib` to not trace warnings,
+  # because substitute gives a deprecation warning
+  substituteSilent = substitute.override (prevArgs: {
+    lib = prevArgs.lib.extend (finalLib: prevLib: {
+      trivial = prevLib.trivial // {
+        warn = msg: value: value;
+      };
+    });
+  });
+in {
+
+  substitutions = testers.testEqualContents {
+    assertion = "substitutions-spaces";
+    actual = substitute {
+      src = builtins.toFile "source" ''
+        Hello world!
+      '';
+      substitutions = [
+        "--replace-fail"
+        "Hello world!"
+        "Yo peter!"
+      ];
+    };
+    expected = builtins.toFile "expected" ''
+      Yo peter!
+    '';
+  };
+
+  legacySingleReplace = testers.testEqualContents {
+    assertion = "substitute-single-replace";
+    actual = substituteSilent {
+      src = builtins.toFile "source" ''
+        Hello world!
+      '';
+      replacements = [
+        "--replace-fail" "world" "paul"
+      ];
+    };
+    expected = builtins.toFile "expected" ''
+      Hello paul!
+    '';
+  };
+
+  legacyString = testers.testEqualContents {
+    assertion = "substitute-string";
+    actual = substituteSilent {
+      src = builtins.toFile "source" ''
+        Hello world!
+      '';
+      # Not great that this works at all, but is supported
+      replacements = "--replace-fail world string";
+    };
+    expected = builtins.toFile "expected" ''
+      Hello string!
+    '';
+  };
+
+  legacySingleArg = testers.testEqualContents {
+    assertion = "substitute-single-arg";
+    actual = substituteSilent {
+      src = builtins.toFile "source" ''
+        Hello world!
+      '';
+      # Not great that this works at all, but is supported
+      replacements = [
+        "--replace-fail world list"
+      ];
+    };
+    expected = builtins.toFile "expected" ''
+      Hello list!
+    '';
+  };
+
+  legacyVar = testers.testEqualContents {
+    assertion = "substitute-var";
+    actual = substituteSilent {
+      src = builtins.toFile "source" ''
+        @greeting@ @name@!
+      '';
+      # Not great that this works at all, but is supported
+      replacements = [
+        "--subst-var name"
+        "--subst-var-by greeting Yo"
+      ];
+      name = "peter";
+    };
+    expected = builtins.toFile "expected" ''
+      Yo peter!
+    '';
+  };
+
+
+}
diff --git a/nixpkgs/pkgs/test/systemd/default.nix b/nixpkgs/pkgs/test/systemd/default.nix
new file mode 100644
index 000000000000..2208bf794481
--- /dev/null
+++ b/nixpkgs/pkgs/test/systemd/default.nix
@@ -0,0 +1,5 @@
+{ lib, callPackage }:
+
+lib.recurseIntoAttrs {
+  nixos = callPackage ./nixos { };
+}
diff --git a/nixpkgs/pkgs/test/systemd/nixos/default.nix b/nixpkgs/pkgs/test/systemd/nixos/default.nix
new file mode 100644
index 000000000000..e45399b63516
--- /dev/null
+++ b/nixpkgs/pkgs/test/systemd/nixos/default.nix
@@ -0,0 +1,37 @@
+{ pkgs, lib, stdenv, ... }:
+
+lib.runTests {
+  # Merging two non-list definitions must still result in an error
+  # about a conflicting definition.
+  test-unitOption-merging-non-lists-conflict =
+    let nixos = pkgs.nixos {
+        system.stateVersion = lib.trivial.release;
+        systemd.services.systemd-test-nixos = {
+          serviceConfig = lib.mkMerge [
+            { StateDirectory = "foo"; }
+            { StateDirectory = "bar"; }
+          ];
+        };
+      };
+    in {
+    expr = (builtins.tryEval (nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory)).success;
+    expected = false;
+  };
+
+  # Merging must lift non-list definitions to a list
+  # if at least one of them is a list.
+  test-unitOption-merging-list-non-list-append =
+    let nixos = pkgs.nixos {
+        system.stateVersion = lib.trivial.release;
+        systemd.services.systemd-test-nixos = {
+          serviceConfig = lib.mkMerge [
+            { StateDirectory = "foo"; }
+            { StateDirectory = ["bar"]; }
+          ];
+        };
+      };
+    in {
+    expr = nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory;
+    expected = [ "foo" "bar" ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/admin/clair/default.nix b/nixpkgs/pkgs/tools/admin/clair/default.nix
index 24e9640bc9ca..ae49b0e4e993 100644
--- a/nixpkgs/pkgs/tools/admin/clair/default.nix
+++ b/nixpkgs/pkgs/tools/admin/clair/default.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "clair";
-  version = "4.7.2";
+  version = "4.7.3";
 
   src = fetchFromGitHub {
     owner = "quay";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-qnZLVt9pIrfZSCK0blNp5JHbaC4A8m6YicvL4hs2554=";
+    hash = "sha256-LRjlchhEXLTZDH3v2lkY3XN4tvXOHpedZBjkQ6rgeVc=";
   };
 
-  vendorHash = "sha256-mzrMiycW+kWtooCMWGLOHXPYJQ+y3wLMB2V+f4u4wtY=";
+  vendorHash = "sha256-cAeEBJz4k2liivRsNF4FT4JPKsDVy2fLAYDg8NuJ81U=";
 
   nativeBuildInputs = [
     makeWrapper
diff --git a/nixpkgs/pkgs/tools/admin/lxd/wrapper.nix b/nixpkgs/pkgs/tools/admin/lxd/wrapper.nix
index b197cd496b1a..9edfefd57ccd 100644
--- a/nixpkgs/pkgs/tools/admin/lxd/wrapper.nix
+++ b/nixpkgs/pkgs/tools/admin/lxd/wrapper.nix
@@ -76,20 +76,11 @@ let
 
   ovmf-2mb = OVMF.override {
     secureBoot = true;
-    csmSupport = false;
     fdSize2MB = true;
   };
 
   ovmf-4mb = OVMF.override {
     secureBoot = true;
-    csmSupport = false;
-    fdSize4MB = true;
-  };
-
-  ovmf-4mb-csm = OVMF.override {
-    secureBoot = true;
-    csmSupport = false;
-    fdSize2MB = false;
     fdSize4MB = true;
   };
 
@@ -99,13 +90,11 @@ let
   # also found in /snap/lxd/current/share/qemu/ on a snap install
   ovmf = linkFarm "lxd-ovmf" [
     { name = "OVMF_CODE.2MB.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
-    { name = "OVMF_CODE.4MB.CSM.fd"; path = "${ovmf-4mb-csm.fd}/FV/${ovmf-prefix}_CODE.fd"; }
     { name = "OVMF_CODE.4MB.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
     { name = "OVMF_CODE.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_CODE.fd"; }
 
     { name = "OVMF_VARS.2MB.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
     { name = "OVMF_VARS.2MB.ms.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
-    { name = "OVMF_VARS.4MB.CSM.fd"; path = "${ovmf-4mb-csm.fd}/FV/${ovmf-prefix}_VARS.fd"; }
     { name = "OVMF_VARS.4MB.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
     { name = "OVMF_VARS.4MB.ms.fd"; path = "${ovmf-4mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
     { name = "OVMF_VARS.fd"; path = "${ovmf-2mb.fd}/FV/${ovmf-prefix}_VARS.fd"; }
diff --git a/nixpkgs/pkgs/tools/admin/pulumi-bin/data.nix b/nixpkgs/pkgs/tools/admin/pulumi-bin/data.nix
index ce63140757ef..66db43918161 100644
--- a/nixpkgs/pkgs/tools/admin/pulumi-bin/data.nix
+++ b/nixpkgs/pkgs/tools/admin/pulumi-bin/data.nix
@@ -1,20 +1,20 @@
 # DO NOT EDIT! This file is generated automatically by update.sh
 { }:
 {
-  version = "3.106.0";
+  version = "3.107.0";
   pulumiPkgs = {
     x86_64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.106.0-linux-x64.tar.gz";
-        sha256 = "1rkbx76n15cn6hyglxzzm8msrd1yiqlp3xym7ngafx385926j3n9";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.107.0-linux-x64.tar.gz";
+        sha256 = "14hkk04jkfld8y051dxpigqhgx7s7n9d2sa4walkrz85vw928v2k";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.11.3-linux-amd64.tar.gz";
-        sha256 = "1yarg14596lwl6mf7xwba4yp3lgcdkj9q5m5x3qibpwc7psjzndc";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-linux-amd64.tar.gz";
+        sha256 = "1d6ipvy3s98ac92np4s5czqbsxv9pvzw2nv4wgix01lc9ayd9x77";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.3.2-linux-amd64.tar.gz";
-        sha256 = "0h1hh45rswp0s5xzf6hf2ncp645nnxqsslriaqyy4dqal3q6iisv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.4.0-linux-amd64.tar.gz";
+        sha256 = "17c5960kcjzz3hl4nwh41qkpj67072cfs2bxbqin9b2b33x9bfvy";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.49.0-linux-amd64.tar.gz";
@@ -29,8 +29,8 @@
         sha256 = "06gz2xqmwms01r4p59l9yvv3w3jvmlyaqr8y2z91hn0im4l8df2b";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.22.2-linux-amd64.tar.gz";
-        sha256 = "1mc8xlmkb84v2zvghnllx7216cg9kg8k56abfv8adsi19ylfglgf";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.23.0-linux-amd64.tar.gz";
+        sha256 = "12bcq08my84h6pk736s4hswpvqxkrnw855jc6hqiiaskk3yk5a2i";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.1-linux-amd64.tar.gz";
@@ -41,12 +41,12 @@
         sha256 = "0jaqkf7ibp0vxrvz6imaal9iyf60p6hhay7vmh62vmm0jgdv1ply";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.66.1-linux-amd64.tar.gz";
-        sha256 = "043ma740h4036h6f57m49djw5nl7vrkwbk33hylv9v5grkmwb6b9";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.67.0-linux-amd64.tar.gz";
+        sha256 = "0q801z0gvdp5kwxd2n59kl45lil78mgxwi22zcwnwh28bf48303n";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.20.0-linux-amd64.tar.gz";
-        sha256 = "0yf181l9nc7lzqkc0gyw7y5dr0lcz2sz8sv369chz4zm3dqaripk";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.21.0-linux-amd64.tar.gz";
+        sha256 = "0flrznd119ld5py2aj69adyfwrrx4vp7y7hdqdq8r5sjbvlz7hi0";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.11.1-linux-amd64.tar.gz";
@@ -57,8 +57,8 @@
         sha256 = "0afs9wdp11sxps0hrwwan1h44cxa0z52yhh43rl6rg13chhqlhk8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.1-linux-amd64.tar.gz";
-        sha256 = "1v1sxmi5jhjxas7wa7j74lg0j109fdk8ydkzb4j5rybdmqalkqaj";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.2-linux-amd64.tar.gz";
+        sha256 = "0rjylfka3cal5ailkvkwyjf83gyh85zya2asswmvvnb0llfhc33i";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.5.1-linux-amd64.tar.gz";
@@ -73,16 +73,16 @@
         sha256 = "0f4czs3hjibmwvswm2zgjq3nys2sp4lr7xy2rpm4k7msdcsxk5kb";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.9.0-linux-amd64.tar.gz";
-        sha256 = "1v9jcpp9rbrgzj0xklxfvr2f7jdxh5dfyc0aqvs45jzyhc6sdrxb";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.11.0-linux-amd64.tar.gz";
+        sha256 = "181753mpnph9zgzc90rd9v00iqw1sjblbh4i6y7ybschmi2vcvwa";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v5.26.0-linux-amd64.tar.gz";
-        sha256 = "12j5y60h76gyy0bn3phfmcw2aq6kkxi28qp53y7pryrby6yraffn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.0.0-linux-amd64.tar.gz";
+        sha256 = "1093xzalzxx6dgsif9a97inll205rp298win637c70d4x68ab74w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.8.1-linux-amd64.tar.gz";
-        sha256 = "0cw1dfdwax87nqpac55jn6r1hmy0z4rmxl5qp9i7znjwk132xbhh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.9.0-linux-amd64.tar.gz";
+        sha256 = "1bl8idjznas3srl8hbw28ffv0pz6fzkg0vkllpgc0xnjggy52bba";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-google-native-v0.32.0-linux-amd64.tar.gz";
@@ -93,12 +93,12 @@
         sha256 = "0pz7jga19pwwx7ba5364b6sv1zsmxvnldakdh6641fqp9wl6smxp";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.7.1-linux-amd64.tar.gz";
-        sha256 = "11lvnkfsl9iqsazs84z2ipn9kmyv50xavzb4i1zhcn9i6ldl4wag";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.8.0-linux-amd64.tar.gz";
+        sha256 = "1z6nh7piwa54l81c32i25dx079m26a89q894m63hyjg3z47wqlci";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.13.0-linux-amd64.tar.gz";
-        sha256 = "0xay37wbrs9l01j4w07ywymi1wn8sxnj5668s3p1yshi257n1nz3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.14.0-linux-amd64.tar.gz";
+        sha256 = "0rzhdhb4lgjfzfhnmvs875axqivjwwfq6d62v7j6ksnxynlfzqmj";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.5.1-linux-amd64.tar.gz";
@@ -121,28 +121,28 @@
         sha256 = "1za2d3cad1grcnkkqmyn9b7wlz9ayimsv17ygg638wh7v34w0yjq";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.48.0-linux-amd64.tar.gz";
-        sha256 = "0q7jbwj0di778b0zl01nphb3mzvdkyxkgn9q4kkvzz2rg36c20s0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.49.0-linux-amd64.tar.gz";
+        sha256 = "1xajinvla6hw6n6n9iawfyq2pmd22k0xy1l88vh8bhp3310hjfns";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.67.2-linux-amd64.tar.gz";
-        sha256 = "1r8fd8363ikc9ffk7fwpjghrmvzjqvgv50945pkvsbpnxkx931ca";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-linux-amd64.tar.gz";
+        sha256 = "018ynwc7l2xvqq1n64ny3rlv37nzbx1b0c2j1jla7r35a4vjym8f";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.2-linux-amd64.tar.gz";
         sha256 = "0jiny0s6hvzzcgv7zkdmc4d0rdcwpq49dz7fqsaz81maz7kck8a5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.13.5-linux-amd64.tar.gz";
-        sha256 = "0b94z9pzrsdabcs9xkhk0fljqf2ml374nqpp3i1zxnrr0fkwbfvv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.14.0-linux-amd64.tar.gz";
+        sha256 = "0q23ck7ifs42cfd1iadcn1djhmpg203z1r7nxlfhnp3h0f7z1p5h";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.0.1-linux-amd64.tar.gz";
         sha256 = "1d4qdrbqsn62116lg0j82andxdrcdrcambahxp3084b6icacx3l9";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.19.0-linux-amd64.tar.gz";
-        sha256 = "00zwsabii05xj91sbi8gz2w9h3jrhw0ksv206mj122j5fns5qhm3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.20.0-linux-amd64.tar.gz";
+        sha256 = "1nc72m6d0kixs0mih83f6bad2dwwmwz89r6w8dkhi0071bg28lgc";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.6.3-linux-amd64.tar.gz";
@@ -163,16 +163,16 @@
     ];
     x86_64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.106.0-darwin-x64.tar.gz";
-        sha256 = "1yav7d220vnadvxdhyfmwj7n0lm0xmr0a3aspi4240p493005ina";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.107.0-darwin-x64.tar.gz";
+        sha256 = "0x05cbvwvmwrfdrnwr4ca9g0d0rs2pjyqgw5bqvrh0k7ll5z10dz";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.11.3-darwin-amd64.tar.gz";
-        sha256 = "1bqphs66wq771bq46a12177xpbjn19pbrwa9h43dmxnvh35g52rj";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-darwin-amd64.tar.gz";
+        sha256 = "1jddh0c5h0br89vzdhb93rcxdilis79z1p303l886y8l5sdlbk9d";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.3.2-darwin-amd64.tar.gz";
-        sha256 = "0pzmj4fgkdc8bxf1rl64bmz9x2g0i2ayarqw54h8462c3p6xl3ca";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.4.0-darwin-amd64.tar.gz";
+        sha256 = "05x8allllb6spjkjf9lchk1pyprj356s0kgy2rdz24knvr2rxr3r";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.49.0-darwin-amd64.tar.gz";
@@ -187,8 +187,8 @@
         sha256 = "1wlw4lvdy63fw2vpv0cg3g5ffy1frr8dfbvnr1avashw1bvmh6yd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.22.2-darwin-amd64.tar.gz";
-        sha256 = "0c50afzbnaj2a5jg6750y7qv1hc48hsa229lkci4z20s0bgvbg7h";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.23.0-darwin-amd64.tar.gz";
+        sha256 = "1wv0m7lbrpiwn5a9d96kh37zf8vp23sf25kyx3gxd2khx3g2s0ww";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.1-darwin-amd64.tar.gz";
@@ -199,12 +199,12 @@
         sha256 = "11whky196lqgj8bgzxixd1m39jqw3fs9if8knmwcr7zmd3jyf80w";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.66.1-darwin-amd64.tar.gz";
-        sha256 = "1g8rhfay9gcjhiv6dfhkgvxg1l26axgfrd29jaxsai6sanwcpxjl";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.67.0-darwin-amd64.tar.gz";
+        sha256 = "1v3bqv5yf8ixfag8bshhhyq9wi1viys6r2c6hg26nw56i6g5i951";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.20.0-darwin-amd64.tar.gz";
-        sha256 = "149sfyxnb90v9y136rwf08z4k3kmq4ivmcpyjs8vj7wpz0xgjsk0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.21.0-darwin-amd64.tar.gz";
+        sha256 = "0jl9l1g8n4m4faciil33v9n0m8glmgjmax9dilrx8krzp00zjhbq";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.11.1-darwin-amd64.tar.gz";
@@ -215,8 +215,8 @@
         sha256 = "11971fwsv0i6nmmxzg9m93l48xndi9x96zibjbjmwjxnr419s5rm";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.1-darwin-amd64.tar.gz";
-        sha256 = "1yaphn5rgcwjiipdga49pyn8wbz8w2pghbjzmjcrxa5q7hy8a2z0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.2-darwin-amd64.tar.gz";
+        sha256 = "1q0j504v5wvxxqyd5j2y7ak4ivpkyhwpqhv4lcscq241k64dc9fx";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.5.1-darwin-amd64.tar.gz";
@@ -231,16 +231,16 @@
         sha256 = "03xk7hkcs0f8684ll7f7z7z14zwj66qnps0pcsd7r34s7qyhy33g";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.9.0-darwin-amd64.tar.gz";
-        sha256 = "12cggan39cdr8cdpzvqvhq5b0g7h5y7fzix159cv5sf3bdsms8g3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.11.0-darwin-amd64.tar.gz";
+        sha256 = "1j0fkc2g8jbd07cc2s1v88psg01pgiqmdf3hph0zv67qsymfi5w8";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v5.26.0-darwin-amd64.tar.gz";
-        sha256 = "04dn6mw6gjrxzrywr04jls0ixgcjglb37jff7m8qayylmmr151vl";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.0.0-darwin-amd64.tar.gz";
+        sha256 = "17c5qdpfzpxkmcd9wvkl7iba6g857fic7j8gbgdvrsrdjg0rvrsz";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.8.1-darwin-amd64.tar.gz";
-        sha256 = "1lbgs04g945yqxjajv0ydqwnn1amb8gp2fbn5qj53jbw9yd6pz65";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.9.0-darwin-amd64.tar.gz";
+        sha256 = "028085idjq4023j91j4pwdvrn7nak5hw76sy22fahp59my6lj3d8";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-google-native-v0.32.0-darwin-amd64.tar.gz";
@@ -251,12 +251,12 @@
         sha256 = "18w9x6ym08ljr71kl82qb017cxzfbpkhbvljb1ki8nrk32s7rljy";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.7.1-darwin-amd64.tar.gz";
-        sha256 = "035sf6i0rcv5sj154m0ciybssjifccr609f47w429vnzjr4pqd5z";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.8.0-darwin-amd64.tar.gz";
+        sha256 = "0rylnwf2500iw2dkigs3jrxpjvvxs1b0vh6z2kv4l8xlfb47r2rn";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.13.0-darwin-amd64.tar.gz";
-        sha256 = "02gv7wzfzcswji20gyqgjd1ycrmk6nxsypgahyffnp5rvgfxbibh";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.14.0-darwin-amd64.tar.gz";
+        sha256 = "1ij1j34321pa7x7cxb2lpcdakqgwnfvfh9jpbr1zgs5fqvi7ya1c";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.5.1-darwin-amd64.tar.gz";
@@ -279,28 +279,28 @@
         sha256 = "00m5f757fk01wkqf3ji4d0yjmk7i4b3sglgws3mgr5j1waswy4jw";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.48.0-darwin-amd64.tar.gz";
-        sha256 = "08ahy6agrdzz31pa4w9i317rska2lz794f9mwkbg11jyyxpxd4y0";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.49.0-darwin-amd64.tar.gz";
+        sha256 = "061p37hwl0x9vh516lk54l4wf1yhfi8r57z94i4gsckv7dc7r8dd";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.67.2-darwin-amd64.tar.gz";
-        sha256 = "08n4zrqk1k4zy333mn8jxhi3420m2rrbrgy1x62xzkxcylb5dlnm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-darwin-amd64.tar.gz";
+        sha256 = "1jy9ybxsplz7zapw56l0g11sfdzjf6xg1q7cj4js95fvisd2y0a4";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.2-darwin-amd64.tar.gz";
         sha256 = "01f6c3zgmlmips4b5ysdp2vyflykq9bi1r1pbmqh05b6j35r90km";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.13.5-darwin-amd64.tar.gz";
-        sha256 = "0wia72zawjrmi6jy7rw8fsy7h07d0nzmrds6kl6kvnx4w1ra98jn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.14.0-darwin-amd64.tar.gz";
+        sha256 = "01f9lq4javm9fw87xclz44yq8iwa47fxz23fws694a0lsl0ki33m";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.0.1-darwin-amd64.tar.gz";
         sha256 = "1lcpc72bwxgqkzy26j1pr6774x3kqsxpfcimls1m54wq8ranlii7";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.19.0-darwin-amd64.tar.gz";
-        sha256 = "1n33r4knk36yvkbr6wa3xwv63an0sv5hdh7g7amln248yqdc7j3q";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.20.0-darwin-amd64.tar.gz";
+        sha256 = "1wgdn8zv3q4fn6730jfyb5x7rmb460plc4iddlsibnwnx0w5c3s5";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.6.3-darwin-amd64.tar.gz";
@@ -321,16 +321,16 @@
     ];
     aarch64-linux = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.106.0-linux-arm64.tar.gz";
-        sha256 = "1vmci5hm5x3mcxfzagk6iwappy1cycl8kvfhclz632wp9z6a82zc";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.107.0-linux-arm64.tar.gz";
+        sha256 = "14n3i99vyqnbab7glaa80f3irlw0x5di2fawbbqan3fzc2j46z9c";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.11.3-linux-arm64.tar.gz";
-        sha256 = "0x9jspr73fidzmk83ycnw3x43hpcilbgv3hxykps886ylnx3mdnk";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-linux-arm64.tar.gz";
+        sha256 = "0i6bp2i5h5yy3fwcq4rnjyl3mw4hj7wy5a99dxh0svqw0x30my4x";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.3.2-linux-arm64.tar.gz";
-        sha256 = "0i4zviv023pvahnrypqxm8960xmlpxhggyz4maghs72fp06mx01z";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.4.0-linux-arm64.tar.gz";
+        sha256 = "0kb7hdciy8i91kmfndriav7sm05r1jkam7i634b5r6d7agdlvr2h";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.49.0-linux-arm64.tar.gz";
@@ -345,8 +345,8 @@
         sha256 = "14wplnr5axic2a9skx0y6rjq8si02qwpadpcl978vchll0f4g1pz";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.22.2-linux-arm64.tar.gz";
-        sha256 = "05zhi6srqyiwpwgf37vy9qkxg1v74nhis065fbly0hisrrmrcgvj";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.23.0-linux-arm64.tar.gz";
+        sha256 = "04px1q2s7y97aw09j7s8n6yr6ysbhrly839vg6mag98g1b2ikz9p";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.1-linux-arm64.tar.gz";
@@ -357,12 +357,12 @@
         sha256 = "1fcpf2x9dlxk2s06pgvqwsmjpwlv47q666xpj6cmx9cybmnhgjn4";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.66.1-linux-arm64.tar.gz";
-        sha256 = "0hjj90bn5rkhcsg0r7jmwhsch23nc2kg59az1dxs02kc3kf5r8mg";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.67.0-linux-arm64.tar.gz";
+        sha256 = "0zn6n92yf3kbp3z788db8gq1gnwsmrmnqijq9d1a4wn6a5fwdy04";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.20.0-linux-arm64.tar.gz";
-        sha256 = "03155qkr473y2z6n5rhic78jad263ac3d0lr890sc5lzlqb0fci3";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.21.0-linux-arm64.tar.gz";
+        sha256 = "1chl850k1p8qpxydwkcqrx9s6xq50v616yfmrb7xrk9ms3zxf905";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.11.1-linux-arm64.tar.gz";
@@ -373,8 +373,8 @@
         sha256 = "0hmda8dhak4d5kbw30acbdhn1nczjjwpn3m99rcjjrmnvfirpqdl";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.1-linux-arm64.tar.gz";
-        sha256 = "0s652ngpqvzjb6lybf3lcjqv5mf4spyi27mhv6y4czs7p6za1kkm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.2-linux-arm64.tar.gz";
+        sha256 = "1qsi84xbb9f10bb11x2hvslfx2knw1pnd06k5kdx924vq71igfbj";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.5.1-linux-arm64.tar.gz";
@@ -389,16 +389,16 @@
         sha256 = "1kf88g5jm3xr5b35is8h0rqxzy79az3s90givsnr7x6xmm6favqc";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.9.0-linux-arm64.tar.gz";
-        sha256 = "0nj3jyszkmfhamyl448iiyayai9zam68ci4g7y48hbhq1cnyxxr1";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.11.0-linux-arm64.tar.gz";
+        sha256 = "06mbbzb4c999r7x3vvngqsm58h7g6r8sq4w1aqbb8brkhhfg3wfj";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v5.26.0-linux-arm64.tar.gz";
-        sha256 = "0y3i5dy2vm6mlaqrw2af8cm47gfbwvk99wik6cmz8gdlackx3xxa";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.0.0-linux-arm64.tar.gz";
+        sha256 = "1nlrwp4rhyp04lzqgxh8gam7vz5ivb4ynznzwirjxf2x48grk834";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.8.1-linux-arm64.tar.gz";
-        sha256 = "1m1m3klswz85s0d4igpq55cnm7050kz8vrz428y4v40wxx51fgcq";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.9.0-linux-arm64.tar.gz";
+        sha256 = "186fjml7qwcw2rxgpw8ybazai6xsa574syd4xzg3y8p2sdv76018";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-google-native-v0.32.0-linux-arm64.tar.gz";
@@ -409,12 +409,12 @@
         sha256 = "1shra5wq8zx4l9b3sp6yklhi8hbd8r2ypay9nf4jgwnc6ppql102";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.7.1-linux-arm64.tar.gz";
-        sha256 = "0lalynk4vg7jj1z8vmnjzzrh07i9fww50dazbm2djszw8wwgxqzz";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.8.0-linux-arm64.tar.gz";
+        sha256 = "11i44aiqypn4x74m0x3w9h37k55dfdys2il9asxbfmkh4slmqc62";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.13.0-linux-arm64.tar.gz";
-        sha256 = "0mn1bln14hyri2yqnp09lafh7j8hc63fqycxfn3hwgbskr14fnpn";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.14.0-linux-arm64.tar.gz";
+        sha256 = "18mdgj637h4qrlsz3ryr5nf2dy59lji1mxfcy6cfrsapwdig9w3n";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.5.1-linux-arm64.tar.gz";
@@ -437,28 +437,28 @@
         sha256 = "10k9v7v9krjsk095cmk84w875bllkbjl19syiqiq19am66k9n8jj";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.48.0-linux-arm64.tar.gz";
-        sha256 = "0bgpv6fkm65cgdficrvzgnp9dairlz795mhlmzy951qvxdlc1i0a";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.49.0-linux-arm64.tar.gz";
+        sha256 = "04khh89lbdk6dv5vx26sl56cmydkh21mb5nx39hw1bry98qbz7ks";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.67.2-linux-arm64.tar.gz";
-        sha256 = "1ic807cbjz3wkyzz6mm7qpjb7dpi2xmchbdx5qdqiv8a9zv9rvck";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-linux-arm64.tar.gz";
+        sha256 = "1nwm69fblmll2d3hgnl5d98x1xhjl49l5cdc8smldr25i5zp5zj2";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.2-linux-arm64.tar.gz";
         sha256 = "0m07iydqlampsx2zdgliyqa5h1zwj42p865anak37i59j1cx7ash";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.13.5-linux-arm64.tar.gz";
-        sha256 = "03jxg597fsnjjbc519cbdpd2d2qqrw0zp75bfwkhzq28y65qyz5v";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.14.0-linux-arm64.tar.gz";
+        sha256 = "1n4ywh7l77w4zjk8vpdhrp44f0hzpr5pbmnh89c5q5j5w0p5wwck";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.0.1-linux-arm64.tar.gz";
         sha256 = "17aqa1hy8ca0kdc6kljb76zk6fhxbh57v2k4jshj3jcgv6p4b4dg";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.19.0-linux-arm64.tar.gz";
-        sha256 = "0fllx3zksrxazvr6vbp8qcygbwd3d3w4hm6v0wnzq5vbnz0m693v";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.20.0-linux-arm64.tar.gz";
+        sha256 = "0irp9vqikmmgcgzkca2z9nnak8ih73bbhs5576sf7y4132f4wvjj";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.6.3-linux-arm64.tar.gz";
@@ -479,16 +479,16 @@
     ];
     aarch64-darwin = [
       {
-        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.106.0-darwin-arm64.tar.gz";
-        sha256 = "11hvb57iqdmz5aiy1l03j7pf7qams4mapjvca2nqrd1yzb16zbrd";
+        url = "https://get.pulumi.com/releases/sdk/pulumi-v3.107.0-darwin-arm64.tar.gz";
+        sha256 = "1bm1mnzi9xlh5yqqvfixb18c1pqajs6x7r96wafxj5097476cam1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.11.3-darwin-arm64.tar.gz";
-        sha256 = "1973s6fk02nir6ls9by73c0xcss4as57jyv33la1gng6h1ljrgyr";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.12.0-darwin-arm64.tar.gz";
+        sha256 = "0y1nc5cgqpjwssprdjh9d1q07j9d3b3vgafbmc7jgd81hybwid1h";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.3.2-darwin-arm64.tar.gz";
-        sha256 = "1c7gpdwxr1ggxnvi64764kbl6dkg0y8jdlsnhlb29p85s13gzaxq";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v6.4.0-darwin-arm64.tar.gz";
+        sha256 = "1b47n69nc5nicagwdxq793a6nmbrg15690i8q40nixcf7k48krai";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.49.0-darwin-arm64.tar.gz";
@@ -503,8 +503,8 @@
         sha256 = "17d3p29w4hd5lrpgmf9j17fwy4vx1cr84nlfci3rvfzzih1x62yl";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.22.2-darwin-arm64.tar.gz";
-        sha256 = "1jfv701qhilirlfaqsaz72vzypsqbynw77rlpx7cy5c726gk3kh8";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v6.23.0-darwin-arm64.tar.gz";
+        sha256 = "0r3kv95dmfr04iy7ha7x2akbj4mwjdqd3fzld0ysnlbnm37mkfg8";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v5.47.1-darwin-arm64.tar.gz";
@@ -515,12 +515,12 @@
         sha256 = "1c7ycicwszn9fsaw81rn88kgm7b5i0hp9sxp92qxfn649x742c45";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.66.1-darwin-arm64.tar.gz";
-        sha256 = "1sf3klgnxs4baxaslryz05idnpipmdlr7l3mw3b4z0ffqxz3nspm";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v5.67.0-darwin-arm64.tar.gz";
+        sha256 = "1mdmrf663fys5g0haxsyqp725aba6kim1hws6jympcchnqpp0l7k";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.20.0-darwin-arm64.tar.gz";
-        sha256 = "1aimbl8fiasvqlj6mvlfz6jfxi7s61dk17cnyl9dgxqhmdkbc5dk";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v5.21.0-darwin-arm64.tar.gz";
+        sha256 = "056klbsdfcspfm74a2cfrxblyq9lml8v07ffgcqds61b6zyx2v73";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.11.1-darwin-arm64.tar.gz";
@@ -531,8 +531,8 @@
         sha256 = "1llxhfcx8b16bvynx6bb509r94iqyvkiz261939d6alx4g0sfvpr";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.1-darwin-arm64.tar.gz";
-        sha256 = "0iv44fxyshznl7v6w08d2sqjp1divbmqwsjndfswxpqbp69i0i98";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.25.2-darwin-arm64.tar.gz";
+        sha256 = "0wq2cs9nabd8rzr9pvz14f5lpfdk4kv6c81fb95z0vz32w09az49";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.5.1-darwin-arm64.tar.gz";
@@ -547,16 +547,16 @@
         sha256 = "1pd2x157ljb8rgm1mawqvqb39n0101450syr43z1qjmhgws7gz74";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.9.0-darwin-arm64.tar.gz";
-        sha256 = "0xc0qlfggk42izrbcj5rvhid3a6jn6lf7yc4yrfqkrjxjwh9d9d2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v7.11.0-darwin-arm64.tar.gz";
+        sha256 = "1rvxpzjy6q8flly4vb8248gyf0bh4f25az9m1bk13pil20xadsmx";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v5.26.0-darwin-arm64.tar.gz";
-        sha256 = "12n324rwgmfb2m7jbmlaxj5w0q1vjb63md4vfp8zyf95v40qkcqv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.0.0-darwin-arm64.tar.gz";
+        sha256 = "0wphd50a3rxzn9c2fqrhcmdlh7804jkmjjp2rcp6w1cxs5wmlnfn";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.8.1-darwin-arm64.tar.gz";
-        sha256 = "03kkxl0jbqd6vn335ikkvwcmqpdrbxi8bnkm2q8jpli2k8isnxd7";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gitlab-v6.9.0-darwin-arm64.tar.gz";
+        sha256 = "04n5x1l8fnswdpmr3hc9g71cq2cp14ga4k8438py0kk6askaxxm2";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-google-native-v0.32.0-darwin-arm64.tar.gz";
@@ -567,12 +567,12 @@
         sha256 = "19zhkq9lppjj41ddhbk2fi5xrmmbgyk38mlzvkqfly9lwgbc18v3";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.7.1-darwin-arm64.tar.gz";
-        sha256 = "0y7cpgp9z9p42dknai2l6r0hhmyjas03nd288fnd794qzkkwazyp";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-kubernetes-v4.8.0-darwin-arm64.tar.gz";
+        sha256 = "0c0d5b2wn73wmf5gmslkzg6hxkj97abhlwx5ipdqnd591d6zfw3a";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.13.0-darwin-arm64.tar.gz";
-        sha256 = "1jb8zfacc86q6dn64c2mnpzc5jmznjsz4fvha1jy60pa0r9qhqj2";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v4.14.0-darwin-arm64.tar.gz";
+        sha256 = "03bicis1q94jqhy4h3wyrqy059dx010fafmxnpmizxcn565hhpcs";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.5.1-darwin-arm64.tar.gz";
@@ -595,28 +595,28 @@
         sha256 = "1gri8is4man0zgp3yg0dmfnk9fjhrg02zahlravscxpd4baycb6p";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.48.0-darwin-arm64.tar.gz";
-        sha256 = "1kpvc6221n282dmlbrpwsjmd7if340cjxzr84a8pwizzy1yyy70y";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v0.49.0-darwin-arm64.tar.gz";
+        sha256 = "1ncapql0a48p86bvj9p25575va0zcqcdqw2apl4npm7vjn0gq2s1";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.67.2-darwin-arm64.tar.gz";
-        sha256 = "173a714y5y8bka8pvr8kps0j6pamfx31dx1vdbp7fw2q7h8whlfv";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.68.0-darwin-arm64.tar.gz";
+        sha256 = "120acxnm1lid5spszv8i4vgnk732fch8j3i2qhrdd3k2p86z0a1n";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v0.20.2-darwin-arm64.tar.gz";
         sha256 = "041zjnywmpxa302igaszj0hd6k4qb455i2c0452rlfh9kj7k2sa5";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.13.5-darwin-arm64.tar.gz";
-        sha256 = "0ch0p93rq0af0i87fdq445xxnxkjckc4n537ydgyb3wkdpm3q9kw";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tailscale-v0.14.0-darwin-arm64.tar.gz";
+        sha256 = "1c63r0mr4q51b7bsc60idbinz6f0irgcg4wl72qhinbrl8wgdwd9";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.0.1-darwin-arm64.tar.gz";
         sha256 = "0x01k5sjmy9365pwi6gqhvw5jr6ansg5zj0anl869dyaag4kgzks";
       }
       {
-        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.19.0-darwin-arm64.tar.gz";
-        sha256 = "1rpq1zn2vcpz9rf7lzy27006vmbq67alvicylmsz85v27156mfj1";
+        url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v5.20.0-darwin-arm64.tar.gz";
+        sha256 = "0aidg913j23b7i018yqwgz1pcssgyrvyfhlwh0jbdxay66v8cdi9";
       }
       {
         url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.6.3-darwin-arm64.tar.gz";
diff --git a/nixpkgs/pkgs/tools/admin/syft/default.nix b/nixpkgs/pkgs/tools/admin/syft/default.nix
index b8642bcbb827..5ed4c5ec1e92 100644
--- a/nixpkgs/pkgs/tools/admin/syft/default.nix
+++ b/nixpkgs/pkgs/tools/admin/syft/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "syft";
-  version = "0.105.0";
+  version = "0.105.1";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-X05ELxhySlQ0POIg2Iop4NS7gYqZcuP46IC8CEuxtJg=";
+    hash = "sha256-laseVMbgzKuVyF6PWpthtt3Wgv+WW5ccTjp0jj15nB0=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -22,7 +22,7 @@ buildGoModule rec {
   };
   # hash mismatch with darwin
   proxyVendor = true;
-  vendorHash = "sha256-1Iwqh9obVU+HA2l/Gy4SOHrgHtvoy8c4tbcuA1AFFQw=";
+  vendorHash = "sha256-u5leq9K9c31No6saMO5cK9futt4Wl4f/d6V2djC8T1w=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/tools/audio/abcmidi/default.nix b/nixpkgs/pkgs/tools/audio/abcmidi/default.nix
index b931e70d23ea..15fd7b88b394 100644
--- a/nixpkgs/pkgs/tools/audio/abcmidi/default.nix
+++ b/nixpkgs/pkgs/tools/audio/abcmidi/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "abcMIDI";
-  version = "2024.02.19";
+  version = "2024.02.25";
 
   src = fetchzip {
     url = "https://ifdo.ca/~seymour/runabc/${pname}-${version}.zip";
-    hash = "sha256-mby2GAOcjSDgF21ZUOoPbyVV0RNMjIBvS5hg+15G75U=";
+    hash = "sha256-xaVmK7q10gxN69bGsFEIc01izSbu1m6IyMJWBN6kSzA=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/backup/zfs-replicate/default.nix b/nixpkgs/pkgs/tools/backup/zfs-replicate/default.nix
index df0ddfc7433b..82087a3f4cfa 100644
--- a/nixpkgs/pkgs/tools/backup/zfs-replicate/default.nix
+++ b/nixpkgs/pkgs/tools/backup/zfs-replicate/default.nix
@@ -11,12 +11,12 @@
 
 buildPythonApplication rec {
   pname = "zfs_replicate";
-  version = "3.2.8";
+  version = "3.2.9";
   pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-q4m6/L7GZqCkvdKcWBGTfrbDC2UiFerluwNUOA+QCQU=";
+    hash = "sha256-JMkZ4AexN++vPIPqzv9majdUkoAyos+Nm4Vlgeyx0Jg=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix
index aaff185a4a1b..e608bc5a41db 100644
--- a/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix
@@ -8,13 +8,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "fuse-ext2";
-  version = "unstable-2020-07-12";
+  version = "0.0.11";
 
   src = fetchFromGitHub {
     owner = "alperakcan";
     repo = "fuse-ext2";
-    rev = "899f17c982dadcea13aa447c3a83c53b9431435a";
-    sha256 = "AE7Z+HePAy/h2TCNI9tsz6GVLdnE2AIOM3GnQzerKn8=";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-VQMftlnd6q1PdwhSIQwjffjnkhupY8MUc8E+p1tgvUM=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/tools/filesystems/gcsfuse/default.nix b/nixpkgs/pkgs/tools/filesystems/gcsfuse/default.nix
index 145fddb9222b..7e123c1e4800 100644
--- a/nixpkgs/pkgs/tools/filesystems/gcsfuse/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/gcsfuse/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "gcsfuse";
-  version = "1.4.1";
+  version = "1.4.2";
 
   src = fetchFromGitHub {
     owner = "googlecloudplatform";
     repo = "gcsfuse";
     rev = "v${version}";
-    hash = "sha256-xQWkrFuMvwloDjnIU2T1Fmfpc/2w3ISbyDhFmN/ETFA=";
+    hash = "sha256-gayzCUL6xM56sy8a5ljwN0X0kjW56YLJtLwFOpxBsG4=";
   };
 
-  vendorHash = "sha256-cIOjgoS3cW6GA697K0Loi76ed64Ev2jZbuOIPNRM1HU=";
+  vendorHash = "sha256-3b0qk/EfVfObG8Rqj2N5DypoOozCY4E2LQiGQmOMTOY=";
 
   subPackages = [ "." "tools/mount_gcsfuse" ];
 
diff --git a/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix b/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
index 83f2ce32c176..1ff360bc3399 100644
--- a/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mergerfs";
-  version = "2.40.0";
+  version = "2.40.1";
 
   src = fetchFromGitHub {
     owner = "trapexit";
     repo = pname;
     rev = version;
-    sha256 = "sha256-3iMFobefP0vF8Ywt0KpS6ZhH+T1GSQu0GzV4A78FmaY=";
+    sha256 = "sha256-EeAgDkm8WyD9OCM8/tHydp/slDGPwCAljeOrUCIWAqQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/graphics/asymptote/default.nix b/nixpkgs/pkgs/tools/graphics/asymptote/default.nix
index a5968425f5d8..30681663a7ce 100644
--- a/nixpkgs/pkgs/tools/graphics/asymptote/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/asymptote/default.nix
@@ -9,14 +9,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.86";
+  version = "2.87";
   pname = "asymptote";
 
   src = fetchFromGitHub {
     owner = "vectorgraphics";
     repo = pname;
     rev = version;
-    hash = "sha256-Bk8/WIQTfrbOo9b2hw580vJwiK6P1OBV5HMqMH+LkuE=";
+    hash = "sha256-xzRZ7NOWeu+uC5WeTxwh5MFm7psXMhxrxucT4PVtRxM=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix b/nixpkgs/pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix
index 202886e4e8e1..5311d20ffa32 100644
--- a/nixpkgs/pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/fcitx5/fcitx5-qt.nix
@@ -1,19 +1,19 @@
 { lib
-, mkDerivation
+, stdenv
 , fetchFromGitHub
 , cmake
 , extra-cmake-modules
 , fcitx5
-, qtx11extras
-, libxcb
-, libXdmcp
 , qtbase
-, qt6
+, qtwayland
+, wrapQtAppsHook
 , wayland
 }:
-
-mkDerivation rec {
-  pname = "fcitx5-qt";
+let
+  majorVersion = lib.versions.major qtbase.version;
+in
+stdenv.mkDerivation rec {
+  pname = "fcitx5-qt${majorVersion}";
   version = "5.1.4";
 
   src = fetchFromGitHub {
@@ -23,30 +23,28 @@ mkDerivation rec {
     sha256 = "sha256-bVH2US/uEZGERslnAh/fyUbzR9fK1UfG4J+mOmrIE8Y=";
   };
 
-  preConfigure = ''
-    substituteInPlace qt5/platforminputcontext/CMakeLists.txt \
-      --replace \$"{CMAKE_INSTALL_QT5PLUGINDIR}" $out/${qtbase.qtPluginPrefix}
-    substituteInPlace qt6/platforminputcontext/CMakeLists.txt \
-      --replace \$"{CMAKE_INSTALL_QT6PLUGINDIR}" $out/${qt6.qtbase.qtPluginPrefix}
+  postPatch = ''
+    substituteInPlace qt${majorVersion}/platforminputcontext/CMakeLists.txt \
+      --replace \$"{CMAKE_INSTALL_QT${majorVersion}PLUGINDIR}" $out/${qtbase.qtPluginPrefix}
   '';
 
   cmakeFlags = [
-    # adding qt6 to buildInputs would result in error: detected mismatched Qt dependencies
-    "-DCMAKE_PREFIX_PATH=${qt6.qtbase};${qt6.qtwayland}"
-    "-DENABLE_QT4=0"
-    "-DENABLE_QT6=1"
+    "-DENABLE_QT4=OFF"
+    "-DENABLE_QT5=OFF"
+    "-DENABLE_QT6=OFF"
+    "-DENABLE_QT${majorVersion}=ON"
   ];
 
   nativeBuildInputs = [
     cmake
     extra-cmake-modules
+    wrapQtAppsHook
   ];
 
   buildInputs = [
+    qtbase
+    qtwayland
     fcitx5
-    qtx11extras
-    libxcb
-    libXdmcp
     wayland
   ];
 
diff --git a/nixpkgs/pkgs/tools/inputmethods/fcitx5/with-addons.nix b/nixpkgs/pkgs/tools/inputmethods/fcitx5/with-addons.nix
index 75fac87b6285..614074595f51 100644
--- a/nixpkgs/pkgs/tools/inputmethods/fcitx5/with-addons.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/fcitx5/with-addons.nix
@@ -4,7 +4,8 @@
 , fcitx5
 , withConfigtool ? true
 , fcitx5-configtool
-, fcitx5-qt
+, libsForQt5
+, qt6Packages
 , fcitx5-gtk
 , addons ? [ ]
 }:
@@ -14,7 +15,8 @@ symlinkJoin {
 
   paths = [
     fcitx5
-    fcitx5-qt
+    libsForQt5.fcitx5-qt
+    qt6Packages.fcitx5-qt
     fcitx5-gtk
   ] ++ lib.optionals withConfigtool [
     fcitx5-configtool
diff --git a/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix b/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix
index ab71af957481..0107e8755880 100644
--- a/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-anthy/default.nix
@@ -13,11 +13,11 @@
 
 stdenv.mkDerivation rec {
   pname = "ibus-anthy";
-  version = "1.5.15";
+  version = "1.5.16";
 
   src = fetchurl {
     url = "https://github.com/ibus/ibus-anthy/releases/download/${version}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-WMTm1YNqSsnjOqnoTljE3rZ62pjztUSyRAxXgyN+2Ys=";
+    sha256 = "sha256-FVIiFLWK2ISsydmx2hPxXbfc12w7GKiFCQRuXsYT0a4=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/tools/inputmethods/ibus/build-without-dbus-launch.patch b/nixpkgs/pkgs/tools/inputmethods/ibus/build-without-dbus-launch.patch
index cb587ccf47d8..cff6787667fa 100644
--- a/nixpkgs/pkgs/tools/inputmethods/ibus/build-without-dbus-launch.patch
+++ b/nixpkgs/pkgs/tools/inputmethods/ibus/build-without-dbus-launch.patch
@@ -1,19 +1,24 @@
 diff --git a/data/dconf/make-dconf-override-db.sh b/data/dconf/make-dconf-override-db.sh
-index 601c1c3f..fcb7305d 100755
+index 32cb1530..375baa41 100755
 --- a/data/dconf/make-dconf-override-db.sh
 +++ b/data/dconf/make-dconf-override-db.sh
-@@ -12,10 +12,6 @@ export XDG_CACHE_HOME="$TMPDIR/cache"
+@@ -12,15 +12,6 @@ export XDG_CACHE_HOME="$TMPDIR/cache"
  export GSETTINGS_SCHEMA_DIR="$TMPDIR/schemas"
  mkdir -p $XDG_CONFIG_HOME $XDG_CACHE_HOME $GSETTINGS_SCHEMA_DIR
  
 -eval `dbus-launch --sh-syntax`
 -
--trap 'rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID' ERR
+-trap cleanup EXIT
+-
+-cleanup() {
+-  test $? -eq 0 && exit
+-  rm -rf $TMPDIR; kill $DBUS_SESSION_BUS_PID
+-}
 -
  # in case that schema is not installed on the system
  glib-compile-schemas --targetdir "$GSETTINGS_SCHEMA_DIR" "$PWD"
  
-@@ -52,5 +48,3 @@ if [ -d $TMPDIR/cache/gvfs ] ; then
+@@ -57,5 +48,3 @@ if [ -d $TMPDIR/cache/gvfs ] ; then
      umount $TMPDIR/cache/gvfs
  fi
  rm -rf $TMPDIR
diff --git a/nixpkgs/pkgs/tools/inputmethods/ibus/default.nix b/nixpkgs/pkgs/tools/inputmethods/ibus/default.nix
index 417b1be605d5..5de2fc67d020 100644
--- a/nixpkgs/pkgs/tools/inputmethods/ibus/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/ibus/default.nix
@@ -1,7 +1,7 @@
-{ lib, stdenv
+{ lib
+, stdenv
 , substituteAll
 , fetchFromGitHub
-, fetchpatch
 , autoreconfHook
 , gettext
 , makeWrapper
@@ -17,6 +17,7 @@
 , gtk3
 , gtk4
 , gtk-doc
+, libdbusmenu-gtk3
 , runCommand
 , isocodes
 , cldr-annotations
@@ -26,7 +27,7 @@
 , json-glib
 , libnotify ? null
 , enableUI ? true
-, withWayland ? false
+, withWayland ? true
 , libxkbcommon
 , wayland
 , buildPackages
@@ -46,23 +47,24 @@ let
   };
   # make-dconf-override-db.sh needs to execute dbus-launch in the sandbox,
   # it will fail to read /etc/dbus-1/session.conf unless we add this flag
-  dbus-launch = runCommand "sandbox-dbus-launch" {
-    nativeBuildInputs = [ makeWrapper ];
-  } ''
-      makeWrapper ${dbus}/bin/dbus-launch $out/bin/dbus-launch \
-        --add-flags --config-file=${dbus}/share/dbus-1/session.conf
+  dbus-launch = runCommand "sandbox-dbus-launch"
+    {
+      nativeBuildInputs = [ makeWrapper ];
+    } ''
+    makeWrapper ${dbus}/bin/dbus-launch $out/bin/dbus-launch \
+      --add-flags --config-file=${dbus}/share/dbus-1/session.conf
   '';
 in
 
 stdenv.mkDerivation rec {
   pname = "ibus";
-  version = "1.5.28";
+  version = "1.5.29";
 
   src = fetchFromGitHub {
     owner = "ibus";
     repo = "ibus";
     rev = version;
-    sha256 = "sha256-zjV+QkhVkrHFs9Vt1FpbvmS4nRHxwKaKU3mQkSgyLaQ=";
+    sha256 = "sha256-d4EUIg0v8rfHdvzG5USc6GLY6QHtQpIJp1PrPaaBxxE=";
   };
 
   patches = [
@@ -72,27 +74,17 @@ stdenv.mkDerivation rec {
       pythonSitePackages = python3.sitePackages;
     })
     ./build-without-dbus-launch.patch
-    # unicode and emoji input are broken before 1.5.29
-    # https://github.com/NixOS/nixpkgs/issues/226526
-    (fetchpatch {
-      url = "https://github.com/ibus/ibus/commit/7c8abbe89403c2fcb08e3fda42049a97187e53ab.patch";
-      hash = "sha256-59HzAdLq8ahrF7K+tFGLjTodwIiTkJGEkFe8quqIkhU=";
-    })
-    # fix SIGABRT in X11 https://github.com/ibus/ibus/issues/2484
-    (fetchpatch {
-      url = "https://github.com/ibus/ibus/commit/8f706d160631f1ffdbfa16543a38b9d5f91c16ad.patch";
-      hash = "sha256-YzS9TmUWW0OmheDeCeU00kFK2U2QEmKYMSRJAbu14ec=";
-    })
-    # fix missing key releases in Wine https://github.com/ibus/ibus/issues/2480
-    (fetchpatch {
-      url = "https://github.com/ibus/ibus/commit/497f0c74230a65309e22ce5569060ce48310406b.patch";
-      hash = "sha256-PAZcUxmzjChs1/K8hXgOcytyS4LYoNL1dtU6X5Tx8ic=";
-    })
   ];
 
   outputs = [ "out" "dev" "installedTests" ];
 
   postPatch = ''
+    # Maintainer does not want to create separate tarballs for final release candidate and release versions,
+    # so we need to set `ibus_released` to `1` in `configure.ac`. Otherwise, anyone running `ibus version` gets
+    # a version with an inaccurate `-rcX` suffix.
+    # https://github.com/ibus/ibus/issues/2584
+    substituteInPlace configure.ac --replace "m4_define([ibus_released], [0])" "m4_define([ibus_released], [1])"
+
     patchShebangs --build data/dconf/make-dconf-override-db.sh
     cp ${buildPackages.gtk-doc}/share/gtk-doc/data/gtk-doc.make .
     substituteInPlace bus/services/org.freedesktop.IBus.session.GNOME.service.in --replace "ExecStart=sh" "ExecStart=${runtimeShell}"
@@ -102,6 +94,11 @@ stdenv.mkDerivation rec {
   preAutoreconf = "touch ChangeLog";
 
   configureFlags = [
+    # The `AX_PROG_{CC,CXX}_FOR_BUILD` autoconf macros can pick up unwrapped GCC binaries,
+    # so we set `{CC,CXX}_FOR_BUILD` to override that behavior.
+    # https://github.com/NixOS/nixpkgs/issues/21751
+    "CC_FOR_BUILD=${stdenv.cc}/bin/cc"
+    "CXX_FOR_BUILD=${stdenv.cc}/bin/c++"
     "--disable-memconf"
     (lib.enableFeature (dconf != null) "dconf")
     (lib.enableFeature (libnotify != null) "libnotify")
@@ -115,12 +112,6 @@ stdenv.mkDerivation rec {
     "--with-ucd-dir=${unicode-character-database}/share/unicode"
   ];
 
-  # missing make dependency
-  # https://github.com/NixOS/nixpkgs/pull/218120#issuecomment-1514027173
-  preBuild = ''
-    make -C src ibusenumtypes.h
-  '';
-
   makeFlags = [
     "test_execsdir=${placeholder "installedTests"}/libexec/installed-tests/ibus"
     "test_sourcesdir=${placeholder "installedTests"}/share/installed-tests/ibus"
@@ -154,6 +145,7 @@ stdenv.mkDerivation rec {
     isocodes
     json-glib
     libnotify
+    libdbusmenu-gtk3
   ] ++ lib.optionals withWayland [
     libxkbcommon
     wayland
diff --git a/nixpkgs/pkgs/tools/misc/audible-cli/default.nix b/nixpkgs/pkgs/tools/misc/audible-cli/default.nix
index 297917b6a92a..4d0134e8eaee 100644
--- a/nixpkgs/pkgs/tools/misc/audible-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/audible-cli/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
     packaging
     pillow
     questionary
+    setuptools
     tabulate
     toml
     tqdm
diff --git a/nixpkgs/pkgs/tools/misc/byobu/default.nix b/nixpkgs/pkgs/tools/misc/byobu/default.nix
deleted file mode 100644
index efcf679c1994..000000000000
--- a/nixpkgs/pkgs/tools/misc/byobu/default.nix
+++ /dev/null
@@ -1,76 +0,0 @@
-{ lib, stdenv, fetchurl, makeWrapper
-, python3, perl, textual-window-manager
-, gettext, vim, bc, screen }:
-
-let
-  pythonEnv = python3.withPackages (ps: with ps; [ snack ]);
-in
-stdenv.mkDerivation rec {
-  version = "5.133";
-  pname = "byobu";
-
-  src = fetchurl {
-    url = "https://launchpad.net/byobu/trunk/${version}/+download/byobu_${version}.orig.tar.gz";
-    sha256 = "0qvmmdnvwqbgbhn5c8asmrmjhclcl029py2d2zvmd7h5ij7s93jd";
-  };
-
-  doCheck = true;
-
-  strictdeps = true;
-  nativeBuildInputs = [ makeWrapper gettext ];
-  buildInputs = [ perl ]; # perl is needed for `lib/byobu/include/*` scripts
-  propagatedBuildInputs = [ textual-window-manager screen ];
-
-  postPatch = ''
-    substituteInPlace usr/bin/byobu-export.in \
-      --replace "gettext" "${gettext}/bin/gettext"
-    substituteInPlace usr/lib/byobu/menu \
-      --replace "gettext" "${gettext}/bin/gettext"
-  '';
-
-  postInstall = ''
-    # Byobu does not compile its po files for some reason
-    for po in po/*.po; do
-      lang=''${po#po/}
-      lang=''${lang%.po}
-      # Path where byobu looks for translations as observed in the source code and strace
-      mkdir -p $out/share/byobu/po/$lang/LC_MESSAGES/
-      msgfmt $po -o $out/share/byobu/po/$lang/LC_MESSAGES/byobu.mo
-    done
-
-    # Override the symlinks otherwise they mess with the wrapping
-    cp --remove-destination $out/bin/byobu $out/bin/byobu-screen
-    cp --remove-destination $out/bin/byobu $out/bin/byobu-tmux
-
-    for i in $out/bin/byobu*; do
-      # We don't use the usual ".$package-wrapped" because arg0 within the shebang scripts
-      # points to the filename and byobu matches against this to know which backend
-      # to start with
-      file=".$(basename $i)"
-      mv $i $out/bin/$file
-      makeWrapper "$out/bin/$file" "$out/bin/$(basename $i)" --argv0 $(basename $i) \
-        --set BYOBU_PATH ${lib.escapeShellArg (lib.makeBinPath [ vim bc ])} \
-        --set BYOBU_PYTHON "${pythonEnv}/bin/python"
-    done
-  '';
-
-  meta = with lib; {
-    homepage = "https://launchpad.net/byobu/";
-    description = "Text-based window manager and terminal multiplexer";
-
-    longDescription =
-      ''Byobu is a GPLv3 open source text-based window manager and terminal multiplexer.
-        It was originally designed to provide elegant enhancements to the otherwise functional,
-        plain, practical GNU Screen, for the Ubuntu server distribution.
-        Byobu now includes an enhanced profiles, convenient keybindings,
-        configuration utilities, and toggle-able system status notifications for both
-        the GNU Screen window manager and the more modern Tmux terminal multiplexer,
-        and works on most Linux, BSD, and Mac distributions.
-      '';
-
-    license = licenses.gpl3;
-
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ qknight berbiche ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/misc/esphome/default.nix b/nixpkgs/pkgs/tools/misc/esphome/default.nix
index 02c18ac3a092..268cb68b4dc2 100644
--- a/nixpkgs/pkgs/tools/misc/esphome/default.nix
+++ b/nixpkgs/pkgs/tools/misc/esphome/default.nix
@@ -19,14 +19,14 @@ let
 in
 python.pkgs.buildPythonApplication rec {
   pname = "esphome";
-  version = "2024.2.0";
+  version = "2024.2.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-k8caA5Q4QcP7H1Nn5yvFsfExVwipAlFSb/DphkzYNtU=";
+    hash = "sha256-MAyK8Wx/d7lJKEueeL7GhxxKu8EygwjylPGXB2Y3bWM=";
   };
 
   nativeBuildInputs = with python.pkgs; [
diff --git a/nixpkgs/pkgs/tools/misc/faketty/default.nix b/nixpkgs/pkgs/tools/misc/faketty/default.nix
index d05360ccffe3..228cdf7f2f2f 100644
--- a/nixpkgs/pkgs/tools/misc/faketty/default.nix
+++ b/nixpkgs/pkgs/tools/misc/faketty/default.nix
@@ -2,14 +2,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "faketty";
-  version = "1.0.15";
+  version = "1.0.16";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-f32Y9Aj4Z9y6Da9rbRgwi9BGPl4FsI790BH52cIIoPA=";
+    hash = "sha256-BlQnVjYPFUfEurFUE2MHOL2ad56Nu/atzRuFu4OoCSI=";
   };
 
-  cargoHash = "sha256-+M1oq2CHUK6CIDFiUNLjO1UmHI19D5zdHVl8dvmQ1G8=";
+  cargoHash = "sha256-q9jx03XYA977481B9xuUfaaMBDbSVx4xREj4Q1Ti/Yw=";
 
   postPatch = ''
     patchShebangs tests/test.sh
diff --git a/nixpkgs/pkgs/tools/misc/fastfetch/default.nix b/nixpkgs/pkgs/tools/misc/fastfetch/default.nix
index bcfbdfa9becb..b3d5b6f1fcbe 100644
--- a/nixpkgs/pkgs/tools/misc/fastfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fastfetch/default.nix
@@ -43,13 +43,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "fastfetch";
-  version = "2.8.5";
+  version = "2.8.6";
 
   src = fetchFromGitHub {
     owner = "fastfetch-cli";
     repo = "fastfetch";
     rev = finalAttrs.version;
-    hash = "sha256-aIGT2NwtkKJ1uTgy4rvFegzJadRuGkki63gpnVCPKbw=";
+    hash = "sha256-n15p26zZaote8cB0NfBnb69hb27l4hHBZG+3D1yrrCA=";
   };
 
   outputs = [ "out" "man" ];
diff --git a/nixpkgs/pkgs/tools/misc/ksnip/default.nix b/nixpkgs/pkgs/tools/misc/ksnip/default.nix
index 60ba06a29930..8e5cc40740cc 100644
--- a/nixpkgs/pkgs/tools/misc/ksnip/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ksnip/default.nix
@@ -3,6 +3,7 @@
 , cmake
 , extra-cmake-modules
 , fetchFromGitHub
+, fetchpatch
 , kcolorpicker
 , kimageannotator
 , wrapQtAppsHook
@@ -22,6 +23,18 @@ stdenv.mkDerivation rec {
     sha256 = "sha256-n7YwDXd73hyrzb6L8utZFuHh9HnjVtkU6CC4jfWPj/I=";
   };
 
+  patches = [
+    # Fix build with latest kImageAnnotator
+    (fetchpatch {
+      url = "https://github.com/ksnip/ksnip/commit/76f4b381971eead6ff31b8bf3bb64bb5717469c3.patch";
+      hash = "sha256-JWoI974qDNZIzr/8oksI8m6g3XNWEaQRGsqSfvQrmao=";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace src/CMakeLists.txt --replace-fail "kColorPicker::kColorPicker" "kColorPicker::kColorPicker-Qt5"
+  '';
+
   nativeBuildInputs = [
     cmake
     extra-cmake-modules
diff --git a/nixpkgs/pkgs/tools/misc/lesspipe/default.nix b/nixpkgs/pkgs/tools/misc/lesspipe/default.nix
index c7978485c7e4..5bc3f97c3c78 100644
--- a/nixpkgs/pkgs/tools/misc/lesspipe/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lesspipe/default.nix
@@ -1,4 +1,22 @@
-{ lib, stdenv, fetchFromGitHub, makeWrapper, perl, procps, file, gnused, bash, binutils }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, makeWrapper
+, perl
+, procps
+, bash
+
+# shell referenced dependencies
+, resholve
+, binutils-unwrapped
+, file
+, gnugrep
+, coreutils
+, gnused
+, gnutar
+, iconv
+, ncurses
+}:
 
 stdenv.mkDerivation rec {
   pname = "lesspipe";
@@ -28,9 +46,65 @@ stdenv.mkDerivation rec {
   installFlags = [ "DESTDIR=$(out)" ];
 
   postInstall = ''
-    for f in lesspipe.sh lesscomplete; do
-      wrapProgram "$out/bin/$f" --prefix-each PATH : "${lib.makeBinPath [ binutils file gnused procps ]}"
-    done
+    # resholve doesn't see strings in an array definition
+    substituteInPlace $out/bin/lesspipe.sh --replace 'nodash strings' "nodash ${binutils-unwrapped}/bin/strings"
+
+    ${resholve.phraseSolution "lesspipe.sh" {
+      scripts = [ "bin/lesspipe.sh" ];
+      interpreter = "${bash}/bin/bash";
+      inputs = [
+        coreutils
+        file
+        gnugrep
+        gnused
+        gnutar
+        iconv
+        procps
+        ncurses
+      ];
+      keep = [ "$prog" "$c1" "$c2" "$c3" "$c4" "$c5" "$cmd" "$colorizer" "$HOME" ];
+      fake = {
+        # script guards usage behind has_cmd test function, it's safe to leave these external and optional
+        external = [
+          "cpio" "isoinfo" "cabextract" "bsdtar" "rpm2cpio" "bsdtar" "unzip" "ar" "unrar" "rar" "7zr" "7za" "isoinfo"
+          "gzip" "bzip2" "lzip" "lzma" "xz" "brotli" "compress" "zstd" "lz4"
+          "archive_color" "bat" "batcat" "pygmentize" "source-highlight" "vimcolor" "code2color"
+
+          "w3m" "lynx" "elinks" "html2text" "dtc" "pdftotext" "pdftohtml" "pdfinfo" "ps2ascii" "procyon" "ccze"
+          "mdcat" "pandoc" "docx2txt" "libreoffice" "pptx2md" "mdcat" "xlscat" "odt2txt" "wvText" "antiword" "catdoc"
+          "broken_catppt" "sxw2txt" "groff" "mandoc" "unrtf" "dvi2tty" "pod2text" "perldoc" "h5dump" "ncdump" "matdump"
+          "djvutxt" "openssl" "gpg" "plistutil" "plutil" "id3v2" "csvlook" "jq" "zlib-flate" "lessfilter"
+        ] ++ lib.optional stdenv.isDarwin [
+          # resholve only identifies this on darwin
+          # call site is gaurded by || so it's safe to leave dynamic
+          "locale"
+        ];
+        builtin = [ "setopt" ];
+      };
+      execer = [
+        "cannot:${iconv}/bin/iconv"
+      ];
+    }}
+    ${resholve.phraseSolution "lesscomplete" {
+      scripts = [ "bin/lesscomplete" ];
+      interpreter = "${bash}/bin/bash";
+      inputs = [
+        coreutils
+        file
+        gnugrep
+        gnused
+        gnutar
+      ];
+      keep = [ "$prog" "$c1" "$c2" "$c3" "$c4" "$c5" "$cmd" ];
+      fake = {
+        # script guards usage behind has_cmd test function, it's safe to leave these external and optional
+        external = [
+          "cpio" "isoinfo" "cabextract" "bsdtar" "rpm2cpio" "bsdtar" "unzip" "ar" "unrar" "rar" "7zr" "7za" "isoinfo"
+          "gzip" "bzip2" "lzip" "lzma" "xz" "brotli" "compress" "zstd" "lz4"
+        ];
+        builtin = [ "setopt" ];
+      };
+    }}
   '';
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/misc/mise/default.nix b/nixpkgs/pkgs/tools/misc/mise/default.nix
index b0d48fd6fcfb..959be1430da5 100644
--- a/nixpkgs/pkgs/tools/misc/mise/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mise/default.nix
@@ -17,16 +17,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mise";
-  version = "2024.2.16";
+  version = "2024.2.19";
 
   src = fetchFromGitHub {
     owner = "jdx";
     repo = "mise";
     rev = "v${version}";
-    hash = "sha256-SrLgLYe0jeVzLoJZahqVrlYDd2FJ3G1uxrHx2BKjbHM=";
+    hash = "sha256-SDGXSjCDdtjKn474s2SQm9YDHofMOmHuodLS2iu10Co=";
   };
 
-  cargoHash = "sha256-G/NR53u+rX9Q7tJVYi1tlXQL+gxK7wfqN3IpkoXzTRk=";
+  cargoHash = "sha256-4MEBIZOXjcLEyW0TB+AXWsEc24VZz8bGCkduHqbazuo=";
 
   nativeBuildInputs = [ installShellFiles pkg-config ];
   buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
diff --git a/nixpkgs/pkgs/tools/misc/nautilus-open-any-terminal/default.nix b/nixpkgs/pkgs/tools/misc/nautilus-open-any-terminal/default.nix
index 54e85c063633..b200731ab8f2 100644
--- a/nixpkgs/pkgs/tools/misc/nautilus-open-any-terminal/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nautilus-open-any-terminal/default.nix
@@ -14,14 +14,14 @@
 
 python3.pkgs.buildPythonPackage rec {
   pname = "nautilus-open-any-terminal";
-  version = "0.5.0";
+  version = "0.5.1";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "Stunkymonkey";
     repo = pname;
-    rev = version;
-    hash = "sha256-fcTbt8O/7KEme5+GlDD7hMMcE2RaYqFdfojzJ1KhnA0=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-liyzgbZGl08gHLVpsy8NbTiTytNdiMdymF70ik4cPXs=";
   };
 
   patches = [ ./hardcode-gsettings.patch ];
diff --git a/nixpkgs/pkgs/tools/misc/ollama/default.nix b/nixpkgs/pkgs/tools/misc/ollama/default.nix
index 6ce576644d49..7a0fea0c116b 100644
--- a/nixpkgs/pkgs/tools/misc/ollama/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ollama/default.nix
@@ -8,6 +8,7 @@
 , makeWrapper
 , stdenv
 
+, pkgs
 , cmake
 , gcc12
 , clblast
@@ -17,98 +18,28 @@
 , linuxPackages
 , darwin
 
-, enableRocm ? false
-, enableCuda ? false
+  # one of `[ null "rocm" "cuda" ]`
+, acceleration ? null
 }:
 
 let
   pname = "ollama";
-  version = "0.1.24";
-
-  warnIfNotLinux = warning: (lib.warnIfNot stdenv.isLinux warning stdenv.isLinux);
-  gpuWarning = api: "building ollama with ${api} is only supported on linux; falling back to cpu";
-  rocmIsEnabled = enableRocm && (warnIfNotLinux (gpuWarning "rocm"));
-  cudaIsEnabled = enableCuda && (warnIfNotLinux (gpuWarning "cuda"));
-  enableLinuxGpu = rocmIsEnabled || cudaIsEnabled;
-
-  appleFrameworks = darwin.apple_sdk_11_0.frameworks;
-  metalFrameworks = [
-    appleFrameworks.Accelerate
-    appleFrameworks.Metal
-    appleFrameworks.MetalKit
-    appleFrameworks.MetalPerformanceShaders
-  ];
-
+  version = "0.1.27";
   src = fetchFromGitHub {
     owner = "jmorganca";
     repo = "ollama";
     rev = "v${version}";
-    hash = "sha256-GwZA1QUH8I8m2bGToIcMMaB5MBnioQP4+n1SauUJYP8=";
+    hash = "sha256-+ayby+yVknFHLTyLjMAPMnOTMSzTKqzi9caN/TppcEg=";
     fetchSubmodules = true;
   };
-  preparePatch = patch: hash: fetchpatch {
-    url = "file://${src}/llm/patches/${patch}";
-    inherit hash;
-    stripLen = 1;
-    extraPrefix = "llm/llama.cpp/";
-  };
-  inherit (lib) licenses platforms maintainers;
-  ollama = {
-    inherit pname version src;
-    vendorHash = "sha256-wXRbfnkbeXPTOalm7SFLvHQ9j46S/yLNbFy+OWNSamQ=";
-
-    nativeBuildInputs = [
-      cmake
-    ] ++ lib.optionals enableLinuxGpu [
-      makeWrapper
-    ] ++ lib.optionals stdenv.isDarwin
-      metalFrameworks;
-
-    patches = [
-      # remove uses of `git` in the `go generate` script
-      # instead use `patch` where necessary
-      ./remove-git.patch
-      # replace a hardcoded use of `g++` with `$CXX`
-      ./replace-gcc.patch
-
-      # ollama's patches of llama.cpp's example server
-      # `ollama/llm/generate/gen_common.sh` -> "apply temporary patches until fix is upstream"
-      (preparePatch "01-cache.diff" "sha256-PC4yN98hFvK+PEITiDihL8ki3bJuLVXrAm0CGf8GPJE=")
-      (preparePatch "02-shutdown.diff" "sha256-cElAp9Z9exxN964vB/YFuBhZoEcoAwGSMCnbh+l/V4Q=")
-    ];
-    postPatch = ''
-      # use a patch from the nix store in the `go generate` script
-      substituteInPlace llm/generate/gen_common.sh \
-        --subst-var-by cmakeIncludePatch '${./cmake-include.patch}'
-      # `ollama/llm/generate/gen_common.sh` -> "avoid duplicate main symbols when we link into the cgo binary"
-      substituteInPlace llm/llama.cpp/examples/server/server.cpp \
-        --replace-fail 'int main(' 'int __main('
-      # replace inaccurate version number with actual release version
-      substituteInPlace version/version.go --replace-fail 0.0.0 '${version}'
-    '';
-    preBuild = ''
-      export OLLAMA_SKIP_PATCHING=true
-      # build llama.cpp libraries for ollama
-      go generate ./...
-    '';
-
-    ldflags = [
-      "-s"
-      "-w"
-      "-X=github.com/jmorganca/ollama/version.Version=${version}"
-      "-X=github.com/jmorganca/ollama/server.mode=release"
-    ];
 
-    meta = {
-      description = "Get up and running with large language models locally";
-      homepage = "https://github.com/jmorganca/ollama";
-      license = licenses.mit;
-      platforms = platforms.unix;
-      mainProgram = "ollama";
-      maintainers = with maintainers; [ abysssol dit7ya elohmeier ];
-    };
-  };
+  validAccel = lib.assertOneOf "ollama.acceleration" acceleration [ null "rocm" "cuda" ];
 
+  warnIfNotLinux = api: (lib.warnIfNot stdenv.isLinux
+    "building ollama with `${api}` is only supported on linux; falling back to cpu"
+    stdenv.isLinux);
+  enableRocm = validAccel && (acceleration == "rocm") && (warnIfNotLinux "rocm");
+  enableCuda = validAccel && (acceleration == "cuda") && (warnIfNotLinux "cuda");
 
   rocmClang = linkFarm "rocm-clang" {
     llvm = rocmPackages.llvm.clang;
@@ -120,10 +51,6 @@ let
       rocmClang
     ];
   };
-  rocmVars = {
-    ROCM_PATH = rocmPath;
-    CLBlast_DIR = "${clblast}/lib/cmake/CLBlast";
-  };
 
   cudaToolkit = buildEnv {
     name = "cuda-toolkit";
@@ -133,50 +60,121 @@ let
       cudaPackages.cuda_cudart
     ];
   };
-  cudaVars = {
-    CUDA_LIB_DIR = "${cudaToolkit}/lib";
-    CUDACXX = "${cudaToolkit}/bin/nvcc";
-    CUDAToolkit_ROOT = cudaToolkit;
-  };
 
-  linuxGpuLibs = {
-    buildInputs = lib.optionals rocmIsEnabled [
-      rocmPackages.clr
-      rocmPackages.hipblas
-      rocmPackages.rocblas
-      rocmPackages.rocsolver
-      rocmPackages.rocsparse
-      libdrm
-    ] ++ lib.optionals cudaIsEnabled [
-      cudaPackages.cuda_cudart
-    ];
-  };
-
-  appleGpuLibs = { buildInputs = metalFrameworks; };
-
-  runtimeLibs = lib.optionals rocmIsEnabled [
+  runtimeLibs = lib.optionals enableRocm [
     rocmPackages.rocm-smi
-  ] ++ lib.optionals cudaIsEnabled [
+  ] ++ lib.optionals enableCuda [
     linuxPackages.nvidia_x11
   ];
-  runtimeLibWrapper = {
-    postFixup = ''
-      mv "$out/bin/${pname}" "$out/bin/.${pname}-unwrapped"
-      makeWrapper "$out/bin/.${pname}-unwrapped" "$out/bin/${pname}" \
-        --suffix LD_LIBRARY_PATH : '${lib.makeLibraryPath runtimeLibs}'
-    '';
-  };
+
+  appleFrameworks = darwin.apple_sdk_11_0.frameworks;
+  metalFrameworks = [
+    appleFrameworks.Accelerate
+    appleFrameworks.Metal
+    appleFrameworks.MetalKit
+    appleFrameworks.MetalPerformanceShaders
+  ];
+
 
   goBuild =
-    if cudaIsEnabled then
+    if enableCuda then
       buildGoModule.override { stdenv = overrideCC stdenv gcc12; }
     else
       buildGoModule;
+  preparePatch = patch: hash: fetchpatch {
+    url = "file://${src}/llm/patches/${patch}";
+    inherit hash;
+    stripLen = 1;
+    extraPrefix = "llm/llama.cpp/";
+  };
+  inherit (lib) licenses platforms maintainers;
 in
-goBuild (ollama
-  // (lib.optionalAttrs rocmIsEnabled rocmVars)
-  // (lib.optionalAttrs cudaIsEnabled cudaVars)
-  // (lib.optionalAttrs enableLinuxGpu linuxGpuLibs)
-  // (lib.optionalAttrs enableLinuxGpu runtimeLibWrapper)
+goBuild ((lib.optionalAttrs enableRocm {
+  ROCM_PATH = rocmPath;
+  CLBlast_DIR = "${clblast}/lib/cmake/CLBlast";
+}) // (lib.optionalAttrs enableCuda {
+  CUDA_LIB_DIR = "${cudaToolkit}/lib";
+  CUDACXX = "${cudaToolkit}/bin/nvcc";
+  CUDAToolkit_ROOT = cudaToolkit;
+}) // {
+  inherit pname version src;
+  vendorHash = "sha256-zTrBighPBqZ9hhkEV3UawJZUYyPRay7+P6wkhDtpY7M=";
+
+  nativeBuildInputs = [
+    cmake
+  ] ++ lib.optionals (enableRocm || enableCuda) [
+    makeWrapper
+  ] ++ lib.optionals stdenv.isDarwin
+    metalFrameworks;
+
+  buildInputs = lib.optionals enableRocm [
+    rocmPackages.clr
+    rocmPackages.hipblas
+    rocmPackages.rocblas
+    rocmPackages.rocsolver
+    rocmPackages.rocsparse
+    libdrm
+  ] ++ lib.optionals enableCuda [
+    cudaPackages.cuda_cudart
+  ] ++ lib.optionals stdenv.isDarwin
+    metalFrameworks;
+
+  patches = [
+    # remove uses of `git` in the `go generate` script
+    # instead use `patch` where necessary
+    ./remove-git.patch
+    # replace a hardcoded use of `g++` with `$CXX`
+    ./replace-gcc.patch
+
+    # ollama's patches of llama.cpp's example server
+    # `ollama/llm/generate/gen_common.sh` -> "apply temporary patches until fix is upstream"
+    (preparePatch "01-cache.diff" "sha256-MTTln2G0G8dntihUzEjPM1ruTsApb4ZToBczJb8EG68=")
+    (preparePatch "02-cudaleaks.diff" "sha256-Cu7E9iEcvddPL9mPPI5Z96qmwWigi3f0WgSpPRjGc88=")
+  ];
+  postPatch = ''
+    # use a patch from the nix store in the `go generate` script
+    substituteInPlace llm/generate/gen_common.sh \
+      --subst-var-by cmakeIncludePatch '${./cmake-include.patch}'
+    # `ollama/llm/generate/gen_common.sh` -> "avoid duplicate main symbols when we link into the cgo binary"
+    substituteInPlace llm/llama.cpp/examples/server/server.cpp \
+      --replace-fail 'int main(' 'int __main('
+    # replace inaccurate version number with actual release version
+    substituteInPlace version/version.go --replace-fail 0.0.0 '${version}'
+  '';
+  preBuild = ''
+    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
+    mv "$out/bin/ollama" "$out/bin/.ollama-unwrapped"
+    makeWrapper "$out/bin/.ollama-unwrapped" "$out/bin/ollama" \
+      --suffix LD_LIBRARY_PATH : '/run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs}'
+  '';
+
+  ldflags = [
+    "-s"
+    "-w"
+    "-X=github.com/jmorganca/ollama/version.Version=${version}"
+    "-X=github.com/jmorganca/ollama/server.mode=release"
+  ];
 
-  // (lib.optionalAttrs stdenv.isDarwin appleGpuLibs))
+  # for now, just test that rocm and cuda build
+  passthru.tests = lib.optionalAttrs stdenv.isLinux {
+    rocm = pkgs.ollama.override { acceleration = "rocm"; };
+    cuda = pkgs.ollama.override { acceleration = "cuda"; };
+  };
+
+  meta = {
+    description = "Get up and running with large language models locally";
+    homepage = "https://github.com/jmorganca/ollama";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    mainProgram = "ollama";
+    maintainers = with maintainers; [ abysssol dit7ya elohmeier ];
+  };
+})
diff --git a/nixpkgs/pkgs/tools/misc/parallel/default.nix b/nixpkgs/pkgs/tools/misc/parallel/default.nix
index d196de07f648..488039c80763 100644
--- a/nixpkgs/pkgs/tools/misc/parallel/default.nix
+++ b/nixpkgs/pkgs/tools/misc/parallel/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "parallel";
-  version = "20240122";
+  version = "20240222";
 
   src = fetchurl {
     url = "mirror://gnu/parallel/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-hZaIy7VkHNe2sWsrlgviSqTjfmVcyP/NivlxzX1bRJ8=";
+    sha256 = "sha256-66Cban4jj2Iik/fUYVl/NQdctW8XDQpzFI9T0lnshVY=";
   };
 
   outputs = [ "out" "man" "doc" ];
diff --git a/nixpkgs/pkgs/tools/misc/rauc/default.nix b/nixpkgs/pkgs/tools/misc/rauc/default.nix
index d6e8486681ac..8f244839803c 100644
--- a/nixpkgs/pkgs/tools/misc/rauc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rauc/default.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rauc";
-  version = "1.11.1";
+  version = "1.11.2";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-xvuBMOAXnuRYCkripjwfv64BCTLySNxebyHF3sB8EQw=";
+    sha256 = "sha256-IWfYjn8CCgYK2hna59Awr5tzWnXCtR6c1XpV5fCiSE4=";
   };
 
   passthru = {
diff --git a/nixpkgs/pkgs/tools/misc/tmuxp/default.nix b/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
index 1d1eaa53e7bb..b61f0bddaa26 100644
--- a/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
@@ -2,12 +2,12 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "tmuxp";
-  version = "1.34.0";
-  format = "pyproject";
+  version = "1.39.0";
+  pyproject = true;
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-G93YtgXo4li+tLWKgJFaxx4Ax4sK4F+vK6M3WTXIeiU=";
+    hash = "sha256-E8Q1uCV3kl4rYg/bzwjk3CNQU/uP9lEZzSqcOFkLrY0=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/misc/topicctl/default.nix b/nixpkgs/pkgs/tools/misc/topicctl/default.nix
index 3eb949381af8..e4f5c11a980a 100644
--- a/nixpkgs/pkgs/tools/misc/topicctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/topicctl/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "topicctl";
-  version = "1.14.0";
+  version = "1.14.2";
 
   src = fetchFromGitHub {
     owner = "segmentio";
     repo = "topicctl";
     rev = "v${version}";
-    sha256 = "sha256-Vmx+6UXNWCnVmLskk1J4Pug3+99cdk4WXjA2zO4agvU=";
+    sha256 = "sha256-VOy6IoXw3MCa5hNQ/BmuGKwjbNRvDC+xwIcLXep8rRI=";
   };
 
   vendorHash = "sha256-+mnnvdna1g6JE29weOJZmdO3jFp2a75dV9wK2XcWJ9s=";
diff --git a/nixpkgs/pkgs/tools/networking/haproxy/default.nix b/nixpkgs/pkgs/tools/networking/haproxy/default.nix
index 675c7d19b65a..ae15785a21ff 100644
--- a/nixpkgs/pkgs/tools/networking/haproxy/default.nix
+++ b/nixpkgs/pkgs/tools/networking/haproxy/default.nix
@@ -29,11 +29,11 @@ let
   sslPkg = sslPkgs.${sslLibrary};
 in stdenv.mkDerivation (finalAttrs: {
   pname = "haproxy";
-  version = "2.9.5";
+  version = "2.9.6";
 
   src = fetchurl {
     url = "https://www.haproxy.org/download/${lib.versions.majorMinor finalAttrs.version}/src/haproxy-${finalAttrs.version}.tar.gz";
-    hash = "sha256-MreFsSiDj0IYuNVGkMhsSHlNA/gXy7Yn+0h2n3nv1Zs=";
+    hash = "sha256-IIrfR8j6g8VJeANLpcARC3RjxHB48Rm9BSNCFxo7mgs=";
   };
 
   buildInputs = [ sslPkg zlib libxcrypt ]
diff --git a/nixpkgs/pkgs/tools/networking/mu/default.nix b/nixpkgs/pkgs/tools/networking/mu/default.nix
index 6f3f556e2592..46519c730446 100644
--- a/nixpkgs/pkgs/tools/networking/mu/default.nix
+++ b/nixpkgs/pkgs/tools/networking/mu/default.nix
@@ -1,21 +1,23 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, glibcLocales
 , meson
 , ninja
 , pkg-config
+, python3
+, cld2
 , coreutils
 , emacs
 , glib
 , gmime3
 , texinfo
 , xapian
-, fetchpatch
 }:
 
 stdenv.mkDerivation rec {
   pname = "mu";
-  version = "1.10.8";
+  version = "1.12.0";
 
   outputs = [ "out" "mu4e" ];
 
@@ -23,23 +25,17 @@ stdenv.mkDerivation rec {
     owner = "djcb";
     repo = "mu";
     rev = "v${version}";
-    hash = "sha256-cDfW0yXA+0fZY5lv4XCHWu+5B0svpMeVMf8ttX/z4Og=";
+    hash = "sha256-z0sHDZlhsSeIf+ZRCni3j/DbfYrmn6bvYmKpt4PA2i8=";
   };
 
-  patches = [
-    (fetchpatch {
-      name = "add-mu4e-pkg.el";
-      url = "https://github.com/djcb/mu/commit/00f7053d51105eea0c72151f1a8cf0b6d8478e4e.patch";
-      hash = "sha256-21c7djmYTcqyyygqByo9vu/GsH8WMYcq8NOAvJsS5AQ=";
-    })
-  ];
-
   postPatch = ''
-    # Fix mu4e-builddir (set it to $out)
-    substituteInPlace mu4e/mu4e-config.el.in \
-      --replace "@abs_top_builddir@" "$out"
-    substituteInPlace lib/utils/mu-test-utils.cc \
-      --replace "/bin/rm" "${coreutils}/bin/rm"
+    substituteInPlace lib/utils/mu-utils-file.cc \
+      --replace-fail "/bin/rm" "${coreutils}/bin/rm"
+    substituteInPlace lib/tests/bench-indexer.cc \
+      --replace-fail "/bin/rm" "${coreutils}/bin/rm"
+    substituteInPlace lib/mu-maildir.cc \
+      --replace-fail "/bin/mv" "${coreutils}/bin/mv"
+    patchShebangs build-aux/date.py
   '';
 
   postInstall = ''
@@ -61,7 +57,7 @@ stdenv.mkDerivation rec {
     fi
   '';
 
-  buildInputs = [ emacs glib gmime3 texinfo xapian ];
+  buildInputs = [ cld2 emacs glib gmime3 texinfo xapian ];
 
   mesonFlags = [
     "-Dguile=disabled"
@@ -69,10 +65,13 @@ stdenv.mkDerivation rec {
     "-Dlispdir=${placeholder "mu4e"}/share/emacs/site-lisp"
   ];
 
-  nativeBuildInputs = [ pkg-config meson ninja ];
+  nativeBuildInputs = [ pkg-config meson ninja python3 glibcLocales ];
 
   doCheck = true;
 
+  # Tests need a UTF-8 aware locale configured
+  env.LANG = "C.UTF-8";
+
   meta = with lib; {
     description = "A collection of utilities for indexing and searching Maildirs";
     license = licenses.gpl3Plus;
diff --git a/nixpkgs/pkgs/tools/networking/muffet/default.nix b/nixpkgs/pkgs/tools/networking/muffet/default.nix
index c363df34e8f7..a9fe4398afd7 100644
--- a/nixpkgs/pkgs/tools/networking/muffet/default.nix
+++ b/nixpkgs/pkgs/tools/networking/muffet/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "muffet";
-  version = "2.9.3";
+  version = "2.10.0";
 
   src = fetchFromGitHub {
     owner = "raviqqe";
     repo = "muffet";
     rev = "v${version}";
-    hash = "sha256-w9PoKGxZdP/sKdlTlnWBMqDPDLUvcYubkCyNHUm3AAc=";
+    hash = "sha256-kwEHabQYAaxC8nKewc5XHZnSvUSEQRw7qg0jtJoOw9g=";
   };
 
-  vendorHash = "sha256-2an4xj1gqQqj9NrSdTAss7hn6SiWoiq3RQ2xxUlSuaE=";
+  vendorHash = "sha256-GNwyQHqyfuzKnNAv5gpZFmhSq+jIHdfeceLSD9UphdA=";
 
   meta = with lib; {
     description = "A website link checker which scrapes and inspects all pages in a website recursively";
diff --git a/nixpkgs/pkgs/tools/networking/netbird/default.nix b/nixpkgs/pkgs/tools/networking/netbird/default.nix
index 590ee909d059..dbbfc6b74c4d 100644
--- a/nixpkgs/pkgs/tools/networking/netbird/default.nix
+++ b/nixpkgs/pkgs/tools/networking/netbird/default.nix
@@ -31,16 +31,16 @@ let
 in
 buildGoModule rec {
   pname = "netbird";
-  version = "0.26.0";
+  version = "0.26.1";
 
   src = fetchFromGitHub {
     owner = "netbirdio";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-hZnxemBoMAol0m9XZPMEh/Lf0woxoLNH97bRyg8xtv4=";
+    hash = "sha256-FZ6bPn4birCjvWm43clu3lAES38IooLP7PhUfRMO5+0=";
   };
 
-  vendorHash = "sha256-csa83P74Y9fHsPg5VgPfR9WMg4VKOXcIR0pOMzh0QoA=";
+  vendorHash = "sha256-Zp8LAaADpSa/wfnLAQVJ8cG3bMkC7ZU1BT+Dz214c34=";
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optional ui pkg-config;
 
@@ -73,9 +73,9 @@ buildGoModule rec {
   postPatch = ''
     # make it compatible with systemd's RuntimeDirectory
     substituteInPlace client/cmd/root.go \
-      --replace 'unix:///var/run/netbird.sock' 'unix:///var/run/netbird/sock'
+      --replace-fail 'unix:///var/run/netbird.sock' 'unix:///var/run/netbird/sock'
     substituteInPlace client/ui/client_ui.go \
-      --replace 'unix:///var/run/netbird.sock' 'unix:///var/run/netbird/sock'
+      --replace-fail 'unix:///var/run/netbird.sock' 'unix:///var/run/netbird/sock'
   '';
 
   postInstall = lib.concatStringsSep "\n"
@@ -90,13 +90,13 @@ buildGoModule rec {
       '')
       modules) + lib.optionalString (stdenv.isLinux && ui) ''
     mkdir -p $out/share/pixmaps
-    cp $src/client/ui/netbird-systemtray-default.png $out/share/pixmaps/netbird.png
+    cp $src/client/ui/netbird-systemtray-connected.png $out/share/pixmaps/netbird.png
 
     mkdir -p $out/share/applications
     cp $src/client/ui/netbird.desktop $out/share/applications/netbird.desktop
 
     substituteInPlace $out/share/applications/netbird.desktop \
-      --replace "Exec=/usr/bin/netbird-ui" "Exec=$out/bin/netbird-ui"
+      --replace-fail "Exec=/usr/bin/netbird-ui" "Exec=$out/bin/netbird-ui"
   '';
 
   passthru = {
diff --git a/nixpkgs/pkgs/tools/networking/sing-box/default.nix b/nixpkgs/pkgs/tools/networking/sing-box/default.nix
index b98f1c4b492a..8cef901c88bc 100644
--- a/nixpkgs/pkgs/tools/networking/sing-box/default.nix
+++ b/nixpkgs/pkgs/tools/networking/sing-box/default.nix
@@ -11,16 +11,16 @@
 
 buildGoModule rec {
   pname = "sing-box";
-  version = "1.8.6";
+  version = "1.8.7";
 
   src = fetchFromGitHub {
     owner = "SagerNet";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-t7P1W1iw5nCdACrByZormeq3r2KGAnZRFoXTRNjGztg=";
+    hash = "sha256-SZd67DyDsKZZ9hKgRtbQLJzfft+vl49k9J/+Xv8ghHs=";
   };
 
-  vendorHash = "sha256-J6+b0uZwBoxwc43+5PXFwztXC1abHvtK4ejg5vA757E=";
+  vendorHash = "sha256-9aH8KHn+8brGT/eJS9SWVYBMxDI1R3Q+pORfnjUI7ms=";
 
   tags = [
     "with_quic"
diff --git a/nixpkgs/pkgs/tools/nix/nix-init/default.nix b/nixpkgs/pkgs/tools/nix/nix-init/default.nix
index a50a7fc1a0d1..1e1ef3c0d0f6 100644
--- a/nixpkgs/pkgs/tools/nix/nix-init/default.nix
+++ b/nixpkgs/pkgs/tools/nix/nix-init/default.nix
@@ -6,7 +6,7 @@
 , installShellFiles
 , pkg-config
 , bzip2
-, libgit2_1_6
+, libgit2
 , openssl
 , zlib
 , zstd
@@ -45,7 +45,7 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [
     bzip2
     curl
-    libgit2_1_6
+    libgit2
     openssl
     zlib
     zstd
@@ -80,6 +80,7 @@ rustPlatform.buildRustPackage rec {
 
   env = {
     GEN_ARTIFACTS = "artifacts";
+    LIBGIT2_NO_VENDOR = 1;
     NIX = lib.getExe nix;
     NURL = lib.getExe nurl;
     ZSTD_SYS_USE_PKG_CONFIG = true;
diff --git a/nixpkgs/pkgs/tools/nix/nixdoc/default.nix b/nixpkgs/pkgs/tools/nix/nixdoc/default.nix
index e757e79f4684..1d5014a1c700 100644
--- a/nixpkgs/pkgs/tools/nix/nixdoc/default.nix
+++ b/nixpkgs/pkgs/tools/nix/nixdoc/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "nixdoc";
-  version = "2.7.0";
+  version = "3.0.1";
 
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = "nixdoc";
     rev = "v${version}";
-    sha256 = "sha256-0cyKI8KHFsMXYca3hzbqxmBpxGdhl4/i183kfUQr8pg=";
+    sha256 = "sha256-PnvVGw0DMBg/l7+QpcXW5AFfR6MeXBiUYdVAZuue1jA=";
   };
 
-  cargoHash = "sha256-9dqjNExxLDgVsu14yDQOJP1qxKy2ACiUH+pbX77iT70=";
+  cargoHash = "sha256-qLTUyhoEVtjgh+ilEv+pQLXLYWlW9gVsCiA5rPfymZY=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ darwin.Security ];
 
diff --git a/nixpkgs/pkgs/tools/package-management/dnf5/default.nix b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
index a5b7e8f4f813..129b98867cb0 100644
--- a/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
@@ -30,7 +30,7 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "dnf5";
-  version = "5.1.12";
+  version = "5.1.13";
 
   outputs = [ "out" "man" ];
 
@@ -38,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "rpm-software-management";
     repo = "dnf5";
     rev = finalAttrs.version;
-    hash = "sha256-AzyFc+fBQyyCNzr8ulMEtFEotdUzStsyYOv9ppcIBw4=";
+    hash = "sha256-6fgQA9L6yBDdtCzxPg+EyxERr/dzW1PWVaT1+lRCXmo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/default.nix b/nixpkgs/pkgs/tools/package-management/poetry/default.nix
index 75cede5df7d3..d7442d74674f 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry/default.nix
@@ -12,12 +12,12 @@ let
       # We keep the override around even when the versions match, as
       # it's likely to become relevant again after the next Poetry update.
       poetry-core = super.poetry-core.overridePythonAttrs (old: rec {
-        version = "1.8.1";
+        version = "1.9.0";
         src = fetchFromGitHub {
           owner = "python-poetry";
           repo = "poetry-core";
-          rev = version;
-          hash = "sha256-RnCJ67jaL2knwv+Uo7p0zOejHAT73f40weaJnfqOYoM=";
+          rev = "refs/tags/${version}";
+          hash = "sha256-vvwKbzGlvv2LTbXfJxQVM3nUXFGntgJxsku6cbRxCzw=";
         };
       });
     } // (plugins self);
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
index f13a7715464b..cf4b0334dcd6 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
@@ -4,7 +4,6 @@
 , pythonOlder
 , fetchFromGitHub
 , installShellFiles
-, pythonRelaxDepsHook
 , build
 , cachecontrol
 , cleo
@@ -29,41 +28,30 @@
 , xattr
 , tomli
 , importlib-metadata
-, cachy
 , deepdiff
-, flatdict
 , pytestCheckHook
 , httpretty
 , pytest-mock
 , pytest-xdist
-, pythonAtLeast
 , darwin
 }:
 
 buildPythonPackage rec {
   pname = "poetry";
-  version = "1.7.1";
+  version = "1.8.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "python-poetry";
-    repo = pname;
+    repo = "poetry";
     rev = "refs/tags/${version}";
-    hash = "sha256-PM3FIZYso7p0Oe0RpiPuxHrQrgnMlkT5SVeaJPK/J94=";
+    hash = "sha256-tHtd5vO3TMjO0gqyECuS0FUAcE90nkKZwOm3ne6poFQ=";
   };
 
   nativeBuildInputs = [
     installShellFiles
-    pythonRelaxDepsHook
-  ];
-
-  pythonRelaxDeps = [
-    # platformdirs 4.x is backwards compatible; https://github.com/python-poetry/poetry/commit/eb80d10846f7336b0b2a66ce2964e72dffee9a1c
-    "platformdirs"
-    # xattr 1.0 is backwards compatible modulo dropping Python 2 support: https://github.com/xattr/xattr/compare/v0.10.0...v1.0.0
-    "xattr"
   ];
 
   propagatedBuildInputs = [
@@ -104,9 +92,7 @@ buildPythonPackage rec {
   '';
 
   nativeCheckInputs = [
-    cachy
     deepdiff
-    flatdict
     pytestCheckHook
     httpretty
     pytest-mock
@@ -127,32 +113,14 @@ buildPythonPackage rec {
   '';
 
   disabledTests = [
+    "test_builder_should_execute_build_scripts"
     "test_env_system_packages_are_relative_to_lib"
+    "test_executor_known_hashes"
     "test_install_warning_corrupt_root"
-    "test_installer_with_pypi_repository"
-    # touches network
-    "git"
-    "solver"
-    "load"
-    "vcs"
-    "prereleases_if_they_are_compatible"
-    "test_builder_setup_generation_runs_with_pip_editable"
-    "test_executor"
-    # requires git history to work correctly
-    "default_with_excluded_data"
-    # toml ordering has changed
-    "lock"
-    # fs permission errors
-    "test_builder_should_execute_build_scripts"
-    # poetry.installation.chef.ChefBuildError: Backend 'poetry.core.masonry.api' is not available.
-    "test_isolated_env_install_success"
-    "test_prepare_sdist"
-    "test_prepare_directory"
-    "test_prepare_directory_with_extensions"
-    "test_prepare_directory_editable"
-  ] ++ lib.optionals (pythonAtLeast "3.10") [
-    # RuntimeError: 'auto_spec' might be a typo; use unsafe=True if this is intended
-    "test_info_setup_complex_pep517_error"
+  ];
+
+  pytestFlagsArray = [
+    "-m 'not network'"
   ];
 
   # Allow for package to use pep420's native namespaces
diff --git a/nixpkgs/pkgs/tools/security/bitwarden/electron-27.patch b/nixpkgs/pkgs/tools/security/bitwarden/electron-27.patch
deleted file mode 100644
index 5b2af2ce30f4..000000000000
--- a/nixpkgs/pkgs/tools/security/bitwarden/electron-27.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From e2c15e826fe9d4d2d12868ef5409e423e3191b58 Mon Sep 17 00:00:00 2001
-From: Daniel James Smith <2670567+djsmith85@users.noreply.github.com>
-Date: Fri, 8 Dec 2023 13:07:46 +0100
-Subject: [PATCH] Bump electron to v27.1.3 (#7134)
-
-Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
-
-(cherry picked from commit d76602343f36d8e17a9b0204e0290488456c96d5)
----
- apps/desktop/electron-builder.json | 2 +-
- package-lock.json                  | 8 ++++----
- package.json                       | 2 +-
- 3 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/apps/desktop/electron-builder.json b/apps/desktop/electron-builder.json
-index 69d1c0074f..a12870bd96 100644
---- a/apps/desktop/electron-builder.json
-+++ b/apps/desktop/electron-builder.json
-@@ -19,7 +19,7 @@
-     "**/node_modules/@bitwarden/desktop-native/index.js",
-     "**/node_modules/@bitwarden/desktop-native/desktop_native.${platform}-${arch}*.node"
-   ],
--  "electronVersion": "25.9.1",
-+  "electronVersion": "27.1.3",
-   "generateUpdatesFilesForAllChannels": true,
-   "publish": {
-     "provider": "generic",
-diff --git a/package-lock.json b/package-lock.json
-index 3f0afde95b..9b7b2dbcd9 100644
---- a/package-lock.json
-+++ b/package-lock.json
-@@ -125,7 +125,7 @@
-         "cross-env": "7.0.3",
-         "css-loader": "6.8.1",
-         "del": "6.1.1",
--        "electron": "25.9.1",
-+        "electron": "27.1.3",
-         "electron-builder": "23.6.0",
-         "electron-log": "5.0.0",
-         "electron-reload": "2.0.0-alpha.1",
-@@ -20173,9 +20173,9 @@
-       }
-     },
-     "node_modules/electron": {
--      "version": "25.9.1",
--      "resolved": "https://registry.npmjs.org/electron/-/electron-25.9.1.tgz",
--      "integrity": "sha512-Uo/Fh7igjoUXA/f90iTATZJesQEArVL1uLA672JefNWTLymdKSZkJKiCciu/Xnd0TS6qvdIOUGuJFSTQnKskXQ==",
-+      "version": "27.1.3",
-+      "resolved": "https://registry.npmjs.org/electron/-/electron-27.1.3.tgz",
-+      "integrity": "sha512-7eD8VMhhlL5J531OOawn00eMthUkX1e3qN5Nqd7eMK8bg5HxQBrn8bdPlvUEnCano9KhrVwaDnGeuzWoDOGpjQ==",
-       "dev": true,
-       "hasInstallScript": true,
-       "dependencies": {
-diff --git a/package.json b/package.json
-index 9ee884b31d..4a5c3513fd 100644
---- a/package.json
-+++ b/package.json
-@@ -88,7 +88,7 @@
-     "cross-env": "7.0.3",
-     "css-loader": "6.8.1",
-     "del": "6.1.1",
--    "electron": "25.9.1",
-+    "electron": "27.1.3",
-     "electron-builder": "23.6.0",
-     "electron-log": "5.0.0",
-     "electron-reload": "2.0.0-alpha.1",
--- 
-2.42.0
-
diff --git a/nixpkgs/pkgs/tools/security/cryptomator/default.nix b/nixpkgs/pkgs/tools/security/cryptomator/default.nix
index bf6f5c3c0587..85ce0c879792 100644
--- a/nixpkgs/pkgs/tools/security/cryptomator/default.nix
+++ b/nixpkgs/pkgs/tools/security/cryptomator/default.nix
@@ -14,17 +14,17 @@ in
 assert stdenv.isLinux; # better than `called with unexpected argument 'enableJavaFX'`
 mavenJdk.buildMavenPackage rec {
   pname = "cryptomator";
-  version = "1.11.1";
+  version = "1.12.3";
 
   src = fetchFromGitHub {
     owner = "cryptomator";
     repo = "cryptomator";
     rev = version;
-    hash = "sha256-Y+oG2NF4Vsklp1W22Xv+XrkY6vwn23FkzAXG/5828Og=";
+    hash = "sha256-pVQ3xlNgJIDz8dnNoiLJaG6y4kNHNLL7zYq1sl6rleY=";
   };
 
   mvnParameters = "-Dmaven.test.skip=true -Plinux";
-  mvnHash = "sha256-cXmnJHgKW6SGnhHFuFJP/DKNmFacfHbC3nQ2uVdIvUE=";
+  mvnHash = "sha256-Zx2HhgmebF8UOp+2JKl2+FGA98aPRSUTIduHPTtgAjI=";
 
   preBuild = ''
     VERSION=${version}
diff --git a/nixpkgs/pkgs/tools/security/dontgo403/default.nix b/nixpkgs/pkgs/tools/security/dontgo403/default.nix
index 79002c1cfc89..84e7667377b7 100644
--- a/nixpkgs/pkgs/tools/security/dontgo403/default.nix
+++ b/nixpkgs/pkgs/tools/security/dontgo403/default.nix
@@ -5,17 +5,22 @@
 
 buildGoModule rec {
   pname = "dontgo403";
-  version = "0.9.4";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "devploit";
-    repo = pname;
+    repo = "dontgo403";
     rev = "refs/tags/${version}";
-    hash = "sha256-PKI/DqMihhMaIa9OzDKtLIs34TRUtewAbBkx89IXLU4=";
+    hash = "sha256-znmPXue+pzv7vAKnIYsjJQQGMeBETH+ekyVKGz9wRik=";
   };
 
   vendorHash = "sha256-IGnTbuaQH8A6aKyahHMd2RyFRh4WxZ3Vx/A9V3uelRg=";
 
+  ldflags = [
+    "-w"
+    "-s"
+  ];
+
   meta = with lib; {
     description = "Tool to bypass 40X response codes";
     homepage = "https://github.com/devploit/dontgo403";
diff --git a/nixpkgs/pkgs/tools/security/exploitdb/default.nix b/nixpkgs/pkgs/tools/security/exploitdb/default.nix
index 117a02a040e3..6e7a553cf167 100644
--- a/nixpkgs/pkgs/tools/security/exploitdb/default.nix
+++ b/nixpkgs/pkgs/tools/security/exploitdb/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "exploitdb";
-  version = "2024-02-22";
+  version = "2024-02-27";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-+5N7qe7YuNNBiizzI2aBKZCsl64ODkit5Y9QlhNWVMw=";
+    hash = "sha256-bFCh1kNm7D71PoRoSHdm1qYGGNvYnEb9cLbZerVy5vw=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/security/faraday-cli/default.nix b/nixpkgs/pkgs/tools/security/faraday-cli/default.nix
index b0ee2015555c..c6f1c3333a71 100644
--- a/nixpkgs/pkgs/tools/security/faraday-cli/default.nix
+++ b/nixpkgs/pkgs/tools/security/faraday-cli/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "faraday-cli";
-  version = "2.1.10";
+  version = "2.1.11";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "infobyte";
-    repo = pname;
+    repo = "faraday-cli";
     rev = "refs/tags/${version}";
-    hash = "sha256-7Yg2m0xHpBPZ58gJodSYO8vXaxSlr4GK1Lin63WozOE=";
+    hash = "sha256-bCiiX5dYodnWkKeNo2j3PGMz17F5y2X4ECZiStDdK5U=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/tools/security/fulcio/default.nix b/nixpkgs/pkgs/tools/security/fulcio/default.nix
index 9c40c051bebc..17bd273c0a30 100644
--- a/nixpkgs/pkgs/tools/security/fulcio/default.nix
+++ b/nixpkgs/pkgs/tools/security/fulcio/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "fulcio";
-  version = "1.4.3";
+  version = "1.4.4";
 
   src = fetchFromGitHub {
     owner = "sigstore";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-LT8J9s008XQtDtNdH1ungQREqQUrlTsoxnlRLKimqLY=";
+    sha256 = "sha256-zL+53GIGDQagWtsSHQT1Gn1hZUCpYF3uYKXmJWFGy7k=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -20,7 +20,7 @@ buildGoModule rec {
       find "$out" -name .git -print0 | xargs -0 rm -rf
     '';
   };
-  vendorHash = "sha256-ImZJXdOfMepMFU1z47XyNU39NGGdiCzQji2/tKVfibQ=";
+  vendorHash = "sha256-B4/SIY9G5uEP+P+oSdhaMM7HRaHm5nq2jqXdIWxdP+8=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/tools/security/ggshield/default.nix b/nixpkgs/pkgs/tools/security/ggshield/default.nix
index 6b93977558c8..3bf136683333 100644
--- a/nixpkgs/pkgs/tools/security/ggshield/default.nix
+++ b/nixpkgs/pkgs/tools/security/ggshield/default.nix
@@ -6,14 +6,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "ggshield";
-  version = "1.24.0";
+  version = "1.25.0";
   pyproject = true;
 
   src = fetchFromGitHub {
     owner = "GitGuardian";
     repo = "ggshield";
     rev = "refs/tags/v${version}";
-    hash = "sha256-N0yokLsp6jRELIPu8w6gvD7V97xiKJl+kLQQB9h2mMY=";
+    hash = "sha256-D6+0ZYuOiCy5LonP1Ob7PlWmBXvLwU3PODOT6F+70HY=";
   };
 
   pythonRelaxDeps = true;
diff --git a/nixpkgs/pkgs/tools/security/grype/default.nix b/nixpkgs/pkgs/tools/security/grype/default.nix
index dcae1af2bed1..d602d1fc6e73 100644
--- a/nixpkgs/pkgs/tools/security/grype/default.nix
+++ b/nixpkgs/pkgs/tools/security/grype/default.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "grype";
-  version = "0.74.6";
+  version = "0.74.7";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = "grype";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2KLVIwiSrs+e0srXkfBdk/RxCIvSq/Lixe83th2KvRA=";
+    hash = "sha256-mP9Yjg5AVMIMvlOI+5AaCYzlw7h2K9WCFLY9ZwXmZk0=";
     # populate values that require us to use git. By doing this in postFetch we
     # can delete .git afterwards and maintain better reproducibility of the src.
     leaveDotGit = true;
@@ -29,7 +29,7 @@ buildGoModule rec {
 
   proxyVendor = true;
 
-  vendorHash = "sha256-wgcbP/VbHOMuc0PxWaOsiYTrr77ztLDVaDMhAD50vuQ=";
+  vendorHash = "sha256-X+E2g/FoDgjKq8XcPeEA/XbRJV8JkhY5AHPnw26hRnM=";
 
   nativeBuildInputs = [
     installShellFiles
diff --git a/nixpkgs/pkgs/tools/security/hcxtools/default.nix b/nixpkgs/pkgs/tools/security/hcxtools/default.nix
index df7695276c2a..1d52561e1888 100644
--- a/nixpkgs/pkgs/tools/security/hcxtools/default.nix
+++ b/nixpkgs/pkgs/tools/security/hcxtools/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   pname = "hcxtools";
-  version = "6.3.2";
+  version = "6.3.4";
 
   src = fetchFromGitHub {
     owner = "ZerBea";
     repo = pname;
     rev = version;
-    sha256 = "sha256-ZEkuWGt2PGkFW1RXCyrUiew92N4ov35mMObHk1xD6uM=";
+    sha256 = "sha256-03NPzSThmUPAEg5dBr2QkwaXPgGeu/lEe9nqhY8EkyA=";
   };
 
   nativeBuildInputs = [ pkg-config ];
diff --git a/nixpkgs/pkgs/tools/security/plasma-pass/default.nix b/nixpkgs/pkgs/tools/security/plasma-pass/default.nix
index da276aef50da..9475b2a4a099 100644
--- a/nixpkgs/pkgs/tools/security/plasma-pass/default.nix
+++ b/nixpkgs/pkgs/tools/security/plasma-pass/default.nix
@@ -8,13 +8,13 @@
 
 mkDerivation rec {
   pname = "plasma-pass";
-  version = "1.2.1";
+  version = "1.2.2";
 
   src = fetchFromGitLab {
     domain = "invent.kde.org";
     owner = "plasma";
     repo = "plasma-pass";
-    sha256 = "sha256-lCNskOXkSIcMPcMnTWE37sDCXfmtP0FhyMzxeF6L0iU=";
+    sha256 = "sha256-fEYH3cvDZzEKpYqkTVqxxh3rhV75af8dZUHxQq8fPNg=";
     rev = "v${version}";
   };
 
diff --git a/nixpkgs/pkgs/tools/security/semgrep/common.nix b/nixpkgs/pkgs/tools/security/semgrep/common.nix
index e4e51d81e9b7..3f8d8a954344 100644
--- a/nixpkgs/pkgs/tools/security/semgrep/common.nix
+++ b/nixpkgs/pkgs/tools/security/semgrep/common.nix
@@ -1,9 +1,9 @@
 { lib }:
 
 rec {
-  version = "1.61.1";
+  version = "1.62.0";
 
-  srcHash = "sha256-muTw6rj9FuSSXvUzdP4QRQogzmUPlrvGARRK/Jqg+Gc=";
+  srcHash = "sha256-P6plFE/tUVR6KvTZ+6RYr+Wq9W8hI7wmVnap4NMQAZU=";
 
   # submodule dependencies
   # these are fetched so we:
@@ -25,15 +25,15 @@ rec {
   core = {
     x86_64-linux = {
       platform = "any";
-      hash = "sha256-lX/zRgkEyoln69pf4fWtb8f9wffBOI/KkCegn8kFmj4=";
+      hash = "sha256-GQAKw3Q2RFuCnVFeT5OE2ybBBAMYtLx3GZyqFHDF89A=";
     };
     x86_64-darwin = {
       platform = "macosx_10_14_x86_64";
-      hash = "sha256-Rk4qP/iKpRUbqdry6V/NmXRQLkA0e9ltIOdYiO5DuTg=";
+      hash = "sha256-gFes5goprwIrA5PYMwtzgtn2Q+CcFHogvLr9XaAZ2m4=";
     };
     aarch64-darwin = {
       platform = "macosx_11_0_arm64";
-      hash = "sha256-Gqq9LGwZ96i8LU8Z8qSN3TxuUUTDYrJiVCY9rm7aNzI=";
+      hash = "sha256-ozDT2RGExMgVs2vaTGI3IrtzGD17W5ZcIGaEgyv+GZw=";
     };
   };
 
diff --git a/nixpkgs/pkgs/tools/security/terrascan/default.nix b/nixpkgs/pkgs/tools/security/terrascan/default.nix
index 91470205666b..3331c9c4b33f 100644
--- a/nixpkgs/pkgs/tools/security/terrascan/default.nix
+++ b/nixpkgs/pkgs/tools/security/terrascan/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "terrascan";
-  version = "1.18.11";
+  version = "1.18.12";
 
   src = fetchFromGitHub {
     owner = "accurics";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-BICXMSkfGDXOqBH+4UlJmqkUSV+oZa1wg7c20EtJ3WI=";
+    hash = "sha256-NTk/tCIArucJ12RR173bQ/VoP74oROYwmMrQizE+5iU=";
   };
 
-  vendorHash = "sha256-9zD81p/UjH43B0aeqlItP9vrGMaT/zhVYv60ot153Gc=";
+  vendorHash = "sha256-Hk7dkhb1GiCY9CkKZ1dMQc+s97VRUli7WAoneJVNK08=";
 
   # Tests want to download a vulnerable Terraform project
   doCheck = false;
diff --git a/nixpkgs/pkgs/tools/security/trufflehog/default.nix b/nixpkgs/pkgs/tools/security/trufflehog/default.nix
index 00c7ceeb70bd..ed44f89dc40f 100644
--- a/nixpkgs/pkgs/tools/security/trufflehog/default.nix
+++ b/nixpkgs/pkgs/tools/security/trufflehog/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "trufflehog";
-  version = "3.68.2";
+  version = "3.68.3";
 
   src = fetchFromGitHub {
     owner = "trufflesecurity";
     repo = "trufflehog";
     rev = "refs/tags/v${version}";
-    hash = "sha256-6gQoyVlLE+cXYwh8lTkL2giDhd3ETgETjT3XuEOwOU8=";
+    hash = "sha256-gX0NEXRFN9UFqtdKf/2MuqtFYfWQs0H0Foq+IPiMprU=";
   };
 
-  vendorHash = "sha256-D58WqqDwQo7fRubkGNRhD6g9ooKS9peb2qJJDRXgLtk=";
+  vendorHash = "sha256-2QHIdVi0hDWxACbzIp+OYSxCC/ZyM3CdhP0abVansBI=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/tools/system/ts/default.nix b/nixpkgs/pkgs/tools/system/ts/default.nix
index 843249f911e8..deecc9ea00c8 100644
--- a/nixpkgs/pkgs/tools/system/ts/default.nix
+++ b/nixpkgs/pkgs/tools/system/ts/default.nix
@@ -4,7 +4,7 @@
 
 stdenv.mkDerivation rec {
   pname = "ts";
-  version = "1.0";
+  version = "1.0.2";
 
   installPhase=''make install "PREFIX=$out"'';
 
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://viric.name/~viric/soft/ts/ts-${version}.tar.gz";
-    sha256 = "15dkzczx10fhl0zs9bmcgkxfbwq2znc7bpscljm4rchbzx7y6lsg";
+    sha256 = "sha256-9zRSrtgOL5p3ZIg+k1Oqf0DmXTwZmtHzvmD9WLWOr+w=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/text/goawk/default.nix b/nixpkgs/pkgs/tools/text/goawk/default.nix
index fc1a2bab79f4..2ed24f93d4d7 100644
--- a/nixpkgs/pkgs/tools/text/goawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/goawk/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "goawk";
-  version = "1.25.0";
+  version = "1.26.0";
 
   src = fetchFromGitHub {
     owner = "benhoyt";
     repo = "goawk";
     rev = "v${version}";
-    hash = "sha256-vxDBtYrfSmYE2mCqhepeLr4u+zLfHxCrYSXGq05CEYQ=";
+    hash = "sha256-EJf5Qv5ICJJdGNcRQ7v/ANyxx2j9d9NsZJnzIBrwam4=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/text/rpl/default.nix b/nixpkgs/pkgs/tools/text/rpl/default.nix
index 9f37fd260d71..cc36f93baf0f 100644
--- a/nixpkgs/pkgs/tools/text/rpl/default.nix
+++ b/nixpkgs/pkgs/tools/text/rpl/default.nix
@@ -1,38 +1,36 @@
-{ lib, fetchFromGitHub, python3Packages }:
+{ lib, fetchPypi, python3Packages }:
 
 python3Packages.buildPythonApplication rec {
   pname = "rpl";
-  version = "1.10";
+  version = "1.15.5";
 
-  # Tests not included in pip package.
-  doCheck = false;
+  pyproject = true;
 
-
-  src = fetchFromGitHub {
-    owner = "rrthomas";
-    repo = "rpl";
-    rev = "4467bd46a7a798f738247a7f090c1505176bd597";
-    sha256 = "0yf3pc3fws4nnh4nd8d3jpglmsyi69d17qqgpcnkpqca5l4cd25w";
+  src = fetchPypi {
+    inherit pname version;
+    hash = "sha256-rhPS+hwbjqq3X/V1bL6pzGg2tVxBkeMyUhaCvmneG4M=";
   };
 
-  patches = [
-    ./remove-argparse-manpage.diff # quickfix for ImportError: No module named build_manpages.build_manpages
+  nativeBuildInputs = [
+    python3Packages.setuptools
+  ];
+
+  nativeCheckInputs = [
+    python3Packages.pytest-datafiles
+    python3Packages.pytestCheckHook
   ];
 
   propagatedBuildInputs = [
-    #python3Packages.argparse-manpage # TODO
+    python3Packages.argparse-manpage
+    python3Packages.chainstream
     python3Packages.chardet
+    python3Packages.regex
   ];
 
-  installPhase = ''
-    mkdir -p $out/bin
-    mv rpl $out/bin
-  '';
-
   meta = with lib; {
     description = "Replace strings in files";
-    homepage    = "https://github.com/rrthomas/rpl";
-    license     = licenses.gpl2;
-    maintainers = with maintainers; [ teto ];
+    homepage = "https://github.com/rrthomas/rpl";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ cbley ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/rpl/remove-argparse-manpage.diff b/nixpkgs/pkgs/tools/text/rpl/remove-argparse-manpage.diff
deleted file mode 100644
index 8d3297699682..000000000000
--- a/nixpkgs/pkgs/tools/text/rpl/remove-argparse-manpage.diff
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/setup.cfg b/setup.cfg
-index 12e9198..38e5376 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -15,7 +15,6 @@ classifiers =
- [options]
- scripts = rpl
- python_requires = >=3
--setup_requires = argparse-manpage
- install_requires = chardet
- 
- [options.extras_require]
-diff --git a/setup.py b/setup.py
-index 96cade6..879fc44 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1,9 +1,8 @@
--from build_manpages.build_manpages import get_install_cmd
- from setuptools import setup
- from setuptools.command.install import install
- 
- setup(
-     cmdclass={
--        'install': get_install_cmd(install),
-+        'install': install,
-     }
- )
diff --git a/nixpkgs/pkgs/tools/text/vale/default.nix b/nixpkgs/pkgs/tools/text/vale/default.nix
index a04c4289f5c7..16ce1b99bd46 100644
--- a/nixpkgs/pkgs/tools/text/vale/default.nix
+++ b/nixpkgs/pkgs/tools/text/vale/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "vale";
-  version = "3.1.0";
+  version = "3.2.0";
 
   subPackages = [ "cmd/vale" ];
   outputs = [ "out" "data" ];
@@ -11,10 +11,10 @@ buildGoModule rec {
     owner = "errata-ai";
     repo = "vale";
     rev = "v${version}";
-    hash = "sha256-BWY/a5XFadyeyjtfBv9vVpT/EPYXoL/DqtUVk9nMkQg=";
+    hash = "sha256-emAwoOFjB/zXkCLL8txs1OiMZ9DKm58eeenYFKctpzQ=";
   };
 
-  vendorHash = "sha256-uEuzAMsQHTAbKeAPIWu2yoCLhBrQNEYxdmjfzLLWONQ=";
+  vendorHash = "sha256-cGWWjfkwgM1dAVKCl/Ao2ILyLyk0oPvqjLEZL0Clvyw=";
 
   postInstall = ''
     mkdir -p $data/share/vale
diff --git a/nixpkgs/pkgs/tools/text/zim-tools/default.nix b/nixpkgs/pkgs/tools/text/zim-tools/default.nix
index e51755dd7e44..100c9e706ff7 100644
--- a/nixpkgs/pkgs/tools/text/zim-tools/default.nix
+++ b/nixpkgs/pkgs/tools/text/zim-tools/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation rec {
   pname = "zim-tools";
-  version = "3.3.0";
+  version = "3.4.0";
 
   src = fetchFromGitHub {
     owner = "openzim";
     repo = "zim-tools";
     rev = version;
-    sha256 = "sha256-kPUw13GVYZ1GLb4b4ch64GkJZtf6PW1gae8F/cgyG90=";
+    sha256 = "sha256-A1A0Ri2OwPyqpx0f5CPJL3zAwo2I/AiRKpmk3r4DeTc=";
   };
 
   nativeBuildInputs = [ meson ninja pkg-config ];
diff --git a/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix b/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
index e7172e608746..1e2c58d60356 100644
--- a/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
@@ -26,7 +26,6 @@ rustPlatform.buildRustPackage rec {
     owner = "tectonic-typesetting";
     repo = "tectonic";
     rev = "tectonic@${version}";
-    fetchSubmodules = true;
     sha256 = "sha256-xZHYiaQ8ASUwu0ieHIXcjRaH06SQoB6OR1y7Ok+FjAs=";
   };
 
@@ -34,6 +33,8 @@ rustPlatform.buildRustPackage rec {
 
   nativeBuildInputs = [ pkg-config ];
 
+  buildFeatures = [ "external-harfbuzz" ];
+
   buildInputs = [ icu fontconfig harfbuzz openssl ]
     ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices Cocoa Foundation ]);
 
diff --git a/nixpkgs/pkgs/tools/video/yaydl/default.nix b/nixpkgs/pkgs/tools/video/yaydl/default.nix
index 7dea97bf649e..39e085931dda 100644
--- a/nixpkgs/pkgs/tools/video/yaydl/default.nix
+++ b/nixpkgs/pkgs/tools/video/yaydl/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "yaydl";
-  version = "0.13.0";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "dertuxmalwieder";
     repo = pname;
     rev = "release-${version}";
-    sha256 = "sha256-JwyWWqbUNZyH6gymeScb9tMZoPvn/Igz9iW2pp0XvEI=";
+    sha256 = "sha256-r0Z/dihDaiW/lBLMftLtzLELpKT2twqru1xxI9LnjU8=";
   };
 
-  cargoSha256 = "sha256-jmqO0UvU6s+E5r6VFFjOvSe8oiLiTG5rPNHzoHVftWo=";
+  cargoHash = "sha256-FkOiMeNwYj++gZ1Kl4RZHmsRDVMZQBEYtRpogK6XSFE=";
 
   nativeBuildInputs = [
     pkg-config
diff --git a/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch b/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch
index 6194f33e1918..3c0d726e610d 100644
--- a/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch
+++ b/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch
@@ -1,5 +1,5 @@
 diff --git a/distrobuilder/lxc.generator b/distrobuilder/lxc.generator
-index 0ad81d1..69dbfe7 100644
+index 0ad81d1..21ddb39 100644
 --- a/distrobuilder/lxc.generator
 +++ b/distrobuilder/lxc.generator
 @@ -25,16 +25,6 @@ is_incus_vm() {
@@ -73,9 +73,22 @@ index 0ad81d1..69dbfe7 100644
  
  	mkdir -p /run/systemd/system/systemd-udev-trigger.service.d
  	cat <<-EOF > /run/systemd/system/systemd-udev-trigger.service.d/zzz-lxc-override.conf
-@@ -145,24 +97,12 @@ EOF
+@@ -132,37 +84,13 @@ ExecStart=-${cmd} trigger --type=devices --action=add
+ EOF
  }
  
+-# fix_systemd_sysctl overrides the systemd-sysctl.service to use "ExecStart=-" instead of "ExecStart=".
+-fix_systemd_sysctl() {
+-	cmd=/usr/lib/systemd/systemd-sysctl
+-	! [ -e "${cmd}" ] && cmd=/lib/systemd/systemd-sysctl
+-	mkdir -p /run/systemd/system/systemd-sysctl.service.d
+-	cat <<-EOF > /run/systemd/system/systemd-sysctl.service.d/zzz-lxc-override.conf
+-[Service]
+-ExecStart=
+-ExecStart=-${cmd}
+-EOF
+-}
+-
  ## Main logic
 -# Nothing to do in Incus VM but deployed in case it is later converted to a container
 -is_incus_vm || is_lxd_vm && exit 0
@@ -99,7 +112,15 @@ index 0ad81d1..69dbfe7 100644
  
  # Determine distro name and release
  ID=""
-@@ -222,11 +162,6 @@ ACTION=="add|change|move", ENV{ID_NET_DRIVER}=="veth", ENV{INTERFACE}=="eth[0-9]
+@@ -192,7 +120,6 @@ fi
+ 
+ # Ignore failures on some units.
+ fix_systemd_udev_trigger
+-fix_systemd_sysctl
+ 
+ # Mask some units.
+ fix_systemd_mask dev-hugepages.mount
+@@ -222,11 +149,6 @@ ACTION=="add|change|move", ENV{ID_NET_DRIVER}=="veth", ENV{INTERFACE}=="eth[0-9]
  EOF
  fi
  
diff --git a/nixpkgs/pkgs/tools/virtualization/govc/default.nix b/nixpkgs/pkgs/tools/virtualization/govc/default.nix
index e3fd16538e4d..510ac24bbee4 100644
--- a/nixpkgs/pkgs/tools/virtualization/govc/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/govc/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "govc";
-  version = "0.34.2";
+  version = "0.35.0";
 
   subPackages = [ "govc" ];
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     rev = "v${version}";
     owner = "vmware";
     repo = "govmomi";
-    sha256 = "sha256-UrGHuzUZvXWZRy4VJ1HlMBs2C8MuaUYhM6dlYIoG7vE=";
+    sha256 = "sha256-ILmQNTHdt1rD2/cXEHlYWvXs4puNgRsrRtJmdz15zg0=";
   };
 
-  vendorHash = "sha256-1Y2Q2Ep3aqhUCSWey+sD4m7CgVEjlPt6ri3OKV8eERU=";
+  vendorHash = "sha256-kju7wbp/LAsh4kv6edmy8+jpbeQ/OatqPwlY3Y5O9iQ=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/tools/virtualization/multipass/default.nix b/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
index e7875f00bb6a..c746639e98ee 100644
--- a/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
@@ -70,8 +70,8 @@ stdenv.mkDerivation
 
     # Patch the patch of the OVMF binaries to use paths from the nix store.
     substituteInPlace ./src/platform/backends/qemu/linux/qemu_platform_detail_linux.cpp \
-      --replace "OVMF.fd" "${OVMF.fd}/FV/OVMF.fd" \
-      --replace "QEMU_EFI.fd" "${OVMF.fd}/FV/QEMU_EFI.fd"
+      --replace "OVMF.fd" "${OVMF.firmware}" \
+      --replace "QEMU_EFI.fd" "${OVMF.firmware}"
 
     # Copy the grpc submodule we fetched into the source code.
     cp -r --no-preserve=mode ${grpc_src} 3rd-party/grpc
@@ -122,7 +122,6 @@ stdenv.mkDerivation
       dnsmasq
       iproute2
       iptables
-      OVMF.fd
       qemu
       qemu-utils
       xterm
diff --git a/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix b/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
index 81671f46ed5b..03f911e4f899 100644
--- a/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hyprland-per-window-layout";
-  version = "2.7";
+  version = "2.8.1";
 
   src = fetchFromGitHub {
     owner = "coffebar";
     repo = pname;
     rev = version;
-    hash = "sha256-Tci3OR7c8hEWAnFsBlSNZYt7znAxPRDhJV+1q7fw6z8=";
+    hash = "sha256-a1x22+f7VXkPC36/muauac0+mz2Bcr01TFWf+sGHH/g=";
   };
 
-  cargoHash = "sha256-lVNephJ6UfdM6dPnHs+jHG9A79qHEsrm7tcjcDralnY=";
+  cargoHash = "sha256-R79ztYRLokGc4wQnoJeKsY/4EuCGuhdqBhBQVstY2gU=";
 
   meta = with lib; {
     description = "Per window keyboard layout (language) for Hyprland wayland compositor";
diff --git a/nixpkgs/pkgs/tools/wayland/wlogout/default.nix b/nixpkgs/pkgs/tools/wayland/wlogout/default.nix
index 2be33bee6ac0..96cabcc38e87 100644
--- a/nixpkgs/pkgs/tools/wayland/wlogout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlogout/default.nix
@@ -19,13 +19,13 @@
 
 stdenv.mkDerivation rec {
   pname = "wlogout";
-  version = "1.1.1";
+  version = "1.2";
 
   src = fetchFromGitHub {
     owner = "ArtsyMacaw";
     repo = "wlogout";
     rev = version;
-    sha256 = "cTscfx+erHVFHwwYpN7pADQWt5sq75sQSyXSP/H8kOs=";
+    hash = "sha256-xeTO8MBUrvcVA7WTRY7OhaVGInijuvXsVYEax8JmMZ0=";
   };
 
   strictDeps = true;
diff --git a/nixpkgs/pkgs/top-level/aliases.nix b/nixpkgs/pkgs/top-level/aliases.nix
index 67933403e2f5..cce25da849d9 100644
--- a/nixpkgs/pkgs/top-level/aliases.nix
+++ b/nixpkgs/pkgs/top-level/aliases.nix
@@ -102,6 +102,7 @@ mapAliases ({
   beignet = throw "beignet was removed as it was never ported from old llvmPackages_6 upstream"; # added 2024-01-08
   binance = throw "binance has been removed, because it depends on a very outdated and insecure version of electron"; # Added 2023-11-09
   bird2 = bird; # Added 2022-02-21
+  bitwarden = bitwarden-desktop; # Added 2024-02-25
   bitwig-studio1 = throw "bitwig-studio1 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
   bitwig-studio2 = throw "bitwig-studio2 has been removed, you can upgrade to 'bitwig-studio'"; # Added 2023-01-03
   blender-with-packages = args:
@@ -234,6 +235,7 @@ mapAliases ({
   dotnet-sdk_3 = dotnetCorePackages.sdk_3_1; # Added 2020-01-19
   dotnet-sdk_5 = dotnetCorePackages.sdk_5_0; # Added 2020-09-11
   drgeo = throw "'drgeo' has been removed as it is outdated and unmaintained"; # Added 2023-10-15
+  drush = throw "drush as a standalone package has been removed because it's no longer supported as a standalone tool";
   dtv-scan-tables_linuxtv = dtv-scan-tables; # Added 2023-03-03
   dtv-scan-tables_tvheadend = dtv-scan-tables; # Added 2023-03-03
   du-dust = dust; # Added 2024-01-19
@@ -280,6 +282,7 @@ mapAliases ({
   eterm = throw "eterm was removed because it is still insecure: https://github.com/mej/Eterm/issues/7"; # Added 2023-09-10
   exa = throw "'exa' has been removed because it is unmaintained upstream. Consider using 'eza', a maintained fork"; # Added 2023-09-07
   exhibitor = throw "'exhibitor' has been removed because it is unmaintained upstream"; # Added 2023-06-20
+  eww-wayland = lib.warn "eww now can build for X11 and wayland simultaneously, so `eww-wayland` is deprecated, use the normal `eww` package instead." eww;
 
   ### F ###
 
@@ -409,6 +412,9 @@ mapAliases ({
   govendor = throw "'govendor' has been removed as it is no longer maintained upstream, please use Go modules instead"; # Added 2023-12-26
   gometer = throw "gometer has been removed from nixpkgs because goLance stopped offering Linux support"; # Added 2023-02-10
   gprbuild-boot = gnatPackages.gprbuild-boot; # Added 2024-02-25;
+
+  gpt4all-chat = throw "gpt4all-chat has been renamed to gpt4all"; # Added 2024-02-27
+
   graalvm11-ce = throw "graalvm11-ce has been removed because upstream dropped support to different JDK versions for each GraalVM release. Please use graalvm-ce instead"; # Added 2023-09-26
   graalvm17-ce = throw "graalvm17-ce has been removed because upstream dropped support to different JDK versions for each GraalVM release. Please use graalvm-ce instead"; # Added 2023-09-26
   graalvm19-ce = throw "graalvm19-ce has been removed because upstream dropped support to different JDK versions for each GraalVM release. Please use graalvm-ce instead"; # Added 2023-09-26
@@ -708,6 +714,7 @@ mapAliases ({
   mod_pkcs12 = apacheHttpdPackages.mod_pkcs12; # Added 2019-12-24
   mod_timestamp = apacheHttpdPackages.mod_timestamp; # Added 2019-12-24
   monero = monero-cli; # Added 2021-11-28
+  moneyplex = throw "'moneyplex' has been removed, as it was broken and unmaintained"; # Added 2024-02-28
   mongodb-4_0 = throw "mongodb-4_0 has been removed, it's end of life since April 2022"; # Added 2023-01-05
   mongodb-4_2 = throw "mongodb-4_2 has been removed, it's end of life since April 2023"; # Added 2023-06-06
   moonlander = throw "'moonlander' has been removed due to it being broken and unmaintained"; # Added 2023-11-26
diff --git a/nixpkgs/pkgs/top-level/all-packages.nix b/nixpkgs/pkgs/top-level/all-packages.nix
index 85645d758c9b..06b9098ee7b2 100644
--- a/nixpkgs/pkgs/top-level/all-packages.nix
+++ b/nixpkgs/pkgs/top-level/all-packages.nix
@@ -491,8 +491,6 @@ with pkgs;
 
   banana-vera = callPackage ../development/tools/analysis/banana-vera { };
 
-  chrysalis = callPackage ../applications/misc/chrysalis { };
-
   ciel = callPackage ../tools/package-management/ciel { };
 
   circt = callPackage ../development/compilers/circt { };
@@ -726,6 +724,8 @@ with pkgs;
 
   inspec = callPackage ../tools/misc/inspec { };
 
+  kdePackages = callPackage ../kde { };
+
   buildcatrust = with python3.pkgs; toPythonApplication buildcatrust;
 
   probe-rs = callPackage ../development/tools/rust/probe-rs {
@@ -1732,7 +1732,7 @@ with pkgs;
 
   btc-rpc-explorer = callPackage ../tools/misc/btc-rpc-explorer { };
 
-  butler = callPackage ../games/itch/butler.nix {
+  butler = callPackage ../by-name/bu/butler/package.nix {
     inherit (darwin.apple_sdk.frameworks) Cocoa;
     buildGoModule = buildGo120Module;
   };
@@ -2775,7 +2775,7 @@ with pkgs;
 
   pcem = callPackage ../applications/emulators/pcem { };
 
-  pcsx2 = disable-warnings-if-gcc13 (qt6Packages.callPackage ../applications/emulators/pcsx2 { });
+  pcsx2 = qt6Packages.callPackage ../applications/emulators/pcsx2 { };
 
   pcsxr = callPackage ../applications/emulators/pcsxr { };
 
@@ -3552,10 +3552,6 @@ with pkgs;
 
   biscuit-cli = callPackage ../tools/security/biscuit-cli { };
 
-  bitwarden = callPackage ../tools/security/bitwarden { };
-
-  bitwarden-cli = callPackage ../tools/security/bitwarden/cli.nix { };
-
   inherit (callPackages ../tools/security/bitwarden-directory-connector { }) bitwarden-directory-connector-cli bitwarden-directory-connector;
 
   bitwarden-menu = python3Packages.callPackage ../applications/misc/bitwarden-menu { };
@@ -3977,8 +3973,6 @@ with pkgs;
 
   ipp-usb = callPackage ../os-specific/linux/ipp-usb { };
 
-  itch = callPackage ../games/itch { };
-
   itchiodl = callPackage ../games/itchiodl { };
 
   itd = callPackage ../applications/misc/itd { };
@@ -4225,7 +4219,9 @@ with pkgs;
 
   atftp = callPackage ../tools/networking/atftp { };
 
-  atlas = callPackage ../development/tools/database/atlas { };
+  atlas = callPackage ../development/tools/database/atlas {
+    buildGoModule = buildGo122Module;
+  };
 
   authoscope = callPackage ../tools/security/authoscope {
     inherit (darwin.apple_sdk.frameworks) Security;
@@ -4506,11 +4502,6 @@ with pkgs;
 
   bws = callPackage ../tools/security/bws { };
 
-  byobu = callPackage ../tools/misc/byobu {
-    # Choices: [ tmux screen ];
-    textual-window-manager = tmux;
-  };
-
   bsh = fetchurl {
     url = "http://www.beanshell.org/bsh-2.0b5.jar";
     hash = "sha256-YjIZlWOAc1SzvLWs6z3BNlAvAixrDvdDmHqD9m/uWlw=";
@@ -4784,6 +4775,10 @@ with pkgs;
 
   slurp = callPackage ../tools/wayland/slurp { };
 
+  sway-unwrapped = callPackage ../by-name/sw/sway-unwrapped/package.nix {
+    wlroots = wlroots_0_17;
+  };
+
   swaykbdd = callPackage ../tools/wayland/swaykbdd { };
 
   swayr = callPackage ../tools/wayland/swayr { };
@@ -5635,8 +5630,6 @@ with pkgs;
 
   hocr-tools = with python3Packages; toPythonApplication hocr-tools;
 
-  home-manager = callPackage ../tools/package-management/home-manager { };
-
   homepage-dashboard = callPackage ../servers/homepage-dashboard {
     inherit (darwin) cctools;
     inherit (darwin.apple_sdk.frameworks) IOKit;
@@ -8051,7 +8044,7 @@ with pkgs;
 
   fcitx5 = libsForQt5.callPackage ../tools/inputmethods/fcitx5 { };
 
-  fcitx5-with-addons = libsForQt5.callPackage ../tools/inputmethods/fcitx5/with-addons.nix { };
+  fcitx5-with-addons = callPackage ../tools/inputmethods/fcitx5/with-addons.nix { };
 
   fcitx5-bamboo = callPackage ../tools/inputmethods/fcitx5/fcitx5-bamboo.nix { };
 
@@ -9389,7 +9382,7 @@ with pkgs;
 
   inql = callPackage ../tools/security/inql { };
 
-  intel-media-sdk = disable-warnings-if-gcc13 (callPackage ../development/libraries/intel-media-sdk { });
+  intel-media-sdk = callPackage ../development/libraries/intel-media-sdk { };
 
   intermodal = callPackage ../tools/misc/intermodal { };
 
@@ -10900,8 +10893,6 @@ with pkgs;
 
   molotov = callPackage ../applications/video/molotov { };
 
-  moneyplex = callPackage ../applications/office/moneyplex { };
-
   monit = callPackage ../tools/system/monit { };
 
   monocraft = callPackage ../data/fonts/monocraft { };
@@ -12420,8 +12411,6 @@ with pkgs;
 
   ouch = callPackage ../tools/compression/ouch { };
 
-  outils = callPackage ../tools/misc/outils { };
-
   mpi = openmpi; # this attribute should used to build MPI applications
   mpiCheckPhaseHook = callPackage ../build-support/setup-hooks/mpi-check-hook { };
 
@@ -13268,8 +13257,6 @@ with pkgs;
 
   smpq = callPackage ../applications/misc/smpq { };
 
-  sn0int = callPackage ../tools/security/sn0int { };
-
   snabb = callPackage ../tools/networking/snabb { };
 
   snallygaster = callPackage ../tools/security/snallygaster { };
@@ -13749,8 +13736,6 @@ with pkgs;
 
   teler = callPackage ../tools/security/teler { };
 
-  telescope = callPackage ../applications/networking/browsers/telescope { };
-
   termcolor = callPackage ../development/libraries/termcolor { };
 
   termscp = callPackage ../tools/networking/termscp {
@@ -14523,8 +14508,6 @@ with pkgs;
 
   wimboot = callPackage ../tools/misc/wimboot { };
 
-  wit-bindgen = callPackage ../tools/misc/wit-bindgen { };
-
   wire = callPackage ../development/tools/wire { };
 
   wireguard-tools = callPackage ../tools/networking/wireguard-tools { };
@@ -16984,7 +16967,6 @@ with pkgs;
     inherit (darwin.apple_sdk.frameworks) CoreServices Security;
   };
   cargo-limit = callPackage ../development/tools/rust/cargo-limit { };
-  cargo-make = callPackage ../development/tools/rust/cargo-make { };
   cargo-modules = callPackage ../development/tools/rust/cargo-modules { };
   cargo-mommy = callPackage ../development/tools/rust/cargo-mommy { };
   cargo-msrv = callPackage ../development/tools/rust/cargo-msrv {
@@ -18950,8 +18932,6 @@ with pkgs;
 
   drm_info = callPackage ../development/tools/drm_info { };
 
-  drush = callPackage ../development/tools/misc/drush { };
-
   dura = callPackage ../development/tools/misc/dura {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
@@ -19392,8 +19372,6 @@ with pkgs;
 
   lenmus = callPackage ../applications/misc/lenmus { };
 
-  lightningcss = callPackage ../development/tools/lightningcss { };
-
   libtool = libtool_2;
 
   libtool_1_5 = callPackage ../development/tools/misc/libtool { };
@@ -20141,7 +20119,22 @@ with pkgs;
   ttyd = callPackage ../servers/ttyd { };
 
   turbogit = callPackage ../development/tools/turbogit {
-    libgit2 = libgit2_1_3_0;
+    libgit2 = libgit2.overrideAttrs rec {
+      version = "1.3.0";
+      src = pkgs.fetchFromGitHub {
+        owner = "libgit2";
+        repo = "libgit2";
+        rev = "v${version}";
+        hash = "sha256-7atNkOBzX+nU1gtFQEaE+EF1L+eex+Ajhq2ocoJY920=";
+      };
+      patches = [];
+      # tests fail on old version
+      doCheck = false;
+      meta = libgit2.meta // {
+        maintainers = [];
+        knownVulnerabilities = [ "CVE-2024-24575" "CVE-2024-24577" "CVE-2022-29187" "CVE 2022-24765" ];
+      };
+    };
   };
 
   tweak = callPackage ../applications/editors/tweak { };
@@ -21364,39 +21357,6 @@ with pkgs;
     inherit (darwin.apple_sdk.frameworks) Security;
   };
 
-  libgit2_1_3_0 = libgit2.overrideAttrs rec {
-    version = "1.3.0";
-    src = pkgs.fetchFromGitHub {
-      owner = "libgit2";
-      repo = "libgit2";
-      rev = "v${version}";
-      hash = "sha256-7atNkOBzX+nU1gtFQEaE+EF1L+eex+Ajhq2ocoJY920=";
-    };
-    patches = [];
-  };
-
-  libgit2_1_5 = libgit2.overrideAttrs rec {
-    version = "1.5.1";
-    src = pkgs.fetchFromGitHub {
-      owner = "libgit2";
-      repo = "libgit2";
-      rev = "v${version}";
-      hash = "sha256-KzBMwpqn6wUFhgB3KDclBS0BvZSVcasM5AG/y+L91xM=";
-    };
-    patches = [];
-  };
-
-  libgit2_1_6 = libgit2.overrideAttrs rec {
-    version = "1.6.5";
-    src = fetchFromGitHub {
-      owner = "libgit2";
-      repo = "libgit2";
-      rev = "v${version}";
-      hash = "sha256-2tgXnrB85dEfxu7giETqMuFxfm0RH5MicHZqO3ezGu0=";
-    };
-    patches = [ ];
-  };
-
   libgit2-glib = callPackage ../development/libraries/libgit2-glib { };
 
   libhsts = callPackage ../development/libraries/libhsts { };
@@ -26424,7 +26384,7 @@ with pkgs;
 
   matrix-alertmanager = callPackage ../servers/monitoring/matrix-alertmanager { };
 
-  mattermost = callPackage ../servers/mattermost { };
+  mattermost = callPackage ../servers/mattermost { buildGoModule = buildGo122Module; };
   matterircd = callPackage ../servers/mattermost/matterircd.nix { };
   matterbridge = callPackage ../servers/matterbridge { };
 
@@ -27901,8 +27861,6 @@ with pkgs;
   linux_5_15_hardened = linuxKernel.kernels.linux_5_15_hardened;
   linuxPackages_6_1_hardened = linuxKernel.packages.linux_6_1_hardened;
   linux_6_1_hardened = linuxKernel.kernels.linux_6_1_hardened;
-  linuxPackages_6_5_hardened = linuxKernel.packages.linux_6_5_hardened;
-  linux_6_5_hardened = linuxKernel.kernels.linux_6_5_hardened;
   linuxPackages_6_6_hardened = linuxKernel.packages.linux_6_6_hardened;
   linux_6_6_hardened = linuxKernel.kernels.linux_6_6_hardened;
   linuxPackages_6_7_hardened = linuxKernel.packages.linux_6_7_hardened;
@@ -30887,7 +30845,7 @@ with pkgs;
   dnglab = callPackage ../tools/graphics/dnglab { };
 
   inherit (callPackage ../applications/virtualization/docker {})
-    docker_20_10 docker_24;
+    docker_20_10 docker_24 docker_25;
 
   docker = docker_24;
   docker-client = docker.override { clientOnly = true; };
@@ -31022,8 +30980,6 @@ with pkgs;
   inherit (recurseIntoAttrs (callPackage ../applications/editors/ed { }))
     ed edUnstable;
 
-  edbrowse = callPackage ../applications/editors/edbrowse { };
-
   edlin = callPackage ../applications/editors/edlin { };
 
   orbiton = callPackage ../applications/editors/orbiton {
@@ -31144,9 +31100,6 @@ with pkgs;
   evilpixie = libsForQt5.callPackage ../applications/graphics/evilpixie { };
 
   eww = callPackage ../applications/window-managers/eww { };
-  eww-wayland = callPackage ../applications/window-managers/eww {
-    withWayland = true;
-  };
 
   exaile = callPackage ../applications/audio/exaile { };
 
@@ -32128,7 +32081,9 @@ with pkgs;
 
   hexedit = callPackage ../applications/editors/hexedit { };
 
-  himalaya = callPackage ../applications/networking/mailreaders/himalaya { };
+  himalaya = callPackage ../applications/networking/mailreaders/himalaya {
+    inherit (darwin.apple_sdk.frameworks) AppKit Cocoa Security;
+  };
 
   hydrogen-web-unwrapped = callPackage ../applications/networking/instant-messengers/hydrogen-web/unwrapped.nix { };
 
@@ -32596,6 +32551,10 @@ with pkgs;
 
   imgp = python3Packages.callPackage ../applications/graphics/imgp { };
 
+  imhex = callPackage ../by-name/im/imhex/package.nix {
+    llvm = llvm_17;
+  };
+
   inframap = callPackage ../applications/networking/cluster/inframap { };
 
   inkcut = libsForQt5.callPackage ../applications/misc/inkcut { };
@@ -35341,6 +35300,10 @@ with pkgs;
     plasmoidSupport = false;
     systemdSupport = true;
   };
+  syncthingtray-qt6 = kdePackages.callPackage ../applications/misc/syncthingtray {
+    # renamed in KF5 -> KF6
+    plasma-framework = kdePackages.libplasma;
+  };
 
   synergy = libsForQt5.callPackage ../applications/misc/synergy {
     stdenv = if stdenv.isDarwin then darwin.apple_sdk_11_0.stdenv else stdenv;
@@ -35577,8 +35540,6 @@ with pkgs;
     inherit (linuxPackages) x86_energy_perf_policy;
   };
 
-  tippecanoe = callPackage ../applications/misc/tippecanoe { };
-
   tmatrix = callPackage ../applications/misc/tmatrix { };
 
   tnef = callPackage ../applications/misc/tnef { };
@@ -35750,7 +35711,9 @@ with pkgs;
 
   ueberzug = with python3Packages; toPythonApplication ueberzug;
 
-  ueberzugpp = darwin.apple_sdk_11_0.callPackage ../tools/graphics/ueberzugpp { };
+  ueberzugpp = callPackage ../by-name/ue/ueberzugpp/package.nix {
+    stdenv = if stdenv.isDarwin then overrideSDK stdenv "11.0" else stdenv;
+  };
 
   uefi-run = callPackage ../tools/virtualization/uefi-run { };
 
@@ -35780,11 +35743,6 @@ with pkgs;
 
   unipicker = callPackage ../applications/misc/unipicker { };
 
-  unison = callPackage ../applications/networking/sync/unison {
-    enableX11 = config.unison.enableX11 or true;
-    inherit (darwin.apple_sdk.frameworks) Cocoa;
-  };
-
   unpaper = callPackage ../tools/graphics/unpaper { };
 
   unison-ucm = callPackage ../development/compilers/unison { };
@@ -35992,8 +35950,6 @@ with pkgs;
 
   vkeybd = callPackage ../applications/audio/vkeybd { };
 
-  vlc = libsForQt5.callPackage ../applications/video/vlc { };
-
   libvlc = vlc.override {
     withQt5 = false;
     onlyLibVLC = true;
@@ -36822,11 +36778,11 @@ with pkgs;
 
   lightning-pool = callPackage ../applications/blockchains/lightning-pool { };
 
-  litecoin  = disable-warnings-if-gcc13 (libsForQt5.callPackage ../applications/blockchains/litecoin {
+  litecoin  = libsForQt5.callPackage ../applications/blockchains/litecoin {
     inherit (darwin.apple_sdk.frameworks) AppKit;
     boost = pkgs.boost177;
-  });
-  litecoind = disable-warnings-if-gcc13 (litecoin.override { withGui = false; });
+  };
+  litecoind = litecoin.override { withGui = false; };
 
   livedl = callPackage ../tools/misc/livedl { };
 
@@ -36910,7 +36866,7 @@ with pkgs;
 
   wasabibackend = callPackage ../applications/blockchains/wasabibackend { };
 
-  wownero = disable-warnings-if-gcc13 (callPackage ../applications/blockchains/wownero { });
+  wownero = callPackage ../applications/blockchains/wownero { };
 
   zcash = callPackage ../applications/blockchains/zcash {
     inherit (darwin.apple_sdk.frameworks) Security;
@@ -39061,7 +39017,7 @@ with pkgs;
 
   ipopt = callPackage ../development/libraries/science/math/ipopt { };
 
-  gmsh = disable-warnings-if-gcc13 (callPackage ../applications/science/math/gmsh { });
+  gmsh = callPackage ../applications/science/math/gmsh { };
 
   wcpg = callPackage ../development/libraries/science/math/wcpg { };
 
diff --git a/nixpkgs/pkgs/top-level/darwin-packages.nix b/nixpkgs/pkgs/top-level/darwin-packages.nix
index 73943fb3b8a3..78ad4434f1c3 100644
--- a/nixpkgs/pkgs/top-level/darwin-packages.nix
+++ b/nixpkgs/pkgs/top-level/darwin-packages.nix
@@ -234,7 +234,7 @@ impure-cmds // appleSourcePackages // chooseLibs // {
 
   discrete-scroll = callPackage ../os-specific/darwin/discrete-scroll { };
 
-  # See doc/builders/special/darwin-builder.section.md
+  # See doc/packages/darwin-builder.section.md
   linux-builder = lib.makeOverridable ({ modules }:
     let
       toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ];
diff --git a/nixpkgs/pkgs/top-level/linux-kernels.nix b/nixpkgs/pkgs/top-level/linux-kernels.nix
index 31cce49051a9..659ef01910ab 100644
--- a/nixpkgs/pkgs/top-level/linux-kernels.nix
+++ b/nixpkgs/pkgs/top-level/linux-kernels.nix
@@ -169,14 +169,6 @@ in {
       ];
     };
 
-    linux_6_5 = callPackage ../os-specific/linux/kernel/mainline.nix {
-      branch = "6.5";
-      kernelPatches = [
-        kernelPatches.bridge_stp_helper
-        kernelPatches.request_key_helper
-      ];
-    };
-
     linux_6_6 = callPackage ../os-specific/linux/kernel/mainline.nix {
       branch = "6.6";
       kernelPatches = [
@@ -266,7 +258,6 @@ in {
     linux_5_10_hardened = hardenedKernelFor kernels.linux_5_10 { };
     linux_5_15_hardened = hardenedKernelFor kernels.linux_5_15 { };
     linux_6_1_hardened = hardenedKernelFor kernels.linux_6_1 { };
-    linux_6_5_hardened = hardenedKernelFor kernels.linux_6_5 { };
     linux_6_6_hardened = hardenedKernelFor kernels.linux_6_6 { };
     linux_6_7_hardened = hardenedKernelFor kernels.linux_6_7 { };
 
@@ -279,6 +270,7 @@ in {
     linux_6_2 = throw "linux 6.2 was removed because it has reached its end of life upstream";
     linux_6_3 = throw "linux 6.3 was removed because it has reached its end of life upstream";
     linux_6_4 = throw "linux 6.4 was removed because it has reached its end of life upstream";
+    linux_6_5 = throw "linux 6.5 was removed because it has reached its end of life upstream";
 
     linux_xanmod_tt = throw "linux_xanmod_tt was removed because upstream no longer offers this option";
 
@@ -600,7 +592,6 @@ in {
     linux_5_10 = recurseIntoAttrs (packagesFor kernels.linux_5_10);
     linux_5_15 = recurseIntoAttrs (packagesFor kernels.linux_5_15);
     linux_6_1 = recurseIntoAttrs (packagesFor kernels.linux_6_1);
-    linux_6_5 = recurseIntoAttrs (packagesFor kernels.linux_6_5);
     linux_6_6 = recurseIntoAttrs (packagesFor kernels.linux_6_6);
     linux_6_7 = recurseIntoAttrs (packagesFor kernels.linux_6_7);
     __attrsFailEvaluation = true;
@@ -613,6 +604,7 @@ in {
     linux_6_2 = throw "linux 6.2 was removed because it reached its end of life upstream"; # Added 2023-05-26
     linux_6_3 = throw "linux 6.3 was removed because it reached its end of life upstream"; # Added 2023-07-22
     linux_6_4 = throw "linux 6.4 was removed because it reached its end of life upstream"; # Added 2023-10-02
+    linux_6_5 = throw "linux 6.5 was removed because it reached its end of life upstream"; # Added 2024-02-28
   };
 
   rtPackages = {
@@ -645,7 +637,6 @@ in {
     linux_5_10_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_10_hardened);
     linux_5_15_hardened = recurseIntoAttrs (packagesFor kernels.linux_5_15_hardened);
     linux_6_1_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_1_hardened);
-    linux_6_5_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_5_hardened);
     linux_6_6_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_6_hardened);
     linux_6_7_hardened = recurseIntoAttrs (packagesFor kernels.linux_6_7_hardened);
 
@@ -667,7 +658,7 @@ in {
   });
 
   packageAliases = {
-    linux_default = packages.linux_6_1;
+    linux_default = packages.linux_6_6;
     # Update this when adding the newest kernel major version!
     linux_latest = packages.linux_6_7;
     linux_mptcp = throw "'linux_mptcp' has been moved to https://github.com/teto/mptcp-flake";
diff --git a/nixpkgs/pkgs/top-level/ocaml-packages.nix b/nixpkgs/pkgs/top-level/ocaml-packages.nix
index 3bdd9b4df8a9..f9f1bc765850 100644
--- a/nixpkgs/pkgs/top-level/ocaml-packages.nix
+++ b/nixpkgs/pkgs/top-level/ocaml-packages.nix
@@ -1905,6 +1905,8 @@ let
 
     xtmpl_ppx = callPackage ../development/ocaml-modules/xtmpl/ppx.nix { };
 
+    xxhash = callPackage ../development/ocaml-modules/xxhash/default.nix { };
+
     ### Y ###
 
     yaml = callPackage ../development/ocaml-modules/yaml { };
diff --git a/nixpkgs/pkgs/top-level/perl-packages.nix b/nixpkgs/pkgs/top-level/perl-packages.nix
index ff7171a87a4a..f0e5dee3228e 100644
--- a/nixpkgs/pkgs/top-level/perl-packages.nix
+++ b/nixpkgs/pkgs/top-level/perl-packages.nix
@@ -13563,10 +13563,10 @@ with self; {
 
   LaTeXML = buildPerlPackage rec {
     pname = "LaTeXML";
-    version = "0.8.7";
+    version = "0.8.8";
     src = fetchurl {
       url = "mirror://cpan/authors/id/B/BR/BRMILLER/${pname}-${version}.tar.gz";
-      hash = "sha256-JdqdlEB3newNrdTMLUIn6Oq4dDfAcZh3J03PuQakzHk=";
+      hash = "sha256-fSu+LOJSuvhro/OIzQ3sOqSDj0nWErnsfMT/iBBbrcw=";
     };
     outputs = [ "out" "tex" ];
     propagatedBuildInputs = [ ArchiveZip DBFile FileWhich IOString ImageMagick ImageSize JSONXS LWP ParseRecDescent PodParser TextUnidecode XMLLibXSLT ];
@@ -13595,7 +13595,7 @@ with self; {
       homepage = "https://dlmf.nist.gov/LaTeXML/";
       license = with lib.licenses; [ publicDomain ];
       maintainers = with maintainers; [ xworld21 ];
-      mainProgram = "latexml";
+      mainProgram = "latexmlc";
     };
   };
 
diff --git a/nixpkgs/pkgs/top-level/php-packages.nix b/nixpkgs/pkgs/top-level/php-packages.nix
index 345ed56b95e7..25a1c821ac52 100644
--- a/nixpkgs/pkgs/top-level/php-packages.nix
+++ b/nixpkgs/pkgs/top-level/php-packages.nix
@@ -198,14 +198,12 @@ lib.makeScope pkgs.newScope (self: with self; {
 
     phive = callPackage ../development/php-packages/phive { };
 
+    php-codesniffer = callPackage ../development/php-packages/php-codesniffer { };
+
     php-cs-fixer = callPackage ../development/php-packages/php-cs-fixer { };
 
     php-parallel-lint = callPackage ../development/php-packages/php-parallel-lint { };
 
-    phpcbf = callPackage ../development/php-packages/phpcbf { };
-
-    phpcs = callPackage ../development/php-packages/phpcs { };
-
     phpmd = callPackage ../development/php-packages/phpmd { };
 
     phpspy = callPackage ../development/php-packages/phpspy { };
@@ -215,10 +213,11 @@ lib.makeScope pkgs.newScope (self: with self; {
     psalm = callPackage ../development/php-packages/psalm { };
 
     psysh = callPackage ../development/php-packages/psysh { };
+  } // lib.optionalAttrs config.allowAliases {
+    phpcbf = throw "`phpcbf` is now deprecated, use `php-codesniffer` instead which contains both `phpcs` and `phpcbf`.";
+    phpcs = throw "`phpcs` is now deprecated, use `php-codesniffer` instead which contains both `phpcs` and `phpcbf`.";
   };
 
-
-
   # This is a set of PHP extensions meant to be used in php.buildEnv
   # or php.withExtensions to extend the functionality of the PHP
   # interpreter.
@@ -235,7 +234,7 @@ lib.makeScope pkgs.newScope (self: with self; {
 
     ast = callPackage ../development/php-packages/ast { };
 
-    blackfire = callPackage ../development/tools/misc/blackfire/php-probe.nix { inherit php; };
+    blackfire = callPackage ../development/tools/misc/blackfire/php-probe.nix { };
 
     couchbase = callPackage ../development/php-packages/couchbase { };
 
@@ -318,7 +317,7 @@ lib.makeScope pkgs.newScope (self: with self; {
 
     redis = callPackage ../development/php-packages/redis { };
 
-    relay = callPackage ../development/php-packages/relay { inherit php; };
+    relay = callPackage ../development/php-packages/relay { };
 
     rrd = callPackage ../development/php-packages/rrd { };
 
diff --git a/nixpkgs/pkgs/top-level/python-packages.nix b/nixpkgs/pkgs/top-level/python-packages.nix
index 34429a93a025..d2fceb9e64e6 100644
--- a/nixpkgs/pkgs/top-level/python-packages.nix
+++ b/nixpkgs/pkgs/top-level/python-packages.nix
@@ -2007,6 +2007,8 @@ self: super: with self; {
 
   chainmap = callPackage ../development/python-modules/chainmap { };
 
+  chainstream = callPackage ../development/python-modules/chainstream { };
+
   chalice = callPackage ../development/python-modules/chalice { };
 
   chameleon = callPackage ../development/python-modules/chameleon { };
@@ -2059,6 +2061,10 @@ self: super: with self; {
 
   chispa = callPackage ../development/python-modules/chispa { };
 
+  chroma-hnswlib = callPackage ../development/python-modules/chroma-hnswlib { };
+
+  chromadb = callPackage ../development/python-modules/chromadb { };
+
   chromaprint = callPackage ../development/python-modules/chromaprint { };
 
   ci-info = callPackage ../development/python-modules/ci-info { };
@@ -2920,6 +2926,8 @@ self: super: with self; {
 
   dirty-equals = callPackage ../development/python-modules/dirty-equals { };
 
+  dirtyjson = callPackage ../development/python-modules/dirtyjson { };
+
   discid = callPackage ../development/python-modules/discid { };
 
   discogs-client = callPackage ../development/python-modules/discogs-client { };
@@ -3552,6 +3560,8 @@ self: super: with self; {
 
   e3-core = callPackage ../development/python-modules/e3-core { };
 
+  e3-testsuite = callPackage ../development/python-modules/e3-testsuite { };
+
   eagle100 = callPackage ../development/python-modules/eagle100 { };
 
   easydict = callPackage ../development/python-modules/easydict { };
@@ -4961,9 +4971,7 @@ self: super: with self; {
 
   graphtage = callPackage ../development/python-modules/graphtage { };
 
-  graphviz = callPackage ../development/python-modules/graphviz {
-    inherit (pkgs) graphviz;
-  };
+  graphviz = callPackage ../development/python-modules/graphviz { };
 
   grappelli-safe = callPackage ../development/python-modules/grappelli-safe { };
 
@@ -6668,6 +6676,46 @@ self: super: with self; {
 
   lizard = callPackage ../development/python-modules/lizard { };
 
+  llama-index = callPackage ../development/python-modules/llama-index { };
+
+  llama-index-agent-openai = callPackage ../development/python-modules/llama-index-agent-openai { };
+
+  llama-index-cli = callPackage ../development/python-modules/llama-index-cli { };
+
+  llama-index-core = callPackage ../development/python-modules/llama-index-core { };
+
+  llama-index-embeddings-gemini = callPackage ../development/python-modules/llama-index-embeddings-gemini { };
+
+  llama-index-embeddings-google = callPackage ../development/python-modules/llama-index-embeddings-google { };
+
+  llama-index-embeddings-openai = callPackage ../development/python-modules/llama-index-embeddings-openai { };
+
+  llama-index-indices-managed-llama-cloud = callPackage ../development/python-modules/llama-index-indices-managed-llama-cloud { };
+
+  llama-index-legacy = callPackage ../development/python-modules/llama-index-legacy { };
+
+  llama-index-llms-openai = callPackage ../development/python-modules/llama-index-llms-openai { };
+
+  llama-index-multi-modal-llms-openai = callPackage ../development/python-modules/llama-index-multi-modal-llms-openai { };
+
+  llama-index-program-openai = callPackage ../development/python-modules/llama-index-program-openai { };
+
+  llama-index-question-gen-openai = callPackage ../development/python-modules/llama-index-question-gen-openai { };
+
+  llama-index-readers-file = callPackage ../development/python-modules/llama-index-readers-file { };
+
+  llama-index-readers-json = callPackage ../development/python-modules/llama-index-readers-json { };
+
+  llama-index-readers-llama-parse = callPackage ../development/python-modules/llama-index-readers-llama-parse { };
+
+  llama-index-readers-weather = callPackage ../development/python-modules/llama-index-readers-weather { };
+
+  llama-index-vector-stores-chroma = callPackage ../development/python-modules/llama-index-vector-stores-chroma { };
+
+  llama-parse = callPackage ../development/python-modules/llama-parse { };
+
+  llamaindex-py-client = callPackage ../development/python-modules/llamaindex-py-client { };
+
   llfuse = callPackage ../development/python-modules/llfuse {
     inherit (pkgs) fuse;
   };
@@ -8885,6 +8933,8 @@ self: super: with self; {
 
   opentelemetry-instrumentation-django = callPackage ../development/python-modules/opentelemetry-instrumentation-django { };
 
+  opentelemetry-instrumentation-fastapi = callPackage ../development/python-modules/opentelemetry-instrumentation-fastapi { };
+
   opentelemetry-instrumentation-flask = callPackage ../development/python-modules/opentelemetry-instrumentation-flask { };
 
   opentelemetry-instrumentation-grpc = callPackage ../development/python-modules/opentelemetry-instrumentation-grpc { };
@@ -9746,6 +9796,8 @@ self: super: with self; {
 
   python-tado = callPackage ../development/python-modules/python-tado { };
 
+  python-idzip = callPackage ../development/python-modules/python-idzip { };
+
   pythonfinder = callPackage ../development/python-modules/pythonfinder { };
 
   pytomorrowio = callPackage ../development/python-modules/pytomorrowio { };
@@ -10087,6 +10139,8 @@ self: super: with self; {
 
   pulp = callPackage ../development/python-modules/pulp { };
 
+  pulsar-client = callPackage ../development/python-modules/pulsar-client { };
+
   pulsectl-asyncio = callPackage ../development/python-modules/pulsectl-asyncio { };
 
   pulsectl = callPackage ../development/python-modules/pulsectl { };
@@ -10563,6 +10617,8 @@ self: super: with self; {
 
   pyexcel-xls = callPackage ../development/python-modules/pyexcel-xls { };
 
+  pyexiftool = callPackage ../development/python-modules/pyexiftool { };
+
   pyexploitdb = callPackage ../development/python-modules/pyexploitdb { };
 
   pyezviz = callPackage ../development/python-modules/pyezviz { };
@@ -15744,6 +15800,8 @@ self: super: with self; {
 
   types-ipaddress = callPackage ../development/python-modules/types-ipaddress { };
 
+  types-lxml = callPackage ../development/python-modules/types-lxml { };
+
   types-markdown = callPackage ../development/python-modules/types-markdown { };
 
   types-mock = callPackage ../development/python-modules/types-mock { };
diff --git a/nixpkgs/pkgs/top-level/qt6-packages.nix b/nixpkgs/pkgs/top-level/qt6-packages.nix
index 3732386d8688..68f73dad7634 100644
--- a/nixpkgs/pkgs/top-level/qt6-packages.nix
+++ b/nixpkgs/pkgs/top-level/qt6-packages.nix
@@ -29,10 +29,16 @@ makeScopeWithSplicing' {
   inherit stdenv;
 
   # LIBRARIES
+  accounts-qt = callPackage ../development/libraries/accounts-qt { };
   appstream-qt = callPackage ../development/libraries/appstream/qt.nix { };
 
+  fcitx5-qt = callPackage ../tools/inputmethods/fcitx5/fcitx5-qt.nix { };
+
   kdsoap = callPackage ../development/libraries/kdsoap { };
 
+  kcolorpicker = callPackage ../development/libraries/kcolorpicker { };
+  kimageannotator = callPackage ../development/libraries/kimageannotator { };
+
   futuresql = callPackage ../development/libraries/futuresql { };
   kquickimageedit = callPackage ../development/libraries/kquickimageedit { };
   libqaccessibilityclient = callPackage ../development/libraries/libqaccessibilityclient { };
@@ -88,6 +94,8 @@ makeScopeWithSplicing' {
   # is, to allow users to choose the right build if needed.
   sddm = callPackage ../applications/display-managers/sddm {};
 
+  signond = callPackage ../development/libraries/signond {};
+
   waylib = callPackage ../development/libraries/waylib { };
 
   wayqt = callPackage ../development/libraries/wayqt { };